Рекламодатель: АО «Топ Системы»

ИНН 7726601967 ОГРН 1087746953557

Рекламодатель:
ООО «С3Д Лабс»

ИНН 7715938849 ОГРН 1127747049209

9 - 2024

C3D Vision: новый функционал и интеграция с математическим ядром

Эдуард Максименко, к.т.н., руководитель команды разработки C3D Vision, C3D Labs
Эдуард Максименко, к.т.н., руководитель команды разработки C3D Vision, C3D Labs

Прежде чем перейти к основным темам, уточним, что такое C3D Vision. Это кроссплатформенная графическая библиотека (SDK), которая дает возможность визуализировать практически любое полигональное представление геометрии. Графическая библиотека Vision ориентирована на систему автоматизированного проектирования, а ее основной функционал включает:

  • управление камерой;
  • управление отображением модели;
  • управление производительностью визуализации;
  • интерактивные инструменты (манипуляторы и т.п.);
  • управление геометрией в сцене.

Обратимся к теме математического представления. Важно отметить, что генератор, который ранее входил в состав библиотеки, теперь не является частью библиотеки и поставляется в исходном коде. С чем это связано? Изменение стало следствием большого количества запросов от пользователей, связанных с такими задачами, как фильтрация объектов и индивидуальное построение отображаемой графической сцены. В связи с этим мы открыли код, и теперь пользователь имеет возможность самостоятельно принимать решения, что и как ему делать, а это способствует более продуктивной, творческой и комфортной работе.

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

Рис. 1

Рис. 1

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

Обратим внимание на фрагмент кода, который дает возможность перейти от математического к визуальному представлению (рис. 2).

Рис. 2

Рис. 2

Как мы можем наблюдать, код весьма лаконичен. Отметим, что доработка генератора представления продолжается по мере создания новых геометрий.

Следующая тема — геометрические представления. Были сделаны небольшие доработки PolygonGeometry. Это полигональная модель, которая предоставляет возможность отрисовать массив кривых в пределах одной геометрии и обеспечивает высокую производительность при отрисовке большого количества кривых. Основной функционал — динамическое создание кривых, скрытие или отображение кривых по идентификаторам, инициализация стиля для кривых по идентификаторам. В число новых функций, которые мы добавили, вошли задание цвета и толщины отсечения отрисовки кривых, а также задание приоритета глубины отрисовки (рис. 3).

Рис. 3

Рис. 3

Рис. 4

Рис. 4

Появилась новая геометрия — это отображение 3D­текстур. Она предоставляется классами Texture3D и RenderPostProcess. Инициализация этого объекта обеспечивается с помощью битовой карты, текстуры либо других форматов изображения (рис. 4). Основные возможности такой геометрии:

  • получение ширины, высоты, глубины загруженной текстуры;
  • проверка альфа­канала;
  • задание фильтров растеризации и режима повтора текстуры;
  • задание приоритета глубины отрисовки кривых.

Чем примечателен этот функционал, эта геометрия? Тем, что пользователь может корректировать отрисовку текстур в режиме реального времени. Этого удалось достичь с помощью подпрограмм типа шейдер.

Следующая тема — это новые и усовершенствованные инструменты. Был переработан интерактивный манипулятор OrientationMarker. Если раньше он просто указывал на ориентацию сцены, то теперь имеет зоны реакции, что обеспечивает способность управлять камерой в интерактивном режиме (рис. 5).

Рис. 5

Рис. 5

Кроме того, он имеет ряд функций для настроек, в том числе увеличение длины осей либо начала координат. Пока мы предусмотрели только два представления, отображенных на иллюстрации.

В продолжение темы инструментов стоит детальнее рассмотреть функцию «взрыв». Необходимость внедрения этого функционала объясняется тем, что при работе с очень сложными моделями необходимо делать разнесение моделей, чтобы посмотреть, что происходит внутри. Безусловно, это можно сделать другим способом — например, с помощью действий, которые скрывают подсборку, но это очень трудоемкая операция. Функция «взрыв» в C3D Vision позволяет осуществить это буквально за один клик. Мы предлагаем пользователям два варианта: упрощенный и более сложный, с большим количеством параметров.

Изображение, приведенное на рис. 6, иллюстрирует упрощенный вариант, в котором используются три основных параметра.

Рис. 6

Рис. 6

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

Второй пример более сложный, он учитывает не только основные, но и добавочные параметры (рис. 7).

Рис. 7

Рис. 7

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

Рис. 8

Рис. 8

Не менее полезная функция — это скрытие минимальных/максимальных размеров тел (рис. 9).

Рис. 9

Рис. 9

Что касается планов до конца текущего года, то одна из ключевых задач — это повышение производительности рендеринга. Не менее важная цель связана с поиском объектов. Мы намерены заместить старый механизм поиска объектов на новый — тот, который будет иметь дополнительный функционал. Его основное преимущество — управление ловушкой, которое обеспечит более уверенные выборку примитивов, фильтрацию объектов и приоритет поиска.

Еще один опорный пункт плана — это доработка документации. Мы рассчитываем уделять больше времени этому вопросу, последовательно повышая качество документирования нашего кода.

Регистрация | Войти

Мы в телеграм:

Рекламодатель:
ООО «Нанософт разработка»

ИНН 7751031421 ОГРН 5167746333838

Рекламодатель: АО «Топ Системы»

ИНН 7726601967 ОГРН 1087746953557