【问题标题】:3D World to Local transformation3D 世界到本地转换
【发布时间】:2010-03-29 19:44:30
【问题描述】:

试图将节点的 local 位置设置为与给定的 world 位置匹配时,我真的很头疼。

我得到了一个解决方案,但是,AFAICS,它只考虑 orientation 和 position 但 NOT scaling :

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

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

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

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

非常感谢,

比尔

【问题讨论】:

    标签: math 3d ogre3d


    【解决方案1】:

    我不是 ogre3d 方面的专家,但我猜你需要类似的东西:

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

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

    编辑:看起来你应该只使用_setDerivedPosition,这正是你想要完成的。

    【讨论】:

    • 没想到会这么简单!谢谢!
    • @Bill 有时候你很幸运;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 2020-09-30
    • 1970-01-01
    • 2014-11-21
    相关资源
    最近更新 更多