|
3D Studio MAX Изнутри
ГЛАВА 7
Поставляемые вместе с 3DS МАХ
параметрические объекты представляют собой два основных
геометрических класса, поскольку они могут все
преобразовывать в треугольные каркасы и лоскуты Безье. С
развитием 3DS МАХ и добавлением дополнительных
геометрических классов способ, при помощи которого
модификаторы взаимодействуют с геометрией, приобретает
более важное значение. Архитектура 3DS МАХ может
разместить любое геометрическое определение. В базовый
продукт включены параметрические, каркасные, лоскутные
объекты и объекты сплайнов.
ПРИМЕЧАНИЕ
Хотя в 3D Studio MAX
непосредственно не входят объекты создания NURBS (Non-Uniform
Rational B-Spline, неоднородные рациональные
В-сплайны) или инструменты редактирования, она
включает в себя класс объектов NURBS для
пользователей 3DS МАХ SDK, разрабатывающих
приложения. 4D Vision, разработчик 3DS МАХ, заявил о
подключаемом элементе NURBS для 3DS МАХ, который
называется "Sculptor" (скульптор). Этот подключаемый
элемент обещает стать очень емким инструментом
моделирования NURBS.
Модели 3DS МАХ основаны на
геометрических классах. В общем случае объекты
начинаются с высокого уровня и по мере необходимости
преобразуют сами себя в более простые уровни.
Параметрический объект можно преобразовать в лоскут,
который затем преобразуется, например, в каркас из
треугольных граней. Нерасширенная 3DS МАХ включает в
себя следующие геометрические классы и связанные с ними
инструменты:
|
Геометрические классы
|
Возможные инструменты
редактирования
|
|
Параметрические объекты
|
Только манипуляция базовыми
параметрами (можно преобразовать в лоскуты или в
каркасы)
|
|
Сплайновые объекты
|
EditSpline (отредактировать
сплайн), Extrude (вытянуть), Bevel (фаска),
Lathe (вращать) и т. д. (Можно преобразовать в
каркасы или лоскуты посредством других
модификаторов)
|
|
Поверхности из лоскутов Безье
|
EditPatch (отредактировать
лоскут), Extrude, Bevel, Lathe и т. д. (можно
преобразовать в каркасы)
|
|
Каркасные объекты
|
EditableMesh (редактируемый
каркас), EditMesh (отредактировать каркас),
MeshSmooth (сгладить каркас). Optimize
(оптимизировать) и т. д. (базовый класс каркасов
или можно подразделить на лоскуты) |
Геометрический класс определяет
способы отображения и редактирования производного
объекта. В настоящее время 3D Studio MAX поставляется
всего с четырьмя классами; однако разработчики
достаточно быстро добавляют заказные классы. Поэтому
понимание эволюции геометрии имеет важное значение для
моделирования.
По умолчанию примитивы 3DS МАХ
преобразуются в каркасы при редактировании их
модификаторами. Те же примитивы могут работать как
лоскуты, если сразу после создания параметров применить
модификатор EditPatch. Поэтому EditPatch является первым
модификатором в стеке. Помните, что позже можно
вернуться назад и вставить модификатор EditPatch после
других примененных модификаторов. Рисунок 7.24
демонстрирует, что объекты Box, Cylinder, Tube, Cone,
Torus и Teapot преобразуются в квадратные лоскуты,
объекты Sphere - в треугольные лоскуты, а каждая грань
объектов Hedra и GeoSphere преобразуется в треугольные
лоскуты.
К сожалению параметры разбиения на
пластины для примитивов игнорируются при добавлении
модификатора EditPatch непосредственно после создания
параметров в стеке. Если требуется отредактировать
объект посредством опций разбиения на пластины,
необходимо поместить модификатор, который сначала
преобразует его в каркас (например, модификатор XForm),
а затем применить модификатор EditPatch для работы с
интерполированными лоскутами.
СОВЕТ
При добавлении модификатора
EditPatch для преобразования примитивов в лоскуты
лучше всего сразу же выключить состояние выборки
Sub-Object, если необходимо применить модификаторы
ко всему объекту. Модификаторы Edit всегда
начинаются в состоянии выборки Sub-Object. Если
перейти непосредственно к добавлению дополнительного
модификатора, эффект нельзя будет увидеть, поскольку
стек не показывает объект, а скорее пустой набор
выборки. Перед тем, как можно будет увидеть эффект
другого модификатора в стеке, необходимо взять
объект вне выборки Sub-Object (или выбрать
что-либо).
Лоскутные объекты по сравнению с
каркасными объектами реагируют на модификаторы
по-другому. На рисунке 7.25 показано, что результирующие
кривые деформированных лоскутов поверхности являются
более неуловимыми, чем в случае, при котором тот же
самый объект деформируется как каркас. Это происходит
ввиду того, что вершины каркаса являются явными, в то
время как лоскут представляет собой результат решения
уравнения.
Обычно при работе с объектами как с
лоскутами люди, занимающиеся моделированием, хотят
сохранить геометрию лоскутов как можно дольше. При этом
знание того, когда операция заставит геометрию
преобразоваться из лоскутов в грани, приобретает очень
важное значение. Следующие модификаторы всегда
преобразуют геометрию в грани: EditMesh (отредактировать
каркас), Material (материал), Normal (нормальный),
Smooth (сгладить), VolSelect (выбор объема), MeshSmooth
(сгладить каркас) и Relax (ослабить).
Понять геометрические классы гораздо
проще, если представить себе совершенно новый класс. В
целях последующего рассмотрения назовем его классом FOO.
Сначала необходимо решить как определяется класс FOO или
из чего он состоит. Каркасные объекты 3DS МАХ состоят из
граней, построенных на вершинах с ребрами, в то время
как объекты с лоскутами Безье состоят из лоскутов с
вершинами управления и тангенциальными ручками. Класс
FOO может состоять из чего угодно. Он может иметь узлы,
несущественные детали, ручки, кривые, меридианы,
контуры, сетки, решетки и прочее. Для целей рассмотрения
будем говорить, что объекты FOO имеют "сетки", состоящие
из "контуров".
Чтобы быть видимым в видовом окне и,
в конце концов, визуализированным, объект FOO должен
знать как преобразовать геометрию класса FOO в элементы
каркаса (или, точнее, в TriFaceMesh). Фактически каждый
объектный класс 3D Studio MAX должен иметь возможность
преобразования в каркас с треугольными элементами. Это
требование определяет общий знаменатель для всех
модификаторов для возврата в такое состояние, при
котором каждый модификатор сможет работать на любом
объекте. Следующий вопрос заключается в определении,
подходит ли геометрия FOO для преобразования в лоскуты
Безье или, может быть, в дополнение от независимых
разработчиков. С этого момента мы будем говорить, что
объект FOO можно преобразовать только в грани.
Класс FOO добавляется к меню создания
и появляется возможность создания объектов FOO. Но как
редактировать их после создания? Выбрав объект FOO,
необходимо перейти к панели Modifier. Появляются только
инструменты, моделирующие объект FOO. Поскольку в
элементы каркаса можно преобразовать каждый
геометрический класс, несколько модификаторов, подобных
Bend, Taper, Twist и EditMesh, доступны. EditSpline,
Extrude и Lathe, работающие только на сплайнах,
приобретают серый цвет (т.е. недоступны). Модификатор
EditPatch также приобретает серый цвет, поскольку
объекты FOO нельзя преобразовать в лоскуты Безье. В
случае применения модификатора Bend, последний
просматривает геометрию в конце конвейера и не зная, что
такое FOO, запрашивает лоскуты. FOO отвечает, что его
нельзя преобразовать в лоскуты, поэтому Bend запрашивает
элементы каркаса. Объект FOO преобразуется в каркасный
объект с треугольными элементами, после чего инструмент
Bend продолжает свою обычную работу. После изгиба
модификатор EditPatch теряет серый цвет и становится
доступным для использования. Это связано с тем, что
каркасный класс 3D Studio MAX знает как выполнять
преобразование в лоскуты Безье.
Если необходимо отредактировать
объект FOO в его собственной манере, текущая опция
должна перейти в нижнюю часть стека Edit History
(история редактирования) и уточнить параметры FOO. При
этом требуются модификаторы, умеющие манипулировать
геометрией FOO. Для редактирования FOO необходимы
инструменты редактирования FOO. Создается класс
модификаторов FOO, сохраняющий и модифицирующий
собственные сетки и контуры FOO. Ввиду исключительной
полезности основных осевых деформаций команды Bend,
Taper, Twist, Skew и Stretch модифицируются так, чтобы
они также могли воспринимать и манипулировать классом
FOO. Теперь после сгибания объекта FOO он сохраняет
геометрию FOO и модификатор EditFOO по-прежнему
существует после применения Bend. В этой точке нужно
применить EditMesh и геометрия станет каркасом.
Реальной возможностью мог бы стать
новый объект NURBS, который легко преобразовать в
лоскуты Безье и элементы каркаса. До тех пор, пока вы
работаете с новыми инструментами моделирования NURBS,
модель остается в виде NURBS. В случае применения
основного модификатора (который ничего не знает о NURBS)
модель преобразуется в лоскуты и при необходимости - в
грани. То же самое применимо для сплошных объектов и
многоугольного моделирования.
Независимо от того, является ли
объект новым или существующим, система для представления
его геометрического класса одинакова. Во время
применения модификатора к объекту модификатор находит,
что геометрический класс объекта может представить себя
самостоятельно и работает на наиболее возможном высоком
уровне. Если модификатор понимает текущий геометрический
класс, преобразование не происходит - модификатор просто
оказывает требуемое влияние на модель. Если текущая
геометрия является классом, не воспринимаемым
модификатором, последний преобразует его в более простой
класс, которым может манипулировать, и затем продолжает
работу.
После добавлений разработчиков
возможная геометрическая иерархия может выглядеть
следующим образом:
|
Геометрический класс
|
Возможные инструменты
редактирования
|
|
Параметрические объекты
|
Манипуляция базовыми
параметрами (возможно преобразование во все, что
угодно)
|
|
Сплошные объекты
|
EditSolid, Fillet и т. д.
(возможно преобразование в NURB)
|
|
Поверхности NURB
|
EditNURB, Trim и т. д.
(возможно преобразование в Patch)
|
|
Лоскутные поверхности Безье
|
EditPatch, Blend и т. д.
(возможно преобразование в Polygon)
|
|
Многоугольные грани
|
EditPoly и т. д. (возможно
преобразование в Quad)
|
|
Четырехугольные грани
|
EditQuad, GameOut и т. д.
(возможно преобразование в Triangles)
|
|
Треугольные грани
|
EditMesh, Optimize и т. д.
(нижний класс) |
Геометрия в 3DS МАХ развивается в
соответствии с требованиями. Объекты сохраняют самый
высокий порядок до тех пор, пока не потребуется
преобразование в более низкий, более простой класс.
Геометрия высокого порядка сама себя преобразует в более
простую геометрию, если применяется модификатор, который
не может работать на данном геометрическом классе. Общим
знаменателем для всех объектов является треугольный
элемент каркаса. Поскольку все объекты 3D Studio MAX
должны иметь возможность преобразования в соответствии с
этими потребностями, все модификаторы могут работать на
любом заданном объекте - хотя для этого они могли бы
преобразовать его в элементы каркаса. Большинство
модификаторов 3DS МАХ умеют обрабатывать элементы
каркаса или лоскуты, сохраняя все, что попадется им под
руку, и проходя через результат модификации заданного
геометрического класса.
|