2

假设我有一个简单的立方体和一些指定其宽度、高度和深度的变量。

当 w/h/d 发生变化时,如何更新我的三个网格?(我有其他的东西,比如 changelisteners 等)。我是否直接更新顶点?还是重绘所有内容更容易?

4

1 回答 1

5

我认为最简单的方法是创建具有 1 个单位尺寸 (1x1x1) 的立方体。然后通过缩放来设置尺寸:

mesh.scale.x = width;
mesh.scale.y = height;
mesh.scale.z = depth;

实际上不确定网格是否支持缩放,如果不支持,您可以将其包装在 Object3D 中

var obj = new THREE.Object3D();
    obj.add(mesh);
obj.scale.x = width;
obj.scale.y = height;
obj.scale.z = depth;

没有什么能阻止您直接修改顶点。我认为您需要指定geometry.dynamic=true;然后geometry.verticesNeedUpdate=true;在这种情况下。

于 2013-01-25T17:15:07.883 回答