У меня есть прецедент, в котором пользователи могут указывать текстуру, которая затем должна быть сопоставлена с объектом через несколько лиц. Поэтому, к сожалению, я не могу использовать стандартное UV-сопоставление, например, с Blender, и поэтому хочу написать свой собственный файл UVGenerator
для создания моей собственной проекции. Итак, я ищу подробную информацию, как это сделать.Пользовательский UVGenerator - howto?
Я знаю, что THREE.ExtrudeGeometry.WorldUVGenerator
может служить примером, который расположен в src/extras/geometries/ExtrudeGeometry.js
В там я нашел два метода, где я не знаю, как работать вместе. Первый - generateTopUV
, который в основном принимает 3 вершины в качестве параметров и ожидает, что я верну три пары значений u/v. Так что это довольно прямолинейно, что делает этот метод.
generateTopUV: function (geometry, indexA, indexB, indexC)
Второй является странным для меня, так как она занимает четыре вершины, и я удивляюсь, почему, а также имя не помогает мне. Надежда sb может пролить свет на это.
код Это для WorldUVGenerator это:
generateSideWallUV: function (geometry, indexA, indexB, indexC, indexD) {
var vertices = geometry.vertices;
var a = vertices[ indexA ];
var b = vertices[ indexB ];
var c = vertices[ indexC ];
var d = vertices[ indexD ];
if (Math.abs(a.y - b.y) < 0.01) {
return [
new THREE.Vector2(a.x, 1 - a.z),
new THREE.Vector2(b.x, 1 - b.z),
new THREE.Vector2(c.x, 1 - c.z),
new THREE.Vector2(d.x, 1 - d.z)
];
} else {
return [
new THREE.Vector2(a.y, 1 - a.z),
new THREE.Vector2(b.y, 1 - b.z),
new THREE.Vector2(c.y, 1 - c.z),
new THREE.Vector2(d.y, 1 - d.z)
];
}
}
Приветствие Том