【问题标题】:Changing scale of Three.js object after it is loaded加载后更改 Three.js 对象的比例
【发布时间】:2017-02-03 15:42:15
【问题描述】:

我正在使用 Three.js 和 aruco-js 开发一个增强现实项目。我编写了代码,以便在开始时将所有 3D 对象添加到场景(空)中,但数据最初是在标记检测时加载的。 现在我想创建一个用于更改对象外观的界面,从缩放对象的可能性开始。

所以我创建了一个 updateObject() 函数来设置新值,如下所示:

function updateObject(object, rotation, translation)
{
    ...
    ...
    ...

    // first method
    object.scale.x = 200;
    object.scale.y = 200;
    object.scale.z = 200;
  
    // second attempt
    object.scale.set(300, 300, 300);
};

我尝试了上面显示的两种方法来设置我的对象的比例,但它对我得到的渲染图像没有影响。有趣的是,我的 scene3d DOM 对象中的对象的值是我在函数中设置的值。但是为什么对输出没有任何影响呢? 我对 WebGL 或 Three.js 中的 3d 编程不是很熟悉,所以如果您能给我任何提示,问题可能出在哪里,我将非常感谢您的回答。

修复: 我仔细查看了我正在加载的 3D 对象,发现它们在另一个子对象内部有一个称为“网格”的子对象。通过尝试仅更改网格的比例,我发现它以这种方式工作。但我觉得它看起来很丑:

scene3d.children[visibleModels[0][0]+3].children[0].children[0].scale.set(2, 2, 2);
//visibleModels is a list of the markers/models that should be loaded

这只是对单个对象进行更改的测试,但至少我找到了解决此问题的方法。这是改变物体比例的普通方法吗?如果您有更好的解决方案或任何要添加的内容,请随时贡献。

【问题讨论】:

    标签: three.js


    【解决方案1】:

    您也可以尝试通过使用the THREE.Matrix4.makeScale method 更改其矩阵来缩放对象:

    object.matrix.makeScale( xScale, yScale, zScale );
    

    或者更简单的THREE.Matrix4.scale method

    object.matrix.scale( scale );
    

    【讨论】:

      猜你喜欢
      • 2020-09-29
      • 1970-01-01
      • 1970-01-01
      • 2021-05-03
      • 2017-03-19
      • 2018-06-08
      • 2012-08-17
      • 1970-01-01
      • 2010-11-08
      相关资源
      最近更新 更多