如何显示Milkshape模型?

时间:2015-04-09 23:18:21

标签: c# windows-phone-8.1 monogame

在我将游戏从XNA移植到Monogame(WP8.1)后,我遇到了显示Milkshape模型的问题。请记住,此模型已加载"外部"不使用内容 - 因此它不是" xnb"文件,但原创" ms3d"文件。我不认为它与我的自定义效果文件有关,因为它看起来在所有可用效果下都搞砸了。

对于Milkshape模型的实际渲染,我使用了来自http://www.codeproject.com/Articles/148034/Loading-and-rendering-Milkshape-d-models-with-ani的库

我通过在库的方法中传递Stream(使用OpenStreamForReadAsync())而不是使用File.Open(FileName, FileMode.Open)函数来阅读Monogame中的模型。

来自XNA的屏幕:http://i.imgur.com/ZLJHBbp.png?1

Monogame WP8.1的屏幕:http://i.imgur.com/D8qHqm5.png?1

Monogame的背景刚刚被删除进行测试,这不是问题。为了消除可能的其他问题来源,我尝试只渲染这个单一模型 - 但看起来仍然是错误的:http://i.imgur.com/2tHjUHl.png

1 个答案:

答案 0 :(得分:0)

我设法通过将自定义顶点声明更改为VertexPositionNormalTexture来解决此问题。这是代码:

        foreach (var milkshapeGroup in Groups)
        {
            milkshapeGroup.verticesPhone = null;
            var vertList = new List<VertexPositionNormalTexture>();
            foreach (var ver in milkshapeGroup.vertices)
            {
                vertList.Add(new VertexPositionNormalTexture(ver.Position, ver.Normal, ver.texCoord1));
            }
            milkshapeGroup.verticesPhone = vertList.ToArray();
        }