1

每次我尝试将模型的调整大小的 ModelInstance(在 3ds max 中制作)添加到 Bullet 世界时,我都会得到相同的模型,而没有修改比例。这是我当前的代码:

Objeto objmat = mapaactu.nameAndPutObjetos(obj.getMaterias().get(0).nombreasoci,(int)obj.getMaterias().get(0).cantidad);
world.addConstructor(objmat.nombreinterno, objmat.constructor);

Vector3 objmatpos = new Vector3(obj.entidadbody.getWorldTransform().getTranslation(Vector3.Zero));
Vector3 scala = new Vector3(obj.getMaterias().get(0).cantidad / 100f, obj.getMaterias().get(0).cantidad / 100f, obj.getMaterias().get(0).cantidad / 100f);
Quaternion rotacion = new Quaternion();
objmat.instancia.transform.getRotation(rotacion);

objmat.instancia.transform.set(objmatpos, rotacion, scala);

objmat.setEntidad(world.add(objmat.nombreinterno, objmat.instancia.transform));

但是,我得到的变换的位置分量总是正确的(它在“obj”所在的位置产生)!我已经对其进行了调试,并且 "scala" = (0.5f,0.5f,0.5f) 在将模型添加到 Bullet 世界之前,我应该怎么做才能正确缩放模型?

4

1 回答 1

4

尽管它取决于物体的类型,但通常应避免缩放和物理。通常缩放一个物体确实会改变它的体积,因此会影响它的物理特性。因此,正确的答案是在您的建模应用程序中“烘焙”缩放(取决于应用程序,它可能被称为“冻结转换”或类似名称)或在创建时考虑缩放btCollisionShape(例如,将一半范围与缩放相乘创建btBoxShape) 时。

话虽如此,可以缩放碰撞形状。例如,abtCompoundShape有一个方法调用setLocalScaling来对它的子形状应用比例。另请参阅: http: //www.continuousphysics.com/Bullet/BulletFull/classbtCompoundShape.html#a1059971dd35c0b5dc2b4d5db070b9fb0

请注意,如果您使用内置方法从模型创建静态形状(https://github.com/libgdx/libgdx/blob/master/extensions/gdx-bullet/src/com/badlogic/gdx/ physics/bullet/Bullet.java#L124),比例组件将被忽略。

另请注意,运动状态使用的矩阵中的缩放分量被忽略。另见:https ://github.com/libgdx/libgdx/wiki/Bullet-physics#wiki-common-classes

于 2014-02-20T12:42:09.217 回答