three.js - повторение РАЗДЕЛА текстурного атласа
Так что в three.js нам кажется, что нам нужно использовать свойства texture.offset и texture.repeat для извлечения фрагментов текстуры (атласа) для применения к различным сеткам. Это прекрасно работает, но, насколько я могу судить, невозможно выбрать повторение этого раздела текстуры? потому что свойство repeat уже используется для определения "края" подсекции текстуры. Мой код для использования texture.offset и texture.repeat для извлечения части текстуры:`
var texture = atlasTexture.clone();
texture.repeat.set(section.w / atlasTexture.width, section.h / atlasTexture.height);
texture.offset.x = ((section.x) / atlasTexture.width);
texture.offset.y = 1 - (section.h / atlasTexture.height) - (section.y / atlasTexture.height);
1 ответ
Короткий ответ... вы не можете без использования пользовательских шейдеров... и создание пользовательских шейдеров является более болезненным, чем это может быть IMO. Вы должны сделать информацию о регионе видимой для шейдера, кодируя индекс плитки в координате UV или что-то в этом роде... либо используя плитки фиксированного размера. Вы также должны беспокоиться о заполнении островков, если хотите, чтобы фильтрация текстуры не выполнялась. дать вам краевые артефакты. Я делал это раньше для движка рендеринга мозаики hexmap, который я написал некоторое время назад... и было очень трудно начать работать, но когда я это сделал, он работал действительно хорошо... У меня были карты 4k/4k плиток, работающие со скоростью 60fps с 3 слоя.
Если вы хотите обсудить это дальше вживую, я тусуюсь в этом трюке с dev.js. Мой ник - thrax.