游戏引擎、物理引擎和几何建模内核的区别

4
渲染引擎通过多种方法(光栅化、光线追踪等)生成动态的3D图形。通常情况下,渲染引擎不是直接在CPU或GPU上编程和编译执行,而是建立在一个或多个渲染应用程序接口(API)之上,例如Direct3D、OpenGL或Vulkan,这些API提供了GPU的软件抽象。低级库,如DirectX、Simple DirectMedia Layer(SDL)和OpenGL,在游戏中也常被使用,因为它们提供了硬件无关的访问其他计算机硬件,如输入设备(鼠标、键盘和操纵杆)、网络卡和声卡。——游戏引擎 UNISURF是一款开创性的表面CAD/CAM系统,旨在协助汽车车身设计和工具制造。它由法国工程师Pierre Bézier于1968年为雷诺设计,并于1975年在公司全面使用。到1999年,约有1,500名雷诺员工使用UNISURF进行汽车设计和制造。——CAD/CAM系统的出现

"几何建模内核是计算机辅助设计软件包中使用的三维实体建模软件组件" Geometric Modeling Kernel

我很难理解几何建模内核与游戏引擎和物理引擎相比的底层架构。

问题:

  1. 我是否正确理解,几何建模内核实际上是低级API,更具体地说,是一种“内核可加载扩展”,专门用于处理几何操作的渲染,例如在屏幕上创建对象的边界表示?

  2. 几何建模内核与派生自OpenGL的API有何不同?它们也是用C++编写的,还是使用更早期的语言,因为我认为它们出现得更早?

  3. 我是否正确理解,像ACIS、Parasolid这样的几何建模内核仍在使用自己的专有低级模块,而不是OpenCL/OpenGL,或者它们是混合的?

  4. 物理引擎的架构是什么样的API。它是否使用OpenGL或其他派生的低级图形API?比如Havoc,它是否依赖其他低级API,比如Direct3D?

1个回答

6
几何建模内核是一种建模内核,它允许构建或修改几何图形,并与在屏幕上显示这些几何图形无关。它也与模型雕刻应用程序不同,因为后者由艺术家使用,而建模内核由工程师使用,因此即使构建视觉上相似的模型时,输入也有很大的区别。

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

建模内核所编写的语言可能不同,但我认为大多数都是用C++编写的。随着建模内核在早期开始编写,它们可能会继承一些中间语言,例如OCCT中的CDL(自OCCT 7.0.0以来已移除残留部分)或源自其他语言的代码(例如过去流行的FORTRAN)-建模内核很可能不会使用这些语言,但可以从源代码中找到一些算法的C++代码是从FORTRAN转换而来的(但当然,你无法检查专有内核的这一点)。

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

为了概括:

  • 图形引擎实现了一些渲染现有几何图形的服务,它是在像OpenGL这样的低级API之上实现的。这包括了着色/材料模型(Phong,PBR metallic-roughness),相机定义以及其他一些工具,这些工具不随低级API提供。
  • 几何建模核心实现了数据结构(如边界表示或CSG),由工程师进行模型构建的复杂数学计算(包括基本形状、倒角、布尔运算),用B样条等精确几何表示(与通常使用多边形几何的艺术家取向工具相反)。该框架可以提供其他工具,包括图形引擎,但它们通常与几何核心分开。图形引擎通常不直接处理B样条几何,因此几何建模核心必须为渲染几何生成三角剖分。
  • 物理引擎仅实现与物理模拟相关的服务。物理引擎包括碰撞检测模块。该项目也可能包含使用某些图形库的示例,但核心不应依赖于任何库。
  • 游戏引擎结合了图形引擎、物理引擎、音频引擎,并通常提供一些脚本语言和其他工具以简化游戏开发。

OCCT components

OCCT 3D viewer


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接