【问题标题】:Three.js - Can I 'apply' position, rotation, and scale to the geometry?Three.js - 我可以“应用”位置、旋转和缩放到几何吗?
【发布时间】:2015-01-17 06:50:24
【问题描述】:

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

例如,假设我导入了一个边长为 1 的立方体。立方体的最小和最大顶点位于 (0, 0, 0)(1, 1, 1)。我将对象的比例设置为(2, 2, 2),然后将转换应用于几何。

应用后,比例重置为(1, 1, 1),立方体的最小和最大顶点分别为(0, 0, 0)(2, 2, 2)

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

【问题讨论】:

    标签: three.js


    【解决方案1】:

    您可以直接将对象的变换应用于对象的几何体,然后像这样重置位置、旋转和缩放:

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

    three.js r.69

    【讨论】:

    • 对于一个可以反过来包含 THREE.Group() 的 THREE.Group() 我该怎么做?
    • @AmriteshAnand 如果您有问题,您将需要发布新帖子并显示您的代码。
    【解决方案2】:

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

    const ChildObject = load(/*...*/);
    ChildObject.rotation.set(90, 0, 0); // default rotation goes here
    const MainObject = new THREE.Object3D();
    MainObject.add(ChildObject);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多