Итак, в three.js кажется, что нам нужно использовать свойства texture.offset и texture.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);
Короткий ответ ... вы не можете без использования пользовательского шейдера ... а создание пользовательских шейдеров более болезненно, чем это могло бы быть IMO. Вы должны сделать информацию о регионе видимой для шейдера, закодировав индекс тайла в координате UV или что-то в этом роде ... либо с помощью плиток фиксированного размера .. Вам также следует позаботиться о заполнении островов, если вы хотите, чтобы фильтрация текстуры не давала вам краевых артефактов. Я делал это раньше для движка рендеринга плитки шестнадцатеричной карты, который я написал некоторое время назад ... и это было неудобно для работы, но когда я это сделал, он работал действительно хорошо .. У меня были карты 4k / 4k плиток, работающие со скоростью 60 кадров в секунду с 3 слоя.
Если вы хотите обсудить это дальше вживую, я тусуюсь в этой группе разработчиков three.js .. мой ник thrax.
Проклятие. Я надеялся, что это сработает с помощью некоторой комбинации настроек UV геометрии + смещения / повторения текстурной карты. Единственная проблема с пользовательскими шейдерами заключается в том, что я все еще хочу использовать все другие замечательные аспекты стандартного материала (карты нормалей, освещение и т. д.). Может, есть способ «расширить» стандартный шейдер материала? а не начинать с нуля.
Взгляните на этот пример, чтобы узнать, как работать с альтернативными текстурами.