3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 16499|回复: 103
打印 上一主题 下一主题

[资源] 有人常常把引擎挂在嘴边,那么到底什么是引擎?我班门弄斧来做个专业解答特别有趣,看完和专家吹牛都不虚(申精)(新修订)

  [复制链接]

58

主题

357

帖子

905

积分

超级玩家

Rank: 5Rank: 5

贡献度
84
金元
5588
积分
905
精华
1
注册时间
2012-10-9
跳转到指定楼层
主题
发表于 2019-4-8 13:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 肥车车 于 2019-4-9 15:59 编辑

先说说自己,小弟是83年出生,92年就可以3命通关魂斗罗1,95年c&c,97年红警,98年三角洲,2000年CS,2002-2006年成为职业CS选手。之后半只职业wow的JJC,2010年随着年龄事业的和时间成本的问题,就玩玩随便玩玩星际2。单机游戏方面几乎所有的有点名气的单机我都玩过。可以说从小是个超级游戏爱好者。今年他奶奶的36了。说实话有点玩不动了。


业务方面:小弟目前在大学当老师,主要从事计算机领域中软件开发、图形图像、算法等业务。目前是讲师和工程师,不是我不想搞副教授。而是太花时间和精力,反而耽误了自己的业务,有多篇期刊论文发表(图形图像和算法方面)。
好了吹牛完毕进入正题。


小弟尽可以简单简便的说清楚问题。尽可能在300字以内说明问题,争取做到比我简介还少。


申明:我不会讲定理定义,因为这东西严禁但不易懂,小弟会举例用比喻来说明为题通俗易懂,但弊端是不严谨,请海涵。




我们常见的顶级引擎有,寒霜系列,RED系列,CE系列,虚幻系列,还有育碧的各种引擎等等等。


很多人常常把图形引擎挂在嘴边,那么到底什么是引擎我来做个专业解答


先看图





层次就够是这样的最底层开始一次是图形库-引擎-开发人员


很明显引擎是基于图形库的,常见图形库有OPenGL,directX等,其中OPengl是跨平台的,而direct是微软的标准,也就是只要在windows上运行的任何3d图形都要使用到directX目前最新版本是DX12。



一、图形库是什么?

感兴趣就自己百度定义
给大家做个简单理解,就是处理点,线,面和渲染的最基本过程。
例如一个三角形有三个顶点,那么directx就处理这三个顶点的坐标,和他们形成三角形的面,颜色和最终渲染结果。
是一个基础库,就好比画师手里的笔和纸。

图形库的工作是把物体的顶点坐标,片源坐标等,通过一些列剪裁、渲染得到一个三维的视觉结果。

也就是FPS上的一帧,一幅三维画面,每秒帧越多,给人感觉会越流畅。




二、什么是图形引擎
上图中可以看到,引擎实在图形库之上的一个平台。
我还是不说定义,因为说了等于白说,名词解释名词很难受的。




假设我们想画一个三维的球体。如图所示。


最简单的办法就是给出圆上每一个点的坐标,并把坐标给到图形库就,图形库会经过渲染最终生成1帧圆形画面。
此时不需要任何引擎,图形库就可以直接做。
但问题是,一个圆上有坐标数不甚数。真的要定那么多坐标是困难的,更何况这个球在运动呢?在压扁变形呢?
所以给定静态坐标让图形库渲染基本是不可行。
我们可以用数学公式动态的给出球体上的每个坐标。
算法有几十种,这就是引擎的工作,归纳算法。并让顶层开发人员调用其函数,实现秒画圆形。就好比给了画师一个更强大方便的工具-圆规。




再来看一个例子

立方体光线效果怎么做,实际上光线就是白色的渲染(就是画白色.....),只需要在特定坐标下给出白颜色的遮盖图层即可。可由图形库直接完成。
但问题是如果立方体在动,或者光源在动,又或者观察的人在动,这个光的白色就不可能只给一个定值。单单使用图形库基本不可能做到



所以引擎开发人员就会想办法解决这个问题。


