押し出し形状の表側と裏側に異なる材料を適用しようとしていますが、side: THREE.FrontSide
とside: THREE.BackSide
をどこに入れるのか分かりません。彼らはどこに置くべきですか?押し出し形状の裏側と裏側に異なる材料
私の関連するコードの一部は次のとおりです。
var materialFront = new THREE.MeshPhongMaterial({ ambient: 0xffffff, map: frontTexture }); var materialSide = new THREE.MeshPhongMaterial({color: 0xE68A00, ambient: 0xffffff}); var extrusionSettings = { amount: 10, bevelEnabled: false, bevelThickness: 0.2, bevelSize: 0.2, bevelSegments: 8, material: 0, extrudeMaterial: 1 }; var geometry = new THREE.ExtrudeGeometry(shapes, extrusionSettings); var materials = [materialFront, materialSide]; var material = new THREE.MeshFaceMaterial(materials); mesh = new THREE.Mesh(geometry, material);
UPDATE: WestLangleyさんのコメントによると、私はbackfacesに異なるテクスチャを追加することに成功しました:
// ... var materials = [materialFront, materialSide, materialBack]; // ... for (var face in mesh.geometry.faces) { if (mesh.geometry.faces[ face ].normal.z == 1) mesh.geometry.faces[ face ].materialIndex = 2; }
three.js
'THREE.FrontSide'は' face'なく、 '' mesh'又はshape'の正面側の正面側を指します。何が正しく機能していないのですか? – WestLangley
上記のコードを使って、裏面からメッシュを見ると、 'materialFront'もそこにあります。私はhttp://stemkoski.github.io/Three.js/Textures.htmlのダイスキューブのように、メッシュの裏側に別のマテリアルを追加したいと思います。 –
three.jsソースには、 "material: //表面と裏面の材料インデックス"があります。これは、表面と裏面の材質が異なるため、インデックスが1つしかないためです。これが問題の核心です。私はバックに1つのインデックスを使用し、フロントに1つのインデックスを使用できるはずです。 –