{"id":14293,"url":"\/distributions\/14293\/click?bit=1&hash=05c87a3ce0b7c4063dd46190317b7d4a16bc23b8ced3bfac605d44f253650a0f","hash":"05c87a3ce0b7c4063dd46190317b7d4a16bc23b8ced3bfac605d44f253650a0f","title":"\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u043d\u0435 \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0432 \u043d\u0438 \u043a\u043e\u043f\u0435\u0439\u043a\u0438","buttonText":"","imageUuid":""}

Создаем трехмерные модели по-новому: техническая инструкция

Департамент информационных технологий г. Москвы и Комитет по архитектуре и градостроительству г. Москвы утвердили новые технические требования к трехмерным моделям, которые прикладываются к заявлению на получение государственной услуги ««Оформление свидетельства об утверждении архитектурно-градостроительного решения объекта капитального строительства».

Специалисты ГБУ «Мосстройинформ» подготовили разбор процесса создания трехмерных моделей с акцентом на технические особенности, на которые стоит обратить внимание при разработке по новым требованиям. Также в статье специалисты ГБУ «Мосстройинформ» поделились своими мыслями о возможном улучшении технологии моделирования.

Что необходимо подготовить застройщику для выполнения новых требований к 3D-моделям:

⚫ Высокополигональную 3D-модель;

⚫ Низкополигональную 3D-модель;

⚫ Меш коллизии;

⚫ JSON-файл.

Мы рассмотрим следующий пайплайн разработки:

3Ds-max;

Substance Painter.

Почему такой пайплайн? Практически весь рынок 3D, связанный с архитектурой, работает в 3Ds max в основном из-за связки с Corona Render или V-ray, а также множества готовых библиотек материалов. Substance Painter — самая популярная и удобная программа для текстурирования.

Почему не используется Rizom UV? Для выполнения поставленных задач, практичнее использовать минимальное количество программ и пользоваться стандартными инструментами для ускорения работы.

Перед началом работы, застройщик передал нам 3D-модель в CAD-форматах. До начала работы с моделью обратите внимание, что в проекте 3Ds max выбраны единицы измерения метры, поскольку игровой движок UnrealEngine, в который будет импортирована модель, использует метрическую единицу измерения. В 3Ds max это можно настроить так:

Высокополигональная 3D-модель

В первую очередь необходимо удалить все ненужные элементы, например:

⚫ элементы сантехники;

⚫ ненужные двери;

⚫ лишние перегородки и прочее.

Эти элементы не влияют на общий вид будущей 3D-модели, и процедура является основой для «болванки». В требованиях указано, что моделируется только здание и важные объекты (отдельный въезд на подземную парковку), но без благоустройства (детские площадки, дорожки). Рекомендуем сразу объединить все повторяющиеся по смыслу конструктивные элементы. Это необходимо для удобства разработки и уменьшения количества объектов на Scene Explorer. Например, объединить все двери, окна и фасады одинаковым цветом или формой.

Рассмотрим важные технические требования к мешу:

1) Модель выполнена в масштабе 1:1.

2) Отсутствие дубликатов полигонов, геометрии в одном месте, чтобы избежать артефактов в игровом движке.

3) Правильно вывернутые нормали.

Игровой движок рендерит только 1 сторону полигона в отличии от Corona Render или V-ray по умолчанию, т. е. если полигон повернут в противоположную сторону от взгляда игрока, он будет прозрачен. Проверить это визуально в 3Ds max можно следующим образом, включив в настройки меша Backface Cull.

1) Максимальное количество треугольников — 2 млн. треугольников. Обратите внимание на важный момент, в требованиях указывается количество именно треугольников, а не полигонов, как обычно считается в 3Ds max. Если нет возможности уложиться в данное требование, Москомархитектура советует делить модель на части и к каждой такой части будет свой пивот и геопозциия.

2) Толщина стен здания — минимум 10 см. Возможно, это требование выставлено из-за технических особенностей рендеринга игрового движка.

3) Довольно строгие правила к построению меша. Более подробно с ними можно ознакомиться в требованиях.

