Поговорим о наните: часть первая
Мне было примерно лет 14 когда батя Димона (не ядерного, а моего соседа) вычитал в едва зарождающемся интернете о том что 3D Studio от компании discreet в новой версии 3D Studio MAX получает GUI (Graphica User Interface) под винду. Мы не задумываясь рванули в магаз к Робсону (не тому, у нас в холодильнике свой был) и купили пиратский диск с 3д максом, если не ошибаюсь R3 версии.
В общем я плотно так подсел на 3д графику и занимался всякой разной свойственной пиздюкам фигнёй, делал свои машины для ГТА 3, пытался смоделить и запихать мехов из Battletech в Operation flashpoint и прочей безумной деятельностью. Ну и конечно рендерингом чайников, куда без него.
Когда я говорю что начал пилить игру на UE5 по своей книжке и упоминаю что буду использовать нанит, мне говорят что я ебанутый высказывают свои сомнения в целесообразности использования этой технологии. Я задолбался объяснять всем мой выбор по десять раз, поэтому просто запилю статью. Прежде чем мы будем разбираться в том чем Nanite лучше чем LOD (Level of Detail) наверное нужно разобраться что такое вообще в принципе 3д модель и из чего она состоит.
Классическая 3D-модель состоит из точек (vertex), соединённых между собой рёбрами (edge), которые образуют грани (face). Если грань состоит из трёх вершин — это треугольник (triangle), если из четырёх — четырёхугольник (quad), ну и так далее: можно делать полигоны с любым количеством вершин — n-gon. Но лучше всё таки модели из четырёхугольников, там и сглаживание хорошо ложится и меньше шансов на косяки при обработке поверхности рендер движком.
Ну и перейдём у немного более детальной модели, вот, например, к этой:
Кстати я этот хлебушек потом закину в магаз от Epic который называется FAB.com, вдруг кто-то его в свою игрульку или кинцо или архвиз захочет запихнуть.
Вот так выглядит его 3д модель. Как мы можем заметить здесь немного больше точек и граней, но в принципе от того прямоугольника он ничем не отличается. Просто немного сложнее.
36 200 точек, 72 414 полигонов, это он без текстур с видимой сеткой, чтобы вы вспомнили фильм Газонокосильщик и ночью вам приснился кошмар как в детстве. Ну это для олдов рождённых много лет назад.
Поверх этого безобразия накладывается текстура, это такая фотка которая как бы облепляет 3д модель. Она называется альбедо/диффузная текстура. Альбедо - это отражение чистого цвета без бликов.
Помимо альбедо в 3д графике есть множество различных карт (их часто называют текстурами, но этот термин всё же как корректнее относить именно к карте альбедо/диффуз) с кучей разной информации о модели, но остановимся на самых важных.
Одна из важнейших карт - это отвечающие за шершавость/глянцевость карты roughness/specular. Там светлее/темнее показывает где будет глянцевая поверхность, а где матовая.
Карты микрорельефа, это бамп (bump) и карта нормалей (normal). Бамп - это чёрно-белая карта которая показывает где выпуклость, а где впуклость, на основе этих данных рендер движок понимает где нарисовать тени или блики, а нормал - это цветная RGB-карта, в которой вместо высоты записывается направление нормали поверхности. Особо важно подчеркнуть что это псевдорельеф, на самом деле модель не меняет формы, на ней только рисуется фейковые блики и тени.
Это микрорельеф через карту нормалей, геометрия не поменялась, но появились тени как будто там есть рельеф
Карты реального рельефа - это heightmap чёрно-белая карта, как и бамп, только тут для большего количества данных могут использоваться PNG-16, Tiff или EXR карты. Тут всё похоже на карты микрорельефа, но отличается тем что геометрия реально меняется. Более светлые участки карты выдавливают поверхность вверх, тёмные продавливают вниз, а серые участки карты - ничего никуда не продавливают и ноют что раньше было лучше. Причём тут есть два разных варианта. Первый вариант - это изменение геометрии в соответствии с сеткой, чем плотнее сетка, тем больше будет деталей, что мягко говоря неудобно, так как сетка способная отобразить даже самые мелкие детали - это капец как дорого (жрёт ресурсы). Второй вариант - это тесселяция (увеличение плотности сетки) на лету самим рендером в процессе подготовки к рендерингу. И третий вариант - это какое-то колдунство, всем известный с древних времён VRayPattern, который берёт трёхмерную модель и как бы оборачивает ею другую 3д модель, и при этом не жрёт память, я хз как это правильно объяснить, если вам будет интересно попробую уговорить Андрея (Карба) Козлова, может он расскажет подробнее для отдельной статьи, он первым разработал эту технологию для Vray, потом работая в Otoy запилил тот самый крутой дисплейсмент в рендере Octane, а сейчас разработал свой собственный рендер движок FStorm, который постепенно становится одним из лидеров GPU рендеринга. GPU - это, если что, рендеринг не на процессоре, а на видеокартах.
Вот мы и разобрались с тем что такое 3д, с вас сто тыщ за мой курс, я теперь инфоцыган.
Кстати покупайте мою новую книгу которую я написал под псевдонимом Бред Рэйберри
Думают ли инфотонни про инфоцыган.
Шучу, подписывайтесь, подкакивайтесь, чтобы не пропустить продолжение.














Так, ебта! Что такое 3D мы и без тебя знали! А наниты?! Ты про них обещал рассказать