匹配世界空间中的对象矩阵 - Three.js

时间:2012-05-26 12:21:11

标签: 3d three.js

我正在尝试学习操纵世界空间中物体的正确方法。作为一个测试我创建了一个立方体,我从一个任意向量绘制一些线到立方体上的每个顶点。

如果我不以任何方式改变立方体,那么这些线很好地击中了顶点:

correct

但如果我旋转立方体,则线条不再与顶点匹配:

wrong

显然我知道我可以旋转线条与旋转立方体的数量相同,但我知道我应该操纵矩阵或矢量来做到这一点。

任何人都可以解释我应该如何处理这样的常见问题,而无需旋转这两个对象。

为方便起见,我有jsfiddle to play with

1 个答案:

答案 0 :(得分:5)

如果您希望使用代码旋转线条,只需将线条添加到多维数据集而不是场景:

// scene.add(line);
cube.add(line);

但是,如果您想要的是将线的原点保持在同一位置并改为更新线的末尾。

cube.updateMatrixWorld(); // make sure that cube.matrixWorld is updated.

for(var i = 0; i < 8 ;i++){
   var vertex = cube.matrixWorld.multiplyVector3(cube.geometry.vertices[i].clone());
   lineGeometry.vertices.push(vertex);
   lineGeometry.vertices.push(lineStart); 
}