我不知道其他如3dsMax导出来的模型是什么情况,我是用blender进行建模的,我看了下c3t文件里面,子节点的位置和blender里面的数据是一致的,都是相对于父节点的。可是放入cocos2dx以后发现子节点的位置变成不是相对父节点的了,这样显示出来就是模型子节点的位置乱了。
这应该不是模型本身的问题,因为这个模型放入unity是没有问题的。
我这个例子里的车子是由两个独立的静态模型组成,车身是子节点,轮胎是父亲节点。轮胎的位置无论是在blender还是在cocos2dx里面都是正常的,不正常的只是车身的位置在cocos2dx里往下移了一段距离,这跟在blender里面解除轮胎和车身的父子关系后的位置是一样,也就是说在cocos2dx里面作为子节点的车身参考的坐标系不是父节点的内部坐标系,而是和父节点(也就是轮胎)共用同一个坐标系的。
为什么是这样的呢,子节点不是应该使用父节点的坐标系更好吗?
还有个问题是:如果c3b模型文件包含两个静态模型的时候Sprite3D.getContentSize获取到的值是错误的,另外用getAABB获取到的值也是错误的。
AABB ab = car1->getAABB();
CCLOG(“car width:%f car height:%f”,ab._max.x - ab._min.x, ab._max.z - ab._min.z);
输出是:car width:199998.000000 car height:199998.000000 这么大的值,就算是场景里面最大的物体都没有这么大,这是什么情况?