Math 三维世界到局部变换
试图将节点的本地位置设置为与给定的世界位置相匹配,我真的很头疼 我得到了一个解决方案,但是,AFAICS,它只考虑了方向和位置,但不考虑缩放:Math 三维世界到局部变换,math,3d,ogre3d,Math,3d,Ogre3d,试图将节点的本地位置设置为与给定的世界位置相匹配,我真的很头疼 我得到了一个解决方案,但是,AFAICS,它只考虑了方向和位置,但不考虑缩放: node_new_local_position = node_parent.derivedOrientation().Inverse() * ( world_position_to_match - node_parent.derivedPosition() ); 所讨论的节点是节点_父节点的子节点;节点的父级局部和派生的属性(方向、位置和缩放)以及其全
node_new_local_position = node_parent.derivedOrientation().Inverse() * ( world_position_to_match - node_parent.derivedPosition() );
所讨论的节点是节点_父节点的子节点;节点的父级局部和派生的属性(方向、位置和缩放)以及其全矩阵变换都是已知的
所有位置均为三维矢量;方向是一个四元数;完整变换是一个4x4矩阵
有人能帮我修改解决方案以支持节点层次结构中的缩放吗
多谢各位
比尔我不是食人魔3D方面的专家,但我想你需要一些类似的东西:
node_new_local_position = node_parent._getFullTransform ().inverse() * world_position_to_match;
其中\u getFullTransform().inverse()
是节点\u父节点
变换的完整4 x 4
逆
编辑:看起来你应该使用
\u setDerivedPosition
,这正是你想要完成的。我不是ogre3d方面的专家,但我想你需要这样的东西:
node_new_local_position = node_parent._getFullTransform ().inverse() * world_position_to_match;
其中\u getFullTransform().inverse()
是节点\u父节点
变换的完整4 x 4
逆
编辑:看起来你应该使用
\u setDerivedPosition
来完成你想要完成的事情。我没想到会这么简单!谢谢@比尔:有时候你会很幸运我没想到会这么简单!谢谢@比尔:有时候你会很幸运