Three.js - 我可以对几何体“应用”位置、旋转和缩放吗?

问题描述 投票:0回答:2

我想编辑对象的位置、旋转和缩放向量,然后将它们“应用”到几何体,这会将这些向量归零,但保留变换。

例如,假设我导入一个边长为 1 的立方体。立方体的最小和最大顶点位于

(0, 0, 0)
(1, 1, 1)
。我将对象的比例设置为
(2, 2, 2)
,然后将变换应用于几何体。

应用后,比例将重置为

(1, 1, 1)
,立方体的最小和最大顶点分别为
(0, 0, 0)
(2, 2, 2)

有一些内置的方法可以做到这一点吗?

three.js geometry transformation
2个回答
36
投票

您可以直接将对象的变换应用于对象的几何形状,然后重置位置、旋转和缩放,如下所示:

object.updateMatrix();

object.geometry.applyMatrix4( object.matrix );

object.position.set( 0, 0, 0 );
object.rotation.set( 0, 0, 0 );
object.scale.set( 1, 1, 1 );
object.updateMatrix();

三.js r.150


0
投票

另一种解决方案是创建一个包装对象,其中子对象将具有默认的旋转、位置和缩放:

const ChildObject = load(/*...*/);
ChildObject.rotation.set(90, 0, 0); // default rotation goes here
const MainObject = new THREE.Object3D();
MainObject.add(ChildObject);
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.