0

正方形ベースのカスタム ジオメトリがあり、円錐のように見えます。ここに jsfiddle リンクがあります: http://jsfiddle.net/suvKg/18/

ここでオブジェクト全体の透過性を取得しました:

 var meshMaterial = new THREE.MeshLambertMaterial( { color: 0xffffff, opacity: 0.6, depthWrite: false, depthTest: false, vertexColors: THREE.VertexColors } ); 

しかし、コーンのベースに透明度を適用したくありませんが、側面のみに透明度を適用する必要があります。どうやってするか?

4

1 に答える 1

2

THREE.MeshFaceMaterial()メッシュ全体に使用する必要があります。たとえば、geometryX 面と 2 つの異なるマテリアルがある場合:

var materials = [
  new THREE.MeshLambertMaterial( { color: 0xffffff, opacity: 0.6, depthWrite: false, depthTest: false, vertexColors: THREE.VertexColors } ),
  new THREE.MeshLambertMaterial( { color: 0xffffff, opacity: 1, depthWrite: false, depthTest: false, vertexColors: THREE.VertexColors } )
]; // the two materials 

var mesh = new THREE.Mesh(yourGeometry, new THREE.MeshFaceMaterial(materials)); //tell three.js that you will have several materials in your geometry

materialIndex次に、マテリアル インデックスに基づいて、各面のマニュアルを決定する必要があります。

yourGeometry.faces[0].materialIndex = 0; 
yourGeometry.faces[1].materialIndex = 0;
yourGeometry.faces[2].materialIndex = 1; // <= the cone base 
...
yourGeometry.faces[lastFaceIndex].materialIndex = 0;

注意: のデフォルト パラメータは でmaterialIndexある0ため、ケースではマテリアル インデックスに対して 1 つの面のみを決定する必要があります。

于 2013-01-03T15:15:37.963 に答える