在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 阅读(1419) 评论(4)  编辑 收藏 所属分类: XNA

评论

#1楼  2007-11-27 10:39 ColdDog      

不错,很细心
我也正学习XNA,希望多看到你的文章和心得。   回复  引用  查看    

#2楼 [楼主] 2007-11-27 12:06 gogoplayer      

@ColdDog
呵呵,.x文件太弱了,正在写关于xna骨骼动画解决方案,借用用了ogre的格式和导出插件,到时再来品阿,^_^   回复  引用  查看    

#3楼  2007-11-27 15:48 ColdDog      

好呀,我收藏先
我也要努力学习了,不然到时都看不懂你的文章,呵呵
太放松了最近,罪过   回复  引用  查看    

#4楼  2007-12-03 14:50 偷懒的嘟嘟 [未注册用户]

好厉害哦 真是太专业了
佩服啊   回复  引用    


标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-11-27 10:32 编辑过
 
另存  打印
 


导航

<2007年11月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

统计

与我联系

常用链接

留言簿(2)

我的标签

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