Машиностроительное моделирование
Леонид Поляков , www.render.ru
У вас когда-нибудь возникала необходимость включить в свою сцену модель какого-либо технического изделия, обычной гайки например? Удавалось ли вам решить эту задачу стандартными средствами программ трехмерной графики ? Ну гайку вы, положим, смоделировали. А как быть с деталью, изображенной на рисунке? Этот обзор посвящен техническому моделированию в той среде, которая для этого предназначена - в инженерных пакетах, и по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).
|