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

Nei*_*eil 2 3d three.js

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

如果我不以任何方式更改立方体,那么线条会很好地击中顶点:

正确

但如果我旋转立方体,那么这些线不再与顶点匹配:

错误

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

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

为方便起见,我有一个jsfiddle玩

mrd*_*oob 5

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

// scene.add(line);
cube.add(line);
Run Code Online (Sandbox Code Playgroud)

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

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); 
}
Run Code Online (Sandbox Code Playgroud)