Реклама в Telegram-каналах DzikPic и dev.by теперь дешевле. Узнать подробности 👨🏻‍💻
Support us

Artist’s Guide (3D Artists). Часть 2

Оставить комментарий
Artist’s Guide (3D Artists). Часть 2

Так легко ли стать художником? Судя по всему, никак не легче, чем программистом. Сегодняшний пост продолжает предыдущий. Поднятая тема непроста, но очевидно полезна для начинающего специалиста по компьютерной графике.

Учимся работать с графикой

7. Materials

Что такое «материал»?

Распространенная ошибка — считать, что материалы и текстуры — одно и тоже. В реальной жизни описание материала предмета или существа тысячи слов стоит, хотя мы и привыкли все сокращать до «фарфоровая кружка», «зеленая мыльница», «полосатый кот».

Материал (в нашей системе) — это то, чем можно описать визуальную составляющую (за исключение формы), а это: 

* текстуры (diffuse, reflection, opacity, specularity, bump, luminosity);
* параметры (color, diffuse color, specularity, glossiness, luminosity, bump amplitude и другие);
* небольшие скрипты (способные дополнить описание материала).

В отдельных случаях материал может обходиться вообще без текстур.

И еще необходимо помнить, что в Lightwave материал — это Surface, соответственно редактор материалов — Surface Editor.

Real-time Rendering: небольшое предупреждение

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

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

Diffuse Map в 3D Studio Max и Lightwave 3D

Необходимо запомнить, что в 3D Studio Max Diffuse Map’ом называется такая текстура, которая в Lightwave 3D называется Color Map (первая в списке в диалоге Surface Editor). Тот Diffuse Map, что указан в Surface Editor (Lightwave 3D), НЕ использовать.

Luminosity и Self-Illumination в 3D Studio Max и Lightwave 3D

Self-Illumination и Luminosity — не одно и то же, но так как в 3D Studio Max используется Self-Illumination, а в Lightwave — Luminosity, то будем считать их равными. Это означает, что если где-то написано Self-Illumination (например, в 3D Studio Max), то имеется ввиду Luminosity. Luminosity — это свечение объекта, области объекта. Карты Luminosity (как правило, TGA 8bit grayscale) могут использоваться для подсвечивания какой-то области на текстуре. Если нарисован включенный фонарик на текстуре Diffuse Map, то в этом же месте должно быть пятнышко на Luminosity-текстуре. Карты Luminosity используются при расчете Lightmap.

Transparency и Opacity в 3D Studio Max и Lightwave 3D

Как и в предыдущем пункте, есть разница между 3DSMax и LightWave. Transparency используется внутри LightWave, Opacity —внутри 3DSMAX. Просто запомните, что это два обратных друг другу понятия.

Непрозрачность — Opacity; 0% — невидимый объект.
Прозрачность — Transparency; 100% — невидимый объект.

Reflection and Specularity Textures

Текстуры для Reflection, Specularity в системе материалов игры влияют только на интенсивность эффекта.

Повторим: то, что отрендерит Lightwave3D или 3D Studio Max, НЕ должно нас интересовать.

К примеру, reflection в 26% означает, что значение интенсивности пикселя текстуры reflection будет умножено на 0,26 (26%).

Materials в Newtek Lightwave 3D 8.5 и 9.0

Чтобы понять, о чем сейчас пойдет речь, запустите LightWave Modeler 8.5 или 9.0 и нажмите «F5».

Итак, на скриншоте зеленым цветом отмечены те параметры, которые обычно используются (системой материалов). Те, что не отмечены, игнорируются.

Скриншот для пользователей LightWave3D 8.5: 

Скриншот для пользователей LightWave3D 9.0:

Map Channel в 3D Studio Max

