我正在尝试变形加载的.obj文件的顶点,如下例所示:https://threejs.org/docs/#api/materials/MeshDepthMaterial - 当在THREE.MeshDepthMaterial中激活'wireframe'和'morphTargets'时。
但我无法达到预期的效果。从上面的示例中,几何体可以通过geometry.morphTargets.push( { name: 'target1', vertices: vertices } );
变形,但似乎morphTargets
不适用于我加载的3D对象,因为它是BufferGeometry
。
相反,我试图从myMesh.child.child.geometry.attributes.position.array[i]
独立地改变每个顶点,它有点工作(我的网格的顶点正在移动)但不如上面的例子。
这是我能做的Codepen。
如何在我加载的.obj文件中达到预期的效果?
答案 0 :(得分:1)
将变形目标添加到THREE.BufferGeometry
与THREE.Geometry
略有不同。例如:
// after loading the mesh:
var morphAttributes = mesh.geometry.morphAttributes;
morphAttributes.position = [];
mesh.material.morphTargets = true;
var position = mesh.geometry.attributes.position.clone();
for ( var j = 0, jl = position.count; j < jl; j ++ ) {
position.setXYZ(
j,
position.getX( j ) * 2 * Math.random(),
position.getY( j ) * 2 * Math.random(),
position.getZ( j ) * 2 * Math.random()
);
}
morphAttributes.position.push(position); // I forgot this earlier.
mesh.updateMorphTargets();
mesh.morphTargetInfluences[ 0 ] = 0;
// later, in your render() loop:
mesh.morphTargetInfluences[ 0 ] += 0.001;
three.js r90