4) Все стеклянные объекты должны быть объедены в 1 меш. Если их несколько видов, но не более 7, то к ним применяется отдельный свой материал.

5) Сохранение видимых в окнах интерьеров. Это необходимо, так как окна должны быть прозрачные.

Мы рекомендуем не использовать N-gon. N-gon – это полигон, имеющий более 4-х вершин. При триангуляции будут создаваться дополнительные грани и может образоваться неккоректное отображание меша в игровом движке. После окончания работы над моделью нужно использовать weld всех вершин на минимальном значении, чтобы случайно не удалить нужную геометрию.

Перед началом работы по моделированию обратимся к требованиям к развертке 3D-модели, а именно использованию технологии UDIM развёртывания. Это затратный по времени процесс, поскольку нужно развернуть модель в 2 миллиона треугольников в UDIM.

Обычно при моделировании здания для визуализации выбирается элемент модели, накладывается материал и тайлинговая текстура. Затем используется и настраивается модификатор UVW Map. Этот метод работает не только в визуализации, но и в игровых движках. Но для новых требований этот метод не подходит, необходимо использовать 1 материал на всю модель, используя UDIM UV-развертку, максимальное количество — 54 текстурных квадрата. Например, все двери будут находится в квадрате 1001, перилла в 1002 и т. д. В дополнение к этому необходимо соблюдать Texel Density, чтобы модель в игровом движке была равномерно детализирована, конкретные требования к этому расписаны.

Для работы с UDIM квадратами в 3Ds max необходимо использовать модификатор Unwrap UVW и в открытым окне Edit UVWs включить Show the Multi-tile. На можно увидеть, как приблизительно будет выглядеть развертка, в указанном примере удалось уложиться в 6 текстурных квадратов.

Все декоративные элементы, выступающие за основную геометрию на 10 см, должны быть запечены в текстуру. Это тоже занимает время и силы, а также не стоит забыть о Texel Density.

Далее нам нужен набор текстур для каждого текстурного квадрата: BaseColor, ERM, Normal. Если в карте нормалей нет информации, карта нормалей должна быть, потому что при загрузке в движок образуется 3 большие текстуры. То есть все BaseColor текстуры объединяются в 1 большую текстуру, аналогично объединяются Normal и ERM текстуры. Более подробно о данной особенности можно почитать, написав в поисковой строчке браузера «Virtual Textures Unreal Engine».

Для чего это нужно? Видеокарте проще обработать 1 большой файл, чем много небольших. Итого в движке будет 1 материал и 3 большого размера текстуры для каналов BaseColor, ERM, Normal для одной модели. Это влияет на количество обращений к отрисовки 1 кадра в игровом движке.

Мы советуем использовать следующий метод: разворачивать отдельно все элементы для каждого текстурного квадрата отдельно, перемещать элементы в нужный квадрат и после чего все меши объединить, так будет быстрее и удобнее, т. к. работа с разверткой для такой высокополигональной модели требует больших ресурсов персонального компьютера. Также перед объединением, мы советуем клонировать модель в отдельный файл, так как он пригодится при создании низкополигональной модели.

После выполнения требований к мешу и развертке модели, необходимо нанести 1 материал (правильнее будет для 3Ds max использовать стандартный материал Standart (Legasy)), с названием, указанным в требованиях. Названия для каждого здания индивидуальны, а также сам меш необходимо назвать в соответствии с требованиями, после чего можно приступать к текстурированию. В Substance Painter при импорте модели нужно указать, что используется UDIM, указать формат нормалей для DirectX, поскольку Unreal использует его по умолчанию.

По окончании текстурирования необходимо настроить экспорт под технические требования. Максимальное разрешение текстуры 4096х4096.

Все текстуры должны быть названы и пронумерованы согласно техническим требованиям. Это очень важно, иначе вся «магия» UDIM не сработает.

