我正在使用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
这只是对单个对象进行更改的测试,但至少我找到了解决此问题的方法。这是改变物体比例的普通方法吗?如果你有更好的解决方案或任何可以添加的东西,请随时贡献。
答案 0 :(得分:0)
您也可以尝试使用the THREE.Matrix4.makeScale
method更改其矩阵来缩放对象:
object.matrix.makeScale( xScale, yScale, zScale );
或者更简单的THREE.Matrix4.scale
method:
object.matrix.scale( scale );