Closed ContentsViewer closed 1 year ago
bullet3が計算した世界座標系のTransform行列をTranslate, Rotation(Quaternion)に分解して、前回との差分をlocal_position, local_rotationに累積しているのがよくないようだ。
bullet3が計算した世界座標系のTransform行列をそのままオブジェクトの姿勢に使うと問題ないようである。 Transform行列はbtTransform::getOpenGLMatrix()関数で取得できる。
今の、nodec_sceneでは、世界座標系の姿勢を直接設定できない。一度local_position, local_rotationに変換しないといけない。 エンジンは、local_position, local_rotationを使って再び世界座標を計算しなおしていた。 そこで、nodec_sceneに、世界座標系の姿勢を直接設定するためのLocalToWorldコンポーネントを追加した。 https://github.com/ContentsViewer/nodec/commit/4160f0379a80c2b6453d3fd95cd684da0d017b25
bullet3が計算したオブジェクトの世界座標系の姿勢行列をそのままLocalToWorldに代入することで、オブジェクトの動作が安定した。
(オブジェクトの姿勢をLocal座標系と世界座標系で指定できることになったが、これらの連携をうまくするのは別問題。。。)
物理オブジェクトの回転がおかしい