Для чего нужны 3D-модели?

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

Предмет «черчение» в рамках обязательного образования имеет целью обучение трехмерному моделированию – точному описанию предметов, имеющих объем, на плоской, двумерной, поверхности листа бумаги. Кроме того, детей учат трехмерному моделированию на занятиях по лепке пластилином в садике и младших классах школы. Столь большое внимание трехмерному моделированию в образовательном процессе не случайно. В любой деятельности по созданию реальных предметов необходимо хорошо представлять, как будет выглядеть этот предмет со всех сторон. Портной и конструктор одежды должны знать, как будет сидеть костюм или платье на человеке с определенной фигурой. Парикмахер создает стрижку и прическу, которые будут иметь объем и по-разному выглядеть с разных сторон. Ювелир моделирует свои украшения. Протезист должен не только создать красивый искусственный зуб, но и учесть его расположение относительно остальных зубов пациента. Столяр должен суметь очень точно подогнать соединения трехмерных деталей. Также он хотел бы наглядно увидеть, насколько проектируемая им мебель будет удобна в использовании и как она будет вписываться в интерьер.

С давних пор представители самых разных профессий используют чертежи, состоящие из множества видов, для трехмерного моделирования. С распространением персональных компьютеров часть задачи по созданию трехмерных моделей стало возможным поручить программному обеспечению. Системы автоматизации проектирования (САПР) первыми начали включать в себя функционал динамического отображения создаваемых трехмерных предметов на плоскости экрана. Слово «динамическое», в данном случае, обозначает возможность поворачивать на экране изображение трехмерного предмета и видеть его со всех сторон. Однако, динамика трехмерной модели может означать также способность модели изменять свои формы и двигаться. Потребность в таком функционале есть у создателей мультфильмов и компьютерных игр.

Во второй половине двадцатого века, еще в докомпьютерную эру, появились технологии трехмерной обработки поверхностей. Вскоре после окончания Второй мировой войны, ВВС США профинансировали работы компании Parsons Inc по созданию станков, которые могли бы фрезеровать по заданному алгоритму детали сложной формы. Эти работы привели к созданию целого класса станков с числовым программным управлением (ЧПУ). Проектирование алгоритмов работы для станков с ЧПУ – еще одна задача из области 3D-моделирования.

В 1986 году американский инженер Чарльз В. Холл создал принтер, который печатал трехмерные предметы методом стереолитографии. Позже появились 3D-принтеры, печатающие трехмерные изделия из самых разных материалов, включая принтеры для печати человеческих органов, или, например, принтеры, печатающие кондитерские украшения и готовые блюда. Сегодня простой, но достаточно функциональный 3d-принтер можно купить за цену смартфона, и печатать на нем объемные предметы для дома, или детали моделей и различных устройств. Все 3D-принтеры для печати получают на вход трехмерную модель в определенном формате.

Основные принципы 3D-моделирования

Необходимое условие для 3d-моделирования – наличие пространственного воображения. Важно уметь представить себе будущий результат работы, мысленно повернуть и осмотреть его со всех сторон, а также понимать из каких элементов модель состоит, какие возможности это предоставляет и какие ограничения это накладывает. От природы пространственное воображение у всех развито в разной степени, однако, также как и грамотность или музыкальный слух, его можно развить. Важно не опускать руки, сказав себе, что ничего не получается, а приобретать опыт, делая сначала простые модели, переходя постепенно к более сложным.

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

Все программы для 3d-моделирования – векторные. Это значит, что они описывают предметы не как совокупность отдельных точек, а как набор формул и работают только с цельными объектами. Если вам нужно изменить или переместить только половину объекта, то его придется разрезать (если есть инструмент, позволяющий это сделать) и зафиксировать половинки как новые объекты. Для работы с векторным редактором совсем не обязательно знать математические формулы, они заложены в программу. Важным и полезным следствием такого подхода является то, что любой объект можно перемещать, изменять и масштабировать без ущерба для качества. С другой стороны, программа не поймет вас, если вы попытаетесь изобразить прямоугольник, например, поставив по его границам множество точек, визуально касающихся друг-друга. Для программы это будет просто много точек, а не прямоугольник. Она не сможет производить с этим, на ваш взгляд, прямоугольником никаких действий. Для создания прямоугольника нужно выбрать подходящий инструмент и воспользоваться им. Тогда программа позволит производить с созданным объектом любые действия: изменить его, переместить в заданную точку, вытянуть, изогнуть и так далее. Также большинство программных продуктов для 3d-моделирования не смогут работать с графикой в растровом формате (bmp, jpg, png, gif и тому подобное) полученной, например из Фотошопа.