В большом количестве случаев будет ситуация, когда нужно несколько текстур для одного объекта. К примеру, Diffuse Map и Luminosity Map, Diffuse Map и Specularity Map. В таких случаях думают, что нужно делать развертку для каждой текстуры. Так вот делать этого не нужно. Сделать развертку нужно один раз и в канале 1. Делать нужно несколько текстур, которые накладываются одна на другую. Упоминания о map channel как минимум в четырех местах. Не забывайте, что должно быть: Map Channel 1 (обычно так и будет по умолчанию).

Map Channel в Material-ах: 


Map Channel в Map channel Info:

Map Channel в модификаторе UVW Map и UVW Unwrap: 

UV Map в LightWave 3D 8.5/9.0

Эта тема продолжает предыдущую (прочитайте, даже если не разбираетесь в 3DSMAX). То, что в 3DSMAX называлось Map Channels, в LightWave Modeler будет называться UV MAP:

UV MAP должен быть одинаков для всех текстур одного материала. Получается, что одному материалу соответствует один UV MAP, который назначен на все текстуры этого материала. И нельзя делать несколько UV МАР-ов для одного и того же материала.

Поддерживаемые классы материалов в 3D Studio Max

Обычно поддерживается только один класс материалов: 

* <b>Standard</b> — все с ним знакомы.

## Использование Standard Material в 3D Studio Max

На начальном этапе моделирования в 3D Studio Max можно обойтись материалом
класса «Standard»: 

Все типы текстур, которые обычно поддерживаются, отмечены зеленым: 

и, разумеется, тип текстур должен быть ТОЛЬКО bitmap:

То, что в Standard-материале обычно поддерживается, отмечено зеленым, а то, что не отмечено или отмечено красным, НЕ поддерживается: 

Настройка Bitmap очень несложная. Менять можно только текстуры: 

Map Channel должен быть всегда равен 1.

Итого: текстуры, которые поддерживаются

* Color Map (=Diffuse Map в 3DSMAX) — как правило, 24bit или 32bit текстура;
* Specularity Map — 8bit Grayscale. текстура показывает интенсивность эффекта Specularity;
* Reflection Map — 8bit Grayscale. текстура показывает интенсивность эффекта отражения;
* Luminosity Map (=Self-Illum. для 3DSMAX) — 8bit Grayscale. текстура показывает интенсивность эффекта свечения;
* Transparency Map (=Opacity для 3DSMAX) — 8bit Grayscale. текстура показывает прозрачность;
* Bump Map — 8bit Grayscale.

8. Hidden Surface Artifacts (HSA)

Настоящий документ объясняет, что такое Hidden Surface Artifacts и как его избежать. Иногда эту проблему называют Z-fighting. Если вы далеки от понимания того, что такое Z-Buffer, то это определение вам мало чем поможет.

Hidden Surface Artifacts появляются в связи с отсутствием точности Z-Buffer’а на большом расстоянии и неверно настроенном Z-Bias. Не поняли о чем речь? Не страшно. Необходимо только знать, как этого не допускать.

Как проблема выглядит

Два кубика (красный и зеленый) стоят почти в одном и том же месте:

Два кубика (красный и зеленый) выглядят в wireframe так:

Два кубика (красный и зеленый) выглядят в software render (mental ray) так: 


Естественно, что в последнем случае не Hardware работает, а Software Renderer, где точность высока. Еще раз повторим: то, что показывает Software Renderer, нас не должно интересовать. Этот пример показывает, как этот Renderer может вас сбить с толку.


Как проблема решается

Пример из жизни. Моделирование в 3D Studio MAX. Задание — создать модель, как на скриншоте:

Начинающий 3D Artist с большой вероятностью обратится сразу же к примитивам:

  • создаст цилиндр основания;
  • создаст цилиндр «столб»;
  • создаст конус;
  • превратит все элементы в editable mesh;
  • объединит все в один mesh при помощи Attach / Attach List (В Edit Mesh).

Профессиональный 3D Artist сделает следующее (скорей всего, вариантов больше):

  • построит кривую из 7 вершин;
  • применит Lathe;
  • сделает Weld Vertex;
  • сконвертирует объект в Editable Mesh.

