isicad.ru :: портал САПР, PLM и ERP :: версия для печати

Статьи

26 ноября 2014

Обзор Open CASCADE Technology

Сергей Сляднев

Sergey Slyadnev С. Сляднев закончил факультет Вычислительной Математики и Кибернетики Нижегородского Государственного Университета им. Лобачевского по специальности Прикладная Математика и Информатика. По счастливому случаю оказался в компании OPEN CASCADE, где работает с 2008 года. В сфере его профессиональных интересов находятся численные методы и геометрическое моделирование. Женат, имеет двоих детей.

Введение

Сегодня на рынке наукоемкого ПО имеется множество открытых (open source) продуктов, обладающих проверенным качеством и хорошо себя зарекомендовавших. В этой статье мы расскажем о библиотеке Open CASCADE Technology (сокращенно OCCT), которая успешно совмещает в себе индустриальную зрелость и конкурентную производительность вычислений. Мы сделаем краткий обзор функциональности OCCT, не вдаваясь глубоко в детали и останавливаясь лишь на основных компонентах платформы. Прочитав эту статью, вы получите общее представление о библиотеке OCCT и сферах ее возможного применения.

Про библиотеку Open CASCADE Technology в России известно довольно мало. И это притом, что OCCT предоставляет широчайшие возможности для разработки инженерного программного обеспечения. Более того, библиотека доступна под лицензией LGPL, то есть нет практически никаких ограничений на ее коммерческое использование.

Что такое OCCT

Open CASCADE Technology — это прежде всего библиотека геометрического моделирования или, проще говоря, геометрическое ядро. Для представления трехмерных моделей OCCT «исповедует» подход BRep (Boundary Representation). Это ставит библиотеку в один ряд с такими продуктами как ACIS, Parasolid, CGM, C3D и RGK. Главное отличие состоит в том, что код библиотеки OCCT находится в полном распоряжении программиста. Это дает пользователям известную независимость от компании-поставщика (заметим лишь, что поставщик является сервисной компанией, и потому всегда готов помочь своим клиентам в решении разнообразных инженерных проблем).

Технически OCCT состоит из множества связанных модулей, отвечающих за выполнение широкого спектра задач (Рис. 1). Следующий список перечисляет основные компоненты библиотеки:

  • Foundation Classes — базовый инструментарий OCCT, включающий «умные указатели», коллекции и все прочие средства, обеспечивающие инфраструктуру библиотеки.
  • Modeling — собственно геометрическое моделирование.
  • Mesh — встроенные средства для триангуляции CAD-моделей. Как правило, эта функциональность используется для визуализации в 3D.
  • Data Exchange — обмен данными (STEP, IGES и т.д.).
  • Visualization — интегрированная подсистема визуализации CAD-моделей, сеток и произвольных данных приложения.
  • Application Framework (OCAF) — компоненты для быстрой разработки приложений с использованием OCCT.

Рис. 1. Компоненты Open CASCADE Technology.

Историческая справка

Поддержкой и развитием ядра занимается компания с одноименным названием — OPEN CASCADE S.A.S (OCC). Головной офис компании находится во Франции. В России OCC представлена крупным экспертным подразделением, расположенным в Нижнем Новгороде.

Исторически ОССТ является наследником математического ядра CAD-системы EUCLID, созданием которой занималась компания Matra Datavision, начиная с 1980-х годов. В 1993 году была выпущена платформа CAS.CADE (Computer Aided Software for Computer Aided Design and Engineering), на базе которой велась разработка системы EUCLID QUANTUM — нового поколения EUCLID. Официальный релиз системы EUCLID QUANTUM состоялся в 1996 году. Однако спустя несколько лет (в 1998 году) компания Matra Datavision изменила свою бизнес-модель и сосредоточилась на оказании сервисных услуг.

В 1999 году руководством Matra Datavision было принято историческое решение об открытии исходного кода библиотеки CAS.CADE, которая с этого момента стала именоваться Open CASCADE. Спустя еще некоторое время (в конце 2000 года) Matra Datavision объявила о создании дочерней компании OPEN CASCADE S.A.S. для оказания поддержки и сервиса на базе нового геометрического ядра. В 2003 году компания Matra Datavision была приобретена корпорацией IBM, в то время как OPEN CASCADE S.A.S. оказалась во владении другой французской компании — Principia. Более подробно с историей можно ознакомиться на официальном сайте компании.

День сегодняшний

В настоящее время компания OPEN CASCADE S.A.S. прилагает существенные усилия для популяризации ядра OCCT. Так как речь идет о продукте с открытым исходным кодом, а времени с момента его публикации прошло довольно много, то вполне естественно, что вокруг ядра OCCT сформировалось сообщество пользователей. На сегодняшний день каждый заинтересованный человек может поучаствовать в развитии ядра, зарегистрировавшись на портале разработчиков, где находятся официальный баг-трекер ядра, а также Git-репозиторий.

