Здравствуйте! Меня зовут Аркадий Камнев, я работаю в компании C3D Labs и хочу рассказать о новом модуле, который сделает жизнь большого числа программистов лучше. Интересуют подробности? Тогда давайте я объясню, зачем этот модуль нужен.
Если компания ведет разработку инженерного софта с использованием 2D и 3Dгеометрии, параметризации данных и различных конвертеров для чтения и записи моделей в форматы CADсистем, то для осуществления непосредственной функции взаимодействия с пользователем, скорее всего, потребуется специальный компонент — модуль визуализации. Это такая программная библиотека, которую динамически можно подключить к любому проекту в MS Visual Studio на языке C++ и применять в нужных целях, например для вывода на экран красивых 3Dмоделей, причем делать это быстро и качественно!
Здесь есть один очень важный момент: все, кто занимался рендерингом при разработке САПР и пробовал использовать сторонние визуализаторы для этих целей, так или иначе сталкивались с проблемами сочетаемости универсальных движков для визуализации и разрабатываемых приложений. Объясняется это тем, что большинство визуализаторов, представленных на рынке программного обеспечения, создавалось для игровой и анимационной индустрии. На деле оказывается, что для CAD, CAM и CAEсистем такое ПО не совсем подходит. Именно поэтому мы решили создать специализированный визуализатор C3D Vision. Его главное преимущество состоит в том, что разработчики САПР делают вспомогательное решение для таких же разработчиков САПР. Мы отлично понимаем потребности отрасли и не понаслышке знакомы с особенностями данного сегмента, ведь мы являемся частью софтверной группы АСКОН, которая разрабатывает популярную CADсистему КОМПАС3D.
Вообще говоря, если разработчику нужно добавить в приложение визуализацию, то в таком случае имеется несколько вариантов развития событий. Первый — проводится анализ доступных на рынке программного обеспечения опенсорсных решений для визуализации двухмерных и трехмерных геометрических данных и выбирается наиболее подходящее из них. Очевидное преимущество данного выбора — цена покупки, которая в идеальном случае равна нулю. На практике же часто получаем дополнительную плату за доработки, технические консультации и поддержку. Если изначальные бюджеты организации этого не позволяют, то возрастают риски включения в основу ПО неподходящего решения.
Второй вариант — это создание собственного визуализатора. Он хорош тем, что разработчики будут знать программный код, отвечающий за рендеринг, как свои пять пальцев, но компания потеряет десятки и сотни часов труда специалистов, которым, кстати, нужно ежемесячно платить зарплату (в том числе и за поддержку разработанного непрофильного функционала САПР). Есть и более весомый аргумент в пользу того, чтобы отказаться от данного варианта — это смещение фокуса разработки от основного ноухау программы, несущего главную ценность для пользователя, в сторону интерфейсной части САПР. Несомненно, GUI — это очень важный компонент любой современной PLMсистемы, но его создание легко ускорить за счет использования унифицированных методов и процедур, широко представленных платными пакетами.
И вот мы плавно подошли к третьему варианту — использованию коммерческих движков для визуализации данных, в частности модуля C3D Vision, входящего в состав набора C3D Toolkit для разработчиков инженерного программного обеспечения. Конечно, может ошибочно показаться, что визуализация является новой функциональностью геометрического ядра C3D Modeler. Но это не так. С одной стороны, четвертый компонент действительно замкнул линейку инструментальных средств от C3D Labs для разработки инженерного софта. А с другой — C3D Vision представляет собой самостоятельный программный модуль, который можно лицензировать и использовать независимо от остальных компонентов ядра C3D.
Свойства C3D Vision
При отрисовке трехмерной сцены модуль визуализации C3D Vision оперирует полигональными моделями, при этом сцена представляется в виде дерева графов и делится на сегменты. Каждый узел графа имеет свои характеристики:
- абсолютную и относительную матрицы — используются при разработке механизмов наследования родительских характеристик дочерними элементами сцены. Позволяют сегментировать сцену в произвольном порядке, формировать связи между элементами сцены в заданном контуре и централизованно управлять группами элементов, объединенными по какомулибо признаку;
- ссылочное представление на геометрию — используется для экономии вычислительных ресурсов при отрисовке сцены с большим количеством повторяющихся элементов. Позволяет загрузить в оперативную или видеопамять отображение элемента, прописать для него ссылку и далее ссылаться на это представление каждый раз при появлении аналогичного элемента в трехмерной сцене;
- массив представлений геометрии — применяется для ускорения отрисовки элементов сцены с динамически изменяющейся геометрией. Позволяет задавать различные представления геометрии для одних и тех же элементов трехмерной сцены и настраивать механизмы их отрисовки в зависимости от выбранного пользователем режима работы приложения, стиля отображения 3Dмодели, а также при селектировании элементов, подсвечивании активных элементов из дерева построения и т.д.
Основываясь на этих базовых принципах, C3D Vision предоставляет разработчикам САПР инструменты для отрисовки статичной графики с заранее заданной точностью тесселяции — параметром, который определяет, насколько качественно будут построены полигоны, составляющие основу визуального представления 3Dмодели. Плюс к этому модуль визуализации C3D позволяет рассчитывать сразу несколько триангуляционных сеток для разных уровней детализации сцены LOD и плавно переключаться между ними по мере удаления предметов от камеры.
В состав библиотеки C3D Vision включен целый набор специализированных функций для управления ориентацией сцены и настройки отображения геометрической модели: каркас, только видимые ребра, тонированная модель с ребрами и без. Для всех перечисленных режимов доступна функция перспективного отображения сцены, которая в активном состоянии также позволяет перемещаться внутри 3Dмодели. Дополнительно можно задавать различные свойства объектам модели, такие как видимость, прозрачность, цвет, текстуры, материал и т.д.
Используя функционал C3D Vision, можно работать с текстами и настраивать OpenGL, например включать шейдеры, вертикальную синхронизацию или акселерацию графических расчетов за счет использования возможностей видеокарты.
Для разработчиков САПР, пользователи которых не готовы (или не приучены) работать с медленными приложениями, в модуле визуализации присутствует тонкая настройка динамической сцены. Во время панорамирования и вращения C3D Vision может скрывать ребра геометрических моделей, осуществлять сглаживание полигонов, и даже исключать из расчетов незначительные элементы визуальной сцены, а также объекты, находящиеся за пределами сцены.
Модуль визуализации C3D — это удобный инструмент, который позволяет разрабатывать программное обеспечение для работы со сложными визуальными сценами. Использовать C3D Vision просто, визуальные сцены с ним получаются яркими и красивыми, а приложения на его основе работают быстро, обеспечивая таким образом необходимый уровень комфорта пользователям при работе с большими геометрическими моделями в разрабатываемых САПР.
Более подробно ознакомиться с устройством нового технологического продукта от C3D Labs можно, прочитав статью Эдуарда Максименко, которая опубликована в этом же номере журнала «САПР и графика».