Работаем по России

Статьи

Как подготовить исходные данные для создания AR и VR приложений

18.03.2020
В данной статье мы обсудим каким образом необходимо подготовить параметрические 3D модели, а также как подготовить правильные текстуры для использования из в приложениях дополненной и виртуальной реальности.

Требования к моделям:

Моделирование
1. В связи с ограничением на количество полигонов в модели, следует использовать методику запекания high-poly на low-poly, для чего создается два варианта модели: высокополигональный и низкополигональный, соответственно.
2. High-poly модель должна иметь ровную топологию без перекосов и пересечений поверхностей, для того, чтобы не вызывать артефакты, при запекании карт нормалей.
3. Low-poly модель должна содержать не более 100 000 полигонов и не более 300 000 вершин в статистике 3ds Max.
4. Low-poly модель также должна иметь ровную топологию без артефактов.
5. При построении Low-poly модели, следует помнить, что чем точнее ее геометрия повторяет форму high-poly модели, тем качественнее «запечется» normal map.
6. Нельзя использовать ProOptimizer или Decimator для уменьшения количества полигонов в Low-poly модели. Также не рекомендуется использовать эти инструменты и для high-poly моделей.
7. По возможности, следует удалять полигоны в low-poly модели, которые не будут видны глазу, для экономии ресурсов.
8. Не следует использовать в Low-poly модели булевые операции и инструмент «chamfer».
9. Следует избегать компланарных полигонов в видимых областях модели, во избежание артефактов освещения и отображения поверхностей.
10. Полигональная сетка должна строится из четырёхугольных полигонов, иногда допускаются треугольники, следует избегать полигонов с более чем четырьмя вершинами.
11. Следует избегать вершин, которые соединяли бы более чем 4 грани (т.н. «звездочек»).
12. Следует избегать не плоских, вывернутых полигонов.
13. Не следует делать очень длинные и при этом узкие полигоны, чтобы избежать артефактов при сглаживании объекта, и чтобы облегчить дальнейшее создание UV-развертки.
14. Вершины одного меша, находящиеся на одних и тех же координатах в пространстве следует сшивать, используя инструмент «wield».
15. Количество мешей в итоговом отдельно взятом объекте не должно превышать 15. Копии одинаковых мешей стоит делать зависимыми (instance) копиями.
16. В модели должны отсутствовать вывернутые нормали у полигонов, которые видны как более темные на скриншоте ниже. Такие нормали необходимо правильно развернуть, например, с помощью Modify-Polygon-Flip.
17. В low-poly модели закругленные поверхности не должны иметь большое количество ребер, вместо этого, следует использовать карты нормалей и группы сглаживания.
18. В low-poly модели на плоские поверхности ( hard s urface) не должны быть наложены группы сглаживания, во избежание появления графических артефактов, как на скриншоте ниже.
19. В итоговой модели не следует использовать более 5 групп сглаживания, во избежание чрезмерного расходование ресурсов компьютера на их просчет.
20. Если финальная сцена должна содержать множество объектов, то следует моделировать их отдельно и собирать в Unity.
21. Угол поворота 3d модели по осям должен быть прямым (0, 90, 180 или 270 градусов), если модель должна быть не под прямым углом в финальном варианте, то следует делать это уже в Unity.
22. При моделировании персонажей следует учитывать деформации на сгибах конечностей при дальнейшей анимации. Во внутренних местах сгибов следует уплотнять «сетку», тогда как на внешней стороне полигоны следует располагать кольцом, охватывающим сустав.

Текстурирование

