在 three.js 中控制立方体或其他几何体的每个面
Control over each face of a cube or other geometry in three.js
除了自己组装几何体,还有什么方法可以控制每个面吗?我想创建类似爆炸效果的东西,但要实现此效果,我必须控制每个面以将它们移动到不同的维度。
是否可以"dissasemble"预制几何体(立方体、多面体等),还是我必须手动构建它们?
如果要分解几何体,需要确保每个面都有唯一的顶点,并且不与另一个面共享顶点。
THREE.ExplodeModifier
将修改 THREE.Geometry
以便面不再共享顶点。它位于示例目录中,如果要使用它,必须明确包含在您的项目中。
你像这样使用修饰符:
var geometry = new THREE.BoxGeometry( 10, 10, 10 );
var explodeModifier = new THREE.ExplodeModifier();
explodeModifier.modify( geometry );
然后,在你的渲染循环中,你可以做这样的事情,例如:
mesh.geometry.vertices[ THREE.Math.randInt( 0, 35 ) ].multiplyScalar( 1.01 );
mesh.geometry.verticesNeedUpdate = true; // important
您可以在 this example 中查看其使用示例。
ExplodeModifier
目前不支持BufferGeometry
.
three.js r.70
除了自己组装几何体,还有什么方法可以控制每个面吗?我想创建类似爆炸效果的东西,但要实现此效果,我必须控制每个面以将它们移动到不同的维度。
是否可以"dissasemble"预制几何体(立方体、多面体等),还是我必须手动构建它们?
如果要分解几何体,需要确保每个面都有唯一的顶点,并且不与另一个面共享顶点。
THREE.ExplodeModifier
将修改 THREE.Geometry
以便面不再共享顶点。它位于示例目录中,如果要使用它,必须明确包含在您的项目中。
你像这样使用修饰符:
var geometry = new THREE.BoxGeometry( 10, 10, 10 );
var explodeModifier = new THREE.ExplodeModifier();
explodeModifier.modify( geometry );
然后,在你的渲染循环中,你可以做这样的事情,例如:
mesh.geometry.vertices[ THREE.Math.randInt( 0, 35 ) ].multiplyScalar( 1.01 );
mesh.geometry.verticesNeedUpdate = true; // important
您可以在 this example 中查看其使用示例。
ExplodeModifier
目前不支持BufferGeometry
.
three.js r.70