5.9 KiB
5.9 KiB
## 美术流程
### Ue4中的场景物体融合方式与优化
1. World aligned texturing 世界坐标映射贴图
2. Pixel depth offset 像素深度偏移
3. Distance field mesh blending 距离场模型融合
4. Runtime virtual texturing 实时虚拟贴图
### Layered Material
1. 尝试外包一个角色,并让外包以Material Mask的方式使用Substance Painter完成贴图。最后走完EPIC的Layered Material流程。
### UE4头发方案研究
1. 学习Ornatrix for Maya插件,并且尝试制作头发。
2. 学习Ornatrix制作面片头发方案,并且制作出成品。
3. 走通UE4 Niagara Hair流程。
### UE4物理灯光流程
1. 如何使用物理灯光系统
2. 流程包括:初始化场景(关闭若干后处理效果,并且固定曝光)=》场景检查(贴图饱和度与亮度)=》按照当前环境对应的现实状况设置曝光度与天光HDRI(因为每个HDRI的亮度范围不一样,还可以在环境球材质中调整)=》主要自然光源完成后,烘焙二阶球谐GI=》按照场景发光物体进行布光=》烘焙阴影并检查是否有错误阴影=》逐个开启后处理效果并检查(反射=》AO)=》
3. 了解UE4静态光照与动态光照所有相关的功能与用法。
### 动画蓝图
1. 学习物理模拟动画节点
2. 学习AdvancedLocomotionV3/V4 项目,以此对UE4动画系统有了一定了解。(FootIk、8方向运动、状态切换逻辑)
3. 为了复现AdvancedLocomotionV4项目中动画的动画曲线(这些曲线会控制状态机以及其他融合动画效果),使用AnimModifier编写生成逻辑,最终复现了Run、Walk等移动动画的曲线。
4. 学习动画蓝图的动态加载功能,解决当动画蓝图逻辑较多时的性能问题。对于每个武器拥有不同攻击动画与逻辑的情况,有很大的作用。
### UE4FaceARSample Iphone面部方案学习
## 程序
### GameplayAbilitySystem GAS
1. 学习GAS系统,了解Ability、Effect、AttributeSet、Tasks等类。
1. 完全学习ActionRPG项目,并且将物品系统封装成组件,放在插件中以备后续使用。
2. 解决只使用一个Ability类实现一套连招技能。
3. 学习GameplayAbilitySystem中配套的Debug方法
### 编写Slate控件
1. 实现整数版本的SpinBox
2. 实现类似血源诅咒那种带有虚血的进度条
3. 实现通过函数调用C++、蓝图通用的MessageBox,顺便了解了UMG、Slate、GameViewportClient之间的大致关系
### DCC插件
1. 调用Maya的HumanIK插件实现骨骼批量重定向功能,将Max的Bip骨骼转换成Ue4骨骼。后续可以再加入其它定制功能。
2. 实现在选中父骨骼后批量生指向若干选中顶点的之骨骼,并且生成蒙皮权重。大致作用是将低模角色的BlenderShape权重传递到高精度角色上。
### 项目管理
1. 和他人合作Demo时,在租用的VPS上,搭建Gitea以实现版本管理(包括二进制文件)。
2. 学习UE4的自动测试框架。
## 图形学效果
### 渲染框架
1. 通过学习EPIC的PPT以及源代码,最后撰写全网第一份RenderDependencyGraph(RDG)的使用教程以及HelloWorld案例。(案例已更新至4.26版本)
2. 通过学习源代码,了解4.25版本传统渲染框架GlobalShader的变动,并撰写文章。
### Shader
1. UE4后处理材质:各种卷积描边、各种模糊等。
2. 在Ue4中实现对二次元模型进行透视校正,让模型更加二次元,顺便学习了BasePass中的顶点数据处理过程。
3. 使用Gerstner波制作海洋效果,水体透射使用(水面深度-水底深度)来得到深度值,之后对使用2种颜色差值进行得到最后颜色,白沫使用基于Saturate高度的方法。后面如果再做,打算使用houdini通过粒子模拟的方式来生成白沫贴图。
4. 学习EPIC TA的RayMarching 溶球效果,(使用了SDF)。
5. 学习EPIC TA的RayMarching 2D 3D云效果。
6. 修改ShaderModel以实现卡通渲染材质。
### 自定义图元类
1. 在不修改管线的情况下,以插件的方式实现物体外描边效果
2. 在不修改管线的情况下,以插件的方式实现UE4剖面效果
### 离线渲染学习
1. 学习完《An Introduction to Ray Tracing》 系列3本书,并且渲染出对应效果的图片。
2. 学习《Ray Tracing from the Ground Up》,并且使用Qt重新实现一遍离线渲染器(单核渲染)。
3. 学习《pbrt》至第10章,后续因为没有多线程库编写能力,只能大致看了看。
## 其他效果
### 面试J3时的面试题
1. 看gif图实现枪支表面的能量效果,使用一张Noise贴图,分别使用平移与旋转,2种移动UV方式,叠加到一起。2种移动方式的贴图各自乘以了不同的颜色。
2. 在不是用UE4 SSS ShaderModel情况下,使用寒霜的FastSSS方案,实现了玉石枪支的效果。因为家里电脑性能以及面试周期问题,没有通过添加ShaderModel的方式来修改,所以能量不够守恒。
3. 使用Python为Maya编写一个生成圆柱体的插件,点、面、法线都是手动计算的,可以任意设置大小、横纵以及圆弧段数,UV采用Maya内置的映射命令。 使用Qt编写了插件界面。
4. 实现了一个在屏幕空间宽度恒定的“赛博朋克”风格网格材质,通过使用了透视矩阵 对宽度进行校正来实现。
5. 在不改变模型拓扑结构或者动态改变模型结构的情况下,设计一种基于Vertex Program的算法,动态改变毒圈模型的顶点位置。使得玩家走近毒圈边缘时,看到尽可能平滑的弧线。——最后因为时间不够,只实现了核心逻辑:使用一个没有封口的圆柱体,输入2个角度,让圆柱体像扇子那样按照角度进行折叠,也就是将顶点挤压到一起。最后只差通过摄像机方向、位置、fov、圆心位置计算2个角度以及威风口处的旋转位置(将威风口藏在摄像机背后)。
## 代码
1. GAS
2. 网络联机
3.