Сегодня: Пятница, 29.03.2024, 15:33 (МСК)| Здравствуйте, Гость| Мой профиль | Регистрация | Вход | RSS

Что такое matte painting?

Визуальная среда Flowstone

Роботы и экзоскелеты

Наушники. Как выбирать?

Плагины Sonnox Oxford
Главная » 3D-МОДЕЛИРОВАНИЕ И АНИМАЦИЯ

Maxon Cinema4D. NURBS-моделирование. Пример-1

02.08.2010

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

А пересесть с LightWave3D на Maya или Softimage|XGI, или Maxon Cinema 4D, не говоря уже о других «навороченных системах» очень сложно. Появилась интересная штуковина в профессии — узкая «пакетная» специализация. Кстати, софт нового поколения уже исправляет сложившуюся ситуацию.   

В качестве основополагающей программы Maxon Cinema4D. Почему выбрана именно эта программа? Ведь работа с NURBS представлена на очень высоком уровне в 3ds MAX, Maya и так далее? 

Дело в том, что Cinema4D является наиболее сильным инструментом NURBS-моделирования среди всех остальных с точки зрения практики, хотя некоторые моменты в такой работе немецкими разработчиками просто отметены в сторону. Все сделано, прежде всего, для удобства самого процесса и максимально быстрого получения качественного результата. И это не только мое мнение. 
 
Если вы хотите приобрести самые полноценные навыки работы с NURBS, можно порекомендовать менее известную у нас программу Rhinoceros. Там используется только NURBS-моделирование, и все представлено в чистом виде без всяких «примесей». Только есть одна загвоздка в освоении не очень простого интерфейсного подхода. А как хороший вариант практики, причем с интерактивной формой обучения, можно назвать и EOVIA Amapi Pro. 

Cinema4D… о ней можно рассказывать долго. Почему-то у нас эта программа считается новым поколением и альтернативой 3ds MAX, Maya и LightWave3D. На самом деле это ровесники, разработка всех стартовала примерно в 1990-м. Cinema4D не так широко известна, и это в одно время сработало в плюс — разработчики не почивали на лаврах, а делали дело.  


NURBS


Существует правильное разграничение на два основных применимых типа трехмерного моделирования: полигональное и NURBS. Хотя есть еще и третий промежуточный, называется «динамической геометрией», и встретить его вы можете во французском пакете Amapi Pro (там представлены все три типа) и некоторых других профессиональных системах.

NURBS — аббревиатура от Non-Uniform Rational B-Splines (классический перевод — неоднородные рациональные В-сплайны). И хотя слову «сплайны» в учебниках также выводятся определения, на самом деле прямой перевод «spline» — математическое представление плавных кривых (в математике есть и такое понятие как сплайн). При расчетах в NURBS-моделировании оперируют не полигонами, а кривыми. «При расчетах», потому как при визуализации все равно идет преобразование в полигональное представление. Хотя внутри системы моделирования они остаются чистыми кривыми, то есть математическими конструкциями. 

Допустим, вам нужно представить некую сложную трехмерную поверхность, например, естественного природного происхождения. Если ее описывать вершинами, разбивать на примитивы или образовывать из простых фигур и так далее — уйдет очень много времени. Мало того, когда вы захотите внести изменения кривизны поверхности, то в полигональном виде это вообще не удобно. К тому же нужно придумывать ряд модификаторов и ухищрений, чтобы хоть как-то автоматизировать процесс. Да, для этих случаев изобретено множество деформаторов, специальных технологий, связанных с переходом на суб-уровень и так далее… Например, в LightWave3D существует промежуточный вариант — SubPatches (подразделенные поверхности), NURBS там представлено не совсем явно в рамках работы с кривыми и их сопряжениями. В 3ds MAX’е, особенно в русскоязычной документации к нему, вы можете встретиться с понятием «сплайнового моделирования» либо «surface modelling», это тоже NURBS. Мало того, такие часто используемые инструменты как Extrude (вдавливание), Lathe (вращение), Sweep (отливание по формам) также имеют непосредственное отношение к NURBS. Хотя многие, особенно, 3ds MAX’овцы думают, что поскольку использование таковых предлагает дробление на сегменты (полигоны), то и инструменты полигональны… Отнюдь. 


Конкретный пример. Описание


Итак, чтобы все было максимально понятно, будем все рассматривать на конкретике. Да, в принципе, и любой специалист вам скажет, что главное в 3D-моделировании — это практика. В качестве примера возьмем модель, которую разработал ваш покорный слуга в 2006-м году. Передо мною тогда стояла задача придумать и реализовать концепт-модель одноместного экологически чистого автомобиля будущего для игры. Впрочем, он послужил прототипом для того, на чем будет «ездить» вокалист в новом видеоклипе нашей группы, а также для нескольких летательных аппаратов еще в одной в разрабатываемой игре.

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


