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

26 августа 2020

„то нового в C3D Vision. ќбзор версии 2020

јртем ћаксименко, команда C3D Vision

ћаксименко

ќригинал в блоге C3D Labs


¬ июне вышел C3D Toolkit 2020, обновленный набор инструментов дл€ разработки инженерных 3D-приложений. ¬ этой статье подробно рассказываем о новинках и усовершенствовани€х модул€ визуализации C3D Vision Ч они направлены на ускорение рабочих процессов, сокращение времени на выполнение часто повтор€ющихс€ задач, повышение удобства работы.

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

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

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

”совершенствование существующих инструментов, например новые возможности масштабировани€, выбора объектов с помощью рамки, сечени€ плоскостью.

ј теперь рассмотрим подробнее.

‘ильтраци€ событий от физических устройств

¬ каждой библиотеке, например Qt или MFC, описание и представление событий выполн€ютс€ в своем формате, поэтому дл€ работы с любыми библиотеками в Vision был разработан специальный инструмент Ч фильтр ConverterEventListener.

ќн предназначен дл€ конвертации представлени€ GUI событий в формат Vision, при этом источником событий, как правило, €вл€етс€ графическое окно, где отрисовываетс€ вс€ сцена, но могут быть и иные системные объекты, в частности элемент управлени€ или главное окно. ƒл€ иллюстрации взаимодействи€ реализации пользовательского графического интерфейса и Vision в качестве примеров можно использовать известные библиотеки, представл€ющие собой источники событий.

C3D Vision

”совершенствование процессов управлени€ объектами и редактировани€ объектов

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

C3D Vision

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

ќпределение устройств в пользовательских процессах

¬ C3D Vision 2020 пользователь при создании своих процессов может назначить те источники событий, которые необходимы в каждом конкретном случае.

C3D Vision

Ёти устройства можно настраивать по своему усмотрению. Ќапример, задать дл€ определенных клавиш назначенных устройств выполнение того или иного действи€ в ходе реализации процесса. ƒопустим, клавиша ЂDї клавиатуры отвечает за активизацию сдвига по оси ’, комбинаци€ клавиш ЂCtrl+стрелкаї Ч за вращение объекта вокруг выбранной оси и т. д.

ћинимизаци€ пользовательского кода дл€ генерации сцены

»нтеграци€ Vision с математическим €дром осуществл€етс€ с помощью двух классов Ч MathRepresentation и MathGeometry, работающих непосредственно с математическим представлением MbItem.
C3D Vision

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

// создать математическое представление
SPrt<MbSurface>* mathRep = createSqrtSinSurface();
// создать визуальное представление
GeometryRep* visRep = SceneGenerator::Instance()->
CreateMathRep(mathRep, MathGeometry::Synchronous);
// создать сегмент с заданным родителем
SceneSegment* segSurface = new SceneSegment(visRep, topParent);
C3D Vision

ƒополнительные геометрические представлени€

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

C3D Vision

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

ћаркеры и значки

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

–азработан стандартный набор маркеров дл€ обозначени€ ограничений. ѕри необходимости пользователь может создавать собственные представлени€ с помощью инструмента ЂPainterї.
C3D Vision

 арта высот

  новым реализованным инструментам относитс€ и геометрический объект HeightMapSurfaceGeometry, позвол€ющий работать с двумерным массивом карты высот.  ак известно, представить двумерный массив можно с помощью изображени€ в формате .png или ином формате, поэтому карта высот позвол€ет рассчитать как автоматически, так и вручную, значени€ по всем трем координатам.
C3D Vision

Sketch и Label

Ёто новые объекты, базирующиес€ на плоскости. –азработаны классы MathSketchRepresentation, MathSketchGeometry, предназначенные дл€ отображени€ массива двумерных кривых, €вл€ющихс€ наследниками от MbCurve. “акже реализованы LabelRepresentation и LabelGeometry, предназначенные дл€ отображени€ текста с настройкой ориентации изображени€.

Ќовые возможности отрисовки

¬ C3D Vision 2020 проведены масштабные изменени€, нацеленные на улучшение и доработку возможностей отрисовки геометрических объектов; в частности, добавлены новые режимы отрисовки и отображени€ геометрии с оптимизацией отрисовки и др.

“ак, например, ScreenPlaneOnly позвол€ет определенной геометрии назначить режим отрисовки в плоскости экрана.

C3D Vision


SceneSegment* planeScreen = new SceneSegment(pTopParentSegment);
planeScreen->AddFeature(new Feature::ScreenPlaneOnly);

