190 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			190 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								title: 未命名
							 | 
						|||
| 
								 | 
							
								date: 2025-03-28 13:11:54
							 | 
						|||
| 
								 | 
							
								excerpt: 
							 | 
						|||
| 
								 | 
							
								tags: 
							 | 
						|||
| 
								 | 
							
								rating: ⭐
							 | 
						|||
| 
								 | 
							
								status: inprogress
							 | 
						|||
| 
								 | 
							
								destination: 
							 | 
						|||
| 
								 | 
							
								share: false
							 | 
						|||
| 
								 | 
							
								obsidianUIMode: source
							 | 
						|||
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								# 自我介绍 & 主要技术栈
							 | 
						|||
| 
								 | 
							
								面试官您好,我是楼嘉杰,一名技术向TA。
							 | 
						|||
| 
								 | 
							
								首先很荣幸参加贵公司的面试,在仔细研究过岗位要求后,我认为自己能完全胜任本岗位。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 个人优势
							 | 
						|||
| 
								 | 
							
								个人优势:
							 | 
						|||
| 
								 | 
							
								1. 熟悉UE各种常用模块,可以按照需求进行Demo搭建。
							 | 
						|||
| 
								 | 
							
								2. 具备一定的图形学知识,可以从更多角度分析需求并且完成。熟练使用Renderdoc、Pix、NSight、UrealInsight工具分析性能瓶颈以进行优化。可以按照需求修改渲染管线。
							 | 
						|||
| 
								 | 
							
								3. 熟悉Qt与Pyside2,可以编写跨平台的工具。以及DCC软件的深度定制。
							 | 
						|||
| 
								 | 
							
								4. 具备Docker相关知识,能够玩转NAS以及部署版本管理、自动化等相关服务。以及部署UE项目测试用专用服务器。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 技术栈
							 | 
						|||
| 
								 | 
							
								首先说一下技术栈
							 | 
						|||
| 
								 | 
							
								**UE方面**
							 | 
						|||
| 
								 | 
							
								- Gameplay:3C、AI、GAS、OnlineSubsystem。解析过ActionRPG、GASDocument、Lyra(部分逻辑)项目。
							 | 
						|||
| 
								 | 
							
								- UI:熟悉UMG、Slate来编写一些自定义组件。
							 | 
						|||
| 
								 | 
							
								- 工具:CommandLet、EditorUtilityBlueprint、Puerts Editor。
							 | 
						|||
| 
								 | 
							
								- 动画:动画蓝图、大部分动画节点。解析过AdvancedLocomotionV4。
							 | 
						|||
| 
								 | 
							
								- Puerts:熟练使用Puerts编写各种功能。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								**图形学与Shader**
							 | 
						|||
| 
								 | 
							
								• 熟悉UE5中的RDG、MeshDraw渲染框架以及渲染流程。能够按照需求来修改渲染管线。
							 | 
						|||
| 
								 | 
							
								• 编写基础的离线光线追踪渲染器。
							 | 
						|||
| 
								 | 
							
								• 学习过UnityShader以及SRP自定义管线,分析过UnityChan2.3的Shader。
							 | 
						|||
| 
								 | 
							
								• 熟练使用RenderDoc、UnrealInsight、Pix、NSight等工具对性能进行分析并且对项目进行优化。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								**美术相关**
							 | 
						|||
| 
								 | 
							
								• 熟悉Maya的建模、动画、渲染模块,能使用Python编写插件。熟悉PySide2库,可以编写更多高级功能。
							 | 
						|||
| 
								 | 
							
								• 熟悉UE5动画、光照相关功能与物理光照系统,并撰写相关经验文章。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								**项目流程管理**
							 | 
						|||
| 
								 | 
							
								• 搭建Gitea平台实现协同开发。使用GitBook、Obsidian作为项目文档与知识库,方便协作。
							 | 
						|||
| 
								 | 
							
								• 搭建Perforce Server以及Proxy Server,并设计分支以及协作流程。
							 | 
						|||
| 
								 | 
							
								• 研究与使用FastBuild加快源码引擎的编译,大大提高修改渲染管线的效率。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								**其他技术栈**
							 | 
						|||
| 
								 | 
							
								• 前端框架:Vue、Vue-cli、Nuxtjs、ElementUI、Echart、Electron-vue
							 | 
						|||
| 
								 | 
							
								• 后端技术:Node.js、Express
							 | 
						|||
| 
								 | 
							
								• GUI框架(Qt):Qt、QtQuick
							 | 
						|||
| 
								 | 
							
								• 语言:C++、JavaScript、Python
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# 工作与学习经历
							 | 
						|||