После завершения всех этапов, необходимо настроить Pivot. Для этого необходимо отцентровать pivot относительно модели и опустить его на уровень нулевого этажа или туда, где здание соприкасается с землей. После этого нам нужно поставить модель в нулевые координаты на сцене по XYZ осям. Это можно сделать после того, как вы сделаете низкополигональную модель, так как при экспорте CAD-модели у вас сохраняется геоподоснова на модели. Данная модель обычно находится по правильным координатам (но всегда стоит перепроверить), эти координаты пригодятся в заполнении файла JSON.

После подготовки высокополигональной модели можно переходить к низкополигональной.

Низкополигональная модель

Важные технические требования:

1) Низкополигональная модель должна быть названа согласно требованиям.

2) Материал должен быть назван согласно требованиям.

3) Необходимо использовать единый текстурный атлас. Использование атласа должно осуществляться как при привычной подготовки модели к игровому движку. Можно использовать наложение полигонов друг на друга, если есть возможность, чтобы «сэкономить» на разрешении текстур.

4) Допустимое количество полигонов 15 000 — 50 000. В низкополигональной модели указываются именно полигоны, а не треугольники.

5) Предельно допустимый размер модели – 20 Мб, поскольку мы вшиваем в FBX текстуру.

6) Можно удалить декоративные и конструктивные элементы, не влияющие на общий облик объекта.

Для начала необходимо создать модель, описывающую силуэт и форму модели. Мы советуем не использовать N-gon и треугольники, постараться сделать как можно меньше полигонов и правильную сетку, это облегчит работу при запечке. После этого необходимо сделать развертку на едином текстурном атласе, расстояние между элементами советуем сделать побольше, чтобы при сжатии разрешения (если сжатие будет нужно) не образовывались артефакты. Pivot у модели лучше сделать в тех же координатах как у высокополигональной модели. Далее необходимо накинуть текстуры с высокополигональной модели на низкополигональную, можно сделать отдельный пак текстур для запечки, так как текстуры, подготовленные для Unreal, не совсем подойдут для 3Ds max. Мы использовали Scanline Render, но можно запекать и в Corona Render или V-ray, где вам привычнее и удобнее.

В данной запечке есть множество нюансов, которые необходимо учесть: правильность сетки, настроенный Cage, освещение и т. д. Возможны появления артефактов, если модель является многоуровневой и со сложными архитектурными решениями, а не просто прямоугольник.

В завершении модель необходимо выставить по геоподоснове (если вы ее перемещали) и поднять на высоту, указанную в документации. Далее экспортируем модель со встроенной текстурой, для этого достаточно просто включить Embed Media в настройках экспорта.

Меш коллизии

В соответствии с новыми требованиями необходимо создавать отдельные меши прямоугольники, описывающие нашу высокополигональную модель, тем самым создавая коллайдеры (невидимые физические стены) для игрового движка, это требуется, чтобы камера игрока не проходила сквозь здания.

Каждый меш должен быть назван и пронумерован согласно требованиям. Если форма модели будет не в виде простого прямоугольника, а с необычным архитектурным решением (например, выступающими балконами и т. д), то число меш коллизии может достигать от 100 шт.

JSON-файл

В требованиях подробно расписано, какой пункт за что отвечает, с этой работой может справиться человек, который не является специалистом по программированию. Почти вся необходимая для формирования JSON информация находится в распоряжении застройщика, кроме:

1) 19 пункт – Необходимо сделать рендер модели для превью и прогнать через любой онлайн-конвертер с jpg в base64, получится длинный код.

2) 21 пункт – Координаты точки вставки модели в МСК77. Здесь прописываются координаты с никзкополигональной модели в проекте 3ds max, если вы выставили всё правильно по геоподоснове.

3) 22 пункт – Значения параметров стекол. В требованиях подробно описано как нужно называть стекла и какие к ним идут материалы. Важно соблюдать идентичность названия мешей и материалов в 3Ds max, и в JSON.

Кратко о предоставлении материалов

1) Низкополигональная модель предоставляется отдельно с вшитыми текстурами.

2) Высокополигональная модель предоставляется в ZIP архиве, вместе с текстурами и с JSON файлом, также меш коллизии включен в FBX файл модели.

0
Комментарии
-3 комментариев
Раскрывать всегда