Разница между игровым движком, физическим движком и ядром геометрического моделирования

«Механизм рендеринга генерирует анимированную 3D-графику любым из нескольких методов (растеризация, трассировка лучей и т. д.).

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

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

«Ядро геометрического моделирования — это программный компонент трехмерного твердотельного моделирования, используемый в пакетах автоматизированного проектирования» Ядро геометрического моделирования< /а>

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

Вопросы:

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

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

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

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


person readonly    schedule 29.05.2020    source источник


Ответы (1)


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

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

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

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

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

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

Компоненты OCCT

Просмотрщик OCCT 3D

person gkv311    schedule 29.05.2020