| 
								 | 
							
								## 国企期间
							 | 
						|||
| 
								 | 
							
								**2013.7-2022.6**
							 | 
						|||
| 
								 | 
							
								~~使用Qt编写各种工具与App,使用VUE与Nodejs相关生态工具编写数据管理综合平台。实现数据生产、综合查询、用户终端的生产流水线。
							 | 
						|||
| 
								 | 
							
								在2013年接触到了Maya、UDK,对此特别感兴趣并且使用空闲时间进行自学。在2015年UE4免费之后转而对UE4进行系统学习。
							 | 
						|||
| 
								 | 
							
								在此过程中~~
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								主要是在空余时间自学UE4
							 | 
						|||
| 
								 | 
							
								在此之间也做了一些东西,这里我只介绍最有代表性。
							 | 
						|||
| 
								 | 
							
								- 一些RayMarching材质:溶球、2D、3D体积云。
							 | 
						|||
| 
								 | 
							
								- 一些后处理效果:描边、模糊。
							 | 
						|||
| 
								 | 
							
								### MultiDraw
							 | 
						|||
| 
								 | 
							
								主要解决了:
							 | 
						|||
| 
								 | 
							
								1. 在不修改引擎的情况下,给模型添加Outline的功能。Outline是BackFace Outline,不容易出现自遮挡问题。同时具备Fov、深度曲线适配,是不修改引擎情况下,挤出式Outline的最佳方案。
							 | 
						|||
| 
								 | 
							
								2. 避免使用多个模型进行渲染,减少了额外的性能损耗。也因此解决了多骨骼模型渲染Outline,而出现的动画不同步的问题。
							 | 
						|||
| 
								 | 
							
								3. 可以在各个平台运行,包括移动端。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								目前有很多许多公司与个人使用。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								同时还有其他功能:
							 | 
						|||
| 
								 | 
							
								1. 模拟Muti Pass功能,使用像素偏移进行排序。
							 | 
						|||
| 
								 | 
							
								2. Cutoff 剖面功能。
							 | 
						|||
| 
								 | 
							
								3. UE材质背面渲染功能。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 达瓦(2023崩坏三音乐会、2024原神音乐会、AI、乐华技术支持)
							 | 
						|||
| 
								 | 
							
								**2022.6-2024.10**
							 | 
						|||
| 
								 | 
							
								- InHouse插件维护:从UE4迁移到UE5、提升使用体验、编写大纲组件并且内容与Maya场景完全对应。
							 | 
						|||
| 
								 | 
							
								- 项目技术支持:
							 | 
						|||
| 
								 | 
							
									- 日常的疑难问题解决
							 | 
						|||
| 
								 | 
							
									- 优化场景性能
							 | 
						|||
| 
								 | 
							
									- 工作流优化:搭建SVN、Perforce服务,并且手把手教会同事;推广UE的Muti-Users。
							 | 
						|||
| 
								 | 
							
								## 2023崩坏3音乐会
							 | 
						|||
| 
								 | 
							
								- 工作内容:提供场景优化方案与现场技术支持。
							 | 
						|||
| 
								 | 
							
								- 难点:
							 | 
						|||
| 
								 | 
							
									1. 帧数要求高。XR拍摄的帧数要求较高:4k50帧
							 | 
						|||
| 
								 | 
							
									2. 现场渲染机CPU主频低。现场使用的渲染机CPU是频率不到4.0的线程撕裂者,非常容易出现CPU瓶颈。需要较多的UE渲染管线知识才能找到问题并解决。
							 | 
						|||
| 
								 | 
							
									3. 工期非常紧张。制作进度较快的场景会给我留1~2天时间,一些比较慢只会给我留0.5~1天。
							 | 
						|||
| 
								 | 
							
									4. 场景频繁出现较大改动,进一步得增加优化负担。
							 | 
						|||
| 
								 | 
							
									5. 部分商城资产滥用导致性能问题出现。
							 | 
						|||
| 
								 | 
							
								- 主要进行了哪些优化最终达到目标性能:
							 | 
						|||
| 
								 | 
							
									- 相关模型优化。转Nanite & InstancedStaticMesh,并且将材质中WPO引脚中的ObjectPosition节点改成float3(0,0,0) => TransformPosition(Instance&ParticleSpace)这2个节点。
							 | 
						|||
| 
								 | 
							
									- DMX优化。按距离减少DMX Beam的RayMarching步长。
							 | 
						|||
| 
								 | 
							
									- 灯光 & 阴影优化。关闭效果不明显的灯光阴影。使用消耗较少的灯或者贴花代替对应灯光。
							 | 
						|||