譬如开发环境光(就是物体总体光)-散射光(如箭头所示)
1环境光很简单,就给球门一个定值的透明的白色遮罩就可以了
2散射光就是物体受光面和光源直线形成的某个角度决定着这个光的强度。哈哈哈哈哈哈,是不是有点绕,无所谓了随便看看。总之就对光面。图中箭头所示
立方体的散射光有这样的特点,光与面的角度越小,光越强,角度越大光越多。

对没错一个简单的算法:就是一个面的垂直线也就是法线和入射光向量的角度问题。

是不是求COS这个角度不就行了吗?角度越大光照效果越多,角度越小光照越强烈,这就是散射光算法。


那么球体重更复杂一些,因为球体都是有四边形或者三角形组成(图形库这样规定的)
所以散射光就会变成这样有点像舞厅旋转球,明确的每个小面都有反光。很多早期的游戏都是这样的效果。
可以用点法向量去解决这个问题。这里不再深入讨论(其实也很简单就是求每个相邻面平均法线角度问题)


这就是引擎的工作!!!!!!!!!!!!!!!!!!!!!!!!!!!
归纳算法,实现光照效果,给顶层开人员发去用。顶层开发人员根本不必考虑什么算法,散射反射,环境,材质等等。
引擎要做的事情千千万万,以上只是两个简单的例子,大家懂了吗?


三、引擎的好坏
还是光照的例子,一个球体的光可以很复杂到和真实一模一样,用尽复杂的数学算法都可以做到。
但要考虑一个机能问题,考虑硬件因素,过于复杂的算法会会导致每秒渲染的三维图形过少,造成硬件负担。
所以要在其中博弈,进行简化,简化又不失真,这才是顶级引擎该做到的。
这是一门综合科学,是计算机科学家,数学家共同努力的方向。
譬如为什么会有曲面细分,因为当今硬件无法达到,所以用数学办法实现的,贴图隆起的效果。


比如寒霜引擎,可以做到无限接近真实,但是又能让硬件最大化。寒霜有自己的一套各种三维效果呈现的算法,简直叹为观止,是顶级引擎,是人家的商业机密。
比如育碧的算法,不可能在图形库中让每个物体都有顶点坐标,这是不绝对可能的,全世界的计算机加起来都不可能完成刺客信条奥德赛那样的世界,这是海量算法。如果真的实现了就和真实世界没有区别了,就是黑客帝国。
以前的游戏厂商会这么去做,距离观测者300米后简化一半的顶点,600米后再简化一半,1000米后的山其实就四五个顶点,为了符合人肉眼近处细节多,远处细节少的特点,虚幻引擎就这么做的,比如吃鸡跳伞看地图的时候,开倍镜的时候。
而育碧用了其压缩算法,让远景肉眼看起来如此真实。比如荒野,刺客信条奥德赛、起源,过度更加符合人类肉眼的感知,也是顶级数学家和计算机科学家结合硬件的结晶。不需要全球的计算机,只让一个小小的RTX2080ti就能高分辨率运行,简直叹为观止。


所以不同的引擎算法都是不同的,呈现的效果、效率也是不同,这取决这个引擎的硬实力,也就是数学和程序员的水平问题,这点上日本较欧美落后1-2个档次。


四、关于优化
其实上面已经提过的远景问题
再比如有的图形库只支持三角形。
三角形三个顶点,要组成一个矩形,就必须两个三角形六个顶点,着色器要处理六个顶点。
但观察发现,这六个顶点总是有两个相重合的,通过算法可以实现一个矩形只需要4个顶点即可,这是不是就节约了30%的性能而效果一点没变。


再比如VR需要双屏显示,左边右边分别渲染,但如果有办法把右边的渲染改成实时截图,是不是就节约的一半的性能
这就是所有的引擎优化。


最后再看看引擎在程序设计哪个部分



小弟画了简单的精简的结构图


1阶段就是传统面向对象语言。
2是着色器,分为顶点和片源,处理点线面的问题,可编程,引擎的核心关键在此。
3是渲染管线。这个基本是不能动的。
而引擎大部分存在于着色和传统编程语言中。
而顶层开发人员也就是引擎使用者,只会在1这个阶段去调用各种函数。


