我正在尝试学习操纵世界空间中物体的正确方法。作为一个测试我创建了一个立方体,我从一个任意向量绘制一些线到立方体上的每个顶点。
如果我不以任何方式改变立方体,那么这些线很好地击中了顶点:
但如果我旋转立方体,则线条不再与顶点匹配:
显然我知道我可以旋转线条与旋转立方体的数量相同,但我知道我应该操纵矩阵或矢量来做到这一点。
任何人都可以解释我应该如何处理这样的常见问题,而无需旋转这两个对象。
为方便起见,我有jsfiddle to play with
答案 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);
}