| 
								 | 
							
									- 粒子Cutoff & 透明材质优化。
							 | 
						|||
| 
								 | 
							
									- Lumen优化。根据场景舞台大小调整Lumen Scene View Distance、Max Trace Distance。在保证效果不会大变的基础上,调整Quality与Detail。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 2024原神音乐会
							 | 
						|||
| 
								 | 
							
								- 针对原神渲染进行分析
							 | 
						|||
| 
								 | 
							
									- 原神刚开服是可以截帧的,有renderdoc,分析Renderdoc文件来指导美术如何制作。
							 | 
						|||
| 
								 | 
							
									- 蒙德教堂(未播出),项目招标用。
							 | 
						|||
| 
								 | 
							
								- 因为对接方提供的场景模型缺损严重,之后有研究原神资产与场景模型的提取方式,以及还原场景的方法。
							 | 
						|||
| 
								 | 
							
									- 具体方法:
							 | 
						|||
| 
								 | 
							
										1. 使用改模版的AssetStudio来提取资产。
							 | 
						|||
| 
								 | 
							
										2. 搭建原神私服,在游戏中使用Ninja Ripper截取游戏场景,并在Blender加载结果。
							 | 
						|||
| 
								 | 
							
										3. 在UE中进行还原。
							 | 
						|||
| 
								 | 
							
								- 正机之神:Boss模型提取+绑定分析、场景分析。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								- ## AIGC项目
							 | 
						|||
| 
								 | 
							
									- AI实时添加动作、并且渲染视频。
							 | 
						|||
| 
								 | 
							
									- AI 表情、口型 Sequence。
							 | 
						|||
| 
								 | 
							
									- AI 实时动画重定向。
							 | 
						|||
| 
								 | 
							
									- AI虚拟偶像陪伴项目
							 | 
						|||
| 
								 | 
							
										- 导播台
							 | 
						|||
| 
								 | 
							
										- AIGC赋能工具:以上都是一些基础功能Demo。原本还打算制作更进一步的工具:
							 | 
						|||
| 
								 | 
							
											- 比如根据当前Sequence 通道的动画信息以及用户提供关键字,以此在AI 专用轨道中生成动画数据。
							 | 
						|||
| 
								 | 
							
											- 根据关键词生成模型数据,之后将模型数据下载到本地并在关卡编辑器中创建StaticMesh并生成Asset。
							 | 
						|||
| 
								 | 
							
									- [[4DGaussians]] 
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 乐华(ASoul)
							 | 
						|||
| 
								 | 
							
								**2024.10-2025.1**
							 | 
						|||
| 
								 | 
							
								实际上是从2024.4月开始进行技术支持的
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								因为乐华从字节收购Asoul业务时,字节只教了基础使用方式,只交付了UE工程、脱敏的美术资产源文件。
							 | 
						|||
| 
								 | 
							
								最为关键的使用文档、中台插件、版本管理工具都没有提供。
							 | 
						|||
| 
								 | 
							
								所以需要有一位技术栈宽广的人来Hold住这个项目。在我接收到项目后,发现存在若干之前直播版本不存在的bug,怀疑是交付时搞错了Perforce分支或是使用较早版本进行交付。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								作为唯二的技术人员,我主要负责:
							 | 
						|||
| 
								 | 
							
								- 解析ASoul导播系统,以进行工作流的适配与改造。
							 | 
						|||
| 
								 | 
							
									- Sequoia编辑器改造以适配流程。
							 | 
						|||
| 
								 | 
							
									- 分析ASoul的渲染管线与配套材质系统。
							 | 
						|||
| 
								 | 
							
									- 分析大气环境、道具、换装系统,并进行改造。
							 | 
						|||
| 
								 | 
							
									- 根据 运营 要求制作一些效果道具。
							 | 
						|||
| 
								 | 
							
									- 修复导播系统bug。
							 | 
						|||
| 
								 | 
							
								- 大型节目优化。
							 | 
						|||
| 
								 | 
							
								- 日常技术支持
							 | 
						|||
| 
								 | 
							
									- 技术答疑
							 | 
						|||
| 
								 | 
							
									- 日常问题解决
							 | 
						|||
| 
								 | 
							
								- 搭建协议服务与工作流
							 | 
						|||
| 
								 | 
							
								 
							 | 
						|||
| 
								 | 
							
								### 渲染管线 & 材质系统
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 渲染管线
							 | 
						|||
