Я объединяю PlaneBufferGeometry, чтобы сделать большую плоскость, состоящую из квадратов. После слияния геометрий я могу применить материал, который добавляется к каждой отдельной геометрии в сетке.
Можно ли применить материал ко всей объединенной геометрии? Я хочу иметь карту нормалей, которая проходит через всю плоскость, а не повторяется на каждом квадрате.
https://threejs.org/docs/#examples/utils/BufferGeometryUtils.mergeBufferGeometries
Объединение геометрий таким образом также объединяет текстурные координаты каждой геометрии плоскости. Если вы не хотите такого поведения, вам нужно отказаться от последнего атрибута буфера uv
и создать новый. Предполагая, что ваша окончательная геометрия плоскости находится в плоскости xy
, вы можете использовать минимальное и максимальное значения xy
для создания координат текстуры в диапазоне [0,1] для всех вершин.
Диффузная карта и карта нормалей всегда используют одни и те же наборы UV-координат. Я не думаю, что использование двух материалов будет работать, поскольку вам нужны диффузная карта и карта нормалей в одной и той же шейдерной программе.
Спасибо за быстрый ответ. Установив атрибуты index и position/uv, я смог получить текстуру и карту нормалей для покрытия всей объединенной геометрии. (ссылка: stackoverflow.com/questions/19504337/…) Я надеялся, что текстура будет мозаичной, но с картой нормалей, распределенной по всей геометрии. Я думаю, что я сделаю мозаичную текстуру из исходного изображения и растяну ее по объединенной геометрии. Разве нельзя использовать два материала, один с тайловой текстурой, а другой с растянутой УФ-картой?