fomenkogregory
@fomenkogregory
Юниор софтварный инженер

Как применить разные текстуры к сторонам icosahedron?

Нужно 20 текстур разместить на сторонах. При передаче массива materials с 20 элементами в Mesh, применяется только один. С кубом работает нормально - при передаче массива из 6 элементов, каждая сторона окрашивается в соответствующий материал. В чем может быть проблема именно с icosahedron (фигура с 20 одинаковых faces)?
  • Вопрос задан
  • 46 просмотров
Решения вопроса 1
strangerintheq
@strangerintheq
z = z*z + с
https://codepen.io/strangerintheq/pen/abNrYdj

Вот разные геометрии

const meshes = [
      new THREE.BoxGeometry(),
      new THREE.SphereGeometry(),
      new THREE.CylinderGeometry(),
      new THREE.ConeGeometry(),
      new THREE.IcosahedronGeometry(),
      new THREE.OctahedronGeometry(),
      new THREE.TorusGeometry(),
      new THREE.TorusKnotGeometry(),
      new THREE.DodecahedronGeometry(),
].map(geometry => new THREE.Mesh( geometry, materials ));


У каждого face геометрии есть materialIndex, смотрим на них:

console.log(meshes.map(mat => [
    mat.geometry.type, 
    mat.geometry.faces.map(face => face.materialIndex).join('')
]));


И видим, что разные индексы есть далеко не везде:

0: (2) ["BoxGeometry", "001122334455"]
1: (2) ["SphereGeometry", "00000000000000000000000000000000000000000000000000000000000000000000000000000000"]
2: (2) ["CylinderGeometry", "00000000000000001111111122222222"]
3: (2) ["ConeGeometry", "0000000022222222"]
4: (2) ["IcosahedronGeometry", "00000000000000000000"]
5: (2) ["OctahedronGeometry", "00000000"]
6: (2) ["TorusGeometry", "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"]
7: (2) ["TorusKnotGeometry", "00000000000000000000000000000000000000000000000000…0000000000000000000000000000000000000000000000000"]
8: (2) ["DodecahedronGeometry", "000000000000000000000000000000000000"]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы