Próbuję użyć Three.js do renderowania sześcianu z 6 różnymi obrazami na twarzach.Jak korzystać z wielu materiałów w module Three.js?
Konstruktor THREE.CubeGeometry wygląda następująco:
THREE.CubeGeometry = function (width, height, depth, segmentsWidth, segmentsHeight, segmentsDepth, materials, sides)
można zobaczyć z kodem, który przewiduje się „materiały” być zarówno materiałem lub tablica 6 z różnych materiałów, ale materiały przekazywane tutaj nigdy nie wydają się być używane podczas renderowania.
Zamiast tego pojedynczy materiał nadawany konstruktorowi siatki jest używany dla wszystkich 6 ścian.
var face_materials = ... <load 6 textures here>...
var cube_g = new THREE.CubeGeometry(400,400,400,1,1,1, face_materials); // <= ignored?
var cube = new THREE.Mesh(cube_g, some_material); // <= this is used instead
Nawet jeśli mijam null lub niezdefiniowane jako „some_material”, wydaje się, aby zastąpić face_materials i czynią nic.
Czy istnieje sposób, aby to działało za pomocą CubeGeometry? Czy muszę utworzyć osobno 6 twarzy i dodać je do sceny?
Wow, to działa! Dziękuję Ci. MeshFaceMaterial był brakującym składnikiem - raczej nieintuicyjnie, ponieważ jego definicja to: THREE.MeshFaceMaterial() = function() {}; Może kiedyś dowiem się, dlaczego to działa ... –
Nie działa dla mnie w r53. – mpso
Zobacz http://stackoverflow.com/questions/13795354/verification-of-using-multiple-textures-with-three-js-cubes, aby uzyskać informacje na temat robienia tego w nowszych wersjach .j.js. – mpso