Ход работы. Создание шаблона


Изначально, для того, чтобы быстро и успешно моделировать сложные объекты (особенно когда нужно много разных одного типа), требуется специальная подготовительная работа, которая делается только один раз — на фон каждой из проекций помещается чертеж ей соответствующий. То есть, наилучшим вариантом будет, когда у вас есть схематическое изображение автомобиля с видами: сверху, снизу, слева, справа, спереди и сзади. Это вам поможет наиболее эффективно использовать рабочее время, к тому же все становится предельно понятным. Если же вы хотите конкретно повторить некий прототип, то такой вариант является обязательным, а в нашем случае он необходим для некоего абстрактного соблюдения пропорций.   

Как загрузить изображение в качестве фона для проекций? На самом деле очень просто. Для этого выбираем одно из окон проекций (режим каждого можно менять в закладке его меню Cameras). После этого в меню окна проекций Edit находим пункт Configure и кликаем на нем указателем мыши. 



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

На самом деле это довольно частый вариант при практическом моделировании, например, когда нужно снимать объекты "as is". 

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



Шаблон для работы готов. Приступаем.


Типы кривых


В любом программном пакете, зайдя в закладку инструментов spline, вы найдете несколько основных типов кривых и чуть больше готовых шаблонов (звезд, дуг и так далее). Пока нас интересуют только основные. В варианте Maxon Cinema4D мы имеем:
  • Linear (линейный) — вершины просто соединяются прямыми.
  • Cubic (Кубический) — вершины обходятся криволинейным образом с определенным отклонением.
  • Akima (Акима) — отличается от кубического варианта большей прямолинейностью, то есть этот вариант можно считать «сглаженным» прямолинейным путем. 
  • B-Spline (В-сплайн) — кривая не следует непосредственно через промежуточные вершины, последние влияют только на степень ее отклонения.
  • Bezier (Безье) — думается, что это такое, объяснять не нужно, речь идет о кривой с «ручками управления» (специфика Cinema4D — для того, чтобы «ручки» появились, нужно удержать нажатой кнопку мыши при выделении точки).
Помимо этого, кривые можно рисовать от руки (указателем мыши и т.п.), указывая параметр «толерантности», а характер соединения между точками или прохождения кривой в отдельной точке во всех случаях можно подправлять. Только не так как в 3ds MAX, где вы указываете конкретно, какой тип линии там должен присутствовать, а несколько по другому — меняя характер интерполяции (жесткий «hard» ведет к прямолинейности, мягкий «soft» — к более плавному характеру изменения). Если вы используете Безье, то управление соответственно. 

Кривые не являются объектами визуализации и отображаются только в окне редактора. Увидеть на экране просмотра их можно только после применения инструментов-модификаторов NURBS. 


Инструменты NURBS


В закладке NURBS вы найдете 6 инструментов. Может показаться, что их мало, но на самом деле в простоте — сила, и сделать с их помощью можно практически все мыслимое.
  • HyperNURBS — автоматическое разбиение и закругление низкополигональных форм. Хотя… сделать с его помощью можно очень многое и помимо этого.
  • ExtrudeNURBS — вдавливание объекта по определенному шаблону, описанному линиями.
  • LatheNURBS — получение новой формы (поверхности) путем вращения контура, описанного линиями. 
  • LoftNURBS — создание объекта на основе опорных сечений. Как минимум, это получение поверхности, очерченной кривой в трехмерном пространстве, а также перетекание из одной указанной формы в другую. Очень мощный инструмент.
  • SweepNURBS — вы указываете две кривые, одна из которых будет контуром сечения, вторая является формой объекта. Можно указать и третий — «рельс» (управляющий масштабом по пути следования). Очень мощный инструмент.
  • BezierNURBS — управление определенной поверхностью контрольными точками.
Супер! Хочется отметить, что Cinema4D один из самых любимых продуктов вашего покорного слуги. Создаем машину.


Начало… и конец


