Введение
Большинство 3D-художников, которые по крайней мере, один раз сделали действительно хороший рендер, конечно, делились, например, в 3d галереях для получения отзывов и обратной связи.
После того, комментаторы просят показать сетку модели или даже целые сцены. Кроме того, обеспечение визуальной сетки необходима по правилам многих галерей для принятия работ.
Возможно, наиболее интересный случай, в котором требуется 3d max сетка, это приятное вопрос:«Фотография или рендер?». Конечно, лучше один раз увидеть, чем услышать или прочитать стораз. И заметная реакция, а также разочарование для всех скептиков, является публичная демонстрация каркаса.
Даже не каждый архитектор, дизайнер, инженер может отличить фотореалистичную визуализацию профи от банального фото. Так что для них наглядная демонстрация сетки абсолютно необходима.
Каркасное изображение является наиболее убедительный аргумент, который, очевидно, показывает, что изображение сделано в 3d графике.
Так как же можно продемонстрировать 3d max сетку и в то же время, сохранить презентабельность этой модели?
4) Grid & Tilemap
Теперь, когда наш «GrassPlatform_TileSet» спрайтшит (Spritesheet) успешно настроен в окне палитры плиток (Tile Palette), самое время начать строительство 2D уровня!
Для начала нам нужно создать новый тайлмап на нашей текущей сцене; это можно сделать в выпадающем меню: GameObject -> 2D Objects -> Tilemap. Это не только создаст тайлмап, также создаётся игровой объект сетка (Grid), для которой новый тайлмап автоматически станет дочерним.
Наиболее похожие игровые объекты по структуре на «Сетка <-> Тайлмап», это настройка интерфейса пользователя в Unity; где холст (Canavas) родитель игрового объекта выступает в качестве контейнера дочернего UI объекта (такого как текст и изображение). В игровом объекте «Сетка» используется компонент с таким же именем «Сетка» (Grid). Он определяет размеры всего дочернего тайлмапа у игрового объекта.
Тайлмап-система была разработана так, что несколько тайлмапов игровых объектов могут быть дочерними к одной сетке. Это позволит собрать твой уровень из нескольких слоев и из разных плиток.
Isoline rendering
Еще один немаловажный аспект предоставления сетке числа итераций сглаживания, конечно, если модель имеет соответствующие свойства. Если количество сглаживания итераций слишком высока, каркасный рендеринг может показаться очень тяжелый и грязный.
Стоит отметить еще один важный режим — сетки дисплея. Этот режим является способом отображения модели с изолиниями.
Режим, с помощью которого сетка будет эстетично гладкой кривой. Режим изолинии, позволяет иметь хорошие изолинии не только в окне просмотра, а также при рендере.
Для использования этого режима в объекте нужно применить модификатор Turbosmooth. Он присутствует в меню Modifiers list.
Чтобы сделать модель с изолиниями, мы должны установить флажок Isoline Display, в Modifiers Turbosmooth объекта. Если модель уже имеет сглаживания, например, использованием NURMS подразделения Editable Poly, следует, конечно, отключить.
Большинство современных двигателей рендеринга позволяют сделать каркасные объекты аналогичным образом.
Показывайте свое мастерство, демонстрируя сетку сложной модели, гордитесь своей работой, и это, безусловно, будет оценено коллегами и потенциальными клиентами.
Приятной каркасной визуализвции!
V-Ray решение: трюки
Как правило каркасный рендер делают для всей сцены сразу. В этом случае нет необходимости устанавливать VRayMtl с VRayEdgesTex карту для каждого объекта.
В таком случае можно использовать Orerride mtl.
Эта функция позволяет создать сцену из одного материала и одновременно сохранить материалы на каждом объекте.
Функция доступна в V-Ray: развертывающего меню Global switches в вкладке V-Ray диалогового окна Render Scene (F10).
Для использования этой коррекции, мы должны установить Orerride mtl флажок в разделе материала. После чего кнопки станут доступными. Предустановленный материал VRayMtl с VRayEdgesTex картой перетаскиваем в слот Override mtl.
Функция Override Exclude … позволяет выбрать объекты, которые не должны быть изменены при использовании функции глобального материала Orerride mtl.
Когда сцена содержит только непрозрачные объекты, все достаточно элементарно.
Но в случае когда в сцене есть прозрачные объекты, такие как стекло, или, как у нас, прозрачная упаковочная пленка, не все получается, как ожидалось.
Прозрачные объекты теряют свою функцию и привлекательность когда перестают быть прозрачными, а также они заслоняют порой очень важные элементы. Например хрустальная ваза, через которую видно цветов, или автомобильное стекло, через которое видно салон.
Выходом из этой ситуации будет оставить такие объекты с родными материалами. В большинстве случаев это наиболее рациональное решение. Прозрачный материал не нарушает общую картину, и, наоборот, делает ее более интересной.
Случай с VRay Displacement стоит отметить отдельно.
Как известно, Displacement способ создания геометрии на основе текстуры, она осуществляется путем деления сетки исходного объекта на ряд суб-треугольников и перемещения их вершин соответственно текстуры.
Несмотря на то что VRayEdgesTex поддерживает такие объекты, она показывает ребра исходной сетки и не показывает количество новых граней, которые были созданы с перемещением.
3) Окно «Палитра Плитки» (Tile Palette)
В Unity 2017.2 появилось новое окно: палитра плиток (Tile Palette). Это окно является неотъемлемой частью использования тайлмап-системы, организуя интерфейс для выбора плиток (Tiles).
Прежде чем мы сможем добавить «TopGrassTile» плитку в окно палитры плиток (Tile Palette), мы сначала создадим новую палитру (Palette). Палитры (Palettes) могут быть использованы для организации наборов плиток (Tiles) для хранения их всех (сотни или больше!) в одном месте.
В выпадающем окне меню палитры (Palette) есть опция, чтобы создать совершенно новую палитру. И просто можно из папки контента «перетащить и бросить», чтоб добавить «TopGrassTile» в эту новую палитру!
Чтобы не таскать по одному изображению, есть вариант перетащить лист спрайтов (Spritesheet), который содержит нарезанные спрайты, чтобы автоматически создать набор плиток (Tiles) на палитре.
1) Спрайты (Sprites)
Импортировать изображения в Unity можно разными способами:
- Сохранить нужный файл изображения в папке контента проекта «Assets»
- Из верхнего меню, выбрав проекта «Assets -> Import New Asset» и выбрав нужный файл
- Перетащив файл изображения из проводника в окно проекта (Project Window) в редакторе Unity (это, пожалуй, самый простой способ)
После того как мы импортировали изображение в проект, его тип текстуры (Texture Type) определяется в зависимости от режима твоего проекта 2D или 3D.
Т. к. мой проект уже настроен для 2D режима, «GrassPlatform_TileSet» будет автоматически присвоен тип текстуры «Sprite (2D and UI)», это позволит, тайлу (tile) ссылаться на этот спрайт.
«GrassPlatform_TileSet» — это серия спрайтов в одной картинке, нам нужно будет нарезать его на отдельные спрайты; это может быть сделано путем настройки режима спрайта из «единичный» (Single) в «множественный» (Multiple) и открытием редактора спрайтов (Sprite Editor):
Окно редактора спрайтов позволяет нарезать изображение на несколько спрайтов; так что ты сможешь сделать одно изображение со множеством рисунков (spritesheet) в любом программном обеспечении для редактирования изображений и определить, какие области изображения рассматриваются как отдельные спрайты прямо в Unity. Не надо плодить и управляться с сотнями отдельных файлов изображения!
«GrassPlatform_TileSet» изображение составляется из ряда плиток или тайлов (tile), мы можем использовать настройку нарезки по сетке в редакторе спрайтов (Sprite Editor’s Grid Slicing) для автоматического разбиения изображения на несколько спрайтов. Размеры каждой ячейки в этом наборе тайлов (tileset) 64 на 64 пикселя, так что мы можем ввести эти настройки и позволить редактору спрайтов автоматически создать необходимые нарезки спрайта:
И после нажатия кнопки нарезать «Slice», мы получим нарезанный набор спрайтов!
В окне редактора спрайтов, каждый нарезанный спрайт, возможно отдельно выбирать и редактировать. Например, можно задать имена для каждого спрайта и даже вручную настроить значения, такие как положение и точки вращения.
После надо «Применить» изменения спрайте (нажав кнопку «Применить» в верхнем правом углу редактора спрайта), которая затем позволит нам ссылаться на каждый отрезанный спрайт по отдельности в окне проекта.
После того, как мы нарезали наш лист спрайтов на отдельные спрайты, нам следом нужно «конвертировать» их в тайлы-плитки (tiles).
2D Тайлмап. Работа с контентом: от изображения к уровню
В Unity 2017.2 к возможностям работы с 2D добавили Тайлмапы (Tilemap). Используя карты тайлов, ты можешь быстро компоновать и создавать 2D-уровни с помощью комбинации спрайтов и контролировать такие свойства, как порядок слоёв, тайлмапные коллайдеры, анимированные тайлы и многое другое! В этой записи я постараюсь рассказать о всём рабочем процессе, начиная с импорта файлов изображений в Unity и до создания уровня для 2D-платформера!
Коротко процесс работы можно описать так:
Sprite -> Tile -> Palette -> Brush -> Tilemap
Для новичка эти термины Unity могут показаться немного запутанными. Но мы представим это как рисование на настоящем холсте:
Тюбик с краской -> Краска -> Палитра-> Кисть -> Холст
Для этого поста, я буду использовать «GrassPlatform_TileSet», позаимствованный из официальной инструкции
К концу мы соберём уровень из этих кусочков так, что 2D-персонаж сможет бегать по уровню.
5) Рисование на тайлмапе!
Чтобы рисовать на тайлмапе, надо выбрать: активный тайлмап, и какая «кисть» используются в настоящее время. Первое можно выбрать из «Active Tilemap» в выпадающем окне палитры плиток (Tile Palette).
В выпадающем списке будут показаны все экземпляры тайлмапов на сцене. Ты сможешь выбрать один, чтобы рисовать на нём.
На скриншоте сложная сцена со множеством тайлмапов
Второе, что нужно выбрать — текущую кисть. Она определяет, как плитка (или плитки) будут размещены на тайлмапе.
Когда плитки уже нарисованы на карте, может оказаться, что плитка меньше, чем размер ячеек сетки. Это не ошибка, объясню, почему и как изменить это.
Компонент сетка использует единицы мирового пространства Unity для измерения расстояния. Например, куб с масштабированием по умолчанию 1 для каждой оси будет иметь такой же размер. А, именно: одна ячейка на сетке по умолчанию. Каждый спрайт имеет значение «Пикселей на юнит» в параметрах импорта, по умолчанию используется значение 100.
Наши спрайты имеют размер 64 на 64 пикселя, установка соответствующего значения «Пикселей на юнит» позволит автоматически регулировать масштаб на все нарезанные спрайты; таким образом, сторона соответствующие плитки будет соответствовать клеткам решётки!
Система координат шаг текселя
Начало системы координат для текселей расположено в верхнем левом углу текстуры, как показано на следующем рисунке. Это упрощает отрисовку выровненных по экрану текстур, поскольку система координат для пикселей совпадает с системой координат для текселей.
Координаты текстуры представлены в виде нормализованного или скалярного числа; каждая координата текстуры сопоставляется определенному текселю следующим образом.
Для нормализованной координаты:
- Выборка точек: шаг текселя # = floor (U * ширина)
- Линейная выборка: Left шаг текселя # = этаж (U * ширина), правый шаг текселя # = Left шаг текселя # + 1
Для скалярной координаты:
- Выборка точек: шаг текселя # = floor (U)
- Линейная выборка: левый шаг текселя # = этаж (U-0,5), правый шаг текселя # = Left шаг текселя # + 1
Где ширина — это ширина текстуры (в текселях).
Упаковка адреса текстуры происходит после расчета расположения текселя.