NoScalable задает геометрию сегмента немасштабируемой независимо от изменени€ общего масштаба сцены.

C3D Vision


SceneSegment* noScalableSegment = new SceneSegment(pTopParentSegment);
noScalableSegment->AddFeature(new Feature::NoScalable);

DoubleSidedLighting управл€ет назначением двустороннего освещени€ геометрии независимо от общего освещени€ сцены.

C3D Vision


SceneSegment* doubleSidedLighting = new SceneSegment(pTopParentSegment);
doubleSidedLighting->AddFeature(new Feature::DoubleSidedLighting);

RenderMode отображает выбранную геометрию в определенном режиме (тон, полутон, каркас и т. д.).

C3D Vision


SceneSegment* renderModeSegment = new SceneSegment(pTopParentSegment);
renderModeSegment->AddFeature(new Feature::RenderMode(rm_Wireframe));
–ежим SectionPlanes позвол€ет назначить сечение геометрии плоскостью выбранных сегментов. Ќа рисунке сечение плоскостью назначено только дл€ детали, а куб сечением игнорируетс€.
C3D Vision


SceneSegment* sectionPlanesSegment = new SceneSegment(pTopParentSegment);
sectionPlanesSegment->AddFeature(new Feature::SectionPlanes(12));
ƒл€ оптимизации отрисовки сложной геометрии примен€етс€ режим FaceCulling. ќн позвол€ет отрисовывать не назначенные грани, а именно те, которые не видны пользователю, либо наоборот, только те, которые видны. Ёто определ€етс€ флагом при создании объекта в FaceCulling. “ак, на представленном примере не отрисовываютс€ передние грани.
C3D Vision


SceneSegment* faceCullingSegment = new SceneSegment(pTopParentSegment);
faceCullingSegment->AddFeature(new Feature::FaceCulling(bool back));

ќтрисовка слоев

—труктура параметров RenderLayerSettings позвол€ет задать режимы отрисовки дл€ определенного сло€, такие как освещение, материал и тип отрисовки. Ќомер сло€ дл€ сегмента сцены определ€ет функци€ SetRenderLayer, где первый параметр Ч номер сло€, а второй параметр €вл€етс€ флагом дл€ распространени€ отрисовки сло€ на дочерние сегменты.
C3D Vision

»нициализаци€ сло€ по умолчанию с двум€ добавочными сло€ми


SceneSegment* pSegment = new
SceneSegment(pTopParentSegment);
pSegment ->SetRenderLayer(1, false);

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

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

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

C3D Vision

¬ыбор объектов с помощью объедин€ющей и секущей рамок

–асширены возможности масштабировани€ объектов: теперь масштабирование может выполн€тьс€ с помощью рамки. »нструмент PrCameraZoomBox имеет настройки в зависимости от конфигурации пользовател€.
C3D Vision

Ќовый инструмент CoordLocator предназначен дл€ конвертации координат от физических устройств, например клавиатуры, как правило, в процессах редактировани€.

–азработано три вида локаторов:

  • ModelCoordLocator Ч конвертаци€ значений координат в модельные координаты;
  • SurfaceScreenCoordLocator Ч конвертаци€ значений координат в заданную поверхность;
  • CurveScreenCoordLocator Ч конвертаци€ значений координат в заданную кривую.
C3D Vision

ѕрименение локаторов дл€ пересчета координат в пользовательском приложении

»нтерактивные манипул€торы

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

¬ частности, был усовершенствован инструмент CuttingTool Ч динамическое сечение плоскостью. ƒобавлено управление положением плоскости с помощью интерактивных инструментов Ч манипул€тора сдвига или манипул€тора поворота.

C3D Vision

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

C3D Vision

¬ SceneWidget дл€ манипул€торов предусмотрены и реализованы стандартные процессы поведени€ и их модели, охватывающие около 80% необходимых решений:

  • Hot-point Ч виджет с определенным представлением и поведением;
  • манипул€тор сдвига, реализующий сдвиг по определенной оси;
  • манипул€тор поворота, реализующий вращение вокруг осей.

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



¬акансии:

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

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

-->

ƒавид Ћевин
ƒавид Ћевин
ќт редактора: ¬рем€ покупать —јѕ–-компании
ѕроект ЂЌародное —јѕ–-интервьюї

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

OpenBIM во врем€ пандемии, или  ак организовать удаленную работу над [...] — ћатериал подготовлен группой авторов компаний CAD.kz и ЂЌанософтї (3 декабр€ 2020)
isicad Top 10

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

   ‘орумы isicad:

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

ќ проекте

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

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

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

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


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

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