Итак, мне нужно создать половину кузова автомобиля по продольной оси — вторую добавим путем зеркальной симметрии (инструмент Symmetry). Упрощенный вариант будет состоять из боковой части и верха, которые прорисовываются по отдельности в виде замкнутых кривых.
  • Боковая часть. Прорисовываем в окне боковой проекции необходимый контур с помощью линии Акима. В некоторых местах подправляем характер соединения между точками. При этом прорисовка должна достаточно точно передавать форму. При необходимости добавляете промежуточные точки (меню правой кнопки мыши — Add Point) и меняете характер их соединения (меню правой кнопки мыши — Hard или Soft Interpolation).
  • После этого в окне проекций спереди и сзади, смещаете эти точки на необходимую дальность от центра. Получается полноценная трехмерная плоскость. 
  • Далее можно двигаться по двум направлениям — нарисовать дополнительные направляющие кривые (в этом случае форма-поверхность будет протекать и через них), которые покажут выпуклости, либо не делать этого, подразумевая другие варианты создания объемности. Выбираем второй вариант и безо всяких зазрений совести вызываем инструмент LoftNURBS, помещаем в него нашу боковину. В результате внутри нарисованной кривой образовалась объемная плоскость.

  • Точно такие же операции производим и с верхней частью. В принципе, работа с кривыми достаточно кропотливая, и как многие верно отмечают, напоминает создание папье-маше. Особенно явно это прослеживается, если вы еще работаете и с направляющими. Если две полученные формы (поверхности) не совсем совпадают между собой, не беда, после это можно успешно поправить.
  • Соединяем два компонента в один с помощью булевой операции суммирования и делаем объект Boole редактируемым (Make Editable), то есть переходим к полигональной сетке (примерно то же самое можно сделать и через группирование объектов). В ее рамках мы стыкуем поверхности, добавляем необходимые неровности, исправляем полигоны, потому как после кривых они могут быть излишне представлены. 
  • После этого производится ряд необходимых операций с деформациями объекта (стандартные деформаторы), можно делать зеркальную симметрию, и в конце я использовал для придания «природной схожести» HyperNURBS. 


  • В рамках булевой операции вычитания с помощью цилиндров делаются отверстия для колес, а дальше идут остальные украшательства. 
Одно замечание. При использовании HyperNURBS и переходе на высокую полигональность из NURBS, программу в силу объективно объяснимых причин может застопорить, в результате она не позволит редактировать полигоны. Тогда сохраняйте объект в XML-файл, и импортируйте из него. Все необходимые данные сохранятся. 
В итоге, при хорошем знании инструментария можно добиться задуманного.


Подытожим


В принципе, от появления идеи до получения голой модели (а специалисты под «голыми моделями» подразумевают вот это вот:)) на рисунке сверху, было затрачено несколько часов, причем большая часть времени ушла на продумку того, что именно хотелось увидеть в итоге. То есть, я хотел, чтобы машина совмещала в себе растение (природную форму) и современный автомобильный дизайн, а двери и крыша раскрывались как цветок: вверх и по бокам. Дальнейшая доводка, включая внутреннее наполнение и прорисовку лицевой панели для игрового управления заняла 2 дня. То есть, с кривыми работать изначально очень удобно, и если речь заходит о нетривиальных объемных поверхностях, альтернативы NURBS нет.

Если бы пришлось все делать на полигональном уровне, то на подготовку только одного корпуса могло уйти несколько дней. И, кстати, если бы был выбран не Cinema4D с его мощными NURBS-модификаторами, то в других пакетах такое моделирование также было бы трудоемким. 



Результат промо

Но при этом не стоит забывать, что мы работали с hi-poly, то есть с моделями, предусматривающими большое количество полигонов. Этот вариант хорошо подходит для подготовки промо-продукции: плакатов, видео и т.п. Для тех же игр  фактически неприемлем. Там используется большей частью low-poly или mid-poly. В принципе, количество полигонов можно уменьшать с помощью инструмента Polygon Reduction Object, который находится в закладке инструментов деформации...

.

... что для приведенного примера не было приемлемым. И, конечно, другой вариант — создавать low-poly объект с нуля, хотя как "с нуля"? У нас уже есть готовый прототип, то есть полное руководство к действию. Множество неровностей реализуется за счет специальной подготовки текстур (там эти неровности можно показать цветовыми оттенками). Именно так мы потом и поступили. 

Вообще, если вы внимательно присмотритесь к играм с теми же автомобилями, то у них очень много оптимизировано под производительность, т.е. под low-poly, например, в Need4Speed все колеса у машин фактически не круглые, а многогранные. 

Кристофер

Перепечатка материалов или их фрагментов возможна только с согласия автора.


 





Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Ассоциация боевых роботов
Рекомендуем...
Новости

Разделы

Опросы

Какой язык программирования вы считаете наиболее актуальным сегодня?
Всего ответов: 329

Друзья

3D-кино






Найти на сайте:








Об авторе       Контакты      Вопрос-ответ        Хостинг от uCoz