加载后改变Three.js对象的比例

时间:2016-05-22 21:24:48

标签: three.js

我正在使用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编程不是很熟悉,所以如果你能给我任何暗示问题可能来自哪里,我真的很感激答案。

FIX: 我仔细研究了我正在装载的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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

object.matrix.scale( scale );