¬аше окно в мир —јѕ–
Ќовости —татьи јвторы —обыти€ ¬акансии Ёнциклопеди€ –екламодател€м
—татьи

15 августа 2023

¬изуализаци€ графики от C3D Labs: возможности дл€ нативных и веб-приложений

јртем ћаксименко, программист C3D Labs

јртем ћаксименко


—одержание

C3D Vision
C3D Web Vision
C3D Service
C3D Viewer API


C3D Labs в составе инструментари€ C3D Toolkit представл€ет два компонента визуализации графики Ч C3D Vision и C3D Web Vision. ¬ этой статье мы рассмотрим, что представл€ют собой эти компоненты, каким образом они могут быть использованы в инженерных приложени€х и какими основными возможност€ми обладают.

¬изуализаци€ графики от C3D Labs: возможности дл€ нативных и веб-приложений, фото 1


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

C3D Vision

C3D Vision, €вл€€сь весьма попул€рным модулем среди инструментов C3D Toolkit, тем не менее вызывает немало вопросов у пользователей, заинтересовавшихс€ его возможност€ми.  ак правило, большинство из них обусловлено неверными суждени€ми о сущности этого компонента. ќшибка обычно заключаетс€ в том, что C3D Vision принимают за конечное десктопное приложение (CAD, BIM и т. п.), которым он вовсе не €вл€етс€.

»менно поэтому, несмотр€ на то что у нас нет сомнени€ в знакомстве читател€ с пон€тием конечного (end-user) приложени€, необходимо рассмотреть р€д определений, нужных нам дл€ правильного понимани€ сути компонента Vision. ѕо существу, любое приложение можно разделить на две основополагающие части Ч математическую и графический интерфейс пользовател€ (graphical user interface Ч GUI).

ѕод математической частью подразумеваетс€ основной функционал приложени€, определ€ющий цель его создани€, который реализуетс€ различными программными инструментами. ¬ области инженерного ѕќ приложени€ могут обладать очень обширным набором таких инструментов. ¬ цел€х декомпозиции их обычно подраздел€ют на отдельные модули (компоненты), решающие конкретные задачи, поэтому математическа€ часть может состо€ть из множества таких компонентов.

¬изуализаци€ графики от C3D Labs: возможности дл€ нативных и веб-приложений, фото 2

√рафический интерфейс пользовател€ Ч это система средств, определ€юща€ Ђвнешностьї приложени€ и характер взаимодействи€ пользовател€ с ним (user experience). ƒанна€ система основана на представлении системных объектов и функций в виде графических компонентов экрана (кнопок, списков, окон и пр.).

¬изуализаци€ графики от C3D Labs: возможности дл€ нативных и веб-приложений, фото 3

≈ще одна не менее важна€ составл€юща€ любого приложени€ Ч св€зь между математической частью и графическим интерфейсом, то есть наличие реализованной логики их взаимодействи€.

¬изуализаци€ графики от C3D Labs: возможности дл€ нативных и веб-приложений, фото 4


ƒавайте рассмотрим в качестве примера простое конечное приложение: просмотрщик геометрии C3D Viewer.

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

  • визуализаци€ дл€ отображени€ моделей;
¬изуализаци€ графики от C3D Labs: возможности дл€ нативных и веб-приложений, фото 5

√рафическа€ сцена с открытой моделью (выделена оранжевым пр€моугольником)

  • геометрическое €дро дл€ расчета геометрических характеристик;
¬изуализаци€ графики от C3D Labs: возможности дл€ нативных и веб-приложений, фото 6

ќдно из применений геометрического €дра Ч расчет ћ÷’ дл€ выделенного элемента модели (выделено оранжевым пр€моугольником)

  • обмен данными дл€ чтени€ и записи файлов в различных форматах.


√рафический интерфейс C3D Viewer представл€ет собой главное окно, диалоговые окна, ленточный контейнер дл€ множества кнопок (ribbon), нажатие на которые запускает соответствующие событи€.

¬изуализаци€ графики от C3D Labs: возможности дл€ нативных и веб-приложений, фото 7

ѕолуча€ дистрибутив приложени€, пользователь обычно легко устанавливает его и начинает пользоватьс€, не задумыва€сь о его структуре, механизме работы и т. д.

»так, с пон€тием конечного приложени€ мы разобрались, теперь давайте рассмотрим, что же понимаетс€ под модул€ми математической части.

¬изуализаци€ графики от C3D Labs: возможности дл€ нативных и веб-приложений, фото 8

