Трудно найти обновленный ответ на этот вопрос. Похоже, что многие решения используют MeshFaceMaterial
, который давно ушел из three.js (около версии 53, в настоящее время на 84)Three.js: отображение двух текстур в куб
Из исследования, которое я сделал, кажется, что это лучшая стратегия создания коробки, превратите его в сферу, а затем сделайте отображения.
Вот что я получил:
Я текстуры загружены на вары t1
и t2
var geometry = new THREE.BoxGeometry(1,1,1);
for (var i in geometry.vertices) {
var vertex = geometry.vertices[i];
vertex.normalize().multiplyScalar(1);
}
var mat1 = new THREE.MeshLambertMaterial({ map: t1 });
var mat2 = new THREE.MeshLambertMaterial({ map: t2 });
var materials = [mat1, mat2];
var mats = new THREE.MultiMaterial(materials);
var cube = new THREE.Mesh(geometry, mats);
scene.add(cube);
Проблемы:
- Это приводит в
Uncaught TypeError: Cannot read property 'visible' of undefined
в моей консоли - Для причин затенения я хотел бы использовать MeshPhongMaterial вместо MeshLamber tMaterial
Любые советы были бы высоко оценены!