2

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

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

正确的

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

错误的

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

谁能解释我应该如何解决这样的常见问题,而无需旋转两个对象。

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

4

1 回答 1

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); 
}
于 2012-05-26T16:40:23.667 回答