3d-моделирование из «кирпичиков»

Абсолютное большинство технических деталей представляет собой комбинацию объемных примитивов: параллепипедов, шаров, призм и так далее. Любой инструмент для 3d-моделирования имеет библиотеку объемных примитивов и умеет их воспроизводить с учетом задаваемых пользователем параметров. Для того, например, чтобы создать модель цилиндра, достаточно выбрать в программе соответствующий инструмент и задать диаметр и высоту. Также все программы для трехмерного проектирования умеют производить, как минимум, два математических действия с объемными фигурами: сложение и вычитание.  Так, например, создав из примитивов два цилиндра: один с диаметром 5 см и высотой 1 см, а второй - с диаметром 3 см и высотой, заведомо большей 1 см, можно совместить их по центральной оси и вычесть из первого (большего) цилиндра второй. В результате получится шайба толщиной 1 см с внешним диаметром 5 см, а внутренним – 3 см. Если у вас есть, например, отдельные набор отдельных объектов: «голова без ушей и носа», «нос», «левое ухо» и «правое ухо», то вы можете их соединить и сложением создать новый объект «голова с ушами и носом». Если у вас есть библиотека ушей, носов и голов разной формы, то вы сможете, перебирая их, создать модель головы своего знакомого (или – собственной). Затем, вычитая из полученной головы объект «ротовая полость», можно получить голову со ртом. Cоздание 3d-модели из «кирпичиков», объектов, имеющихся в библиотеке программы или загруженных вами в программу извне, является простым и одним из самых востребованных способов.

Конечно, «кирпичиков» на все случаи ни в одной программе нет. Однако, многие объекты можно создать, перемещая другие объекты в пространстве или видоизменяя их. Например, тот же цилиндр можно создать самому, взяв круг в качестве основания, и, переместив его вверх, сохраняя каждый шаг путем сложения положений в одном объекте. Если в программе есть такой инструмент, то она все сделает сама, нужно только указать: по какой траектории и как далеко нужно переместить основание. Так из созданной по описанной выше технологии шайбы можно создать новый объект – трубу. В том числе – трубу с множеством изгибов любой заданной кривизны. Важный момент: для этого круг должен быть изначально трехмерным. Пусть – с ничтожно малой толщиной, но не равной нулю. Для этого в программе должен быть инструмент преобразования плоской фигуры с нулевой толщиной в объемную – с ничтожно малой, но конкретной толщиной.

3d-моделирование из полигонов

Многие программы трехмерного моделирования работают со специальными типами объектов, называемыми «меш». Меш – это полигональная сетка, или совокупность вершин, ребер и граней трехмерного объекта. Для понимания объекта, составленного из мешей, можно посмотреть, например, на робота, созданного из деталей лего. Каждая деталь – отдельный меш. Если средний размер детали лего – 1 см, и вы соберете их них робота 50 см высотой, то в нем можно будет узнать тот образ (человека, например), который вы заложили. Однако реалистичность такой скульптуры будет весьма посредственной. Другой разговор, если вы из деталей со средним размером 1 см создадите робота высотой 50 километров. Отойдя на приличное расстояние, чтобы разглядеть всю гигантскую скульптуру, вы не заметите угловатости поверхности и робот может выглядеть как живой человек с гладкой кожей.

