物理与渲染坐标研究

西昌.雨锋 本文谢绝转载

 

 

                         部分一:模型及其物理的坐标系统

 

1、maya中的原图,注意Z轴与X轴的走向.

2、使用物理中间件导出的物理图形,从形状上看,与原图没什么区别,从轴向上看,X与Z轴的方向完全与maya原图中吻合。

上图中,蓝色轴为Z,红轴为X,与maya中完全相同.

3、在程序中读入mesh,并在程序中画出3根轴向

红色为X正向,蓝色为Z轴正向

结果发现:X轴没问题,但Z轴方向反了,说明在maya到mesh的导出过程中,Z轴发生了反向。

换句话说:maya与物理中的Z轴,在mesh中为-Z轴。

 

 解决方法:

1、首先想到的当然是修改导出mesh时的选项,使Z轴变成-Z轴,遗憾的是,在maya的插件导出选项中没能找到这一项。

2、如果修改mesh轴向无望,那么只能修改导出的物理轴向,所以在导出中间件中作了如下修改:

将Z轴作了镜向,那么导出的物理体用程序读出后的刚体轴向是什么样子呢?

 蓝色Z轴指向了两面凸起的方向,看来与程序中的mesh的Z轴轴向是吻合了........但是整个刚体好象有点不对啊?

刚体也能法线反转?

 

好吧,再在maya中用nomals的reverse命令将可怜的模型法线反转,然后Z轴镜像后导出物理。

最后的结果:

虽然看上去整个刚体与mesh似乎方向相反,但仔细看两个Z轴的方向,都是指向双凸起的,看起来很不顺眼啊,不要紧,请在物理浏览器中使用Axis\use left handed system

使用左手系统来观察世界,就是下面这个样子:

哦哦,看起来终于跟程序中的mesh轴向和图象都完全一致了哦。

"物理导出时先将刚体的法线反转,然后Z轴镜像导出,这种方法的坏处是烦琐,好处是可以完全保持mesh的贴图不变。

"这种方法看起来既笨又烦琐,有没有什么办法可以直接将mesh的坐标系统改为跟maya完全一致呢?

这样就无需更改物理及刚体的导出了啊.

所以,第二套方案出来了,

步骤:

1 、物理导出该怎么导还怎么导,但无需要反转法线和镜向。

2、不要在maya中用插件导出mesh文件,而是导出成obj文件。

3、用独立的插件modelconveter导出mesh模型,你可以看到有一个保持坐标轴向的选项,而且不可更改

4、导出的模型完全没有贴图,你得在modelview里重新指定一次贴图,或者在程序中指定贴图。

5、在程序中调入mesh物体,你会发现贴图的左右反了,但形状和轴向与刚体完全一致。

 

 

 

 

 

 

               部分二:车辆的坐标系统

 已知在maya中制作出了一个比照车辆,车身纹理上已经标出了maya中的坐标轴向

使用部分一中的外插件转换方法将其导成mesh文件,发现除了纹理不对以外,模型与物理方向轴已完全相同了。

在程序中使用车辆组件,底盘的方向定义为:X(0, 1, 0),Y(0, 0, -1),Z(-1, 0, 0));

四个悬挂位置如图所示:

物理底盘及mesh均未作任何旋转,此时车辆的方向为正确的车头跑向,即向-Z轴跑动。

由此我们得出一个结论:maya模型制作时,如果要在程序中不作任何修改而保持车辆方向正确的话 ,车头方向应该指向-X。

 

综合上面的问题,

1、我们建立出了maya中的车头指向-X方向的2号小车作为渲染车体,车头指向+Z。先用maya中的obj导出插件导出为obj ,再用外部件转换出为mesh。

2、将上方渲染车体作旋转,车头指向-X,然后在maya中用中间件导出成物理车体。

3、在程序中使用这个底盘方向:(0, 1, 0),  (0, 0, -1), (-1, 0, 0)

底盘使用这个坐标系统:

 

此时,物理车辆(使用左手模式观察)与渲染车辆完全吻合正确,奔跑方向也完全正确。

但这种作法有一个问题,即建立出的车辆在实际使用时,虽然可以正常跑动,但无法使用一些实时函数,比如实时计算轮胎位置的函数,因为车辆底盘的坐标方向发生了变化,故函数无法正确计算出来,所以在这时,我们可以用修改导出物理坐标系的方法来完成:

如图,在导出时用custom方法将X与Z轴进行调换:

用这种方法,可以调换各种物理模型的方向,否则无论在maya场景中如何旋转,导出的模型都只会死板的朝向某个方向.

 关于物理与渲染模型的大小放缩问题:

1、如果物理与渲染使用的是同样的建模,或者大小一致的模型,那么通过导出成物理模型文件后,物理与渲染模型均不需要做任何比例放缩。

2、如果渲染的物体和物理物体是用命令建立出来的,那么命令建立出来的渲染物体应该放大2倍才能与物理物体匹配。

3、对于物理物体必须正确,而对于渲染物体的方向什么的有问题则不是大问题,直接在maya中旋转修改后重新导出即可。

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值