关于着色器,可以简单的理解为高层程序员与图形库的中间代理人。


好了最后总结下:
图形库就是基本框架,支持的东西很少。没什么过多的算法,只是机械制的把点线面渲染成图形。(OPengl directX等)
图形引擎就是各种工具让3D图形呈现的更好更逼真,效率更好的一些列办法、算法甚至包括音效。
而游戏或者图像开发人员可以直接通过图形库开发游戏,但极其困难与复杂,
更加可以使用别人的引擎去达到事半功倍的效果。比如虚幻,untiy3D等。
不过最顶级的图形引擎是各个公司的机密。
比如育碧的,寒霜,RED引擎等。人家是自用的也是核心竞争力。


小弟的团队也在开发自己的图形引擎MoonEngine用于科研。


好了就到这里,如果你有耐心看完,你就是小半个专家了。虽然以上每一个字都是小弟写的,但也只是讲个皮毛,可以随便转载





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

11

查看全部评分

回复

使用道具 举报

2

主题

197

帖子

318

积分

3DM Mod 汉化组

Rank: 12Rank: 12Rank: 12

贡献度
18
金元
2463
积分
318
精华
0
注册时间
2018-11-1
舒服的沙发
发表于 2021-1-11 09:29 | 只看该作者
谢谢分享,这是大佬
回复 支持 反对

使用道具 举报

0

主题

45

帖子

55

积分

初级玩家

Rank: 2

贡献度
0
金元
550
积分
55
精华
0
注册时间
2020-4-12
硬硬的板凳
发表于 2021-3-26 21:07 | 只看该作者
感谢楼主的分享
回复 支持 反对

使用道具 举报

84

主题

3059

帖子

5500

积分

游戏精英

Rank: 8Rank: 8

贡献度
77
金元
51918
积分
5500
精华
0
注册时间
2010-4-15

3DMer

冰凉的地板
发表于 2021-7-13 12:25 | 只看该作者
感谢兄弟分享,已收藏
回复 支持 反对

使用道具 举报

2

主题

252

帖子

322

积分

高级玩家

Rank: 4

贡献度
0
金元
3220
积分
322
精华
0
注册时间
2015-10-10
5#
发表于 2021-7-20 20:04 | 只看该作者
专业,就是发的位置不太对,应该发个知乎什么的
回复 支持 反对

使用道具 举报

0

主题

124

帖子

127

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1273
积分
127
精华
0
注册时间
2021-6-19
6#
发表于 2021-7-20 22:28 | 只看该作者
写的不错

回复 支持 反对

使用道具 举报

0

主题

197

帖子

212

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
2120
积分
212
精华
0
注册时间
2020-8-22
7#
发表于 2021-7-29 20:36 | 只看该作者
大致了解了,感谢
回复 支持 反对

使用道具 举报

1

主题

112

帖子

183

积分

中级玩家

Rank: 3Rank: 3

贡献度
3
金元
1714
积分
183
精华
0
注册时间
2021-6-11
8#
发表于 2021-7-31 10:29 | 只看该作者
看得有些迷糊,得出的结论就是 引擎就像是物理公式,可以省去复杂的运算,提高效率去更好地解题。
回复 支持 反对

使用道具 举报

58

主题

357

帖子

905

积分

超级玩家

Rank: 5Rank: 5

贡献度
84
金元
5588
积分
905
精华
1
注册时间
2012-10-9
9#
 楼主| 发表于 2021-8-17 13:03 | 只看该作者
y2217791371 发表于 2021-7-31 10:29
看得有些迷糊,得出的结论就是 引擎就像是物理公式,可以省去复杂的运算,提高效率去更好地解题。 ...

哈哈大概就是这个意思
回复 支持 反对

使用道具 举报

1

主题

213

帖子

545

积分

高级玩家

Rank: 4

贡献度
0
金元
5448
积分
545
精华
0
注册时间
2021-2-28
10#
发表于 2021-8-22 17:23 | 只看该作者
小白膜拜大佬