Меш может быть сколь угодно малого размера, а значит, можно добиться любой визуальной гладкости поверхности модели. По сути, конструирование объекта из мешей – то же самое, что и пиксельная графика в двумерном изображении. Однако, мы же помним, что множество точек в форме прямоугольника не является объектом «прямоугольник». Значит, для того, чтобы созданный из мешей образ стал трехмерным объектом, его контуры нужно заполнить объемом. Для этого есть соответствующие инструменты, но о них часто забывают новички в трехмерном моделировании. Точно также, как и о том, что для того, чтобы поверхность (сфера, например) превратить в объемную фигуру, она должна быть полностью замкнута. Стоит удалить одну точку (один меш) из законченной замкнутой поверхности, и программа не сможет ее превратить в трехмерный объект.

Движение и внешний вид трехмерной модели

Представьте, что из мешей, или любым другим способом, создан объект «автомобиль». Если в программе для трехмерного моделирования задать формулой траекторию и скорость перемещения любой точки внутри объекта, поставив условием, что все остальные точки перемещаются синхронно, то автомобиль поедет. Если, при этом, в качестве отдельных объектов выделить колеса автомобиля и задать их центрам отдельные траектории перемещения и вращения, то у автомобиля по ходу езды будут крутиться колеса. Подобрав правильное соответствие перемещения корпуса автомобиля и его колес, можно добиться реалистичности итогового мультфильма. Точно так же можно заставить двигаться объект «человек», но для этого придется разобраться в человеческой анатомии и динамике ходьбы или бега. А потом – все просто: внутри объекта создается скелет, и каждой его части задаются свои законы передвижения.

Созданный в программе трехмерного моделирования объект может своими формами полностью повторять реальный образец из жизни или фантазии создателя, он может реалистично передвигаться, но все равно для полного соответствия ему не будет хватать еще одной характеристики. Эта характеристика – текстура. Цвет и шероховатость поверхности определяют наше восприятие, поэтому в большинстве 3d-редакторах есть и инструменты для создания текстур, включающие, в том числе и библиотеки готовых поверхностей: от дерева и металла до динамичной текстуры бушующего моря в лунном свете. Впрочем, не во всех задачах 3d-моделирования такой функционал необходим. Если вы создаете модель для печати на 3d-принтере, то текстура ее поверхности будет определяться материалом для печати. Если же вы конструируете шкаф в САПР для мебельщиков, то вам будет, конечно, интересно «одеть» изделие в текстуру выбранной породы дерева, но гораздо важнее будет в той же программе произвести расчеты на прочность.

Форматы файлов в 3d-моделировании

Софт для создания, редактирования и изготовления 3d-объектов представлен на рынке десятками приложений и пакетов. Многие разработчики такого программного обеспечения используют для сохранения результатов моделирования собственные форматы файлов. Это позволяет им лучше использовать преимущества своих продуктов и защищает разработки от неправомерного использования. Существует более сотни форматов 3д-файлов. Некоторые из них закрыты, то есть создатели не позволяют использовать свои форматы файлов другим программам. Такая ситуация сильно осложняет взаимодействие людей, занимающихся 3d-моделингом. Макет или модель, созданные в одной программе, часто очень не просто или невозможно импортировать и преобразовать в другой программе.

Существуют, однако, открытые форматы файлов 3д-графики, которые понимают практически все программы для работы с 3d:

.COLLADA – универсальный формат, основанный на XML, и разработанный специально для обмена файлами между программами разных разработчиков. Это формат поддерживают (в некоторых случаях необходим специальный плагин) такие популярные продукты как Autodesk 3ds Max, SketchUp, Blender. Также этот формат может понимать Adobe Photoshop последних версий.

.OBJ – разработка компании Wavefront Technologies. Этот формат является открытым и принят многими разработчиками редакторов трехмерной графики. В большинстве программных продуктов для 3d-моделирования реализована возможность импорта файлов .obj и экспорта в него.

.STL – формат, разработанный для сохранения файлов, предназначенных для печати методом стереолитографии. На сегодняшний день многие 3d-принтеры могут печатать непосредственно из .stl. Также его поддерживают многие слайсеры – программы для подготовки печати на 3d-принтере.

Онлайн 3d-редактор tinkercad.com

