“选择比努力更重要”——入门图形学的一点经验

御币Soft
发布于

笔者接触图形坑走了许多弯路才逐渐在部分技术点上入门,这里总结一些个人觉得比较实用的经验,希望能和各位同好共勉。

标题这句话如今似乎沦为毒鸡汤,但个人看来对于图形学和引擎学习是很正确的。图形学和引擎知识体系庞大复杂,学习者能力时间对比来说很有限,所以尽可能提高学习效率是最重要的。

提高效率的关键则是“选择”。首先举个笔者曾经的经典反例,“我要学图形学,百科说图形学依赖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天赋)。

总结一下,学习图形学,对整体方向的把握和选择真的很重要,可以考虑根据自身兴趣、目标、擅长和知识基础综合分析,选择效率最高的学习路线。以上则是笔者的一些浅陋经验,希望对入门的同学有所裨益,也欢迎各位大佬批评补充。

53
评论 15
收藏 25
  • MR7
    MR7
    感谢分享个人经验,相信可以让后来者少走弯路。
    2
  • 引擎初学者
    感谢分享
    1
  • Laddish
    Laddish
    感谢分享学习经验
    1
  • PicDay
    关于学习过程的探索思路很值得借鉴
  • 有所体会,是个好方法
    2
  • 伍六七-_-
    确实是这样的
    1
  • 我是菜鸟想寄就G
    那要怎么选择比较好 没看明白
  • 52Hz
    52Hz
    受教了呀
    1
  • 怠惰的弈方
    受教了
  • YZ
    感谢分享。刚刚经历过“别人的作品我可以直观感受到好看,但自己想怎样做出更好看的效果一点头绪没有”这个阶段,现在转头深挖渲染管线、体积渲染和PBR了。希望能早日入行。哈哈哈哈
    1
    展开1条回复
  • zer0
    zer0
    菜鳥的一些淺見: - TA更多是偏向於開發美術工具的程序(例如做Blender的插件...),或者是指調Shader參數的偏美術人員 - 像推主說的如何優化算法或者優化渲染流程或者研發相關的,個人認為應該是更偏向Graphic Programmer 只是一些淺見!! 因為在之前我和我的研究生導師聊過,老師說: 你想做渲染,但在簡歷上寫的是卻是想做TA,這個很矛盾(也有可能是地域差異, 人在日本)。
    展开1条回复
  • 一直在缺氧
    说的很好,我就是学了C++,然后啃DX12啃了好几遍。现在最后才来学104的。但关于效率这个我是知道的,之所以这么故意啃《C++ Prime》《DX12》,既是对自己的锻炼,也是因为我在工作后吃过一些高效路径导致底层不稳的亏。高效路径会很快出结果,但对于很多同学来说,在“高屋建瓴”之后就很难回过头从全面的角度仔仔细细捋一遍的。最坏最坏的结果是变成猴子掰玉米,啥都懂啥都落不了地。 不过我对下面TA和图程的见解有一点异议,我觉得TA相比图程更“浅”更全面,TA需要懂整套DCC。需要逆向出效果以及实现方案,跟着项目走。可以不懂渲染积分公式什么的,类似于剑宗。 而图程偏向气宗,不必懂美术审美,忌讳骚操作。与此相反TA的一大优势就是人家可以根据美术素养在项目内搞一些trick,关键效果还不错。。。
    展开1条回复