Próbuję zastosować różne materiały na przedniej i tylnej stronie wytłaczanego kształtu, ale nie mogę określić, gdzie umieścić side: THREE.FrontSide
i side: THREE.BackSide
. Gdzie należy je ułożyć?Różne materiały z tyłu i przedniej części wytłoczonego kształtu
Moja odpowiednia część kodu jest:
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: Według komentarza WestLangley za udało mi się dodając inną teksturę 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.FrontSide' odnosi się do przedniej strony' face', a nie do przodu ma 'mesh' lub 'shape'. Co dokładnie nie działa? – WestLangley
Korzystając z powyższego kodu, gdy patrzę na siatkę z tyłu, znajduje się również "materialFront". Chciałbym dodać inny materiał z tyłu siatki, jak kostka kostki w http://stemkoski.github.io/Three.js/Textures.html. –
W źródle three.js znajduje się "materiał: // indeks materiałowy dla powierzchni przedniej i tylnej". Wydaje się to oznaczać, że przednia i tylna strona twarzy nie mogą mieć różnych materiałów, ponieważ mają tylko jeden indeks. To jest sedno problemu. Powinienem móc użyć jednego indeksu dla tyłu i jednego indeksu dla przodu. –