Моделирование (Modeling)

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

Рис. 2. Модификация тора без изменения топологических структур. Таким образом, одна топологическая структура может быть одинаково хорошо «натянута» на визуально разнородные модели.

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

Рис. 3. Одна из возможных топологических структур для тора с «заплатками» из Рис. 2.

Структура геометрических и топологических примитивов OCCT во многом соответствует стандарту ISO-10303 (STEP). Особенно полезным будет ознакомление с частью 42 — «Integrated generic resource: Geometric and topological representation». Во всяком случае, знание о том, что CAD-модель представляется не как монолитная форма, а как своего рода «лоскутное одеяло», совершенно необходимо для работы с BRep-представлением. «Кухня» BRep довольно стандартна и не является чем-то присущим исключительно платформе OCCT. От ядра к ядру может меняться лишь набор используемых топологических примитивов, в то время как объекты «грань», «ребро» и «вершина» присутствуют всегда (именно эти объекты связываются с геометрическими примитивами, тогда как остальные играют чисто структурную роль).

Стоит заметить, что, помимо BRep, возможны (и реально используются) другие формы представления CAD-моделей, например, фасетчатые оболочки, воксели (voxel) и CSG (Constructive Solid Geometry). Тем не менее, на сегодняшний день эти способы представления являются нишевыми и используются только для решения строго очерченного круга задач (например, воксели хорошо поддаются параллельной обработке).

Точная BRep-модель «лучше» дискретных в том смысле, что из нее всегда можно получить как воксели, так и пространственные сетки нужного качества. Обратная задача (получение точной модели по дискретной), как правило, не является тривиальной и сопряжена со многими трудностями — прежде всего, неоднозначностью восстановления геометрии граней и реконструкцией топологии. Поэтому в задачах трехмерного моделирования необходимо иметь некоторое «идеальное» представление объекта в том виде, в котором он существует или замыслен в реальности.

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

Геометрия в OCCT представляется в стандартном параметрическом виде. Наиболее универсальным подходом к описанию геометрической формы, как известно, является NURBS. Помимо NURBS, в библиотеке OCCT реализованы также поверхности вращения, линейчатые поверхности, кривые и поверхности первого и второго порядка и т.п. На сегодняшний день OCCT поддерживает весь «джентельменский» геометрический набор, за исключением таких технологий, как T-сплайны и поверхности подразделения (subdivision surfaces).

Рис. 4. B-сплайн поверхность в OCCT.

Геометрия обрезается и компонуется при помощи топологических ограничений. При этом мы можем наблюдать, как изменяется параметрический портрет каждой грани. Под «параметрическим портретом» понимается пространство (U, V), на котором определена интересующая нас грань, дополненная параметрическими 2D-кривыми (p-curves). Конфигурация этих кривых вместе с их ориентацией позволяет судить о том, как заданы ребра на грани и где находятся отверстия.

Рис. 5. Параметрический портрет грани с внутренними вырезами.

После краткого знакомства с общими принципами BRep, мы рассмотрим основные возможности OCCT, связанные с собственно CAD-моделированием. Для более глубокого изучения доступной функциональности можно обратиться к официальной документации или тестовым приложениям, поставляемым вместе с библиотекой.

Восстановление поверхности по точкам

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

Рис. 6. NURBS-поверхность, восстановленная по облаку точек.

Скиннинг поверхности (тела)

Восстановление формы модели по заданному набору сечений — стандартная задача геометрического моделирования. OCCT предоставляет средства как для поверхностного скиннинга, так и для построения твердотельных объектов с автоматическим восстановлением замыкающих граней.

Рис. 7. Модель, построенная по сечениям.

Кинематическое моделирование

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

Рис. 8. Трубка, построенная протягиванием круглого профиля.

Булевы операции

Вычитание, объединение, взятие общего, пересечение тел и поверхностей — все эти фундаментальные алгоритмы реализованы в OCCT и «обкатаны» на множестве реальных инженерных моделей.

Рис. 9. Вычитание призмы из тела вращения.

Рис. 10. Объединение тел.

Рис. 11. Пересечение тел.

Рис. 12. Пересечение оболочек тел.

Поверхности сопряжения

Фаски и скругления также доступны в OCCT. При этом поддерживаются скругления переменного радиуса.

Рис. 13. Скругления на ребрах.

Рис. 14. Скругления переменного радиуса.

Что-то еще?

Пожалуй, наиболее конструктивный способ дать читателю представление о моделизационных возможностях библиотеки OCCT — сослаться на открытую документацию продукта. Заметим лишь, что имеющегося функционала достаточно для решения широчайшего круга задач из области CAD.

Обмен данными

