在我将游戏从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
答案 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();
}