在XNA中使用panda插件导出的.X文件注意事项

 

最近在使用.X文件时遇到了很多问题,主要集中在用panda插件导出的模型总是出现模型朝向不正确,模型比例出错等问题。

       引起这些问题的原因很多,先说说坐标系,XNA采用右手坐标系,3dsmax也采用右手坐标系,这是一样的,但是不要忘了,当我们使用DXSDK自带的模型查看器观察模型的时候,D3D用的可是左手坐标系,而panda作为.X文件导出器,自然对D3D的坐标系格外照顾,这样看起来问题有一些复杂,好在我们不需要纠缠这些,只要对上述坐标系有个数就可以了。

       因为XNA和3dsmax的坐标系相同,都是右手坐标系,这样就好办了。不过要是你认为只需要把坐标系一一对应再导出就可以了,那你就错了,仔细看看3dsmax的坐标系,你会发现他的Z是朝上的,美工建模时采用的都是这种坐标系,也就是说和我们平时常用的以Y为上向量不符,晕了吧,不要着急,下面就将关键的,嘿嘿。

1.      通过Alt加鼠标拖动3dsmax世界系,使得X轴指向左边,Y正对着你,Z朝上。


      
上图中左下角就是3dsmax世界坐标系,中间有个模型,这个模型的红绿蓝三轴分别对应了XNA中的世界X,Y,Z轴,即这个模型导出后加载到XNA显示的就是XNA的世界坐标系。明白了吧,这样我们只要让美工按照这个3dsmax坐标系建模就可以了,下面说panda导出参数的设置。

2.      主要修改两处

a)     确认3DS Max Objects页中的Use local object space没有被钩选

b)         确认X File Settings页中的Left Handed Axis被钩选

经过这样的处理就大功告成了,你可能会迷惑,命名XNA是右手坐标系,为什么要选择左手坐标系导出呢?其实道理很简单,为了兼容性,.X不是微软为了XNA而设计的,他出现的比XNA早的多,都可以当XNA的爷爷了,.X本来是针对D3D开发的,而D3D默认的是左手坐标系,因此.X文件也采用左手坐标系,这时你可能又要问,那为什么左手坐标系导出的.X文件可以在XNA正确使用呢,解铃还需系铃人,答案在微软的素材导入器中,XNA默认提供的.X导入器会在那个阶段自动把左手坐标系转换成XNA支持的右手坐标系,这样不就皆大欢喜了,^_^。打开微软自带的.X模型浏览器,看起来应该是这样的:


把模型加入到XNA中去看看吧,你会有新的收获。

posted on 2007-11-27 10:18  gogoplayer  阅读(3538)  评论(5编辑  收藏  举报

导航