| 
								 | 
							
								ASoul卡渲方案具备兼容性,将Shader文件覆盖到官方引擎中,就能正常渲染ASoul的卡渲效果。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								主要的逻辑是:
							 | 
						|||
| 
								 | 
							
								1. 在FGbufferData中添加额外的卡通渲染用变量,之后在DeferredShadingCommon.ush的Encode/Decode函数从GBuffer进行Encode/Decode。
							 | 
						|||
| 
								 | 
							
								2. 在BasePassPixelShader中写入相关信息,并且修改ShadingModelID输出(使用CustomNode):
							 | 
						|||
| 
								 | 
							
									1. ToonSpecularColor		
							 | 
						|||
| 
								 | 
							
									2. ToonShadowColor 
							 | 
						|||
| 
								 | 
							
									3. ToonShadowLocation 
							 | 
						|||
| 
								 | 
							
									4. ToonShadowSmoothness
							 | 
						|||
| 
								 | 
							
									5. ToonSecondaryShadowColor
							 | 
						|||
| 
								 | 
							
									6. ToonForceShadow
							 | 
						|||
| 
								 | 
							
								3. 在ShadingModel.ush 添加对应的ToonShadingModel。
							 | 
						|||
| 
								 | 
							
								4. 修改DeferredLightingCommon.ush,添加了阴影控制功能。
							 | 
						|||
| 
								 | 
							
								5. 修改DeferredLightPixelShaders.usf,设定为LightChannel为2时,才会进行卡通渲染。
							 | 
						|||
| 
								 | 
							
								6. 修改PostProcessCombineLUT.usf实现 NoToneMapping
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 材质文档编写
							 | 
						|||
| 
								 | 
							
								天气系统采用纯蓝图 + DataTable(Curve、Parameter)+ 材质制作。
							 | 
						|||
| 
								 | 
							
								### 动捕 & 动画系统
							 | 
						|||
| 
								 | 
							
								#### 面捕
							 | 
						|||
| 
								 | 
							
								使用Unity + Arkit实现一个面捕App,主要为了实现:
							 | 
						|||
| 
								 | 
							
								1. 突破52个BlendShape限制。
							 | 
						|||
| 
								 | 
							
								2. 提高单个BlendShape的表现能力。举个例子:吐舌,演员表情被识别后,使用多个BlendShape插值拼合最终得到一个不错的效果。
							 | 
						|||
| 
								 | 
							
								3. 限制一些NG表情。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								可以看到这个节点可以添加一个DataAsset,里面的数据都是由中台的dcc工具根据maya工程中角色的BlendShape生成csv,再导入UE生成。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 除了解析之外我还做了哪些工作
							 | 
						|||
| 
								 | 
							
								- 摸索出
							 | 
						|||
| 
								 | 
							
								- 日常解决地编、动捕、建模、导播同学的问题。
							 | 
						|||
| 
								 | 
							
								- 一些效果、道具制作。
							 | 
						|||
| 
								 | 
							
								#### 版本管理 & 协作
							 | 
						|||
| 
								 | 
							
								先后搭建SVN与Perforce进行版本管理与协作。
							 | 
						|||
| 
								 | 
							
								弃用SVN的原因是:
							 | 
						|||
| 
								 | 
							
								1. SVN会在本地占用大量空间,而直播用的电脑固态硬盘空间都比较小,进而产生各种直播问题。
							 | 
						|||
| 
								 | 
							
								2. SVN的分支系统比较拉胯,无法对开发版本、测试版本、直播版本进行分离,需要进行手动控制,容易触发直播事故。
							 | 
						|||
| 
								 | 
							
								3. 本地文件改动较多时,SVN Checkout速度太慢。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								采用邪道方法为公司节约成本(使用免费版本的Perforce):
							 | 
						|||
| 
								 | 
							
								1. 采用不同电脑,同账号登录。工作区与Commit进行严格命名控制。工作区命名格式:地区_职位_名字缩写。Commit标题添加名字缩写。
							 | 
						|||
| 
								 | 
							
								2. 因为开发人数在18人左右,一套直播系统需要9台机器。所以开发组使用一个Perforce服务,直播间使用另一个Perforce服务。由QA同学验收后,切换P4V服务地址,再进行上传。
							 | 
						|||
| 
								 | 
							
								异地采用Perforce  Proxy Serverer。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 大型活动优化
							 | 
						|||
| 
								 | 
							
								【【A-SOUL】贝拉 2024.07.20 星之回响-贝拉生日演唱会【直播录像】】 https://www.bilibili.com/video/BV1TE421w7ae/?share_source=copy_web&vd_source=fe8142e8e12816535feaeabd6f6cdc8e
							 |