Справа (зеленый цвет) модель, сделанная профессиональным 3D Artist’ом, слева — начинающим:

Модель новичка имеет в себе несколько скрытых полигонов, которые, в силу ухудшения точности Z-buffer на больших расстояниях (особенно если Zbuffer 16-битный), будет «мусорить» артефактами. И хотя именно с этой моделью проблем может и не возникнуть, такую практику необходимо исключить. Если только это не задумывается для оптимизации количества полигонов. Да и человек, который это задумал, знает что делает, потому что наличие скрытых полигонов может негативно повлиять на stencil-тени, на пре- и постэффекты (если, конечно, имеются), lightmap.

Решение проблемы лежит в области отношения специалиста к своей работе. Всегда можно контролировать ситуацию во время моделирования, чтобы не допустить пересечений поверхностей (пересечения = intersections) и скрытых поверхностей.
Как пересечение поверхностей, так и наличие скрытых — проблема одна.

9. Isolated Vertices

Этот пункт объясняет, что такое Isolated Vertices (они же Dead Vertices) и почему их не должно быть. В рассказе об этом «явлении» используется 3D Studio Max, и именно там выдуман термин «Dead Verts» и «Unused Verts». На самом деле это Isolated Vertices. А
сделать их можно не только в 3D Studio Max, но и в LightWave, Modo. Только не нужно их делать. Нужно, чтобы их не оставалось в конце работы над моделью.

Dead, Isolated, Unused  одно и то же

Для начала определение. Isolated Vertex — вершина, которую не использует ни один из полигонов. Она никак не связана с полигонами модели, а значит, она нам не нужна.

Если появились такие вершины, то их может за собой почистить 3D Artist, нажав «Remove Isolated Vertices» в «Editable Mesh», но он удалит только геометрические вершины.

Чтобы удалить все сразу, нужно сконвертировать mesh (объект) в «Editable Poly» и в режиме Vertex нажать на «Remove Isolated Vertices» и «Remove Unused Map Verts».

Теперь в канале «mesh» и канале «1:map» не должно быть Dead Verts:

Обратите внимание, что Unused Map Vertices (Dead Verts в канале «1:map») также автоматически удаляются путем применения к вашему Editable Mesh повторно Unwrap UVW.

Если, к примеру, удалить Dead Vertices в геометрических вершинах, а в текстурных вершинах их оставить, то проблемы могут возникнут при экспорте. Кстати, во многих экспортерах эта проблема никак не решена.

10. Degenerated Faces

Что такое Degenerated Faces

Degenerated Faces (вырожденные полигоны) — это такие полигоны, где есть несколько вершин, координаты которых совпадают или почти совпадают. Если вы моделируете в 3DSMAX и используете Boolean (именно реализация в 3DSMAX), то вы должны знать, что Boolean — источник Degenerated Faces. Не существует таких ситуаций в моделировании (для игр), где нельзя было бы обойтись без Boolean.

Кроме того, существует еще случай очень маленьких полигонов (с расстоянием между вершинами меньше 0,00001 м — такие размеры находятся на пределе точности для чисел с плавающей точкой одинарной точности (используемых в игре и инструментарии), соответственно для таких полигонов нельзя корректно вычислить нормаль). Такие невероятно мелкие полигоны могут появляться, например, в результате операций boolean.

Решение проблемы в 3D Studio Max

С Degenerated Faces бороться можно, к примеру, при помощи модификатора Vertex Weld (такое средство имеется в любом пакете) и STL Check (Open Edges Test).

Решение проблемы в Lightwave/Modo

Идем в панель `Statistics`, выбираем `Polygons | By Type | Non-Planar` (кликаем на `+` напротив `Non-Planar`) — теперь «плохие» полигоны можно удалить или с’collape’ить, или c’merge’ить их vertex’ы.

