14

実行時にメッシュの一部を非表示にしたいと考えています。単一の面の属性を変更するなどして、これらのパーツを非表示/透明に設定できますか? メッシュ自体は1つの素材のみを使用しています。


編集者がこの質問を理解するための例示的な図: 4 つの頂点の各クワッドがFace4. ここで、メッシュの一部を非表示にする必要があります (ここでは 2 つの面が非表示になっています)。

例

4

1 に答える 1

23

各面に異なるマテリアルを割り当てることができます。次の例では、面がマテリアルを共有していますが、一部の面は透明です。

// geometry
var geometry = new THREE.BoxGeometry( 100, 100, 100, 4, 4, 4 );

// materials
materials = [
    new THREE.MeshLambertMaterial( { color: 0xffff00, side: THREE.DoubleSide } ),
    new THREE.MeshBasicMaterial( { transparent: true, opacity: 0 } )
];

// assign material to each face
for( var i = 0; i < geometry.faces.length; i++ ) {
    geometry.faces[ i ].materialIndex = THREE.Math.randInt( 0, 1 );
}
geometry.sortFacesByMaterialIndex(); // optional, to reduce draw calls

// mesh
mesh = new THREE.Mesh( geometry, materials );
scene.add( mesh );

実行時にマテリアルを変更する 1 つの方法を示す更新された Fiddle: http://jsfiddle.net/e0x88z7w/

編集:MeshFaceMaterial廃止されました。投稿とフィドルが更新されました。

three.js r.87

于 2012-08-23T03:41:35.590 に答える