Леонид Поляков
У вас
когда-нибудь возникала необходимость включить в свою сцену модель какого-либо
технического изделия, обычной гайки например? Удавалось ли вам решить эту задачу
стандартными средствами программ трехмерной графики ? Ну гайку вы, положим,
смоделировали. А как быть с деталью, изображенной на рисунке? Этот обзор
посвящен техническому моделированию в той среде, которая для этого предназначена
- в инженерных пакетах, и поcледующему импортированию моделей в трехмерных
редакторах.
Чем хороши технические пакеты?
Своей узконаправленностью. В трехмерных рисовалках (имеются в виду 3DSMAX,
MAYA, Soft./images/graf0223D и аналогичные пакеты) используются интерполирующие
методы описания моделей: это либо сетки (mesh, patch), либо поверхности третьего
уровня (NURBS). Они универсальны, но именно это качество ограничивает сложность
модели.
Сразу стоит оговориться: сетки и NURBS могут описывать очень
сложные поверхности, но набор функций для их создания в трехмерных редакторах
весьма ограничен.
Инженерные программы предназначены только для
машиностроительного моделирования - этот факт делает возможным использование
принципиально другого вида моделей - solid.
Что такое solid?
Возьмите в руки любую железку и внимательно рассмотрите. Суть в том, что
почти любую, даже самую сложную деталь можно разбить (мысленно) на примитивы
(куб, сфера) или простые поверхности (коническую, цилиндрическую, поверхность
вращения кривой) - почти каждая деталь может быть описана только радиусами,
углами и расстояниями. Отложим деталь в сторону и запустим любой трехмерных
пакет: модель в таком пакете обязательно имеет структурные составляющие: в mesh
- это треугольники (face), их вершины (vertex) и границы (edges), NURBS в общем
случае состоит из точек и касательных. Solid (иначе - твердотельная модель)
таких элементов не имеет, передвинуть отдельную вершину нельзя - можно лишь
добавлять примитивы и удалять их (последняя функция имеется не во всех пакетах),
при этом примитивы могу быть не только слитыми (union) с другими примитивами, но
и "отрицательными" - вырезанными (subtract) из них. Посмотрите на
рисунок колпачка: он состоит из трех примитивов - проэкструдированного
шестиугольника, полусферы и конической поверхности - фаски.
Да я в
MAX'е также смогу! Boolean'ом!
Конечно. Только модель будет
изначально сеточной, а при увеличении ее сложности появятся глюки; да и многие
функции (скругление граней например) все равно будут недоступны - надежной
реализации таких функций для сеток я не встречал нигде.
Что нельзя смоделить иначе?
Продолжим рассматривать деталь. Что мы
видим? На ней почти нет острых кромок: они либо скошены, либо закруглены.
Закругления, по-ниженерному галтели (fillets), образуются сами собой при ковке
или отливке детали. Иногда их специально вносят в конструкцию, поскольку они
значительно увеличивают прочность детали. Скосы, они же фаски (chamfer)
облегчают соединение деталей да и руки от повреждений предохраняют. Без этих
элементов деталь выглядит нереалистично. На рисунке слева - обычная
пластмассовая деталь, все кромки либо скошены, либо скруглены. Деталь на рисунке
в центре имеет 60 отверстий, расположенных в шахматном порядке, достаточно
проблематично будет смоделить ее в трехмерном пакете. На правом рисунке -
простейшая гнутая деталь. В принципе, реально создать ее модифайером Surface, но
это невероятно сложно.
Параметрическое моделирование.
Параметрическое моделирование
позволяет создавать модель так, как она представлена на чертеже, т.е. не
безликим указанием координат, а привязкой элементов друг к другу. На рисунке
представлена полностью описанная модель колпачка. Помимо размеров элементов
указываются также их "связи" - касательность, параллельность,
концентричность, горизонтальность и вертикальность, равенство отрезков и т.д.
Так, для полного описания шестиугольника, лежащего в основании колпачка
необходимо 2 размера и 12 связей, большинство из которых моделлер находит и
устанавливает сам. Создающий фаску треугольник полностью состоит из связей -
совпадение граней треугольника и кромок детали, равенство сторон и т.д.
Разумеется, любой размер или связь может быть изменена на любом этапе
моделирования, при этом вся модель будет перестроена. Сложность параметрических
моделей может быть весьма высока, см. рисунок слева. К слову: создание колпачка
по чертежу заняло у меня примерно полторы минуты.
Инженерные пакеты.
Бывают следующих классов:
- Электронные кульманы (ACAD LT) - нас не интересуют
-
Среднего уровня (AutoCAD). Умеют работать с solid - но не более того,
параметрическое моделирование в них отсутствует, да и возможности его
ограничены: так, при моделировании корпуса мясорубки мне удалось скруглить
далеко не все грани, где это было необходимо.
-
Высокого уровня (AMD, Autodesk Inventor, SolidWorks, Pro/Engeneer) В
обязательном порядке поддерживают параметрическое моделирование. AMD, или
Autodesk Mechanical Desktop - примитивнейший из этого класса. На мой взгляд, для
наших целей не подходит. SolidWorks - самый приятный из инженерных пакетов. За
удобным игрушечным интерфейсом скрываются огромные возможности, именно этот
продукт я использую в своей работе и рекомендую вам. Pro/Engeneer - это 600-й
Мерседес с деревянными скамейками вместо кресел: навороченнось сочетается с
UNIX'овым интерфейсом, напоминающем DOS-программы начала 90-x.
-
Hi-end пакеты. (Euclid/Quantum, CATIA). Отличаются обилием функций (таких,
как расчет на прочность), необходимых инженеру, но совершенно не нужных
художнику.
Импорт и экспорт.
Перейдем к самому главному. Итак, как открыть модель в трехмерном пакете? Для
этого существует несколько более-менее универсальных форматов, которые
поддерживаются обоими видами редакторов.
-
DWG - родной формат AutoCAD. Открывается некоторыми редакторами (3DSMAX), но
с неизбежными глюками, основной из которых - вывороченные наизнанку
треугольники. Другой способ экспорта из Автокада в макс - сохранение в формат
3DS - не менее глючен. В максе при импортировании DWG густота сетки
устанавливается параметром surface derivation (оптимальное значение - 0.1), а
при экспортировании 3DS из Auitocad переменной FACETRES (оптимально - 5).
-
IGES - формат, поддерживаемый почти всеми редакторами, как инженерными, так и
трехмерными. Представляет модель в виде поверхности третьего порядка, NURBS.
Однако, то, что вы получите в результате импорта (если получите) зачастую будет
слабо напоминать исходную модель.
-
STL - лучший из существующих вариантов. Поддерживается большинством
машиностроительных пакетов, единственный замеченный баг связан с особенностями
превращения модели в сетку - иногда в ней появляются очень узкие и очень длинные
треугольники, из-за чего при рендеринге на текстуре появляется своеобразная
рябь. Часто этот глюк можно вылечить корректировкой групп сглаживания (smoth
groups) и их параметров. Учтите, что в формат STL модель сохраняется как очень
густая сетка (несколько тысяч полигонов даже на простых моделях), поэтому
открытие такого файла может занять несколько минут.
Итак, что имеем с гуся?
Инженерные моделлеры имеют сильно ограниченный набор функций. Однако, функции
эти уникальны и не встречаются в трехмерных редакторах. Если вам необходимо
быстро создать точную модель любого технического изделия - инженерные пакеты к
вашим услугам. Рекомендую вам использовать связку SolidWorks (моделирование)
-> формат STL -> 3DStudioMAX (визуализация).
Маленькое дополнение.
Все картинки в статье смоделены мной в Solid Works (кроме модели мясорубки) и
прорендерены в 3DStudioMAX 3.1 + MentalRay 2.1 (за исключением детали на
градиентном фоне - здесь использовался собственный визуализатор Solid
Works).
Графика и дизайн: общие темы
|