DirectX的模型在左右手转换时应该如何调整

最近在做将MAX中导出的Fbx文件导入到我的引擎的接口,在中间遇到了蛮多问题。所以,要在此列一下。

在坐标系之间转换时,我们不需要将坐标系做太过复杂的变换,只需要将右手视坐标系转化为左手是坐标系,或者右手世界坐标系转化为左手世界坐标系。如果你能动手画一下这两个坐标系的话,你就能明白,只要将Y和Z轴调换一下即可。即将y和z坐标调换一下。注意不只是调换点的坐标,我们还要调换法线的坐标,不然很多贴图可能会丢失。

但是经过以上这样做,图形还是看不见,这是因为图形被消影了。原来三角形的顶点式按照右手坐标系顺序来画的,但是上述转化后,这个顶点顺寻没有改变。有以下处理方法:将三角形的第一个顶点和第三个顶点交换,切线,法线方向取负(光照要用到)。如果这个可能实在是太麻烦了,那么在setRenderState中改成右手背面消影,但是法线最好还是改一下~~

接下来就是贴图了。纹理贴图在左手坐标系中u正向是水平向右,v正向是垂直向下;在右手坐标系中v是垂直向上的,那么在v∈[0,1]的纹理坐标系中我们只需要将v表位1-v即可。当然,我们应该将纹理坐标和前两个步骤之后的坐标对齐。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值