3D游戏引擎的原理和架构

  • 内容
  • 评论
  • 相关

随着 IT 产业的蓬勃发展,越来越多的幵源 3D 引擎、商业 3D 引擎都涌现出来了,其中最具代表性的有用于移动端开发的 Unity3D、用于 PC 端开发的虚幻4(Unreal Engine 4,UE4)以及幵源图形学引擎 OGRE。

Unity 引擎在市面上比较流行,相信大多数 IT 开发者都使用过,先以 Unity3D 引擎为例介绍引擎的原理,Unity3D 引擎提供了一个功能非常强大的编辑器供用户开发使用。

支撑编辑器运行的是许多己经封装好的 DLL 文件,读者可通过其安装目录查看许多 DLL 动态库文件,这些封装的 DLL 动态库就是 Unity3D 引擎底层封装提供的。

游戏开发者在使用其开发游戏写具体逻辑时,也需要利用 C# 脚本调用动态库 DLL 封装的函数接口,从而能够执行引擎底层的代码,实现想要的效果。接口的使用可通过查看 Unity 帮助文档获取,它的底层代码的实现对用户来说是不可见的,但这不妨碍使用者开发项目,因为使用者只要知道函数的功能就可以了。

3D 引擎本身也是一种 3D 软件,主要负责处理游戏虚拟世界的渲染,3D 引擎架构设计其实非常复杂,用到的知识点非常多,比如设计模式、多线程编程、算法、GPU 编程等,但是不管多么复杂,其最基本架构思想还是模块化开发,就比如打篮球一样,不论采用哪种战术跑位,最基本的还是挡拆战术。

继续模块思想的讨论,以模块化思想设计的 3D 引擎便于扩展,可以有效地减少模块之间的耦合性。

开发3D游戏引擎时,切记面面倶到;换句话说,3D 游戏引擎的主要功能是渲染。在这方面做得比较好的是开源的 Ogre 图形学引擎及商业引擎 UE4,它们核心功能只是负责 3D 渲染,做 3D 引擎该做的事情。

对于 Unity3D 引擎,它在 3D 引擎渲染的基础上还增加了网络库等功能,对于引擎来说显得过于臃肿;当然这里不是说 Unity3D 引擎不好,只是其功能太多,对开发者来说并不一定是好事情。

这种做法对引擎自身来说也不一定是好事情,因为这样引擎的功能失去了重点,所以一提到 Unity3D 引擎,大家的第一印象是其跨平台功能,与引擎核心功能渲染不搭边,而对于 UE4 引擎,大家的第一印象是渲染,UE4 在渲染这方面做得非常专一,结果就是 UE4 引擎渲染功能比 Unity3D 引擎更强大。

当然 Unity3D 引擎的优点也是非常多的,比如引擎的架构设计使用了组件的理念,使用脚本写逻辑,可以跨多个平台等,而且对于初学者上手非常快,这也是它能快速普及的一个主要原因。

如果要开发一款引擎具体如何做?引擎由哪些主要模块组成?

游戏引擎涵盖的模块非常多,它是一个处理游戏所有逻辑的系统。引擎渲染功能是否强大,决定了游戏渲染品质的高低,以及游戏渲染运行的流畅度。

下面简单介绍一下通用的 3D 游戏引擎架构,如图1所示。

通用的游戏引擎架构
图1:通用的游戏引擎架构

本文标题:3D游戏引擎的原理和架构

本文地址:https://www.hosteonscn.com/7816.html

评论

0条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注