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

16 €нвар€ 2017

¬изуализаци€ сцены в C3D Vision. ќсновные характеристики и особенности работы

Ёдуард ћаксименко, к.т.н., руководитель разработки C3D Vision

Ёдуард ћаксименко

ќт редакции isicad.ru: ѕродолжа€ расшир€ть своЄ 3D-€дро геометрического моделировани€ в сторону многоцелевой платформы дл€ разработчиков инженерного софтвера, C3D Labs, дочернее предпри€тие компании ј— ќЌ, летом 2016 года выпустило визуализатор C3D Vision 2016. —егодн€ мы публикуем две статьи, которые подробно характеризуют новый продукт.

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

¬ насто€щее врем€ в качестве графической библиотеки очень широко используетс€ программный компонент OpenGL, который фактически стал стандартом дл€ визуализации сцены, в том числе и в трехмерном пространстве. ≈го применение и реализаци€ доступны практически на всех графических платформах под различными операционными системами, в том числе UNIX и Windows. ѕроизводители графических адаптеров также занимаютс€ аппаратной поддержкой и создают специализированные ускорители, которые работают в св€зке с OpenGL. Ќо при всех своих возможност€х OpenGL не имеет структурного API дл€ описани€ сцены, а его интерфейс предоставл€ет лишь базовые средства дл€ трехмерного рендеринга. Ёто весьма затрудн€ет применение разработчиками программного обеспечени€ API OpenGL без использовани€ вспомогательного кода, который обычно реализуетс€ собственными силами и требует много времени и ресурсов. ¬ св€зи с этим существует €вна€ потребность в создании инструмента более высокого уровн€, который бы обеспечивал разработчиков определенными средствами структурного описани€ сцены визуализации, а также обладал набором необходимых инструментов дл€ интерактивного взаимодействи€ со сценой. ћодуль визуализации C3D Vision Ч это один из компонентов от компании C3D Labs, предоставл€ющий такое решение.

—ледует подчеркнуть, что стандарт OpenGL не св€зан с оконной системой, ввиду чего он получил весьма широкое распространение в открытых системах. —пецификаци€ OpenGL использует расширение GLX, которое принадлежит протоколу €дра X Window System и обеспечивает взаимодействие OpenGL и X Window. ƒанное расширение организует пр€мой рендеринг в обход X-сервера, что позвол€ет реализовывать эффективные приложени€, работающие в распределенной X-среде. ¬се эти возможности использованы в насто€щем инструменте от компании C3D Labs. ѕримен€€ открытую модульную архитектуру, C3D Vision предлагает доступ к собственному API при наличии мощного и гибкого функционала и широкого перечн€ вспомогательных компонентов.

¬изуализаци€ данных в C3D Vision

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

√рафические приложени€, созданные на базе C3D Vision, работают с геометрическими представлени€ми сцены, а именно с отрезками, поверхност€ми, ребрами и прочими объектами, которые отрисовываютс€ в активном окне. Ќепосредственное взаимодействие пользовател€ с графическим приложением имеет некое представление отображени€ сцены. ¬ случае если представление не имеет иерархической структуры, а, предположим, представлено простым линейным массивом объектов, то это затрудн€ет применение эффективных методов, например отсечени€ невидимых объектов или поиска объектов сцены. ќчевидно, что применение представлени€ сцены с иерархической структурой дает р€д преимуществ. ¬ этом случае функциональные возможности объектов сцены очень похожи и их можно выделить в отдельные группы, которые объедин€ютс€ в группы более высокого уровн€. ¬ свою очередь, применение иерархических принципов неизбежно приводит к известному графическому стандарту PHIGS (ProgrammerТs Hierarchical Interactive Graphics System) Ч рис. 1.

C3D Vision ћаксименко

–исунок 1. ќбобщЄнна€ схема представлени€ сцены в C3D Vision

»менно иерархические принципы были применены при разработке модул€ визуализации C3D, поэтому описание сцены в нем представлено в виде графа, имеющего терминальные узлы или группы узлов в качестве объектов C3D Vision. ѕоскольку при таком представлении сцены в качестве узлов в графе выступают сегменты, было введено определение Ђсегментаци€ сценыї. —егмент, не имеющий родител€, называетс€ корневым (от англ. Ч root). —егменты могут группироватьс€ по свойствам: материалам, формам и т.д.  роме того, имеетс€ возможность создавать набор сегментов, в частности шаблонных групп, врем€ жизни которых определ€ет пользователь. Ёто может быть набор манипул€торов, заранее созданных дл€ редактировани€ определенных сегментов, или что-то еще. Ќадо заметить, что граф сцены принадлежит контейнеру, имеющему р€д необходимых функций дл€ работы с графом, а также отрисовочный канал. Ќо, пожалуй, одной из самых важных характеристик C3D Vision €вл€етс€ то, что пользователь никак не ограничен в создании множества подобных контейнеров. Ёто означает, что можно сформировать несколько независимых друг от друга графов, отличающихс€ по целому перечню значимых критериев.

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

  • изменение параметров сегментов Ч перемещение и вращение объектов, переключение и проверка видимости, настройка материалов и источников освещени€ и т.д.;
  • перестроение дерева модели любым удобным образом Ч создание и удаление сегментов или объединение с другими сегментами графа;
  • обход графа сцены с выполнением необходимых действий дл€ каждого сегмента;
  • отрисовка всей сцены при помощи OpenGL.