11. Polygon Budget


 Polygon Budget?

Polygon Budget (бюджет полигонов) — это максимальное количество полигонов, которые вы можете израсходовать в работе над моделью. И конечно же, мы имеем в виду Triangles, а не Quads. Когда говорим «полигон» — подразумеваем «треугольник».

3D Studio Max: узнаем количество полигонов

В 3D Studio Max количество полигонов можно узнать при помощи Polygon Counter’а. Для этого необходимо зайти в Utility Tab и выбрать `Polygon Counter` из списка. Выглядит он так:

Необходимо, чтобы он всегда был в режиме «Count Triangles», так как нам нужно знать количество треугольников.

При помощи `Summary Info` выяснять количество полигонов не рекомендуется, потому что полигоны могут быть Quad’ами (построены по четырем вершинам вместо трех). Например, с этой ситуацией можно столкнуться, если Box конвертировать в «Editable Poly». Окажется, что всего 6 полигонов, тогда как на самом деле треугольников — 12.

LightWave 3D 8.5+: узнаем количество полигонов

Чтобы узнать количество полигонов в LightWave Modeler:

  • вызываем окно статистики (нажимаем `[w]`);
  • переходим в режим полигонов (нажимаем `[CTRL]+[H]` или пробел).

На скриншоте отмечена зеленым цветом строка, где указано количество полигонов *в слое*. В самой же первой строчке Total показано, сколько всего полигонов в модели.

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

Если же нам нужно узнать, сколько полигонов во всей сцене (и речь об уровне, а не о модели), то в LightWave Layout нажимаем `[w]`. Получите такое вот окно:

Modo 40x+: узнаем количество полигонов

Прежде чем верить тому, что написано в «Faces», необходимо убедиться, что все посчитано в «треугольных полигонах», а значит, необходимо сделать Triangulate (`[Shift]+[T]`).

12. 3DSMAX: Channel Info

Channel Info должен быть всегда под рукой.

Чтобы его использовать, необходимо:

  • перейти в закладку Utility![3DSMAX: Map Channel Info](Images/3dsmax-ci-1.png); 
  • нажать на![3DSMAX: Map Channel Info](Images/3dsmax-ci-2.png); 
  • перетянуть из списка (слева) «Channel Info» в свободный слот кнопок (справа); 

  • нажать OK; 
  • выбрать в списке и нажать «Channel Info». 

Появится такое окно: 

Теперь изучим информацию этого окна. Идем сверху вниз по столбцу «ID»:

  • «mesh» — канал, где описана геометрия выбранного объекта;
  • «vsel» — не понадобится; описывать не имеет смысла;
  • «-2: Alpha» — не понадобится; описывать не имеет смысла;
  • «-1: Illum» — не понадобится; описывать не имеет смысла;
  • «0:vc» — Vertex Color канала;
  • «1:map» — канал #1 для текстурирования UV.

Что это означает:

  • если в «0:vc» вершин нет (равно нулю), значит Vertex Colors не нанесены на mesh; 
  • если в «1:map» вершин нет (равно нулю), значит объект не текстурирован;
  • про «Dead Verts» можно прочитать здесь: [«Artist’s Guide: Isolated Vertices»](Artist-Isolated-Vertices.html)).

13. 3DSMAX Modelling (Правила работы с 3DSMAX)


Использование плагинов, которых нет в инсталляции (нестандартные)

Использование нестандартных плагинов обычно НЕ запрещается, НО необходимо помнить, что модель не сможет быть открыта там, где не установлены эти плагины. В этом случае необходимо сделать Collapse Stack и конвертировать объект (mesh) в
«Editable Poly» или «Editable Mesh».

Editable Poly или Editable Mesh

Конечным результатом является mesh (объект) или несколько mesh’ей. Мesh’ы должны быть сконвертированы в «Editable Poly» или «Editable Mesh». Как это сделать? По правой кнопке мыши появится окно, где нужно выбрать «Convert to» в «Editable Poly» или «Editable Mesh».

