如何展示 Milkshape 模型?

How do I display a Milkshape model?

将我的游戏从 XNA 移植到 Monogame (WP8.1) 后,我在显示 Milkshape 模型时遇到问题。请记住,此模型是在未使用内容的情况下加载 "externally" - 因此它不是 "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

我通过将自定义顶点声明更改为 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();
        }