1

与えられた世界の位置に一致するようにノードのローカル位置を設定しようとすると、本当に頭痛の種になります。

私は解決策を与えられましたが、AFAICS、それは方向位置のみを考慮し、スケーリングは考慮しません

node_new_local_position = node_parent.derivedOrientation().Inverse() * ( world_position_to_match - node_parent.derivedPosition() );

問題のノードはnode_parentの子です。node_parentのローカルプロパティと派生プロパティ(方向、位置、スケーリング)、およびその完全な行列変換が知られています。

すべての位置は3Dベクトルです; 方向はクォータニオンです; 完全な変換は4x4行列です。

誰かがノード階層のスケーリングをサポートするようにソリューションを変更するのを手伝ってくれませんか?

よろしくお願いします。

明細書

4

1 に答える 1

1

私はogre3dの専門家ではありませんが、次のようなものが必要になると思います。

 node_new_local_position =  node_parent._getFullTransform ().inverse() * world_position_to_match;

ここで、は変換_getFullTransform ().inverse()の完全な4 x 4逆ですnode_parents

編集:多分あなたは_setDerivedPositionあなたが達成しようとしていることを正確に行うものを使うべきであるように見えます。

于 2010-03-29T11:37:59.287 に答える