Ich versuche, verschiedene Material auf Vorder-und Rückseite der extrudierten Form anwenden, aber nicht herausfinden, wo side: THREE.FrontSide
und side: THREE.BackSide
setzen. Wo sollten sie putten?Unterschiedliches Material auf der Rückseite und Vorderseite der extrudierten Form
Mein entsprechenden Code-Teil ist:
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:
// ... 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.FrontSide' bezieht sich auf die Vorderseite eines' face', nicht die Vorderseite eines '' mesh' oder shape'. Was genau funktioniert nicht? – WestLangley
Mit dem obigen Code, wenn ich das Mesh von der Rückseite aus, ist die 'materialFront 'auch da. Ich möchte ein anderes Material auf der Rückseite des Gitters hinzufügen, wie den Würfelwürfel in http://stemkoski.github.io/Three.js/Textures.html. –
In der three.js-Quelle gibt es "Material: // Materialindex für Vorder- und Rückseite". Dies scheint zu bedeuten, dass die Vorder- und Rückseite nicht unterschiedliche Materialien haben können, da sie nur einen Index haben. Dies ist der Kern des Problems. Ich sollte in der Lage sein, einen Index für Rückseite und einen Index für Vorderseite zu verwenden. –