1

私は3つの材料の配列を持っています。これらの 1 つは、透過性が true に設定され、不透明度が 0 に設定された MeshBasicMaterial です。

他の面の内壁が見えることを期待して、この透明なマテリアルを立方体の上面に割り当てました。

ただし、代わりに、上面は単純に描画されず (キャンバスの背景のように白く表示されます)、「透けて見える」ことはありません。

これはどのように達成されますか?

(最終的な効果は、上部が開いた箱になります)

// FELT TEXTURE
var felt = new THREE.MeshLambertMaterial({
    map: THREE.ImageUtils.loadTexture('images/greenfelt.jpg')
});

// WOOD TEXTURE
var wood = new THREE.MeshLambertMaterial({
    map: THREE.ImageUtils.loadTexture('images/woodgrey.jpg')
});

// TRANSPARENT MATERIAL
var transparent = new THREE.MeshBasicMaterial({ 
    opacity: 0,
    transparent: true
});

var materials = new THREE.MeshFaceMaterial([
    felt,
    wood,
    transparent
]);

var cube = new THREE.CubeGeometry(RECTANGLE_WIDTH, RECTANGLE_HEIGHT, RECTANGLE_DEPTH ); 
    cube.faces[0].materialIndex = 1; // LEFT
    cube.faces[1].materialIndex = 1; // RIGHT
    cube.faces[2].materialIndex = 1; // BACK
    cube.faces[3].materialIndex = 1; // FRONT
    cube.faces[4].materialIndex = 2; // TOP (TRANSPARENT)
    cube.faces[5].materialIndex = 0; // BOTTOM


// RECTANGLE
var rectangle = new THREE.Mesh( cube, materials );

scene.add( rectangle );
4

1 に答える 1

4

たぶん、あなたのキューブは淘汰されています。デフォルトでは、各面の前面のみが描画されます。すべてのキューブ マテリアルの設定material.side = THREE.DoubleSideを試してください (透明なマテリアルには必要ありませんが、他のすべてのマテリアルには必要ありません)。

felt.side = THREE.DoubleSide;
wood.side = THREE.DoubleSide;
var materials = new THREE.MeshFaceMaterial([
  felt,
  wood,
  transparent
]);
于 2013-07-16T09:19:17.913 に答える