![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
GAMES104现代游戏引擎
文章平均质量分 73
东北砍王
做游戏,是种梦想!
展开
-
GAMES104-动画树、IK和表情动画
游戏引擎里,每个 ActionUnits 存一个顶点动画,两个叠加一起,就可以实现。会有一些问题:骨骼旋转角度是有限制的,都转身360°的,头就不应该再定位了。旋转是基础的 Gameplay 控制,在上面 Apply 动画的变化量。在任何一个点都可以找到临近的三角形的三个顶点,通过权重坐标,进行差值。解决办法:定义相对朝向,比如腿只能是向前弯曲的,就取圆环上的某一点。把名字想同的骨骼中间的所有骨骼看成映射,根据相对长度找到位置差值。所以要求动画师,动画是循环的,并且左右脚步频基本一致。原创 2023-01-04 00:00:48 · 192 阅读 · 1 评论 -
GAMES104-游戏引擎的动画基础
Gimbal Loack:万象锁(可以利用这个做云台、无人机、陀螺之类的,保证永远指向一个方向)5.Animation DCC:动画生产的 Pieline,和 3dMax 等工具的插件。必须在模型空间差值!压缩之后注意错误的传递,比如一步一步传递到手指骨骼拿武器,会反复地抖。4.Animatio Compression:动画数据的处理,压缩。Joint:关节,游戏中存储的是关节数据,不会直接存骨骼数据。还有附加的(Additional joints):武器之类的。原创 2023-01-01 18:02:06 · 377 阅读 · 0 评论 -
GAMES104-游戏中的渲染管线、后处理和其他的一切
c.依次找周围颜色变化差不多的点,直到颜色变化差异特别大的点(找到边的两个端点),比较两端的长度,看受哪边影响更大。Edge Sampling:几何的边不是横平竖直,屏幕像素一定会造成一个一个的效果的。十字型滤波,每个像素点找到上下左右像素点的差异值,综合差异值大于某个阈值。把需要绘制的尺寸x2,4x rendering resolution,肯定会生效。a.渲染出整个画面后,转换到整个的亮度,当超过某个阈值时,就认为需要 Bloom。显示器刷新的时间是一致的,造成等的情况。大于X时,会按指数递减。原创 2022-12-31 23:26:30 · 303 阅读 · 0 评论 -
GAMES104-游戏中大气和云的渲染
Absorption+Out-scattering(散射)+Emmision(自发光)+In-scattering(周边的影响)对云的柱状形体,进行各种层次的 noise (高频形状+低频细节),生成各种各样的云。蓝光的波长短,散射的厉害,人是水平方向,蓝光光可以入射眼睛。1.散射近似认为是均匀的,再散射回来就是百分比的衰减。红光波长长,散射的弱,基本上就是垂直落下,人看不见。晚上时,太阳光从前方照射,红光不散射,直接入射眼睛。(波长短的散射厉害,波长长的散射厉害)公式和海拔高度,空气密度,入射角有关系。原创 2022-12-30 00:17:14 · 194 阅读 · 0 评论 -
GAMES104-游戏中地形的渲染
地图分块,正常是 1024x1024 的地块,一层一层压缩,内存固定块,反向查找需要的。近处看是真实的 Mesh,远处看就是几个简单的插片,最远处的一个广告牌,一次绘制一大批。需要挖掉顶点的位置设为nil,现代 GPU 就会把用到这个顶点的三角形全部干掉。把相机的位置当作 0,其他的位置相对于相机 小数点相对用到的精度就小了。如何存Float,用32个01表示,所以随着精度越来越大,会溢出。通过相机 FOV,在里面的三角形会很细腻,外面的会很稀疏。只要能看见地形的每一个像素,都会受到十几种贴图材质影响。原创 2022-12-27 04:00:05 · 312 阅读 · 0 评论 -
GAMES104-渲染中光和材质的数学魔法
中心思想:一个表面就是以无数反射组成的,法向分散的随机度 (roughness)Shader 变体,各种宏定义分出各种条件,最后会编译很多分支的 Shader。每一个点反向和光源做距离,如果大于最靠近光的遮挡物的距离,就代表是光源。缺点:SG 模型对图的参数要求比较高,容易出错,可以再封装一层。眼睛视线靠近表面切线方向,反射系数会急剧增加,会造成反射效果。核心思想:对真实环境光照做预处理,快速把环境光照卷积运算出来。太麻烦了,改了关卡之后就变了。环境反射:环境贴图,根据眼睛看的角度和法向做贴图采样。原创 2022-12-23 00:22:47 · 614 阅读 · 0 评论 -
GAMES104-游戏引擎中的渲染实践
如果好多元素是一模一样的,还可以优化,批处理(GPU Batch Rendering)如果场景里很多元素,无序的单独渲染,会造成切换 GPU 数据(切换显卡状态)的困扰。模型很精细,分成一个一个小模型,固定32个或者64个三角形,分成很多很多模型。但是定点会放到一个大的数据块里,SubMesh 存的是索引段(起点到终点)所以,不同的 Go 渲染的时候,都是指向一个相同的地址(可以节约存储空间)核心思想:用很多不同的单位,并行算复杂的计算,提升效率。2.了解计算机的硬件,适配当代 CPU 和 GPU。原创 2022-12-21 22:26:33 · 718 阅读 · 0 评论 -
GAMES104-如何构建游戏世界
游戏都有啥?可交互的动态游戏物体(Dynamic Game Object)静态物体(Static Game Object)环境,地形系统(Sky+Vegetation+Terrain)其他物体(Air Wall+Trigger Area+Ruler+Navigation mesh)核心:GameObject(GO)里面的数据有两种a.Property,对应字段b.Behavior,对应方法简单的办法,直接用普通的class,然后继承这个class但是往往没有这么清晰的父子继承关系,有大部分重原创 2022-12-06 00:46:18 · 504 阅读 · 0 评论 -
GAMES104-引擎架构分层
还需要生成一个 GUID(唯一识别号) 文件,处理资源的依赖(数据之间的关联)基础多线程:Logic和Render两个线程,额外线程做加载。优化CPU访问:数据尽可能紧凑、按顺序访问、读写尽可能一起。关卡编辑器、逻辑编辑器、材质编辑器、动画编辑器、UI编辑器。可能有的不同类型的资源:XML+PSD+MAX+MAYA。数学库特别敏感性能,不需要绝对准确,保证效率就行。数据结构,C++标准容器扩容会倍数,会有内存碎片。(不能以全路径做关联,否则资源变化很麻烦)当前商业引擎:物理、动画等逻辑做并行运算。原创 2022-12-04 17:55:48 · 316 阅读 · 0 评论