— точки зрени€ любого разработчика (специалиста), модуль представл€ет собой набор средств разработки или, как его еще часто называют, программную библиотеку дл€ создани€ приложений (software development kit Ч SDK). “акой специализированный модуль выполн€ет конкретные, зачастую узконаправленные, задачи. ќн не реализует логику взаимодействи€ с графическим интерфейсом, однако предоставл€ет доступ к своему функционалу на программном уровне. “аким образом, такой компонент предназначен исключительно дл€ разработчиков другого программного обеспечени€ на его основе. »менно к таким компонентам относитс€ и C3D Vision.

¬изуализаци€ графики от C3D Labs: возможности дл€ нативных и веб-приложений, фото 9


»так, к чему мы пришли? C3D Vision Ч это программна€ библиотека, предоставл€юща€ возможности визуализации специалисту-разработчику и инструменты дл€ их интеграции в код его приложени€. ¬ комплектацию этого модул€ вход€т: множество заголовочных файлов, две библиотеки Ч статическа€ c3dvision.lib и динамическа€ c3dvision.dll, представл€ющие собой скомпилированные исходные файлы Vision.

Ќу что ж, давайте рассмотрим более детально характеристики Vision.

Ќаш компонент, в первую очередь, отвечает за визуальное отображение 2D и 3D геометрических моделей, использу€ возможности OpenGL. ¬ нем создан набор интуитивно пон€тных графических функций, позвол€ющих существенно упростить низкоуровневое взаимодействие разработчика инженерного приложени€ с отрисовкой геометрии. “акие особенности в полной мере позвол€ют использовать C3D Vision как движок визуализации.

¬изуализаци€ графики от C3D Labs: возможности дл€ нативных и веб-приложений, фото 10

√рафическа€ сцена C3D Vision и решение VS на C++ с тестовыми примерами Vision

Ѕиблиотека компонента полностью написана на €зыке программировани€ C++ и на данный момент поддерживает работу в операционных системах Windows и Linux. ƒл€ использовани€ движка визуализации в приложени€х, разрабатываемых с применением .NET, реализована обертка на €зыке C#.

¬изуализаци€ графики от C3D Labs: возможности дл€ нативных и веб-приложений, фото 11

√рафическа€ сцена C3D Vision и решение VS на C# с тестовыми примерами Vision

 омпонент может быть легко интегрирован с различными фреймворками пользовательского графического интерфейса. Ёто, в первую очередь, необходимо дл€ того, чтобы отобразить окно графической сцены в интерфейсе приложени€. ¬ качестве демонстрации примера такой интеграции нашими разработчиками подготовлены специальные проекты с использованием библиотек GUI MFC (Microsoft) и Qt (The Qt Company).

ƒл€ доступа к функционалу библиотека C3D Vision обладает обширным программным интерфейсом (application programming interface Ч API), описывающим дес€тки различных классов и функций дл€ управлени€ визуализацией внутри конечного инженерного приложени€.

¬изуализаци€ графики от C3D Labs: возможности дл€ нативных и веб-приложений, фото 12

“аким образом, C3D Vision, €вл€€сь библиотекой дл€ разработчиков приложений, в предложенной выше схеме относитс€ непосредственно к математической части, а значит, не может называтьс€ конечным приложением.

C3D Web Vision

¬ последнее врем€ интерес к данному компоненту очень быстро растет и так же, как в случае с Vision, сопровождаетс€ возникновением р€да вопросов. ќдни пользователи, обраща€ внимание на название компонента, закономерно считают его аналогом Vision, но только дл€ веб-среды, другие считают конечным веб-приложением. ѕоэтому давайте рассмотрим, что же такое C3D Web Vision, и какое место занимает библиотека визуализации C3D Vision в его структуре.

¬изуализаци€ графики от C3D Labs: возможности дл€ нативных и веб-приложений, фото 13


¬ообще говор€, любое типичное веб-приложение (веб-решение) организовано на базе вычислительной архитектуры, состо€щей из сервера (backend) и клиента (frontend). Ќезависимо от того, установлены сервер и клиент на разных вычислительных устройствах или на одной машине, взаимодействуют друг с другом они через сетевые протоколы.

¬изуализаци€ графики от C3D Labs: возможности дл€ нативных и веб-приложений, фото 14

ѕод клиентом подразумеваетс€ программа, доступна€ множеству конечных пользователей, котора€ может быть представлена в двух видах Ч как десктопное решение или сайт в браузере. ѕрограмма обладает графическим интерфейсом и, очевидно, может быть установлена на вычислительную машину пользовател€ или открыта в браузере.

