笔者接触图形坑走了许多弯路才逐渐在部分技术点上入门,这里总结一些个人觉得比较实用的经验,希望能和各位同好共勉。
标题这句话如今似乎沦为毒鸡汤,但个人看来对于图形学和引擎学习是很正确的。图形学和引擎知识体系庞大复杂,学习者能力时间对比来说很有限,所以尽可能提高学习效率是最重要的。
提高效率的关键则是“选择”。首先举个笔者曾经的经典反例,“我要学图形学,百科说图形学依赖C++、图形api、操作系统balabala。那我先买本C++书对着目录一条条学完。掌握C++然后买本dx12龙书对着目录一条条学完......“,这其实是很低效的做法。笔者在后来的摸索中自认为更有效的方法是,编程语言只需要了解最最基础语法(比如类型、四则运算赋值、分支、函数、形参实参、地址引用),然后找到经典的开源项目(比如GAMES101作业,tinyrenderer,piccolo源码等等)开始读。遇到不懂的语法再查找学习,比如继承、auto变量、智能指针之类的,每个feature也不用特别深究,只需到能读懂源码并继续的程度就可以,开始可以慢一些,随着熟悉的点增加将越来越顺利。这种学习方式的另一个好处是可以结合源码上下文需求对语法有更深的理解,相比啃书高效许多。
“TA到底是个啥”,这个问题上笔者也进行了许多摸索和迷茫。现在几乎每个对游戏开发圈有了解的人都听说过这样一句话:“所有地方都缺TA”,个人理解其实不同圈子或厂子对TA的定义并不一致,不过笔者这里想讨论的是“技术”和“美术”的选择。
还是从实际例子讲起,笔者当年也高喊“我要努力当TA”,于是心想TATA,首先要能搞出很好看效果吧,于是沉迷过一段时间MMD、unity、blender三渲二,想通过这个路径搞图形学。后来逐渐发现这样一个问题:别人的作品我可以直观感受到好看,但自己想怎样做出更好看的效果一点头绪没有,于是学习进展缓慢,不知道该具体研究点什么,直到某天在知乎看到帖子给出另一种思考。
这篇回答主要是说,原神的崛起让各种卡通渲染、三渲二非常热门,许多人学习作为进入游戏行业的技能,但其实这属于偏“美术”的工作,游戏公司的美术需要能根据项目的安排灵活生产各种不同风格的效果,一味地钻三渲二可能不是一个好选择。况且许多公司其实更关心别的问题,比如如何实现高性能的体积云,如何实现大规模广告牌粒子等等,而这些是比较偏“技术”的工作。
于是笔者开始考虑T和A到底是什么。根据目前的浅薄理解,使用shader、材质、参数调节出好看的效果,是偏向A的工作,笔者通过实际经历证明自己没什么美术天分,是转头开始研究T:比如怎样实现更高效的光照、不同的环境光遮罩、体积光的实现等等,收获和效率比之前研究NPR、三渲二都好了不少。
那么什么是TA呢,笔者认为是“图形产品经理“。举个具体的例子,美术画出某场景一天不同时间的概念图,TA看完,和图程说这个场景需要xx粒子系统、估计有xx个光源、阴影需要用xx方案、体积光模型需要xx模型做这个效果,暴露xx参数给美术调节……具体的实现就丢给图程去做(也有可能由TA做)。从这个角度来说,TA其实首先非常懂T,然后对A也有一定分析能力,也难怪到处都缺。那么从这个角度来看,如果笔者想成为一位TA,首先得成为不错的图程,或者说只当图程也不错(实在没什么A天赋)。
总结一下,学习图形学,对整体方向的把握和选择真的很重要,可以考虑根据自身兴趣、目标、擅长和知识基础综合分析,选择效率最高的学习路线。以上则是笔者的一些浅陋经验,希望对入门的同学有所裨益,也欢迎各位大佬批评补充。