如何使用 Object3D 的局部旋转设置 Three.js 平面旋转?
How do I set a Three.js Plane rotation with an Object3D's local rotation?
我有一个 Plane, and a Group 对象,它有一个旋转。我需要将平面的表面法线设置为始终根据组的旋转进行旋转(此旋转根据用户输入而变化)。
我试过这样的事情,工作方式:
onGroupRotation() {
const vec = orbitGroup.rotation.toVector3();
orbitPlane.set(vec, 0);
}
问题是旋转的幅度似乎太小:飞机的旋转与orbitGroup
的旋转不完全匹配。
我不太了解线性代数,我仍在学习向量点和叉积之类的东西。我敢肯定有一个简单的解决方案,更有知识的人可以帮助我修复。
组或网格等 3D 对象的默认前向矢量是 (0, 0, 1)
。如果将表面法线设置为此值并应用组的四元数,您应该会得到所需的结果。
plane.normal.set( 0, 0, 1 ).applyQuaternion( group.quaternion );
我有一个 Plane, and a Group 对象,它有一个旋转。我需要将平面的表面法线设置为始终根据组的旋转进行旋转(此旋转根据用户输入而变化)。
我试过这样的事情,工作方式:
onGroupRotation() {
const vec = orbitGroup.rotation.toVector3();
orbitPlane.set(vec, 0);
}
问题是旋转的幅度似乎太小:飞机的旋转与orbitGroup
的旋转不完全匹配。
我不太了解线性代数,我仍在学习向量点和叉积之类的东西。我敢肯定有一个简单的解决方案,更有知识的人可以帮助我修复。
组或网格等 3D 对象的默认前向矢量是 (0, 0, 1)
。如果将表面法线设置为此值并应用组的四元数,您应该会得到所需的结果。
plane.normal.set( 0, 0, 1 ).applyQuaternion( group.quaternion );