—ервер представл€ет собой программу, расположенную на одной мощной машине и реализующую определенную логику работы клиента с ним. —ервер ожидает запросы от программ-клиентов и отправл€ет им свои ресурсы в определенном формате.

¬ свою очередь, C3D Web Vision не реализует описанные выше программы клиента и сервера, но при этом предоставл€ет два модул€ дл€ использовани€ их в веб-решении разработчика. ƒавайте рассмотрим эти модули подробнее.

C3D Service

¬ цел€х простой и удобной интеграции Web Vision с программами разработчика компонент использует так называемую микросервисную архитектуру. ѕодобна€ архитектура обычно примен€етс€ дл€ разделени€ сложного функционала приложени€ на отдельные модули Ч микросервисы, которые отвечают за конкретные бизнес-задачи, могут использовать разные технологии дл€ их решени€ и взаимодействуют с остальными компонентами приложени€ с помощью своего API.

¬изуализаци€ графики от C3D Labs: возможности дл€ нативных и веб-приложений, фото 15

„асть интеграционной схемы Web Vision и место C3D Service в ней (сторона сервера)

»так, C3D Service Ч это микросервис, разработанный дл€ выполнени€ следующих задач.

  1. ”правление структурой и атрибутами модели

    ¬ первую очередь, микросервис отвечает за чтение и запись геометрической модели в любом обменном формате (в том числе .c3d), подготовку древовидной структуры сборки модели, ее узлов и атрибутивной информации, построение триангул€ционной сетки модели дл€ визуализации. „тобы читать и записывать файлы в различных обменных форматах и управл€ть структурой модели, микросервис использует компоненты C3D Converter и C3D Modeler соответственно.

  2. ”правление кэшем геометрии дл€ быстрой загрузки

    ƒл€ ускорени€ открыти€ модели сервис выполн€ет кэширование ее геометрических данных. Ёто необходимо дл€ сокращени€ издержек, возникающих при загрузке модели на сервер, конвертации ее исходного формата в формат .c3d и построении визуального представлени€.

    ћеханизм работы кэшировани€ достаточно прост. ѕри открытии новой модели из заданного хранилища разработчика сервис генерирует некоторые сложные кэши дл€ хранени€ ее геометрии и материалов. ѕри повторном открытии такой модели сервис опрашивает кэш о ее данных и в случае их наличи€ загружает модель сразу из кэша.

  3. ”правление пользовательскими соединени€ми и рабочими пространствами

    ƒл€ активного пользовател€ веб-приложени€ на основе Web Vision микросервис создает сессию (Session) и специальное рабочее пространство (Workspace). ѕри необходимости сервис позвол€ет возвращать списки всех активных пользователей, сессий и рабочих пространств.

  4. ќтслеживание состо€ни€ сервиса
  5. »зменение параметров сервиса


—ервер веб-решени€ взаимодействует непосредственно с микросервисом C3D. ƒл€ организации этого взаимодействи€ сервис предоставл€ет REST API с описанием функционала, упом€нутого выше в пунктах 1-5. —тоит отметить, что разработчик не ограничен в выборе €зыков программировани€ при написании серверной части, так как к REST API разработана Open API спецификаци€, с помощью которой можно сгенерировать API клиент под любой из поддерживаемых Open API Generator программируемых €зыков. —ама спецификаци€ представлена файлом swagger.yaml и поставл€етс€ с микросервисом.

C3D Viewer API

ƒл€ управлени€ непосредственно отображением моделей в браузере C3D Web Vision включает второй модуль Ч npm-пакет @c3dlabs/c3dviewer-api, который необходимо использовать на стороне клиента.

¬изуализаци€ графики от C3D Labs: возможности дл€ нативных и веб-приложений, фото 16

„асть интеграционной схемы Web Vision и место @c3dlabs/c3dviewer-api в ней (сторона клиента)

ƒанный пакет содержит несколько важных составл€ющих:

  1. npm-пакет c3dvision-wasm. ѕредставл€ет собой библиотеку, собранную на исходных файлах движка визуализации C3D Vision. ƒл€ работы с движком в веб-среде его исходные файлы на C++ преобразованы с помощью компил€тора Emscripten в WebAssembly.
  2. npm-пакет c3dvision-js. ѕредставл€ет собой обертку JavaScript дл€ интеграции C3D Vision в HTML-страницу. »нтеграци€ осуществл€етс€ за счет представлени€ окна визуализации в виде HTML-элемента <canvas> дл€ отрисовки трехмерной графики. ƒл€ рендеринга геометрических моделей Web Vision примен€ет технологию WebGL.
    ¬изуализаци€ графики от C3D Labs: возможности дл€ нативных и веб-приложений, фото 17

  3. API на €зыке TypeScript, разработанный с целью обеспечени€ взаимодействи€ специалиста с библиотекой на стороне клиента и включающий упом€нутые выше пакеты в качестве зависимостей.


