Разница между игровым движком, физическим движком и ядром моделирования Geometri c - PullRequest
2 голосов
/ 29 мая 2020

"Механизм рендеринга генерирует анимированную трехмерную графику любым из ряда методов (растеризация, трассировка лучей и т. Д. c.).

Вместо того, чтобы программировать и компилировать для выполнения на ЦП или Непосредственно GPU, чаще всего механизмы рендеринга построены на одном или нескольких интерфейсах прикладного программирования (API) рендеринга, таких как Direct3D, OpenGL или Vulkan, которые обеспечивают программную абстракцию графического процессора (GPU). Низкоуровневые библиотеки, такие как DirectX , Simple DirectMedia Layer (SDL) и OpenGL также широко используются в играх, поскольку они обеспечивают независимый от оборудования доступ к другому компьютерному оборудованию, такому как устройства ввода (мышь, клавиатура и джойстик), сетевые карты и звуковые карты ». - Game Engine

"UNISURF была новаторской наземной системой CAD / CAM, разработанной для помощи в проектировании кузова и оснастке автомобиля. Она была разработана французским инженером Пьером Безье для Renault в 1968 году, и в полной мере использовалась в компании в 1975 году. [1] [2] К 1999 году около 1500 сотрудников Renault использовали UNISURF для проектирования и производства автомобилей ». Появление систем CAD / CAM

«Ядро моделирования geometri c - это программный компонент 3D solid моделирования, используемый в пакетах автоматизированного проектирования» Geometri c Ядро моделирования

Я изо всех сил пытаюсь понять базовую архитектуру geometric modeling kernels по сравнению с game engines и physics engines.

Вопросы:

  1. Правильно ли я понимаю, что ядра моделирования geometri c на самом деле являются низкоуровневыми API, а точнее kernel loadable extensions, используемыми специально для обработки операций рендеринга geometri c, например, создание граничного представления объектов на экране?

  2. Чем geometric modeling kernels отличается от OpenGL API-интерфейсов? Они также написаны на C ++ или более старых языках, поскольку, как я полагаю, они появились раньше?

  3. Правильно ли я понимаю, что ядра моделирования geometri c, например ACIS, Parasolid продолжают использовать собственные, проприетарные низкоуровневые модули вместо OpenCL / OpenGL, или они смешанные?

  4. Какова архитектура физический движок с точки зрения API. Использует ли он OpenGL или другие производные низкоуровневые графические API? Скажем, Havoc, полагается ли он на другой низкоуровневый API, скажем Direct3D?

1 Ответ

5 голосов
/ 29 мая 2020

Geometri c ядро ​​моделирования - это ядро ​​моделирования , оно позволяет создавать или изменять геометрию и не имеет ничего общего с отображением этой геометрии на экране . Он также отличается от приложений для моделирования моделей, потому что последние используются художниками, в то время как ядра моделирования используются инженерами и, следовательно, имеют очень разные входные данные, даже при построении визуально похожей модели.

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

Язык, на котором написано ядро ​​моделирования, может отличаться, но я считаю, что больше всего написаны на C ++. Поскольку ядра моделирования начали писать в более старые времена, они могли унаследовать некоторые промежуточные языки, такие как CDL в OCCT (остатки были удалены с OCCT 7.0.0) или код, происходящий из других языков (например, из FORTRAN, популярного в прошлом) - ядра моделирования, скорее всего, не используют эти языки, но из исходного кода можно понять, что код некоторых алгоритмов C ++ был конвертирован из FORTRAN на каком-то этапе (но, конечно, вы не можете проверить этот момент с помощью проприетарных ядер) .

Если вы посмотрите на структуру компонентов Open CASCADE Technology , ядра моделирования solid с открытым исходным кодом, вы обнаружите, что компонент Visualization реализует интерактивные службы для отображения моделей с использованием OpenGL или другой низкоуровневой библиотеки графического c, но приложение на основе OCCT может не использовать его и может рассмотреть возможность отображения фигур с использованием других библиотек.

В попытке обобщить:

  • Графический движок реализует сервисы для рендеринга существующей геометрии и реализованы поверх низкоуровневых API, таких как OpenGL. Это включает в себя реализацию модели затенения / материала (Phong, PBR Metalli c -oughness), определение камеры и множество других инструментов, не поставляемых с низкоуровневыми API.
  • Geometri c Ядро моделирования реализует структуры данных (например, граничное представление или CSG), сложную математику для построения модели инженерами (включая примитивы, скругления, логические операции ) на точной геометрии, представленной B-сплайнами и подобными им (в отличие от инструментов, ориентированных на художников, которые обычно работают с многоугольной геометрией). Фреймворк может предоставлять другие инструменты, включая графический движок, но они обычно отделены от геометрического ядра. Графические движки обычно не работают напрямую с геометрией B-Spline, поэтому ядро ​​моделирования геометрии должно генерировать триангуляцию для рендеринга геометрии.
  • Физический движок реализует только сервисы относится к физическому моделированию . Физический движок включает модуль обнаружения столкновений. Проект также может содержать образцы, использующие некоторую графическую библиотеку, но ядро ​​не должно зависеть от них.
  • Игровой движок объединяет графический движок, физический движок, аудио движок, и обычно также предоставляет некоторый язык сценариев и другие инструменты для упрощения разработки игр.

OCCT components

OCCT 3D viewer

...