3D моделирование — процесс создания 3D модели. В прошлой заметке мы разобрали, из чего состоит 3D модель. Теперь, когда, стало более менее понятно, что такое вершины, грани, полигоны, текстуры и карты нормалей, можно попробовать представить себе, как происходит создание трехмерной модели любого известного нам и неизвестного персонажа для мультфильма, кино, рекламы, компьютерной игры и т.д в любой студии трехмерной графики.
Итак, давайте разбираться, каким образом модели «строятся».
Трехмерное моделирование
Речь пойдёт о традиционных методах 3D моделирования, оставляя в стороне пакеты скульптурной трехмерной графики. Наиболее употребительный технический прием — это формирование модели из «примитива», простой геометрической фигуры, плоской или объёмной, которая, путём всевозможных трансформаций приобретает нужные моделлеру очертания.
Иногда 3D модель формируется из нескольких «примитивов», но тут есть свои подводные камни: в частности, для текстурирования очень желательно, чтобы у такой модели не было невидимых, «внутренних» граней (или даже их фрагментов), а при стыковке нескольких примитивов подобное — не редкость.
Для борьбы с подобной «напастью» применяются булевы операции (booleans). Если не вдаваться в избыточные подробности, то операция объединения (union) позволяет составить из двух соприкасающихся или пересекающихся объектов один, чья поверхность состоит из суммы поверхностей исходных объектов, за вычетом тех областей, где происходит пересечение.
Что касается деформаций в процессе трехмерного моделирования, то здесь ключевыми можно назвать экструдирование (extrude) отдельных элементов — вершин, рёбер и/или граней (см. предыдущую заметку), разделение (subdivide), при котором ребро или грань разбивается на несколько равных частей, и перемещение и вращение отдельных элементов, так что любой кубик можно закрутить в бараний рог, в самом буквальном смысле. Извольте-с:
Есть и чуть более «экзотические» приёмы, такие, как «разрезание» одной или нескольких граней (или одного или нескольких рёбер) в произвольных местах (Loop Subdivide, Knife Subdivide и т.д., названия могут меняться от пакета к пакету).
Задачу 3D-моделлера можно исчерпывающим образом сформулировать, перефразировав древнее изречение: главное — найти в трехмерном примитиве душу и «убрать всё лишнее».
Форму исходной фигуры, т.е. исходного примитива стоит выбирать, исходя из представлений о конечном облике планируемого 3D творения — это, в общем-то, совершенно очевидные вещи.
Но не на одних только примитивах свет клином сошёлся: помимо них есть смысл использовать при моделировании т.н. NURBS и/или кривые и поверхности Безье (Besier Curves, Besier Patches).
«Высшим пилотажем», хотя и не то, чтобы слишком сложно осваиваемым, можно назвать 3D моделирование с помощью кривых (curves) и направляющих (path).
Показательный пример — это формирование с помощью одной или нескольких кривых контура, вдоль которого потом выстраиваются другие геометрические фигуры. Например, шланг или изогнутый ствол дерева удобнее всего моделировать из множества окружностей, «нанизанных» на направляющую кривую. Кстати, вот одна из иллюстраций работы скрипта Trees from Curves в Blender3D, — того самого, кстати, который использовался при съёмках мультфильма Big Buck Bunny:
Кстати, использование кривых и сплайнов позволяет добиться особой гладкости 3D модели, минимизируя заметность полигонов.
Очень полезно также при 3D моделировании использование всевозможных средств дубликации: расхожий пример — формирование винтовой лестницы. Вручную её собирать — долго и мучительно. Однако процесс вполне можно автоматизировать — разные 3D-пакеты предоставляют разные средства для этого.
В любом случае, чем большим количеством инструментов из числа предоставляемых тем или иным пакетом владеет моделлер, тем проще дается 3D моделирование работать и тем больше времени он сэкономит.