我正在尝试学习在世界空间中操纵对象的正确方法。作为测试,我创建了一个立方体,我正在从任意向量到立方体上的每个顶点绘制一些线。
如果我不以任何方式更改立方体,那么线条会很好地击中顶点:
但如果我旋转立方体,那么线条不再匹配顶点:
显然我知道我可以将线旋转与旋转立方体相同的量,但我知道我应该操纵矩阵或向量来做到这一点。
谁能解释我应该如何解决这样的常见问题,而无需旋转两个对象。
为方便起见,我有一个jsfiddle 可以玩
我正在尝试学习在世界空间中操纵对象的正确方法。作为测试,我创建了一个立方体,我正在从任意向量到立方体上的每个顶点绘制一些线。
如果我不以任何方式更改立方体,那么线条会很好地击中顶点:
但如果我旋转立方体,那么线条不再匹配顶点:
显然我知道我可以将线旋转与旋转立方体相同的量,但我知道我应该操纵矩阵或向量来做到这一点。
谁能解释我应该如何解决这样的常见问题,而无需旋转两个对象。
为方便起见,我有一个jsfiddle 可以玩
如果您希望线条与代码一起旋转,您只需将线条添加到立方体而不是场景中:
// 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);
}