24.01.2025 • C3D Vision

C3D Vision: новые возможности для лучшего пользовательского опыта

Дарья Суркова, руководитель группы разработки C3D Viewer, C3D Labs, рассказывает о новых направлениях совершенствования библиотеки визуализации C3D Vision, компонента C3D Toolkit для визуального отображения геометрических моделей и функционирования графического интерфейса инженерного приложения.

C3D Vision: новые возможности для лучшего пользовательского опыта, фото 1
Рис. 1. C3D Vision

Модуль C3D Vision — это графическая библиотека для работы с САПР. Она предоставляет функционал для работы с моделью и ее визуализации, а также API для определенных преобразований. В число таких преобразований входит изменение характеристик узлов, например перемещение объектов. На иллюстрации представлено перемещение узлов. Кроме того, в функционал C3D Vision входит изменение характеристик материалов. В сцене можно управлять освещением, применять шейдеры и другие режимы OpenGL, перестраивать граф желаемым образом. Изображение содержит пример анимации, а именно перестроения графа. Помимо этого, в сцене можно выполнять обход графа. И самое главное, что делает библиотека C3D Vision, — это рендеринг сцены с помощью OpenGL.

C3D Vision: новые возможности для лучшего пользовательского опыта, фото 2
Рис. 2. C3D Vision

Уделим основное внимание трем разделам — рендерингу графических представлений, новым и усовершенствованным инструментам библиотеки, а также планам группы разработки.

Первый раздел — рендеринг графических представлений.

В первую очередь важно отметить проделанные работы по прозрачным объектам.

C3D Vision: новые возможности для лучшего пользовательского опыта, фото 3
Рис. 3. Рендеринг: полупрозрачные объекты

Ключевое обновление — это установка количества слоев прозрачности. На иллюстрации продемонстрировано изменение количества слоев прозрачности в динамике. Можно наблюдать, как сказывается увеличение количества слоев на реалистичности. Однако при этом важно не забывать, что увеличение количества слоев понижает производительность.

C3D Vision: новые возможности для лучшего пользовательского опыта, фото 4
Рис. 4. Рендеринг: порядконезависимая прозрачность

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

C3D Vision: новые возможности для лучшего пользовательского опыта, фото 5
Рис. 5. Рендеринг: сглаживание кривых

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

C3D Vision: новые возможности для лучшего пользовательского опыта, фото 6
Рис. 6. Рендеринг: стили кривых

Сейчас в тестировании появилась возможность установки стиля кривой SetPenStyle, которая позволяет задавать стиль кривой, а также установки стиля точки — конечной и начальной — для широкой кривой. Заявлены три типа — SquareCap, FlatCap и RoundCap. Соответственно, первый вариант — это завершение кривой с перекрытием конечной точки. Второй случай — это завершение кривой без перекрытия конечной точки. И третий вариант — это скругление с перекрытием конечной точки.

C3D Vision: новые возможности для лучшего пользовательского опыта, фото 7
Рис. 7. Рендеринг: производительность

Особое внимание мы уделили работе над повышением производительности. Для этого мы используем целый ряд инструментов и применяем набор алгоритмов, перечисленных на иллюстрации. Они включают простую оптимизацию с использованием индексного буфера при применении индексов. Также подключаются алгоритмы по анализу, например собиранию нескольких одинаковых буферов в один перед отрисовкой. Эти направления относятся к вызову отрисовки (DrawCall). В качестве вспомогательных выступают инструменты профайлинга, которые значительно помогают в анализе. В первую очередь, в связи с этим следует отметить использование графического отладчика RenderDoc. Для повышения производительности также применялись проприетарные инструменты, в том числе NVidia, AMD и т. д. Для более качественной работы с рендерингом мы использовали шейдерные константы и буферы данных. Вместе с тем в настоящее время оценивается возможность работы не только с OpenGL, но и с Vulcan, Direct3D, а также другими средствами визуализации.

C3D Vision: новые возможности для лучшего пользовательского опыта, фото 8
Рис. 8. Рендеринг: производительность (1 млн кривых)

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

Рассмотрим новые и усовершенствованные инструменты.

C3D Vision: новые возможности для лучшего пользовательского опыта, фото 9
Рис. 9. Управление интенсивностью освещения сцены

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

C3D Vision: новые возможности для лучшего пользовательского опыта, фото 10
Рис. 10. Интерактивный манипулятор HotPointWidget

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

C3D Vision: новые возможности для лучшего пользовательского опыта, фото 11
Рис. 11. Интерактивный манипулятор PlacementWidget

Вторая новинка — манипулятор PlacementWidget. Он очень удобен в работе: теперь у пользователя появилась возможность двумя строчками создать манипулятор, помогающий в визуализации перемещений объекта. Он также имеет собственную нотификацию и настройки визуального представления.

C3D Vision: новые возможности для лучшего пользовательского опыта, фото 12
Рис. 12. Захват изображения — функция GrabFrameImage

В числе прочего были существенно доработаны методы функции GrabFrameImage. Во-первых, возможность установки размера. Теперь можно устанавливать не только пользовательские размеры, но и размер конечного изображения по соотношению сторон экрана. К тому же устранены проблемы с установкой фона: фон может быть исходным, как в сцене, то есть прозрачным, обычным цветовым или может быть залит каким-либо изображением.

C3D Vision: новые возможности для лучшего пользовательского опыта, фото 13
Рис. 13. Markup (красный карандаш)

Еще одна новинка — Markup, красный карандаш. Это абсолютно новый инструмент в библиотеке C3D Vision. Что представляет собой Markup? Из названия становится понятно, что он необходим для пометок. Карандаш служит для создания пометок на моделях, в сборках. Он имеет текстовое поле и предусматривает варианты создания как кривой, так и фигуры. Инструмент создается при положении камеры и автоматически скрывается при изменении положения камеры, причем при перемещении обратно на пометку состояние камеры возвращается. Данные фиксируются с возможностью сохранения в формат svg.

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

Дарья Суркова, руководитель группы разработки C3D Viewer, C3D Labs
Дарья Суркова,
руководитель группы разработки C3D Viewer,
C3D Labs
Поделиться материалом
Вверх