—егментаци€ сцены

ƒл€ того чтобы разработчик мог работать с объектами по определенному шаблону и имел возможность при необходимости создавать собственные типы объектов, в C3D Vision реализована сегментаци€ сцены в виде направленного ациклического графа. ѕодобна€ организаци€ графа позвол€ет создавать логическое представление сцены дл€ более эффективного рендеринга (рис. 2).
C3D Vision ћаксименко

–исунок 2. ѕредставление сцены в виде направленного ациклического графа

—егменты графа могут содержать геометрические данные либо ссылку на эти данные дл€ последующей их отрисовки, при этом применение ссылочной геометрии дает весьма значительную экономию оперативной и видеопам€ти. ѕромежуточные сегменты графа позвол€ют группировать подсегменты и совершать над ними определенные действи€. Ќадо сказать, что каждый сегмент графа имеет собственную матрицу дл€ преобразовани€, вли€ющую на все вход€щие подсегменты. »змен€€ эту матрицу, можно мен€ть местоположение геометрии в пространстве: осуществл€ть поворот, сдвиг и т.д.  аждый сегмент графа сцены имеет собственную систему координат, при этом матрица сегмента трансформирует полигональные модели, которые заданы в системах координат подсегментов, в собственную систему координат рассматриваемого сегмента. ѕоскольку произведение всех матриц от текущего сегмента до root-сегмента графа сцены образует матрицу преобразовани€ из локальной системы координат текущего сегмента в мировую систему координат, то в рассматриваемом случае глобальна€ система координат будет св€зана с root-сегментом. ¬ качестве примера сегментации сцены можно привести отрисовку 3D-модели экскаватора с поворотной башней и подъемным ротором (рис. 3).
C3D Vision ћаксименко

–исунок 3. ћодель роторного экскаватора с поворотной башней и подъемным рабочим органом: 1 Ч гусенична€ платформа; 2 Ч опорно-поворотный механизм; 3 Ч поворотна€ платформа; 4 Ч противовес; 5 Ч башн€; 6 Ч кабина; 7 Ч роторный рабочий орган

Ќа основе этой модели можно воспроизвести граф сцены. –ассмотрим только крупные механизмы 1-3-4-5 (рис. 4), то есть произведем сегментацию сцены по ключевым фрагментам.
C3D Vision ћаксименко

–исунок 4. —егментаци€ сцены роторного экскаватора

»з рисунка 4 видно, что сегмент гусеничной платформы наследуетс€ от root-сегмента и содержит матрицу перемещени€. ѕри трансформации перемещени€ изменение этой матрицы будет вли€ть на все подсегменты, поэтому экскаватор будет перемещатьс€ по ходу движени€. —оответственно, трансформаци€ по матрице поворотной платформы будет поворачивать всю группу, включающую подсегменты. √руппу сегментов, образующих подграф всего графа сцены, можно рассматривать как отдельный объект, состо€щий из множества вход€щих объектов. Ќапример, автомобиль с креслами может быть представлен неделимым объектом, хот€ на самом деле состоит из множества геометрических объектов.

— помощью такого подхода можно решить р€д полезных задач по управлению местоположением объектов внутри сцены. ƒостаточно преобразовать матрицу одного промежуточного сегмента, чтобы изменилось местоположение в сцене сразу у всех вход€щих сегментов, а следовательно, у всей геометрии. “аким образом, если решаетс€ задача перемещени€ автомобил€, то всЄ содержимое в нем Ч кресла, руль, педали, водитель с пассажирами Ч тоже перемещаетс€ без организации каких-либо преп€тствий дл€ выполнени€ иных локальных задач. «десь необходимо подчеркнуть, что любые действи€ над сегментом в основном распростран€ютс€ на его подсегменты.

 ак уже отмечалось ранее, ссылочна€ геометри€ может быть применена дл€ экономии пам€ти. √раф сцены обычно включает достаточно большое количество подграфов, а те, в свою очередь, несколько потомков, образующих дочерние подграфы. Ќаконец, последние могут иметь собственную геометрию. ≈сли рассмотреть множество всех существующих моделей, то становитс€ очевидным, что большинство из них не отличаетс€ по геометрии. “от же самый автомобиль имеет четыре колеса одинаковой формы и размеров, поэтому рационально хранить такую геометрию в одном экземпл€ре, а дл€ определени€ различий в местоположении колес использовать индивидуальные матрицы. — учетом изложенного в C3D Vision реализована возможность присвоени€ ссылок на геометрию тому или иному сегменту графа сцены (рис. 5).

C3D Vision ћаксименко