Open CASCADE Technology предоставляет развитые средства для обмена CAD-данными. Поддерживаются такие базовые форматы как STEP, IGES, STL и VRML. Корректность передачи данных при помощи формата STEP обеспечена не только богатой историей применения этого транслятора в индустриальных проектах, но и участием команды разработчиков в «тест-ралли» ProSTEP (1998-1999 годы, TR 8-10), а позднее в CAX-IF (2000-2002 годы, TRJ 3-10).

Надежность трансляторов во многом обеспечивается компонентой Shape Healing, которая служит для пост-обработки восстановленной CAD-модели с целью разрешить нередкие геометрические и топологические проблемы (связанные, например, с самопересечением ребер, отсутствием параметрических кривых, недостаточностью топологической информации и т.д.).

Трансляторы данных позволяют работать не только с геометрической информацией, но и с некоторыми ассоциированными атрибутами. Так, из формата STEP Open CASCADE Technology «умеет» читать цвета и имена компонентов, их вложенность в сборки, слои и некоторые другие свойства.

Рис. 15. STEP-файл с цветами, прочитанный средствами Open CASCADE Technology.

Визуализация

Библиотека Open CASCADE Technology поставляется с собственной подсистемой визуализации, основанной на OpenGL. Наличие такой подсистемы не только позволяет эффективно работать с алгоритмическими средствами библиотеки, но также является серьезным подспорьем для реализации интерактивных 3D-сцен в реальных приложениях САПР.

Рис. 16. Динамическое сечение сцены средствами OpenGL.

Рис. 17. Визуализация методом трассировки лучей (FPS реального времени).

Рис. 18. Визуализация модели насоса методом трассировки лучей с совмещением режимов shading и wireframe.

В нашем распоряжении имеются как низкоуровневые средства для работы с базовой геометрией и топологией (визуализация NURBS вместе с контрольными полигонами и узловыми точками, рендеринг изолиний для оценки скорости и качества параметризации, отрисовка параметрического портрета граней), так и высокоуровневый инструментарий для качественного рендеринга моделей путем трассировки лучей (включая тени, отражения, прозрачность, антиалиасинг и т.д.) в реальном времени. Набор доступных «примочек» постоянно растет. Пожалуй, на сегодняшний день именно эта часть библиотеки развивается наиболее динамично.

Пара слов о развитии

Ни для кого не секрет, что функциональность, связанная с геометрическим моделированием, должна работать очень надежно. Известно, что абсолютно безошибочного программного обеспечения не существует, но бывает недостаточное тестирование. Несмотря на наличие порядка 16000 тестовых сценариев, ошибки в Open CASCADE Technology обнаруживаются регулярно (и это неизбежно). Здесь особенно важно иметь в виду, что OCCT — не «мертвый» продукт. Его развитие обеспечивается согласованной работой нескольких внутренних экспертиз, среди которых моделизационная группа является основной.

Рис. 19 показывает распределение улучшений, сделанных в последних версиях библиотеки OCCT, по их функциональной принадлежности. Нетрудно заметить, что львиная доля всех исправлений и улучшений связана с геометрическим моделированием, т.е. с наиболее технологически сложной и наукоемкой частью библитеки. Это означает, что даже с исчезновением системы EUCLID, библиотека OCCT динамично развивается в сторону наращивания геометрической функциональности и повышения ее надежности.

Рис. 19. Распределение улучшений и исправлений в OCCT за последние 3 года
(версии 6.5.1, 6.5.2, 6.5.3, 6.5.4, 6.5.5, 6.6.0, 6.7.0 и 6.7.1).

Заключение

Open CASCADE Technology — это полнофункциональный и максимально открытый продукт, который может существенно расширить ваш инструментарий для разработки наукоемкого ПО. Стоит заметить, что применение этой библиотеки не исчерпывается исключительно задачами САПР. Развитое математическое ядро, подсистема визуализации, компоненты быстрого прототипирования приложений — все это может пригодиться не только разработчику инженерного ПО индустриального качества, но и сотрудникам учебных заведений и институтов в качестве математической «экосистемы» для научных разработок.

Разумеется, полный охват всей доступной функциональности OCCT невозможен в рамках небольшой вступительной статьи. Поэтому для продолжения знакомства с библиотекой мы приглашаем читателя на официальный сайт разработчиков. Исследуйте вместе с нами и участвуйте в развитии библиотеки. Ваш творческий вклад в OCCT будет доступен всему инженерному сообществу мира!

© OPEN CASCADE S.A.S., 2014
Текст статьи является собственностью компании OPEN CASCADE S.A.S. и не может быть процитирован, перепечатан, изменен или скопирован целиком или полностью без письменного согласия OPEN CASCADE S.A.S.


Все права защищены. © 2004-2024 Группа компаний «ЛЕДАС»

Перепечатка материалов сайта допускается с согласия редакции, ссылка на isicad.ru обязательна.
Вы можете обратиться к нам по адресу info@isicad.ru.