听说你想做技术美术?这篇网易雷火TA面试官的建议一定要看!!
想成为一名优秀的技术美术,但又不知道从哪里开始?
想加入游戏行业和网易游戏雷火,却缺乏对具体业务的了解,不知如何应对面试官的连环提问?
为了帮助大家解决这些烦恼,小师妹邀请了在网易雷火工作的TA(同时也是资深面试官)分享技术美术岗位的业务知识,
渴望成为一名优秀TA、对网易雷火感兴趣的同学们快来看看吧:
我是网易游戏雷火的一名TA,过去在育碧工作过十来年的时间,以下是一些我在工作经历中逐渐形成的一些想法观点,以及这几年面试过程中遇到的一些新人同学的常见情况,这里整理一些,希望能够有一些帮助。
我们会常常听到的关于“美术向”或“技术向”的讨论,我感觉它们的区分更多在于项目中根据团队构成所形成的侧重,每个项目都会有所不同,但这并非TA对自己学习范围的界定;TA的核心竞争力在于跨学科的综合技术运用能力,这让TA在技术运用层面可以具有很强的全局推动力。如果从这种“技术向”或“美术向”的定义出发,进而产生“技术向TA因此不用掌握美术技能”,或“美术向TA不用学习技术原理”的想法,就比较难以构建TA这一工种独有的专业价值
因此我是想建议从功能方向出发,来规划自己的学习路径。
以渲染为例,阅读图形学书籍,学习基础知识当然是必备的。例如虎书,RTR,甚至PBRT都是经典书目。另外渲染算法中有大量的线性代数,微积分等数学运用,这方面基础越好,阅读论文,做技术实现时自然越能得心应手。当然英文也是一个很好的加分项,可以让你更好的浏览Siggraph, GDC以及其他海量的国外的文献材料,和全球的开发者进行交流
在掌握这些基础知识和技能之后,相比于图像程序对技术的无限深入挖掘,TA的侧重点会更多偏向技术的上层应用,也就是关注如何使用这些技术去表现出各种精彩的美术效果,如何让美术便于使用和理解,做好技术和美术之间的接口的工作。举几个例子:
- 毛发材质,标准毛发光照模型我们知道是Kajiya Kay或Mashner; 那如果我们要做一个有大量NPC的开发世界,材质参数如何设计才能实现丰富的变化,同时又确保美术能够轻松使用? 如何满足美术对非真实毛发材质的需求,或者如何在上层叠加非毛发类型的材质,例如血迹,或积雪?如果毛发需要画半透明Pass,要如何对面片进行排序?
- 角色皮肤材质,我们知道常见的几种3S路数,例如预积分散射,屏幕空间散射的各种变体;那他们各自有何优势短处?在项目中应该如何选择?
- 角色身上的动态污渍,血液,伤口要如何实现?
- 实现布料有哪几种BRDF? 他们各自适用于哪些布料类型?
- 云层的渲染基础是使用Raymarching去步进积累计算BSDF, 那要如何设计材质,需要哪些工具才能保证美术的工作简易直观,又能实现变化丰富的云层形态和色彩?
- 如果游戏中需要实现沙尘暴的画面,基于美术和关卡的实际需求和平台性能限制,应该使用哪些技术加以实现?
- 水体渲染,我们需要如何实现丰富的波浪变化,使其匹配风力,地形,以及河床的变化?不同类型的水体(i.e. 河水,海水,瀑布,小溪)应该如何融合?
- 游戏的材质体系需要如何设计,以便实现丰富的材质变化,并具有良好的可维护性和性能?
- 如何帮助美术团队理解当前技术的限制和优势,并将其运用到极致?
- 在制定了效果的实现方法后,如何确保美术制作时能够遵循流程?
- 如何帮图形程序团队挡住不合理的美术需求,或将美术团队偏视觉感性的需求转换为设计合理、有体系逻辑的技术需求?
以上例子都是关于既有的技术基础上如何做上层开发的问题。这种图形程序做底层,TA做上层的分工,在3A厂牌里会非常常见。因为他们的图形引擎经过多年积累,底层已经变得无比复杂,来确保其功能健壮,性能高效,硬件兼容。TA会相当难以插手这部分的开发工作。但是相应的,正是这种技术复杂性,以及开发者和玩家对画面表现力和细节的无止境追求,也让美术/动画这头的上层工程的施工难度和规模与日俱增,这给TA打开了广阔的发挥空间。
就我们网易雷火目前在艰苦进行的3A游戏项目,也采用了这样的分工方式。这里举一个我们项目中实际发生的水体渲染来做例子,
我们都知道水面需要的几项最基本的功能模块:
- 水体的体积BSSDF,模拟吸收,散射,3S,再加添上浮沫等材质效果
- 水体动画和波形模拟
- 对周围场景的改变,例如潮湿,折射,焦散等
我们平时看到新人提交的面试作品,通常是对这几项功能的简化实现,看起来类似这样:
这样的作品的问题,在于只实现了最基础的功能,并且效果缺乏调试,属于是“做了但又没完全做”的状态。和大量的类似作品放在一起,难免千篇一律。
而对于开发一个能在3A游戏中使用的水体系统来说,还需要大量的水体真实特性。我们先来看看现实中的水体是什么样的:
- 从清澈到浑浊的不同水质,根据环境产生混合
2.不同原因产生的波浪会呈现不同形态
- 风力波纹 - 由风力产生的大小横向波纹。波纹的形态会根据风力大小变得平缓或者尖锐
- 地形波纹 - 由水流和河岸,水中物体碰撞后产生的弧形和圆形波纹
- 交互波纹 - 和运动物体碰撞形成的波纹,会根据碰撞体的形状和运动方式有所变化
- 还有其他细碎波纹,没有明显特征但整体会随水流方向移动
- 此外波形还会根据河床的起伏变得开阔或细碎,在表面形成混合变化
3.会产生各种形态的浮沫
- 例如在湍急的水流下,水流会因为自身和山石的撞击形成浮沫
- 或在大型水体的浅滩处产生大片的浪花
4.漂浮物体,根据漂浮物表面摩擦特性,可能会随着水流移动,也可能悬停在水流上
5.焦散 - 除了河底的焦散现象,在阳光强烈的地方,也会在岸边物体上形成类似的反射光斑
真实的水体还有许多光学/物理现象有待发现,这里限于篇幅不能一一列举。总之在充分了解真实水体的特征后,并不见的所有特征都需要在游戏中实现,因此我们还需要和美术进行沟通取舍
同时,也并非所有需求都需要用新功能的开发; 有些功能因为性能限制,也未必能完全基于物理的方式来实现(例如向上反射的焦散)。TA需要充分了解现有工具特性,渲染技术原理,尝试去做出一个最优化的判断,确定一个效果应该如何拆解为哪一方的工作,并判断物理和非物理实现方式之间的尺度应该如何把握
确定需求后,TA可以根据自己的能力和团队的实际情况,和图形程序团队协商各自的开发范围,让功能收敛到稳定,这个过程中,图形程序会做大量复杂的底层开发,例如
- 实时细分镶嵌
- 反射/GI处理
- 浪花粒子生成
- Decal投射等等功能
- 裁剪,虚拟纹理管理等优化处理
- ......
而TA可能会开发的工作包括但不限于:
- 调试水体渲染效果,验证测试引擎功能,必要时做一些增补
- 迭代需求设计
- 优化材质参数界面
- 开发笔刷工具,Flowmap生成工具
- 各类纹理生成
- 总结使用流程,编写文档
- 制作打样演示
- ......
好的TA需要能和程序一起,将这些东西进行体系化的开发,最后形成一套前后逻辑一致,易于美术理解和使用的系统。
具体的水体实现的论述超出了本文的篇幅和主题,这里只放一些我们参考的资料作为补充:
https://www.youtube.com/watch?v=4oDtGnQNCx4www.youtube.com/watch?v=4oDtGnQNCx4
以上是用水体渲染举例,来说明渲染方向的TA的工作状态,希望能给题主一些思路。除此以外,我们TA还有很多其他方向,例如:
- Pipeline TA
- Pipeline TA需要对流程环节的具有很强的整体认识,规划各个环节之间的输入和输出数据,确保各环节能够通畅无误地衔接。
- 对降低效率或出错的环节有高度敏感性和洞察力。开发生产管线/自动化检查等工具,日常维护数据。最大化美术各环节的制作效率,减少数据出错的概率。
- 作为Pipeline TA,通常并不会过多要求美术技能,但对于美术使用的软件需要足够的熟悉,精通对Python, C#等工具开发的常用语言。
- 软技能方面,在规划流程的同时充分尊重美术的现有工作习惯和分工,确保开发的管线能够确实的落地,以及解决项目的实际问题。
- 绑定、动画
- 熟知各类绑定技术,开发相关工具,能够根据游戏需求设计高效的绑定系统。例如大世界游戏需要让绑定尽可能模块化,可复用;卡通类型的游戏则需要开发支持灵活形变的绑定等等
- 熟知动捕技术流程,能够帮助动画师解决各类日常问题,开发工具提高团队效率
- 开发传统动画状态机或运用Motionmatching,实现角色的各种运动效果
- 运用IK, LookAt, 以及各类实时动画约束变化
- 使用布料,刚体系统进行物理模拟
- 程序化建模 (Procedural Generation, 或PCG)
- 地形,生态的规划和制作
- 城市道路和建筑生成
- 破碎切割
行业中还有其他各种方向的TA在兢兢业业的工作,各个大厂对自己TA的各种分类和要求也不尽相同,我这里限于篇幅和自己的眼界,只能表达一些我自己了解的信息,权当抛砖引玉,谨供参考。
学海无涯,与大家共勉!
看到这里,小师妹也体会到:
原来成为一名真正优秀的TA是这么不容易的一件事呀!
欢迎大家多多留言提问互动!
小师妹将围绕大家感兴趣的内容做更多解答和分享~