Принадлежащий компании Autodesk сайт tinkercad.com – самое лучшее решение для тех, кто начинает заниматься 3д-моделированием «с нуля». Полностью бесплатен. Легок в освоении, на сайте есть несколько уроков, позволяющих в течение часа понять основной функционал и приступить к работе. Интерфейс сайта переведен на русский язык, но уроки доступны только на английском. Впрочем, для понимания уроков достаточно элементарного знания английского. Кроме того, в интернете нетрудно найти русскоязычные руководства и переводы уроков tinkercad.

В рабочем пространстве сайта доступно большое количество объемных примитивов, в том числе – созданных другими пользователями. Есть инструменты масштабирования, привязки к координатной сетке и к ключевым точкам объектов. Любой объект можно преобразовать в отверстие. Выделенные объекты могут объединяться. Таким образом реализовано сложение и вычитание объектов. Доступна история преобразований, в том числе и для вновь сохраненных объектов, что очень удобно, когда нужно вернуться на много шагов назад.

Для тех, кому описанных выше элементарных функций недостаточно, есть функционал написания скриптов и, соответственно, создания сложных сценариев преобразований объектов.

Нет инструментов разрезания объектов. Нет полигонов в чистом виде (полигональная модель реализована, в какой-то мере, в криволинейных объектных примитивах). Нет текстур. Тем не менее, tinkercad позволяет создавать достаточно сложные и артистичные объекты.

Поддерживается импорт и экспорт файлов в форматах STL, OBJ, SVG.

SketchUp

Полупрофессиональный редактор 3d-графики компании Trimble Inc, приобретенной несколько лет назад корпорацией Google. Версия Pro стоит 695 долларов США, Есть бесплатная онлайн-версия с ограниченным функционалом.

Еще пару лет назад существовала бесплатная декстопная версия редактора, но сегодня в без денег доступна только онлайн-версия. В веб-версии есть простые инструменты рисования, создания кривых и инструмент «Вытягивание», позволяющий создавать объемное тело из плоской картинки. Также в веб-версии есть слои и текстуры. Доступна библиотека созданных пользователями объектов и текстур.

Импорт возможен для файлов собственного формата (проект SketchUp), Также можно вставить в сцену в качестве объекта файл формата .stl.

Связи с компанией Google позволяют использовать в SketchUp интеграцию с сервисами интернет-гиганта. Это – не только доступ к облачным хранилищам, на которых можно найти много готовых сцен и объектов для использования в своих работах, но и возможность импортировать из Google Earth спутниковые и аэро-снимки для создания реалистичных сцен.

В целом, возможности бесплатной версии SketchUp заметно выше функционала, доступного в tinkercad, но сайт SketchUp часто тормозит при попытке осуществлять какие-то серьезные операции, как бы намекая, что лучше перейти на платную версию продукта. Предложение заплатить деньги за расширение возможностей появляется в бесплатной версии SketchUp почти на каждом шагу.

Учитывая, что SketchUp Pro обладает хорошим функционалом и широко используется, например, при конструировании мебели или разработке дизайна интерьеров, можно рекомендовать осваивать бесплатную веб-версию продукта тем, кто хочет сделать шаг навстречу серьезному моделированию, но пока не уверен в своих силах и в целесообразности перехода на платные версии.

Blender

Blender – легендарный проект, показывающий, наряду с Linux или PostgreSQL, что сообщество программистов, объединенных идеей свободного распространения ПО, может практически все.

Blender представляет собой профессиональный редактор 3d-графики с возможностями, близкими к неограниченным. Наибольшую популярность он получил у создателей анимации и реалистичных 3d-сцен. В качестве примера возможностей этого продукта можно привести факт, что вся анимация к фильму «Человек-паук 2» создавалась именно в нем. И – не только к этому фильму.

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

Сообщество пользователей Blender’a насчитывает более полумиллиона человек и поэтому найти людей, которые помогут в его освоении не составит труда.

Для простых проектов Blender избыточно функционален и сложен, но для тех, кто собирается заниматься 3d-моделированием всерьез, это – отличный выбор.