知乎专栏:
技术美术之美术知识构成
工程师转技术美术的这类同学,一定要掌握艺术方面的内容,否则无论怎么说辞,还是程序员。
美术DCC软件操作方面:
必须精通:Photoshop,3dsmax/Maya
无论是绘图也好,还是3D建模。这几款软件是游戏美术资产开发的必不可少的。作为每个标准的游戏美术所精通的软件,TechArtist必须精通里面的所有功能,并熟练掌握完整的各个管线的工作流程和常用功能的使用方法。
有些Artist转TA的同学可以根据自己本来的专精游戏制作美术,归纳工作流程,并尝试编写自动化工具。
稍微进阶一些需要掌握:AfterEffects/NUKE/Fusion360, Blender, ZB/SubstancePainter/SubstanceDesigner,MotionBuilder 等等
根据经验的增长游戏制作美术,你逐渐掌握了一些图像合成知识,并开始了解流行的开源3D建模软件,引擎外部的贴图绘制软件和材质生成软件, 动作捕捉软件等等。这里面开始涉及到了各个不同的专业,可以选择性的学习。
再进阶一些需要掌握:Houdini,WorldMachine/WorldCreater, SpeedTree 等等更专业或专精的软件。
这时你已经积累了很长时间的软件操作经验了,对美术工作流了如指掌,便往难度更高或更细分的领域深入研究。这时你对于日常的DCC功能开发已经游刃有余了,并且有了一定的代码经验,再深入就变成技术知识构成的范围。
美术基础知识方面:
TechnicalArtist顾名思义是包含大量的Artist的内容,而Artist以最基础的美术知识为根本,万变不离其宗。
TA需要通过掌握的美术知识会使调节出来的画面效果比图形程序员要好看的多,并且具有一定的艺术观赏性。另外一方面,完全不掌握Tech调节方法的Artist有劲没处使,完全不知道是怎么调节出来的这么好看的画面效果。
当美术管线被优化到足够便捷的话(类似美术更喜欢使用UE4,而非其它引擎开发的定制化渲染管线),Artist自己就可以进行画面调节了,并且是比TA调节的更美的。而TA的工作恰恰是使这个复杂的调节过程简单化。
当渲染管线过于繁琐时,TA应当提供完整的操作文档提供给美术,毕竟他们调节出来的是最好看的。作为一个综合性的辅助职位,没有必要和他们抢饭碗。
作为TA你要掌握基础的美术知识,包括造型,透视,色彩构成,质感刻画等各个方面。这些大多是高考前应该掌握的知识。
你要可以迅速判断游戏画面的黑白灰关系,和层次关系,以及画面的色彩构成。通过修改shader或Toonmapping等方法进行调节。对于各种质感的表现特征要了如指掌,例如金属的明暗交界线和反射的状态,这里可以基于物理渲染但是并不一定符合物理,以画面好看为主。
尤其是非真实感渲染,对TA的美术方面的要求更高,由于是非物理渲染,所以图形程序能帮上忙的空间非常小。
比如最近流行的二次元风格,如果你大学学了动画专业,那么你会对二次元的画面构成了如指掌。透台是怎么使用的,赛璐璐是怎么使用的,画面是怎么由layout,到原画,到中间画,到上色,到后期,你完全清楚。包括为什么某些角色的动态画面是扭曲的,为什么要用色指卡来上色,为什么不同的漫画家的线条都各具有特色。你可以通过你的美术经验,对所有关键性内容进行拆解,然后通过技术手段实现它。这是其它工种完全无法替代的。
沟通技法:
这里和美术沟通时,“说人话”非常重要。因为你之前本身就是美术或对美术工作流程非常了解,这是你和程序员相比非常大的优势,那么要以美术能快速听懂的方式对相关美术人员进行解释,把复杂问题简单化概括。实际上当你对一个技术越了解的时候,你描述的过程是越通俗易懂且简约的。尽量不要拽各种专业性技术名词,以及奇异非常多的英文缩写。
例如图形程序口中的toonmaping等术语,或其他复杂算法。对于精通Photoshop的美术来说就是点击两个按钮,比如可选颜色,渐变映射等等。但是大多数程序员连ps基础操作都不会,这就需要你来简化描述。
这时就实现了与Artist的无缝沟通。因为你在美术方面是不如美术的,程序方面不如程序。和程序沟通时要把专业水平拿上来,通过技术知识来描述美术的想法和实现方式,描述后不一定是你来做,有可能是程序员去做,但是你又不是传话筒,所以要想到既效果好又性能好的trick方案。
TA属于一个完美的辅助型魔剑士,既肉又奶又可以输出,行成一个良好的工作氛围后,美术和程序是都愿意和你配合的。
技术美术之技术知识构成
脚本语言简单来说就是:
3DSMAX 的 maxscript 或 MAYA 的 mel 语言 或 Houdini 的 vex 这种DCC软件语言。
这种语言使用的功能相对简单,大多是对软件封装好的功能进行调用。
作为TA,你可以根据你在你之前的美术领域(模型/动画/特效/UI)浸淫多年的DCC软件操作习惯,来使用脚本语言对你的大量重复性工作进行自动批处理,从而是你和你支持的这方面的艺术家从操作工的工作中解脱出来进行艺术创作。
其中在某一美术领域浸淫多年这一点非常重要,这也就是”使用者既开发者“原理。所以我并不赞成毕业生没有进行过美术工作直接进入到这一领域,否则开发出来的功能的难用程度比引擎程序员开发的功能有过之无不及。
它的工作流一般是线性的,拟人化的方式。不同的软件的写法和API差异很大,由于官方文档写的烂,有很大的学习负担,所以这方面工作一般没有程序员会接手,只有TA来承担。
DCC工具一般来说以批处理和资源检查为主,一定程度上追求运行速度,因为美术要经常快速修改美术资源,所见即所得非常关键。由于这里生产的资源是完全与游戏项目脱离的,所以稳定性不是最主要的,以提高美术制作人员的舒适度为主。在引擎工具方面还会对美术资源进行二次,三次的反复检查。
python介于脚本语言和编程语言之间,各个软件或引擎之间可以同时支持。所以目前来看性价比要高一些。
编程语言:
就是C,C++, C#, 这种更接近于程序员使用的代码语言。这类语言一般用于游戏引擎中的内容修改或工具制作。
这类语言我觉得作为TA你至少要精通一种,不是比其它美术师稍微懂点引擎操作方法就可以变成TA了。因为许多高级美术师,同样对游戏引擎的使用非常熟练,例如经常使用游戏引擎内置编辑器的游戏特效师 或 经常编辑动画状态机的游戏动画师。
技术美术应该做的事情是在高级游戏美术师的基础上,使用编程语言,自动控制/检测美术资产的正确性,对重复性工作进行批处理开发,对引擎中的操作繁琐的步骤进行一键操作的简化处理,甚至把很多操作集中在打包流程中。
这方面工作与引擎程序或客户端程序有一定的交集,要掌握工作分配尺度。
TA在引擎层面开发的工具或功能,由于和游戏项目耦合性较高,所以以可靠性为首要注意的点,美术生产资源的合理性要完全在这一步把握住,尽量达到使用:资源检查工具,资源后处理工具,资源提交工具 完全阻断出错率的效果。
其次是美术工具流方面的易用性(因为工具交互做的很差或不好用,美术用起来就很排斥,这导致没有反馈信息的输入,没有这部分输入就导致无法更新迭代,这样的话就开发不下去了。如果强行推广使用的话,那么对于美术来说就由帮手变成了敌人)。
最后一点才是运行速度,但是又是不可或缺的,如果你使用编程语言开发了工具,必定带来开发速度的提升。这是要遵循二八原理,比如花很少的开发时间,把美术生产输出从几天或几周优化到了分钟级或秒级,就没必要再花百分之八十的时间扣算法,优化那么几毫秒的运行速度。
以上所有引擎内功能的稳定性又是由一套”稳定“的引擎底层架构和渲染/客户端逻辑来支撑的,如果引擎和逻辑变来变去,那么工具也无法保证稳定。
Shading语言:
一般是opengl, hlsl, cg这种类似于C语言这种底层语言的写法,对Shading语言的了解目前成了技术美术必不可缺的要素。这几种语言的写法非常接近,基本可以做到同时精通。
你不一定会掌握底层shading的基础算法或架构,这里面很大程度上的工作由图形程序员承担(不要抢他们的饭碗,或者一部分图形程序变成了所谓的TAT)。但是作为TA一定要掌握surface层面的效果向shading开发,并具有很强的优化能力。
作为TA你要通过你的传统美术技法,产生大量的trick能力,这是图形程序员不具备的,尤其是非真是感渲染方面,你具有很大的重要性。由于一般传统艺术家画画是直接用画笔在画布上怼的,效果不一定真实,但非常好看。你要使用美术的基础知识对其明暗调子,色彩构成,线条的优美,等等方面进行把控。看起来是美的既是对的。
如果你精通PhotoShop或AfterEffects来进行图像处理的话,那么你对于图像后处理方面的使用会非常精通的,门槛非常低。
国内最开始有TA行业的时候,对于连接节点方式的shading创作是鄙视的。目前来说要放开了一些,但如果你对优化有一定要求的话,依然还是要掌握代码。
以上三点,从初级,中级,高级必须做到 由少到多,由入门逐渐到熟练,精通。这是一个积累的过程,尤其是对于美术来说,学习曲线非常陡,由一种语言到多种语言,加上熟悉API音乐,起码要持续几年。所以不要着急音效,不能由于行业比较火,一口吃个胖子。
最终就是,虽然标题是技术美术的技术知识构成,但是程序员不要由于编程优势妄图混进来。赶快去看艺术史,画石膏像,用DCC软件建模,这样才能达到”使用者既开发者“的目的。