ƒл€ начала работы разработчика с визуализацией C3D Viewer API имеет метод дл€ инициализации экземпл€ра библиотеки C3D Vision. ƒанный метод принимает в качестве об€зательного параметра объект с настройками микросервиса C3D (им€ хоста и порт). “аким образом, организуетс€ канал св€зи между Viewer API и C3D Service дл€ передачи геометрии модели и ее отрисовки средствами Vision.

¬изуализаци€ графики от C3D Labs: возможности дл€ нативных и веб-приложений, фото 18

ѕолна€ интеграционна€ схема Web Vision

—тоит отметить, что в Web Vision возможности визуализации несколько ограничены по сравнению с возможност€ми десктопной визуализации. ќсновное ограничение св€зано с редактированием исходной модели: конечный пользователь не может измен€ть геометрические характеристики ее объектов, так как модель имеет статус read-only. “аким образом, Web Vision позвол€ет только просматривать модели в графической сцене, то есть, по сути, предоставл€ет функционал просмотрщика.


ƒалее приведем возможности визуализации Web Vision, доступные дл€ разработчика веб-решени€ в св€зи с наличием в его составе модул€ C3D Viewer API.

1. ќтображение моделей в трехмерной графической сцене

¬изуализаци€ графики от C3D Labs: возможности дл€ нативных и веб-приложений, фото 19

2. ”правление визуальными свойствами сцены и моделей:

  • изменение цветов фона сцены, подсветки и выделени€ деталей модели,
  • раскраска элементов модели любым цветом,
  • переключение режимов отображени€ модели (полутон, полутон с каркасом, каркас),
  • переключение видимости элементов модели.
¬изуализаци€ графики от C3D Labs: возможности дл€ нативных и веб-приложений, фото 20

3. ”правление камерой:

  • вращение, панорамирование, масштабирование модели,
  • изменение настроек камеры,
  • стандартные виды.
¬изуализаци€ графики от C3D Labs: возможности дл€ нативных и веб-приложений, фото 21

4. ”правление динамическими сечени€ми (добавление сечени€, удаление, редактирование)

5. ¬ыбор объектов на сцене (селектирование)

¬изуализаци€ графики от C3D Labs: возможности дл€ нативных и веб-приложений, фото 22

6. ”правление аннотационными объектами:

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


ƒумаем, теперь дл€ всех стало очевидно, что C3D Web Vision €вл€етс€ не конечным веб-приложением или аналогом библиотеки визуализации C3D Vision в веб-среде, а компонентом дл€ интеграции возможностей просмотрщика (viewer) в веб-решение разработчика.


≈сли у вас остались вопросы или вы хотите вз€ть на тестирование наши компоненты Ч обратитесь любым удобным способом в компанию C3D Labs. “акже вы можете скачать наш десктопный просмотрщик C3D Viewer или попробовать браузерный просмотрщик C3D Web Viewer.



¬акансии:

јктуальное обсуждение

RSS-лента комментариев

-->

ƒавид Ћевин
ƒавид Ћевин
ќт редактора: „тобы не пострадать от роботов, человеку нужно надЄжно отличатьс€ от продуктового контейнера
ѕроект ЂЌародное —јѕ–-интервьюї

—лучайна€ стать€:

 алендарный график производства работ: ключевой инструмент эффективного [...] — Ќатали€ “орлопова, директор по продуктам Formind (13 окт€бр€ 2023)
isicad Top 10

—амые попул€рные материалы

   ‘орумы isicad:

isicad-2010 isicad-2008
isicad-2006 isicad-2004

ќ проекте

ѕриглашаем публиковать на сайте isicad.ru новости и пресс-релизы о новых решени€х и продуктах, о проводимых меропри€ти€х и другую информацию. јдрес дл€ корреспонденции - info@isicad.ru

ѕроект isicad нацелен на

  • укрепление контактов между разработчиками, поставщиками и потребител€ми промышленных решений в област€х PLM и ERP...
ѕодробнее

»нформаци€ дл€ рекламодателей


¬се права защищены. © 2004-2023 √руппа компаний «Ћ≈ƒј—»

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