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

编辑:看起来也许你应该只使用_setDerivedPositionwhich 正是你想要完成的事情。

于 2010-03-29T11:37:59.287 回答