--- title: 未命名 date: 2025-03-28 13:11:54 excerpt: tags: rating: ⭐ status: inprogress destination: share: false obsidianUIMode: source --- # 背景 - 项目大致背景 - 项目类型:赛车 - 制作人以前做极品飞车。 - Demo期间,制作周期半年。 - 面试信息 - HR + 主管 - TODO - [ ] 查看一些网易面试经。 - [ ] 工作经历 1. 说自己是TA, 达瓦、乐华。(避免说国企经历) 2. 偏T的TA, 3. 对TA很感兴趣。 4. 相关作品产品。 5. 做了什么、解决了什么问题、怎么解决怎么好?表现出能Hold住全场。 - 乐华(ASoul)项目 - Dawa 崩坏3 音乐会。 - [ ] 技术栈说明 - 学了哪些东西,有哪些技术栈。 不要提二次元渲染技巧 风格化渲染。 风格化渲染的论文。 瓶颈是什么? 可能会问的问题 - 我是TA,但什么东西都做。 - 自己的未来目标与计划都是做成一个TA的要求。 - 流程 - 工具开发 - 流程 - MultiDraw插件,收到行业广泛的认可,很多人都在使用。 - 简单说一下原理。 - 赛车的3C、GDC文章、道路生成。 - 【[UOD2022]极速光影-探讨《Racing Master》中的光影技术 | 网易 周潜】 https://www.bilibili.com/video/BV1sP4y1R7TV/?share_source=copy_web&vd_source=fe8142e8e12816535feaeabd6f6cdc8e # 自我介绍 & 主要技术栈 面试官您好,我是楼嘉杰,一名技术向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进行系统学习。 在此过程中 在此之间也做了一些东西,这里我只介绍最有代表性。 - 一些RayMarching材质:溶球、2D、3D体积云。 - 一些后处理效果:描边、模糊。 - 使用GAS制作的Demo。 - Slate UI组件定制。 - 自费走完次时代外包流程,并且使用Ornatrix制作角色头发。 - 制作基于Maya HumanIK的批量重定向插件。 ### 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场景完全对应。 - 【[UnrealOpenDay2020]MUTOOLS-虚幻引擎动画生产新流程 | 达瓦科技 朱子威】 https://www.bilibili.com/video/BV1ct4y1Y7qP/?share_source=copy_web&vd_source=fe8142e8e12816535feaeabd6f6cdc8e - 难点:需要对Maya 插件的C++开发以及数据逻辑(DAG,有向无环图)以及UE的渲染逻辑有一定了解。 - 项目技术支持: - 日常的疑难问题解决:各种各样的问题,DCC、模型摆放、渲染、动画、工具都会有所涉及。比如在Editor下在Sequence中K某个Actor的逻辑、角色口腔里有奇怪的光(**Subsurface Profile Skin**导致的)。主要是一些外包的番剧制作或者使用商店素材快速搭建的项目。 - 难点:N手包的各种糟糕资产以及地编同学在不太了解商城资产的情况下滥用。 - 优化场景性能:主要是XR、虚拟拍摄类型的项目。将帧数优化到指定要求同时保证效果不会出现较大变化。比如XR项目需要达到4K50帧、虚拟拍摄要求2K50帧。 - 根据需求实现一些功能: - 在XR拍摄中让角色具有阴影。XR拍摄使用Disguise软件,会将角色与场景分开各渲染一次,再与摄像机拍摄的现实结果进行合成。因为阴影是投射产生并不存在可以选中的实体,所以XR拍摄中的虚拟角色会没有阴影。 - 解决方法: 1. 通过SceneCapture2D渲染与主光方向一致的方向的深度信息,再在地面材质中对该信息进行空间转换,判断是否大于之前的深度信息来判断是否处于阴影中。 2. 使用UE的Composure功能,将当前角色与接受阴影的地面使用作为一个Pass单独输出到Disguise。这样就解决了这个问题。 - 使用第三方库分析音乐来寻找鼓点,并在Sequence中在鼓点位置摆动DMX灯光。 - 工作流优化:搭建SVN、Perforce服务,并且手把手教会同事;推广UE的Muti-Users。 - 参与项目: 1. 武庚纪 2. [燃夏](https://www.bilibili.com/bangumi/play/ss42066 "燃夏") 3. 2022 EOE米诺生日会 4. 2022 音乐盛典咪咕汇(未中标) 5. 2023 新春湖南电视 周笔畅《追星》 - 2023崩坏3音乐会 - 工作内容:提供场景优化方案与现场技术支持。 - 难点: 1. XR拍摄的帧数要求较高:4k50帧 2. 现场使用的渲染机CPU是频率不到4.0的线程撕裂者,非常容易出现CPU瓶颈。需要较多的UE渲染管线知识才能找到问题并解决。 3. 工期非常紧张:这个项目因为前一个公司做到一半放弃了,导致接手时工期非常紧张。到重庆影棚进行拍摄时,相关每个场景只有70~90%的完成度。所以只能边制作边出优化方案了,制作进度较快的场景会给我留1~2天时间,一些比较慢只会给我留0.5~1天。 4. 在工期紧张的同时,场景频繁出现较大改动,进一步得增加优化负担:为了尽可能得提升演出效果,导演经常会改镜头与效果。往往改动的东西与添加的资产会比较多,导致本来符合拍摄要求的帧数一下子又不行了。所以每个节目场景会出个3~5个版本的优化方案。 5. 部分商城资产滥用导致性能问题出现。 - DMX灯光优化: - 模型转Nanite,DMX组件里的模型都改成StaticMeshInstance。 - 关闭DMX灯光组件的照明与阴影效果。对于不能关闭的照明效果的,减小照明范围。 - 改进DMX Beam材质以减少RayMarching步长与不显示区域。劲量减少Beam的相互叠加。 - 资产优化: - 修改EasyFog的材质(大纲搜索EasyFog),从Translucent=>Additive。并且重新调整亮度。 - EnvEmitter,调整大小并使用Cutoff工具对齐进行裁剪。(覆盖范围过大)。修改材质MI_Env_Inst~MI_Env_Inst22,从Translucent=>Additive。并且重新调整亮度。 - Lumen:根据场景舞台大小调整Lumen Scene View Distance、Max Trace Distance。在保证效果不会大变的基础上,调整Quality与Detail。 - Lumen Scene Lighting Quality: 2 =>0.25 - Lumen Scene Detail:4=>1 - Lumen Scene View Distance:20000=>1000~3000 - Max Trace Distance:20000=>1000~3000 - CyberAngle: - 光影 & Lumen参数调整 - 去掉部分效果不明显灯光的阴影渲染。 - 部分阴影设置成距离场阴影。 - 使用SourceLength匹配的点光源来代替RectLight - 其他类型的灯光是用PointLight或者SpotLight来代替。 - DMX灯光调整 - 对EasyFog粒子进行裁剪 - 粒子从CPU移植成GPU - 远景模型根据视角角度进行Merge。 - Journey Of MoonLight: - 光影 & Lumen参数调整 - 地面的点光源照明效果使用贴花代替(数量特别多)。 - 基础没有明显效果的灯光。 - 关闭飞船模型的阴影。 - DMX灯光、DMX模型、Beam材质调整。通过距离判断来设置DMX材质质量等级,以此减少步长。 - DMX模型卡空气Nanite,并且调整参数使其不会有太大变形。 - 星云资产与星光调整(商城资源) - 在保证效果不变的基础上,调整生成随机球体模型的数量以及球体大小。 - 关闭Separate Translucency渲染功能。 - The Flawless Human、Elysian Realm - 光影 & Lumen参数调整 - 帮忙制作了一下12英杰的头框材质 - TruE - 优化粒子 - CPU => GPU,减少不能转换的粒子数量与出现频率。 - 场景与粒子材质 Translucent => Addtive,顺便解决鬼影问题。 - 电视机模型Nanite & InstancedStaticMesh,并且删除下方看不清的电视机模型进行Merge或者删除。 - 电视机播放视频使用Bink进行优化。 - 与特效同学协作,实现最后的通道状粒子效果。并且使用Nanite & InstancedStaticMesh进行优化(需要修改材质,将ObjectPosition => InstancePosition节点) - 灯光: - 因为场景几乎没有渲染阴影的需求所有关闭若干的阴影渲染 - 调整灯光的渲染范围。 - 调整主光阴影参数: - Dynamic Shadow Distance MovableLight:20000 =>4000 - Num Dynamic Shadow Cascades:5 => 1 - DistanceField Shadow Distance:4000 - DistanceField Trace Distance:25000 =>2000~4000 - Shadow Resolution Scale:1 => 0.1 - ExponentialHeightFog1 关闭体积雾 - Dual-Ego - 灯光阴影:关闭点光源阴影。 - 场景与粒子材质 Translucent => Addtive,顺便解决鬼影问题。 - 远景雾片Cutoff - 舞台模型 Merge - Oaths - 调整Lumen参数 - 灯光 - 关闭阴影效果不明显的灯光阴影。 - 调整主光阴影参数: - Dynamic Shadow Distance MovableLight:20000 =>4000 - Num Dynamic Shadow Cascades:5 => 1 - DistanceField Shadow Distance:4000 - DistanceField Trace Distance:25000 =>2000~4000 - Shadow Resolution Scale:1 => 0.1 - 解决一个屏幕出现奇怪噪点的问题:一个Niagara尘土粒子因为参数问题导致速度与粒子大小 - Domineer - 解决鬼影问题: 1. 修改材质,从Masked=> Translucent,并且开启材质的Responsive AA。 - 模型合并 & Nanite - 调整Lumen参数 - 灯光阴影调整 - Rubia - 删除场景中的PlanearReflection,该用屏幕空间反射。 - VSM => ShadowMap,解决因为场景都是透明物体切没有Nanite会导致VSM无法缓存,使得帧数下降的问题。 - Nightglow - **中间舞台优化**:因为采用Houdini的VAT制作破碎动画(逆播放),负责制作的TA同事在这里使用的StaticMesh,这会使得帧数降得非常厉害,只有3~10fps。 - 解决方法: 1. 将这里所有模型都改成Nanite。 2. 整个舞台为六边形石柱组成的六边形舞台。按照形状可分为7种模型,分别做成InstancedStaticMesh。 3. 修改材质,ObjectPosition节点改成float3(0,0,0) => TransformPosition(Instance&ParticleSpace)这2个节点。 - 因为场景比较暗,所以关闭几个SpotLight的阴影渲染。 - Luemn参数修改: - Lumen Scene Lighting Quality: 1=>0.25 - Lumen Scene View Distance:20000=>1000 - Max Trace Distance:20000=>1000 - 透明物体 - EasyFog材质从Translucent=>Additive - SM_Cloud_Single的材质从Translucent=>Additive - geogrp的NewMaterial1_Inst从Translucent=>Additive - Da Capo - 粒子:删除看不见的CPU粒子。 - 植被 - 将所有植被模型设置成Nanite。材质中WPO引脚中的ObjectPosition节点改成float3(0,0,0) => TransformPosition(Instance&ParticleSpace)这2个节点。 - 设置r.Nanite.AllowWPODistanceDisable 。 - 光影 - Lumen相关参数 - r.Shadow.Virtual.Cache.MaxMaterialPositionInvalidationRange 1000 - 场景整理: - 删除场景中镜头看不到,效果不明显的东西(Mesh与蓝图) - 将一些渲染效率低的StaticMeshInstance => Nanite - 粒子 - 见扫瀑布粒子数量与Life,并且在Sequence中K可见性。(有较大性能影响) - P_Wind粒子 CPU => GPU - 2024原神音乐会 - 针对原神渲染进行分析 - 原神刚开服是可以截帧的,有renderdoc,分析Renderdoc文件来指导美术如何制作。 - 蒙德教堂(未播出),项目招标用。 - 因为对接方提供的场景模型缺损严重,之后有研究原神资产与场景模型的提取方式,以及还原场景的方法。 - 具体方法: 1. 使用改模版的AssetStudio来提取资产。 2. 搭建原神私服,在游戏中使用Ninja Ripper截取游戏场景,并在Blender加载结果。 3. 在UE中进行还原。 - 正机之神:Boss模型提取+绑定分析、场景分析。 - AI项目: - AI实时添加动作、并且渲染视频。 - AI 表情、口型 Sequence。 - AI 实时动画重定向。 - AI虚拟偶像陪伴项目 - AIGC - 导播台 - AIGC赋能工具。 - [[4DGaussians]] - 乐华ASoul技术支持 蛋仔派对:AI赋能&UGC: - 【[UOD2022]让用户更快捷的创建世界- 基于UGC方法的动态世界解决方案 | 腾讯 杨拓】 https://www.bilibili.com/video/BV1384y117Zm/?share_source=copy_web&vd_source=fe8142e8e12816535feaeabd6f6cdc8e - Promethean AI:场景创建辅助用大模型。www.prometheanai.com - Ludas AI:针对虚幻引擎通用大模型AI。https://ludusengine.com/ ## 乐华(ASoul) **2024.10-2025.1** # 一些成果 ## 定制UE5渲染管线功能 # 赛车