Stack должен быть Collapsed:

Назначение материалов

На каждый mesh должен быть нанесен материал. Материалов можно использовать несколько.

Развертка текстуры (UV)

При текстурировании должны быть использованы модификаторы (modifier: UV Coordinates modifier) UVW Map или UVW Unwrap.
Для более эффективного текстурирования можно использовать, к примеру, программу Unfold3D 4.x+.

Чтобы убедиться, что текстура нанесена:

  • необходимо открыть закладку Utility (на закладке изображен молоток);
  • выбрать утилиту Channel Info (если нет в числе часто используемых, то лучше достать на панель уже сейчас — делается это из диалога Configure Menu Sets);
  • нажать кнопку Channel Info;
  • выбрать исследуемый mesh (исследуемый на правильность нанесения развертки).

На скриншоте показано, что на mesh «MyBox» имеется 12 вершин (Num Verts), а значит, UV-координаты нанесены. Если бы там стоял «0», то это означало, что UV-координаты не нанесены на mesh, а значит, их нужно нанести при помощи выше описанных
модификаторов.

Mesh Groups

На конечный результат группировка не влияет. Можно использовать по желанию в работе. В конце работы рекомендуется сделать Ungroup.

О названиях материалов и mesh’ей (объектов)

Обычное требование. В названиях материалов и mesh’ей должны быть только такие символы:

* 0-9 (цифры);
* A-Z, a-z (латинские буквы);
* '_' (подчеркивание).

14. 3DSMAX: STL Check


«В народе» существуют некоторые заблуждения относительно STL Check.

Немного про STL Check в 3D Studio MAX

STL Check существует *не* для поиска ошибок, созданных при помощи Boolean.

STL Check проверяет 4 ситуации в геометрии модели:

 — Open edges;
 — Double face;
 — Spikes;
 — Multiple edges.

Во-первых, в игре *могут* быть Open Edges. К примеру, вы можете удалить нижнюю (невидимую) часть коробки, которая стоит на поверхности (при условии, что объект никогда не будет подвижным). Во-вторых, в игре *могут* быть Multiple Edges, если создается billboard (крестом).

Где можно использовать STL Check? Этот модификатор вполне пригоден для проверки на правильность физической модели (к примеру, если делают Collision Detection Mesh). STL для этого и создан (Проверка физических моделей).

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

15. GAME OVER

О чем написано было выше?

Обычно это всего только 10—20% требований к кандидату в игровую студию и это не rocket science, загадки, секреты. Однако 3D Artist’ов с такими знаниями мне приходится встречать достаточно редко. Обычно нужно сидеть рядом с художниками и вовремя бить линейкой по пальцам :)

Новый рекламный формат в наших телеграм-каналах.

Купить 500 символов за $150

Читайте также
Думскроллинг вредит психике и физическому здоровью пользователей
Думскроллинг вредит психике и физическому здоровью пользователей
Думскроллинг вредит психике и физическому здоровью пользователей
3 комментария
60% ноутбуков поставляются в Россию без предустановленной ОС
60% ноутбуков поставляются в Россию без предустановленной ОС
60% ноутбуков поставляются в Россию без предустановленной ОС
Каждый четвертый россиянин не может сменить ПК из-за высоких цен
Каждый четвертый россиянин не может сменить ПК из-за высоких цен
Каждый четвертый россиянин не может сменить ПК из-за высоких цен
Airbnb запретила проводить большие вечеринки в снятом жилье
Airbnb запретила проводить большие вечеринки в снятом жилье
Airbnb запретила проводить большие вечеринки в снятом жилье

Хотите сообщить важную новость? Пишите в Telegram-бот

Главные события и полезные ссылки в нашем Telegram-канале

Обсуждение
Комментируйте без ограничений

Релоцировались? Теперь вы можете комментировать без верификации аккаунта.

Комментариев пока нет.