2023-06-29 11:55:02 +08:00

5.9 KiB
Raw Blame History

## 美术流程
### 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.