実行時にメッシュの一部を非表示にしたいと考えています。単一の面の属性を変更するなどして、これらのパーツを非表示/透明に設定できますか? メッシュ自体は1つの素材のみを使用しています。
編集者がこの質問を理解するための例示的な図: 4 つの頂点の各クワッドがFace4
. ここで、メッシュの一部を非表示にする必要があります (ここでは 2 つの面が非表示になっています)。
実行時にメッシュの一部を非表示にしたいと考えています。単一の面の属性を変更するなどして、これらのパーツを非表示/透明に設定できますか? メッシュ自体は1つの素材のみを使用しています。
編集者がこの質問を理解するための例示的な図: 4 つの頂点の各クワッドがFace4
. ここで、メッシュの一部を非表示にする必要があります (ここでは 2 つの面が非表示になっています)。
各面に異なるマテリアルを割り当てることができます。次の例では、面がマテリアルを共有していますが、一部の面は透明です。
// 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