Я строю лабиринт первого лица - каждая стена в лабиринте THREE.PlaneGeometry
. Насколько я понимаю, гораздо лучше использовать все эти стены, объединенные в единый объект. Я создал класс «стены», которая делает это каждый раз, когда новая «стена», добавлена:Растяжка текстуры по сложенным геометриям
this.geometry.merge(wall.mesh.geometry, wall.mesh.matrix);
После добавления всех стен, я создаю материал + применить текстуру:
this.material = new THREE.MeshBasicMaterial({ map: this.texture, side: THREE.DoubleSide }); this.mesh = new THREE.Mesh(this.geometry, this.material);
Проблема, с которой я сталкиваюсь, заключается в том, что стены не имеют одинаковой ширины, и поэтому отображение текстур происходит на всех фанках (Image Here) на объединенной географии. Каждая плоскость получает всю текстуру и растягивает ее до размеров. Принимая во внимание, что все стены требуют одинакового текстурирования, что было бы лучшим способом «обернуть» текстуру вокруг стен? Или я должен сначала строить свои стены по-разному?
Я также дал как Three.MultiMaterial(materials)
, так и THREE.MeshFaceMaterial(materials)
a go (дающий уникальный материал каждой стене), но они оба серьезно убивают производительность.
Спасибо заранее,
Happy Days,
J
Скриншот: Maze Image
вам придется установить уф атрибуты геометрии, так что соседние плоскости потрогать же уф и каждая плоскость имеет шаг в зависимости от его размера ... –