3D世界到地方的转型

时间:2010-03-29 11:31:13

标签: math 3d ogre3d

我真的很头疼,试图将节点的本地位置设置为匹配给定的世界位置。

我获得了一个解决方案,但是,AFAICS,它只考虑方向位置,但不缩放

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

有问题的节点是 node_parent 的子节点; node_parent 局部派生属性(方向,位置和缩放)是已知的,以及全矩阵变换

所有位置都是 3d矢量;方向是四元数;完全变换是一个4x4矩阵。

有人可以帮我修改解决方案以支持节点层次结构中的扩展吗?

非常感谢,

比尔

1 个答案:

答案 0 :(得分:1)

我不是ogre3d的专家,但我想你需要这样的东西:

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

其中_getFullTransform ().inverse()4 x 4转换的完整node_parents倒数。

编辑:看起来你应该只使用_setDerivedPosition来完成你想要完成的任务。