Каков наилучший способ 3D-рендеринга в реальном времени в инженерном приложении?

Мы разрабатываем приложение на основе ГИС, которое имитирует объекты реального мира (например, трубы, дороги и т. д.) в среде виртуальной реальности. В настоящее время мы используем ArcScene из ESRI ArcGIS для 3D-рендеринга, и в будущем мы намерены заменить его нашей собственной 3D-средой.

Вопрос. Каков наилучший способ 3D-рендеринга в реальном времени в вышеупомянутом приложении? У меня нет никакого опыта в этой области, и я действительно смущен. Должен ли я использовать один из доступных механизмов 3D-рендеринга (некоторые из них перечислены ниже)? если ответ положительный, то какие параметры следует учитывать (независимо от его стоимости)? Есть ли у кого-нибудь опыт или предложения в этой области?

обстоятельства и необходимость:

  1. Мы используем среду C# .NET для разработки приложения
  2. Есть огромное количество 3D-объектов для показа
  3. 3D-объекты сгруппированы в разные файлы САПР.
  4. Важно взаимодействие с конечной 3D-сценой (например, выберите один 3D-объект)
  5. Требуется загрузка, выгрузка, включение, выключение и установка прозрачности одного слоя и/или объекта(ов).
  6. Высокая производительность при рендеринге в реальном времени широко распространенных моделей (площадь более 800 га) с высокой детализацией (от дорог до очень мелких объектов типа одного винта)
  7. Нет необходимости продвигать вопросы затенения (в настоящее время)
  8. Текстура должна быть применимой

Двигатели рендеринга. После некоторого поиска я нашел следующие решения для 3D-рендеринга:

  1. CadFaster|Engine: «CadFaster|Engine — это уникальная и наиболее масштабируемая Решение для 3D-рендеринга для технических приложений. Оно более чем в десять раз быстрее, чем обычные приложения САПР. Движок включает запатентованные механизмы синхронизации в реальном времени для наборов 3D-данных и геометрии, что позволяет автоматически интегрировать их в главное приложение. |Engine также содержит запатентованную технологию сокращение полигонов в реальном времени, которая улучшает производительность 3D". цитата из DevMaster

  2. Quest3D: "Используйте Quest3D для создания программного обеспечения, веб-сайтов и симуляторов. Quest3D — это идеальное решение для визуализации архитектуры, визуализации продуктов, цифровых развлечений, компьютерного обучения и высококлассных приложений виртуальной реальности». цитируется из введения Quest3D

  3. OpenSceneGraph: "OpenSceneGraph — это набор инструментов для высокопроизводительной 3D-графики с открытым исходным кодом, используемый разработчиками приложений в таких областях, как визуальное моделирование, игры, виртуальная реальность, научная визуализация и моделирование.. Полностью написана на стандартном C++ и OpenGL... В настоящее время OpenSceneGraph прочно зарекомендовала себя как ведущая в мире технология построения графов сцен, широко используемая в визуальных -симуляторы, космическая, научная, нефтегазовая, игровая и виртуальная индустрия.Основной язык: C/C++ Языковые оболочки: C#, ... ." цитируется с домашней страницы OSG.

  4. Также есть список почти полных доступных движков на DevMaster. и 3D-ссылки


person AliPST    schedule 18.04.2009    source источник
comment
добавил некоторые подробности в мой ответ. Дайте мне знать, если это поможет или если вам нужна дополнительная информация.   -  person Erich Mirabal    schedule 26.04.2009


Ответы (6)


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

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

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

Если вы имеете дело с ГИС, ознакомьтесь с Insight3D от AGI. Все еще находится на ранней стадии разработки, но поддерживается множеством хороших технологий и предназначен для обработки большого количества объектов, отбраковки, LoD и т. д. У них даже есть способы встраивать видео в качестве текстуры.

РЕДАКТИРОВАТЬ:

Если вы имеете дело с С#, как вы сказали, я бы действительно взглянул на Insight3D. Это движок 3D GIS. Не игровой движок. Он основан на графе сцен, что означает, что вам не нужно беспокоиться о покадровом рендеринге, как это может быть с другими движками.

В них есть все необходимые конструкции

  1. Очень быстрое тестирование попадания (т.е. какой объект вы выбрали).
  2. Классы Scene-Graph с простым управлением для условного рендеринга.
  3. Время интегрировано в движок как часть Scene-Graph. Это означает, что вы даже можете определить, как все выглядело в предыдущий момент времени, и вернуться к нему назад и вперед.

Для меня разница между 3D-движком и игровым движком может быть довольно размытой. Из того, что я видел, ключевое отличие состоит в том, что игровые движки больше заботятся о том, чтобы все выглядело хорошо, чем о точности. Например, мы использовали движок Unreal для рендеринга нашего офиса, но нам пришлось делать все в других масштабах, чем в реальной жизни. Выглядело здорово, но не до реальных размеров. Это может иметь значение при работе с деталями вплоть до винтов, как это делаете вы.