1. При текстурировании нужно обязательно использовать PBR текстуры, для наиболее реалистичного изображения.
2. Для таких объектов, как например площадь, вымощенная брусчаткой, рекомендуется использовать процедурные текстурные карты.
3. Текстуры должны находиться в каталоге «Textures». Разрешение текстурных карт должно быть: для малых объектов = 2k (2048px), для больших = 4k (4096px). Разрешение текстур (по вертикали и горизонтали) должны соответствовать формуле 2n (2048 px и т.д.). Формат текстур TGA или PNG.
4. Нельзя использовать мультиматериалы в 3dMax, каждый уникальный материал должен быть назначен в отдельный слот в редакторе материалов.
5. При создании UV-развертки следует помнить о том, что неровные, круглые и многоугольные поверхности при переложении на плоскость могут искажаться. Для устранения дисторсии следует добавлять дополнительные разрезы.
6. При разрезании частей модели, для расположения их в пространстве UV, следует также помнить, что место разреза должно быть в наименее заметном для глаза, месте.
7. Файлы текстур должны иметь осмысленные наименования (guest_house_albedo, guest_house_normal, guest_house_metalic, guest_house_height, guest_house_ao и т.д.).
8. Для объектов с высокой детализацией, д ля с охранения деталей и уменьшения затрат ресурсов, рекомендуется «запекать» карту нормалей на low poly вариант модели.
9. Если «запеченная» карта нормалей имеет дефекты, то следует попробовать «запечь» её заново или исправить вручную, например, в Photoshop.
10. Требуемое количество текстурных карт = 3 - albedo, metallic (или specular), normal.
11. Для придания большей реалистичности некоторым основным объектам необходимо также добавить еще 2 текстурные карты: карту высот (height map) и карту локального затемнения (ambient occlusion map).
12. Для более оптимального использования места на UV-развертке, следует располагать текстуры оптимальным образом. Например, повторяющиеся куски одинаковых мешей рекомендуется складывать вместе (с наложением друг на друга).
13. При размещении частей текстуры н а U V-развертке следует избегать слишком близкого расположения друг от друга. Рекомендуется оставлять зазор в 10-15 пикселей, для того, чтобы избежать визуальных артефактов.
14. Если в меше много деталей, то не стоит забивать UV множеством мелких кусков, имеет смысл разделить их на несколько тайлов, при этом соблюдая соотношение размеров кусков текстуры отдельных объектов, чтобы не было разрыва в плотности текстуры.
15. При создании UV-развертки для персонажей, следует помнить о деформациях, при движении частей тела, которые могут вызывать дисторсию и отделять части текстуры с учетом этих искажений.

Экспорт в Unity

1. Разработка ведется в англоязычном ПО, поэтому все наименования (файлы, текстуры, слои, объекты и т.д.) должны быть на латинице, чтобы избежать ошибок с чтением кириллицы.
2. Перед экспортом в Unity следует перенести уже примененные трансформации глобальной координатной системы (например scale и rotate) в стэк модификаторов, при помощи утилиты Reset XForm.
3. Перед экспортом модели в Unity следует открыть редактор материалов 3dMax и проверить какие материалы используются в сцене, если есть лишние, временные – удалить их.
4. В экспортируемой сцене Pivot всех мешей должен находится в их центре, во избежание «разброса» объектов в пространстве при импорте в Unity.
5. Если в сцене были использованы зависимые копии объектов (instance copy), то при экспорте следует обязательно включить пункт «Preserve Instances», чтобы они перенеслись в Unity как префабы.
6. При экспорте модели из 3dMax необходимо включить смену оси Z на Y в настройках.
7. Итоговую 3d модель необходимо экспортировать из ПО для моделирования в ПО «Unity».
Структура данных в проекте Unity должна быть следующая:
Для экспорта-импорта следует использовать формат «.fbx» без включения ресурсов (текстур) в fbx-файл.
После импорта необходимо назначить текстурные карты в соответствующие слоты в материале. Шейдер для материала должен быть «Standard» или «Standard (Specular setup)» в зависимости от того какая текстурная карта используется для металлических свойств материала (Metalic/Specular).
8. В завершение, после привязки текстур, следует создать из модели префаб, после чего проект с моделью должен быть сохранен как unitypackage (Assets -> Export Package…).
9. После экспорта модели в Unity следует проверить папку материалов на наличие лишних неиспользуемых материалов, чтобы избежать чрезмерного расходования ресурсов. Также возможен вариант, при котором материалы не экспортируются вовсе, а создаются в Unity.
10. Готовый 3d объект должен быть предоставлен в экспортированном формате «.unitypackage», а также в исходном формате (например, «.max» для 3ds max).

Поскольку показатели, требования и терминология, используемые в технических регламентах и в документах, разрабатываемых и применяемых в национальной системе стандартизации, принятых в соответствии с законодательством Российской Федерации, не в полной мере способны описать потребность заказчика в функциональных, технических, качественных и иных характеристиках объекта закупки, документация о закупке содержит иные показатели, требования, условные обозначения и терминологию.

Возврат к списку

Спасибо за заявку!
Наш менеджер свяжется с вами.