–исунок 5. —егментаци€ сцены с применением ссылочной геометрии

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

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

“аким образом, оценива€ преимущества, предоставл€емые пользователю базовым функционалом сегментации сцены, можно отметить следующее:

  • представление пользовательских форм сводитс€ к определенному шаблону, что упрощает создание пользователем собственных форм, поскольку исключает использование более низкого уровн€ представлени€;
  • за счет использовани€ концепции графа пользователь может создавать сегменты сцены в виде слоев с их последующей настройкой. ‘актически граф сцены представл€ет собой набор слоев, каждый из которых может быть задан невидимым, полупрозрачным или заблокированным (доступным только дл€ чтени€). Ќадо отметить, что между сло€ми и группами может не быть никакого внутреннего различи€ в структурном представлении, так как и слои и группы представлены сегментами сцены;
  • логическа€ св€зь между объектами модели (кресла в машине) представл€етс€ как расширение модели (машины), при этом сегментаци€ сцены может описывать и пространственные отношени€ различных объектов;
  • в больших приложени€х при проектировании модели предъ€вл€ютс€ повышенные требовани€ к использованию оперативной и видеопам€ти, так как их экономное расходование €вл€етс€ определ€ющим в вопросах оптимизации вычислений. ƒл€ этих целей в C3D Vision был реализован механизм работы со сценой при помощи ссылочной геометрии;
  • применение иерархического подхода в построении графа сцены открывает возможности дл€ решени€ глобальных задач, например таких, как пространственное разбиение геометрии BVHs, включа€ эффективное отсечение и быстрое определение столкновений объектов сцены.

ќсвещение сцены

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

Ќа сегодн€шний день в C3D Vision реализовано несколько типов источников освещени€:

  • Point Light Ч реализует освещение сцены, аналогичное ближнему источнику света, при этом источник освещени€ занимает определенное местоположение и испускает свет из этого положени€ (функци€ SetPosition). ќбъекты на сцене также освещаютс€ в зависимости от их положени€ и рассто€ни€ относительно источника света. ћожно не только задать параметры затухани€, определ€ющие интенсивность ослаблени€ источника света в зависимости от рассто€ни€, но и установить значение константы или линейной/квадратичной интерпол€ции дл€ затухани€ источника света.
  • Direction Light Ч реализует освещение сцены, аналогичное удаленному источнику света. Ќаправление источника света, как и в случае с ближним источником света, определ€етс€ с помощью функции SetPosition, но уже без указани€ конкретного местоположени€.
  • Spot Light Ч имеет местоположение и направление и реализует освещение сцены, подобное источнику Point Light. ¬ данном случае свет проецируетс€ в конусообразную область (функци€ SetSpotCutoffAngle), а ее значение устанавливаетс€ в радианах.

¬иртуальна€ камера

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

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

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

«аключение

¬ данной статье были рассмотрены основные принципы построени€ сцены, а также ключевые особенности функционала программной библиотеки C3D Vision. “ем не менее значительна€ часть предоставл€емых возможностей осталась за пределами анализа: поддержка шейдеров, выбор объектов сцены и их детализаци€ с применением технологии LOD, позвол€ющей на большом удалении от камеры использовать более простые полигональные модели, а также поддержка полупрозрачных объектов, pixel culling и многое другое. ќсвещение данных вопросов требует особого внимани€, поэтому они будут рассмотрены в последующих стать€х.

—тоит отметить, что одной из наиболее важных особенностей C3D Vision €вл€етс€ возможность масштабировани€ программного кода, то есть создание пользователем собственных объектов и интерактивных процессов, позвол€ющих расширить инструментальные возможности исходной библиотеки. ћодуль визуализации C3D Vision базируетс€ на геометрическом €дре C3D Modeler. Ёто означает, что при использовании в проекте математической части из набора C3D Toolkit дл€ разработчиков инженерного ѕќ ее сопр€жение с объектами C3D Vision поддерживаетс€ напр€мую, что существенно облегчает создание приложений.

ћодуль визуализации C3D Vision посто€нно развиваетс€, совершенствуетс€ его базовый функционал и разрабатываютс€ новые фичи, исход€ из реальных запросов и потребностей отрасли —јѕ–. Ёто дает основани€ полагать, что компонент C3D Vision будет оставатьс€ востребованным дл€ решени€ текущих задач разработчиков программного обеспечени€ и не потер€ет своей актуальности в будущем.

Ѕолее подробно ознакомитьс€ с C3D Vision и уточнить услови€ его использовани€ можно на сайте www.c3dlabs.com


„итайте также:


¬акансии:

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

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

ƒавид Ћевин
ƒавид Ћевин
ќт редактора: Ѕумажный isicad.ru?
ѕроект ЂЌародное —јѕ–-интервьюї

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

—колько в –оссии специалистов по BIM? — ћарина  ороль (20 сент€бр€ 2017)
isicad Top 10

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

   ‘орумы isicad:

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

ќ проекте

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

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

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

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


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

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