Понять геометрические классы гораздо проще, если представить себе совершенно новый класс. В целях последующего рассмотрения назовем его классом 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 МАХ умеют обрабатывать элементы каркаса или лоскуты, сохраняя все, что попадется им под руку, и проходя через результат модификации заданного геометрического класса.