C++ Can';t更新连接到Ogre3D实体的项目符号刚体位置
我正在使用Ogre3D和Kinect制作一个游戏。 食人魔中的化身由kinect控制。现在我想实现物理,但我遇到了Bullet的问题 我已经用成对的刚体“连接”了实体C++ Can';t更新连接到Ogre3D实体的项目符号刚体位置,c++,ogre,bulletphysics,ogre3d,bullet,C++,Ogre,Bulletphysics,Ogre3d,Bullet,我正在使用Ogre3D和Kinect制作一个游戏。 食人魔中的化身由kinect控制。现在我想实现物理,但我遇到了Bullet的问题 我已经用成对的刚体“连接”了实体 std::向量动态对象; 向量静态对象; 我很容易让我的食人魔遵循这样的刚体: for(int i=0;igetMotionState()->getWorldTransform(tr); btVector3 pos=tr.getOrigin(); btQuaternion qut=tr.getRotation(); dynami
std::向量动态对象;
向量静态对象;
我很容易让我的食人魔遵循这样的刚体:
for(int i=0;igetMotionState()->getWorldTransform(tr);
btVector3 pos=tr.getOrigin();
btQuaternion qut=tr.getRotation();
dynamicObjects[i].first->getParentSceneNode()->setOrientation(Ogre::Quaternion(qut.getW(),qut.getX(),qut.getY(),qut.getZ());
Ogre::Vector3 localPos=dynamicObjects[i]。首先->getParentSceneNode()->getParentSceneNode()->convertWorldToLocalPosition(Ogre::Vector3(位置x(),位置y(),位置z());
dynamicObjects[i].first->getParentSceneNode()->setPosition(localPos);
}捕获(食人魔::异常e){
}
然而,我似乎不能做相反的事情,让刚体跟随实体,这是Kinect播放器控件集所必需的。这段代码似乎没有任何作用
bttr;
staticObjects[0].second->getMotionState()->getWorldTransform(tr);
Ogre::Vector3 entityPos=staticObjects[0]。首先->getParentSceneNode()->getPosition();
tr.setOrigin(btVector3(entityPos.x、entityPos.y、entityPos.z));
staticObjects[0]。第二->setWorldTransform(tr);
这两个部分都放在一个更新循环中。根据您的调试过程,
EntityPosition
是否具有正确的值?您真的应该调试这些值。我怀疑您应该将getParentSceneNode()->getDerivedPosition()
传递给物理,因为您似乎在场景节点上使用了世界帧和本地帧