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

3d 匹配世界空间中的对象矩阵-Three.js,3d,three.js,3d,Three.js,我正在努力学习在世界空间操纵物体的正确方法。作为测试,我已经创建了一个立方体,我正在从任意向量到立方体上的每个顶点绘制一些线 如果我不以任何方式更改立方体,则线会很好地击中顶点: 但如果旋转立方体,则线不再与顶点匹配: 显然,我知道我可以像旋转立方体一样旋转直线,但我知道我应该操纵矩阵或向量来实现这一点 谁能解释一下我应该如何处理像这样的常见问题,而不需要旋转两个对象 为方便起见,我提供了一个如果您希望线与代码一起旋转,只需将线添加到立方体而不是场景: //场景.添加(行); 添加(行);

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

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

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

显然,我知道我可以像旋转立方体一样旋转直线,但我知道我应该操纵矩阵或向量来实现这一点

谁能解释一下我应该如何处理像这样的常见问题,而不需要旋转两个对象


为方便起见,我提供了一个

如果您希望线与代码一起旋转,只需将线添加到立方体而不是场景:

//场景.添加(行);
添加(行);
但是,如果您希望将线的原点保持在相同的位置,并更新线的端点,请执行以下操作

cube.updateMatrix();//确保cube.matrixWorld已更新。
对于(变量i=0;i<8;i++){
var vertex=cube.matrixWorld.multiplyVector3(cube.geometry.vertex[i].clone());
lineGeometry.vertex.push(顶点);
lineGeometry.Vertexs.push(lineStart);
}

当线的端点与立方体的顶点匹配时,是否希望线的原点保持在相同的世界位置?或者您想同时旋转两个对象,使其遵循原始结构?有没有可能解释这两种情况?这是一个学习练习,我已经开始阅读有关向量和矩阵的内容,但我不确定在哪里应用它们。谢谢,这是你回答的第二部分,我需要进一步了解,混合坐标空间的整个内容,我会到那里的。每个对象都有属性
矩阵
矩阵世界
<代码>矩阵存储本地位置、旋转和缩放<代码>矩阵世界存储对象在世界中的位置、旋转和比例(考虑其父对象和父对象的父对象,…)。如果要将点“变换”到对象的局部空间,则需要使用matrixWorld乘以该点。不确定这是否澄清了什么,这总是很难解释。。。