回复 支持 反对

使用道具 举报

12

主题

496

帖子

1012

积分

游戏狂人

Rank: 6Rank: 6

贡献度
40
金元
8523
积分
1012
精华
0
注册时间
2013-9-19
11#
发表于 2021-11-2 22:36 | 只看该作者
业余玩家收藏了
回复 支持 反对

使用道具 举报

0

主题

87

帖子

137

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1370
积分
137
精华
0
注册时间
2021-8-27
12#
发表于 2021-11-12 12:56 | 只看该作者
马克一下,给大佬点个赞
回复 支持 反对

使用道具 举报

0

主题

279

帖子

441

积分

高级玩家

Rank: 4

贡献度
0
金元
4410
积分
441
精华
0
注册时间
2014-6-26
13#
发表于 2021-11-23 17:27 | 只看该作者
颇有上古遗风,深得BBS大神之道
回复 支持 反对

使用道具 举报

0

主题

70

帖子

76

积分

初级玩家

Rank: 2

贡献度
0
金元
755
积分
76
精华
0
注册时间
2018-12-9
14#
发表于 2022-1-8 01:04 | 只看该作者
支持楼主hhhhhh
回复 支持 反对

使用道具 举报

0

主题

30

帖子

86

积分

初级玩家

Rank: 2

贡献度
0
金元
855
积分
86
精华
0
注册时间
2013-1-22
15#
发表于 2022-2-14 20:10 | 只看该作者
我刚开始依旧记得上3dm是找mod的 鬼知道为什么对着一贴看不懂的技术贴看的津津有味
回复 支持 反对

使用道具 举报

0

主题

144

帖子

160

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1600
积分
160
精华
0
注册时间
2021-10-21
16#
发表于 2022-2-18 14:16 | 只看该作者
这是真大佬
回复 支持 反对

使用道具 举报

2

主题

775

帖子

631

积分

超级玩家

Rank: 5Rank: 5

贡献度
2
金元
6234
积分
631
精华
0
注册时间
2012-11-3
17#
发表于 2022-10-8 10:59 | 只看该作者
学习了,用简单的语言讲解的如此透彻,厉害!
回复 支持 反对

使用道具 举报

1

主题

89

帖子

227

积分

中级玩家

Rank: 3Rank: 3

贡献度
3
金元
2150
积分
227
精华
0
注册时间
2022-8-9
18#
发表于 2022-10-22 17:52 | 只看该作者
不明觉厉......................
回复 支持 反对

使用道具 举报

4

主题

614

帖子

658

积分

超级玩家

Rank: 5Rank: 5

贡献度
1
金元
6535
积分
658
精华
0
注册时间
2009-6-12
19#
发表于 2023-4-5 18:20 | 只看该作者
大佬666666666
回复 支持 反对

使用道具 举报

0

主题

175

帖子

313

积分

高级玩家

Rank: 4

贡献度
0
金元
3131
积分
313
精华
0
注册时间
2015-9-11
20#
发表于 2023-4-5 21:42 | 只看该作者
感谢科普~
回复 支持 反对

使用道具 举报

0

主题

75

帖子

140

积分

中级玩家

Rank: 3Rank: 3

贡献度
0
金元
1400
积分
140
精华
0
注册时间
2014-12-5
21#
发表于 2024-4-11 17:57 | 只看该作者
好帖,收藏了
回复 支持 反对

使用道具 举报

1

主题

283

帖子

440

积分

高级玩家

Rank: 4

贡献度
0
金元
4398
积分
440
精华
0
注册时间
2023-5-3
22#
发表于 2024-6-8 06:43 | 只看该作者
感谢分享
回复 支持 反对

使用道具 举报

0

主题

15

帖子

23

积分

新手玩家

Rank: 1

贡献度
0
金元
225
积分
23
精华
0
注册时间
2024-6-23
23#
发表于 2024-6-23 18:45 | 只看该作者
谢谢楼主,支持这样的纯技术流
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2025-3-28 21:20 , Processed in 0.210251 second(s), 16 queries , Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表