如何旋转和翻译祖父母以将孙子定位在世界空间中

时间:2017-10-30 13:21:33

标签: three.js

我需要将孙子对象移动到世界空间中给定的目标位置和方向。必须通过操纵祖父母(根)位置和轮换来移动大孩子(孩子2)。

如果我有一个给定的目标世界矩阵, 我必须向祖父母申请什么矩阵才能让孙子与目标相匹配?

before transformation before transformation

after transformation, child 2 moved to target after transformation, child 2 moved to target

我的问题不同,因为我并没有找到可用的IK系统"。我只需要计算一个祖父母的矩阵。我获得了你的答案,但似乎没有人评估正确的矩阵。与此同时,我找到了一个有效的解决方案。我会在我的代码中进行一些清理并发布它。

2 个答案:

答案 0 :(得分:0)

您希望将矩阵应用于祖父对象,以便孙子对象的世界矩阵与目标对象的世界矩阵匹配。

为此,请使用以下模式:

var matrix = new THREE.Matrix4(); //create once and reuse

. . .

scene.updateMatrixWorld(); // the renderer does this for you in the render loop

matrix.getInverse( gchild.matrixWorld ).premultiply( target.matrixWorld );

parent.applyMatrix( matrix );

既然你知道了答案,那么它应该是显而易见的。

three.js r.87

答案 1 :(得分:-2)

对于对象的本地坐标系中的点,

object.localToWorld( point );
假设对应用于对象的点应用相同的变换,

将返回该点的世界坐标。

THREE.js: Calculate world space position of a point on an object