Небольшая оговорка: я не работаю в AGI, но лично встречался с инженерами, которые создают этот движок. Они интегрируют новейшие графические процессоры и методы рендеринга, поэтому это, безусловно, один из самых быстрых и качественных движков, которые я использовал. Он использует знания и технологии, используемые их основным приложением (STK).), который используется многими людьми для астрономических расчетов с высоким разрешением.

person Erich Mirabal    schedule 19.04.2009
comment
Привет, Эрих, очень долго с вашего ответа, но я ищу новый ответ внизу моей страницы;) Кстати, в вашем ответе есть интересный момент, но меня интересует, как я могу реализовать 3D? Должен ли я использовать двигатель? Тогда какой? Создание 3D-сцены, управление LOD, разделение сцены и т. д. очень сложны для нашей команды. С другой стороны, я не могу отличить игровой движок от движка рендеринга! НАДЕЮСЬ, ВЫ УВИДИТЕ ЭТОТ КОММЕНТАРИЙ, и спасибо за ответ - person AliPST; 26.04.2009
comment
ответ действительно полезен, я продолжу работать над этой проблемой, и в будущем возникнет больше вопросов, спасибо за ваш интерес и НАДЕЮСЬ увидеть мои будущие комментарии и вопросы. P.S.: Я отправил электронное письмо в компанию AGI ([email protected]), но ответа до сих пор нет :(, сайт AGI находится в разработке. - person AliPST; 29.04.2009
comment
У меня есть новый вопрос после вашего ответа: раньше я думал, что GameEng и 3DEng выполняют покадровый рендеринг для создания 3D-сцены в реальном времени, но вы сказали, что это основано на графике сцены, что означает, что вам не нужно беспокоиться о кадре. -покадровый рендеринг, как в других движках. как это может быть? - person AliPST; 29.04.2009
comment
Некоторые движки основаны на сценах (если вы посмотрите на Java3D в качестве другого примера). Вы не выполняете покадровый рендеринг, когда выполняете каждую необходимую вам команду OpenGL/DirectX. Вместо этого вы декларативно говорите, что это моя сцена. Вот у меня коробка, с таким поворотом, с такой текстурой. WPF3D работает аналогичным образом. Вы даете ему информацию (3D-объект, текстуры, повороты и т. д.), а движок выполняет всю 3D-выборку и выдает низкоуровневые команды графической карты. Надеюсь это поможет. Я буду рад уточнить некоторые дополнительные, если это необходимо. - person Erich Mirabal; 29.04.2009

SlimDX SDK может быть вариантом, если вы хотите начать с самого низа, это в основном способ предоставить вам доступ в DirectX из .NET. У них также есть коллекция образцов, с которых вы можете начать.
Ogre — 3D-движок под LGPL или приобретите лицензию
garagegames.com — также есть несколько движков, в зависимости от выбранного вами языка (также «низкая» цена. Здесь нет движков за 500 тысяч долларов)

И Ogre, и garagegames.com имеет «старые» 3D-движки, поэтому вы сможете найти либо полные игры, либо демоверсии, чтобы проверить производительность. Я не знаком с написанием приложений для САПР, поэтому, когда вы говорите, что у вас есть 3D-объекты, я не уверен, являются ли они статическими или объектами, которые могут изменяться во время работы приложения.

person EKS    schedule 18.04.2009
comment
Axiom — это версия Ogre для .NET, не так ли? Так как он под C#. - person Lucas Jones; 18.04.2009
comment
Аксиома: axiomengine.sourceforge.net/mediawiki-1.13.2/index. php/ И, пожалуйста, не запускайте ExoEngine снова. - person Lucas Jones; 18.04.2009

Я работал с OpenSceneGraph, и, по моему мнению, если вы не очень хорошо организуете свой график, вы можете получить низкую производительность, учитывая специфику ваших моделей (высокая детализация, большое количество объектов, разрозненные сцены). Вам нужно будет иметь возможность пространственно разделить сцену (например, октавные деревья, kd-деревья и т. д.).

Если стоимость не является проблемой, вы можете обратиться к поставщикам, которые также предоставляют консультационные услуги и продают движки, которые не требуют таких же знаний в области 3D-графики, как, например, OSG.

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

Если ваши модели чрезвычайно велики, вам понадобится что-то, что способно выполнять пейджинг, поскольку ваша модель не поместится в доступную память (полагаться на ОС для пейджинга в этом случае - не лучшая идея, IMO).

Здесь вы можете найти список 3D-движков, некоторые из них коммерческие: http://en.wikipedia.org/wiki/List_of_3D_graphics_API

person grivei    schedule 21.04.2009
comment
Вау, во-первых, спасибо за ваш ответ. Я уже совсем отчаялся получить ответ. за последние 2 дня я получил тест на OSG, и это только инструменты 3D-рендеринга, но, как вы сказали, это только половина пути. но я не знаю этого: есть ли разница между движком 3D-рендеринга и игровым движком? Часто задаваемые вопросы C4Engine утверждают, что: - person AliPST; 21.04.2009
comment
Количество отображаемых полигонов редко является ограничивающим фактором, когда речь идет о производительности движка. На скорость рендеринга влияет множество факторов, в том числе сложность используемых материалов, количество прорисовываемых теней и их типы, а также наличие различных спецэффектов. Нет никаких конкретных числовых ограничений для любого из них, которые можно было бы указать. Скорость обычно определяется тем, насколько хорошо разработаны уровни. - person AliPST; 21.04.2009
comment
и я вижу снимок образцов игр на этом движке, которые близки к нашим потребностям. Так есть ли надежда использовать этот тип двигателя вместо вышеупомянутых двигателей? - person AliPST; 21.04.2009
comment
У меня нет абсолютно никакого опыта работы с играми, но я знаю, что есть существенные различия между рендерингом игры и рендерингом файлов САПР. Первое отличие заключается в том, что приложения САПР, особенно архитектурные, обычно создают модели с большим количеством объектов с относительно низким средним числом полигонов/объектов. С другой стороны, в играх есть объекты с большим количеством полигонов. Одним из прямых следствий этого является то, что LOD намного лучше работают с играми, чем с архитектурными моделями. - person grivei; 22.04.2009
comment
Еще одно отличие состоит в том, что игровые сцены могут быть оптимизированы в автономном режиме. Конечно, многие движки допускают динамические сцены, но они все еще имеют некоторый контроль над содержанием и структурой сцен. Это различие очень важно, так как у вас нет такого рода рычагов воздействия на произвольные модели САПР, которые вам могут понадобиться для визуализации, и поэтому так важно правильно разделить сцену в неигровом типе приложения. - person grivei; 22.04.2009
comment
По моему опыту, количество полигонов действительно имеет значение, особенно когда вы превышаете пару миллионов из них (это число будет меняться со временем и GPU). Я полностью согласен с тем, что это зависит от многих других факторов, но само количество полигонов может повлиять на производительность, если отбраковка не уменьшает их количество, отправляемое на графический процессор, на уровне, на котором графический процессор может отображать сцену с интерактивной частотой кадров. . - person grivei; 22.04.2009
comment
В заключение, если ваши сцены не предопределены (например, вам нужно иметь возможность загружать модели, которые вы не можете предварительно обработать вручную), я не рекомендую использовать игровой движок, если вам действительно не нужны некоторые другие вещи типичного игрового движка. предложения (логика ИИ, улучшенное моделирование физики, редакторы и т. д.). Если вам нужен чистый рендеринг, вы можете обратиться к OSG или любому другому провайдеру, который также предоставляет консультационные услуги (Роберт Осфилд из OSG, вероятно, был бы рад помочь). - person grivei; 22.04.2009

Unity 2.5 теперь имеет интегрированную среду разработки, работающую в Windows. Существует также веб-просмотрщик, так что (с помощью плагина) вы можете просматривать иммерсивные среды прямо на веб-странице. Инди-лицензия стоит всего 200 долларов.

Кстати, GarageGames теперь лицензирует новую технологию под названием Torque3D.

Также стоит проверить C4 Engine, который получил высокую оценку в devmaster.net

person Scott Evernden    schedule 18.04.2009
comment
Ребята, спасибо за ваши ответы, но на данный момент мне нужно знать следующее: как мне выбрать один из этих движков? Я не могу протестировать их все, и их тесты или витрины отличаются от нашего приложения. т.е. имеем очень широкую область, с высокой детализацией. и тогда как мне выбрать один из этих двигателей? Unity, C4 Engine, Torque3D, блендер, SlimSDK, OpenSceneGraph, CadFaster и ...???? - person AliPST; 19.04.2009

http://www.blender.org/ поставляется с игровым движком

person Community    schedule 18.04.2009

Вам следует взглянуть на WPF, Windows Presentation Framework (см. winfx, см. Avalon) и изучить самые последние разработки. Вы можете найти эту ссылку, представляющую интерес. Кроме того, что такое Thriple?

person Chris Morley    schedule 19.04.2009
comment
Я бы не рекомендовал WPF для высокопроизводительного 3D-рендеринга. Тесты, которые я проводил на нем, никогда не были достаточными, кроме нескольких сотен низкополигональных объектов. - person Erich Mirabal; 19.04.2009
comment
Как сказал Эрих, я видел статьи MSDN, в которых указывалось, что WPF не предназначен для высокопроизводительного 3D-рендеринга. - person AliPST; 20.04.2009