저는 Ogre3D 및 Bullet 물리를 사용하여 구현중인 게임에서 문자 방향 지정과 관련된 문제로 고통 받고 있습니다.Bullet 및 Ogre3D를 사용한 부드러운 회전
내가 가지고있는 것 : 캐릭터가 현재 방향과 함께 움직이는 방향 벡터.
필요한 것 : 캐릭터의 방향을 움직이는 방향으로 설정합니다.
나는 종류의 내가 원하는 것을 수행하는 코드의 조각을 '몸'나는 동양에 노력하고있어 강체이다
btTransform src = body->getCenterOfMassTransform();
btVector3 up = BtOgre::Convert::toBullet(Ogre::Vector3::UNIT_X);
btVector3 normDirection = mDirection.normalized();
btScalar angle = acos(up.dot(normDirection));
btVector3 axis = up.cross(normDirection);
src.setRotation(btQuaternion(axis, angle));
body->setCenterOfMassTransform(src);
.
니펫하지만 몇 가지 문제 가지고 방향을 변경할 때
가1)는 "지터"경향 그것을 신속하게 배향 그 자체를 보정하기 전에 하나의 방법, 또는 그래서 초 후 반대 대향 즉 에 있어야합니다.
2) 대부분의 시간은 코드 내가 assert(d != btScalar(0.0));
누군가가 도와 드릴까요
에 총알의 btQuaternion에서 어설 션 오류가 실행될 때?
감사합니다.
두 벡터에서 btQuaternion을 구성 할 수 있다고 생각합니다. 처음부터 두 번째로 회전하는 쿼터니언을 제공합니다. 캐릭터의 기본 방향과 원하는 방향을 사용할 경우 필요한 쿼터니언을 얻어야합니다. 지터는 아마도 쿼터니온이 고유하지 않은 회전 (180 ° 대 0 °)이 있기 때문에 발생합니다. – LiMuBei