游戏引擎与物理引擎与几何建模内核之间的区别

Posted

技术标签:

【中文标题】游戏引擎与物理引擎与几何建模内核之间的区别【英文标题】:Difference between Game Engine vs Physics Engine vs Geometric modeling kernel 【发布时间】:2020-09-16 21:24:16 【问题描述】:

“渲染引擎通过多种方法(光栅化、光线追踪等)中的任何一种生成动画 3D 图形。

大多数情况下,渲染引擎不是直接在 CPU 或 GPU 上进行编程和编译,而是建立在一个或多个渲染应用程序编程接口 (API) 之上,例如 Direct3D、OpenGL 或 Vulkan,它们提供了一种软件抽象图形处理单元 (GPU)。 DirectX、Simple DirectMedia Layer (SDL) 和 OpenGL 等低级库也常用于游戏,因为它们提供对其他计算机硬件(如输入设备(鼠标、键盘和操纵杆)、网卡、和声卡。” - Game Engine

“UNISURF 是一种开创性的表面 CAD/CAM 系统,旨在辅助车身设计和加工。它由法国工程师 Pierre Bézier 于 1968 年为雷诺开发,并于 1975 年在该公司全面使用。[1] [2] 到 1999 年,大约 1,500 名雷诺员工使用 UNISURF 进行汽车设计和制造。” Advent of CAD/CAM Systems

“几何建模内核是用于计算机辅助设计包的 3D 实体建模软件组件”Geometric Modeling Kernel

game enginesphysics engines 相比,我很难理解geometric modeling kernels 的底层架构。

问题:

    我理解正确吗,几何建模内核实际上是低级 API,更具体地说,kernel loadable extensions,专门用于处理几何操作的渲染,例如创建边界表示屏幕上的对象?

    geometric modeling kernelsOpenGL 派生的 API 有何不同?它们是否也是用 C++ 或更早的语言编写的,因为我相信它们出现得更早?

    我是否理解正确,几何建模内核,如 ACISParasolid 继续使用它自己的、专有的、低级模块,而不是 OpenCL/OpenGL,或者它们是一种混合?

    就 API 而言,物理引擎的架构是什么。是使用OpenGL 还是其他派生的低级图形API?比如Havoc,它是否依赖于其他低级API,比如Direct3D

【问题讨论】:

【参考方案1】:

几何建模内核是一个建模内核,它允许构造或修改几何,与在屏幕上显示此几何无关.它也不同于模型雕刻应用程序,因为后者是由艺术家使用的,而建模内核是由工程师使用的,因此即使在构建视觉上相似的模型时也会有非常不同的输入。

现代建模内核通常伴随着用于显示模型的 3D 渲染器。但是这个功能通常被放入框架内的专用组件中。平台只有有限的一组硬件加速图形库,如OpenGLVulkanDirect3D,因此建模内核附带的3D图形引擎通常依赖于较低级别的库之一。从历史上看,OpenGL 被大多数工业应用程序使用(与游戏相反),但今天可能不一样了。

编写建模内核的语言可能不同,但我相信大多数是用 C++ 编写的。由于建模内核是在较早的时候开始编写的,它们可能会继承一些中间语言,例如 OCCT 中的 CDL(从 OCCT 7.0.0 起已删除残余)或源自其他语言的代码(例如来自 FORTRAN,过去很流行) - 建模内核很可能不使用这些语言,但可以从源代码中发现,某些算法的 C++ 代码是在某个步骤从 FORTRAN 转换而来的(当然,您不能用专有内核检查这一点) .

如果你看一下开源实体建模内核Open CASCADE Technology的组件结构,你会发现Visualization组件实现了使用OpenGL或其他低级图形显示模型的交互服务库,但基于 OCCT 的应用程序不必使用它,可以考虑使用其他库显示形状。

试图概括:

图形引擎实现了用于渲染现有几何图形的服务,并在 OpenGL 等低级 API 之上实现。这包括实现着色/材质模型(Phong、PBR 金属粗糙度)、相机定义和一堆其他工具,而不是低级 API。 Geometric modeling kernel 实现数据结构(如边界表示或 CSG),由工程师在 B 样条和类似物表示的精确几何上(包括基元、圆角、布尔运算)构建模型的复杂数学(相反以艺术家为导向的工具,通常适用于多边形几何)。该框架可能提供其他工具,包括图形引擎,但它们通常与几何内核分离。图形引擎通常不直接使用 B-Spline 几何,因此几何建模内核必须生成三角剖分来渲染几何。 Physics engine 仅实现与物理模拟相关的服务。物理引擎包括碰撞检测模块。该项目可能还包含使用某些图形库的示例,但内核不应依赖任何图形库。 Game engine结合了图形引擎、物理引擎、音频引擎,通常还提供一些脚本语言和其他工具来简化游戏开发。

【讨论】:

以上是关于游戏引擎与物理引擎与几何建模内核之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

目前哪个游戏物理引擎最先进

《游戏引擎架构》笔记一

虚幻4引擎可以建模吗?如果可以建模,如何建?用虚幻4引擎做游戏,模型是从哪里来的?用maya还是3dmax?

为啥计算机/游戏物理引擎通常是不确定的?

网络游戏是怎么开发的?

3d游戏引擎都有哪些?