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](https://i.stack.imgur.com/vn77Y.png)
![OCCT 3D viewer](https://i.stack.imgur.com/31cHi.png)