zoukankan      html  css  js  c++  java
  • 2013年终大阅兵

      时间过的真快,这一年晃晃悠悠就这么结束了,回头看看,这一年收获还真不小,尤其是下半年。对于我来说,2013是个转折点,我的某些选择必然会对我的未来造成很大影响。虽然不知道影响是好是坏,但是至少我努力去做了。有句话我很喜欢:

    The best way to predict the future is to create it.

      —Alan Kay

    方向:重回图形学

      早在3年前,记得那个时候我还是大四,是一只快乐的保研猪。当时特别想做游戏,或者去研究游戏引擎,所以跟了教我们DirectX选修课的老师,在毕设的时候也小有成果。可惜好景不长,由于老师是按照项目走的,而且考虑如何短、平、快的出成果,自然不会按照正常的树形知识体系架构来指导(姑且不论是否有指导能力)。时间就这样晃晃悠悠的过去了,我的方向从做游戏->研究引擎->体感开发->研究体感算法。研究引擎的那一步走的实在不顺,由于缺乏理论知识,导致根本看不下去引擎源码(想看引擎的童鞋先看《Real-Time Rendering 3rd》和《Game Engine Architecture》)。不过总算跌跌撞撞的把项目完成了,也学到了不少东西,但都是点上的,而不是面上的。接下来就比较扯淡了,被误导到其他方向了,并且被忽悠去搞传说中毁一生的学历。

      从去年年底开始,我仔细思考了下方向,决定重新回到之前的方向(游戏或者引擎),毕竟这是我喜欢的东西,不论最后结果如何,至少我尝试去做了。在之前各种失败经验的积累下,师兄的帮助,网上各种博客(clayman的博客不错,其他的一般),终于理清了初步思路,并且在这一年的过程中不断修正,不断进步。虽然绕了一大圈又回到了图形学,不过失败的经验似乎对这一年的学习起到了很大的加速作用,方向也清晰了很多。

      当然,既然决定走自己的路,那就意味着不按导尸的要求来了,这么做是很有风险的。能做好,当然没问题,若是做不好,什么都得不到。不过,都到了这个地步了……我决定赌一把。按照打三国杀优势不挂闪电的原则,现在的局势属于劣势,有闪电肯定得挂上。

    迟来的英语

      英语一直以来都是一个很棘手的问题,相信不止我一个人有这个问题。由于很多图形学相关的书籍、论文都是英文的,如果英语这关没过,这条路一定是走不通的,所以,从暑假开始加大英语的时间投入,结合之前的基础,总算是小有成果,至少可以比较顺畅的阅读英文版一些专业文献和书籍,不会影响专业方面的学习(高手莫笑)。对于这一点我真的很高兴,学习英语十多年了,终于做到了这一步……虽然来的有点晚,但是终究是做到了。至于英语的进一步提高,那就只能细水长流了,至少现在英语不会成为深入学习图形学的瓶颈了。

      个人感觉,要阅读英文文章,有两个难点要克服,第一是专业术语,第二是句子结构。专业术语方面,可以先从中文资料看起,看的过程中熟悉相关的英文,等到没有中文资料的时候,人家给一个陌生的单词,也会有很详细的解释,而且很多时候拿出英文很好理解,翻译成中文反而别扭;句子结构就是单纯的英语方面的功底了,多阅读自然会提高,我的做法是找一些有翻译的书或文章中英文对着看,看的时候注意下句子结构,一段时间以后阅读能力就上去了。至于非专业单词……可以查词典,所以算难点,不过词汇量当然是越大越好了。

    图形学——入门到进阶

      想要在一开始就定一个很完美的计划是不可能的,毕竟在不同阶段视野不同,想法也会有变化。但是,基础是不会变的,不论后期是什么计划,在前期茫然的时候先打基础肯定是对的。大三的时候三维图形程序设计这门课程用的教材是龙书《DirectX 9.0 3D游戏开发编程基础》,但是由于时间问题,后面半本书的东西没有讲。鉴于龙书是大家公认的入门好书,我觉得有必要把它看完,于是乎我花了几个星期把之前没学的都看一遍,收获还是比较大的,尤其是shader部分,至少入门了。

      DirectX的SDK里带了很多不错的例子,早在大三的时候点进去看过,一堆乱七八糟的代码,和天书一样。但是,看完龙书以后再去看,结合微软提供的文档,虽然看着有些吃(毕竟图形学的功底太弱了),但是至少有办法看懂。通过阅读代码,逐渐了解实时渲染中的一些算法。看的时候有种感觉,虽然感觉知识量在扩大,但总是有种只见树木不见森林的感觉。

      在学习图形学的过程中,我也通过unity3d的官网教程学习unity3d的使用。当时的想法是如果图形学学不下去了,至少把一门工具用好,以后找工作还是OK的。学习unity3d的过程中,严重感觉到图形学的重要性,尤其是一些优化的技巧。官网的教程确实好,讲的很全面,这里也感谢“unity圣典”提供的翻译。虽然unity3d的教程只是在教如何使用unity3d,但是其中涉及到了很多图形学专业术语,顺着这些专业术语我又得到了一些零散的知识点,并了解了一些优化技巧。

      不过,只有零散的知识点是不够的,还需要系统的学习,搭建知识体系架构。虽然DirectX的SDK提供的例子很不错,提供了很多图形学算法的源码,但这是只点上的深入;很多大神的博客很不错,但学习了以后依旧是点上的深入;《GPU GEMS》系列和《ShaderX》系列虽然好,但同样的他们还是点上的深入。想要从入门到进阶,点的突破是不够的,需要通过之前的点建立一个完整的知识体系架构,以这个知识体系架构为基础再进行深入学习,就不会有那种只见树木不见森林的感觉了。

      不得不说,《Real-Time Rendering 3rd》是本神书,看这本书感觉提高很快。我记得最开始是在clayman的博客里看到的,然后去网上搜了下这本书的电子版,看了下目录,发现这本书似乎就是我一直想找的,于是乎很快就去淘宝买了打印版(原版太贵了,穷学生买不起)。这本书对实时渲染的讲解相当的全面,看的过程中就感觉原先零散的知识点连成一片,形成一个知识体系架构,而且随着学习的深入,这个知识体系架构越来越完善。我一直以来都认为原理性的东西很重要,搞研究一定要做到不仅知其然,还要知其所以然,而如果没有《Real-Time Rendering  3rd》,知其所以然这一步很难做到。这本书已经快看完了,总体感觉图形学深入了不少,至少脱离了入门的水平,最重要的是建立了知识体系架构,不会只见树木不见森林了,可以说这是一个很重要的转折点。

      当然,由于当时英语水平的限制,加上图形学的专业词汇了解的不是太多,最开始选择了第二版,因为第二版有翻译(虽然翻译的不好,但是有总比没有好,翻译版的叫《实时计算机图形学》)。大概在看了三分之一左右的时候,图形学的专业词汇熟悉了不少,恶补的英语也有了作用,看了看第三版的内容,好像没什么问题,而且感觉第三版也更新了好多东西,那就转到第三版吧。虽然刚开始看的时候鸭梨确实比较大,但是习惯了以后,发现阅读也不是太难。

    总结与展望

      今年有两个比较大的突破,一个是英语水平提高了,终于可以阅读英文原版书了;另一个突破了图形学的学习瓶颈,搭建知识体系架构,脱离徘徊已久的入门状态。其实这些是我在2年前想做的,可惜由于各方面的原因,绕了一大圈到现在才实现。有了图形学知识体系架构以后,下一步的目标就是游戏引擎或图形引擎了,最好的学习方法肯定是看开源的引擎源码,如OGRE。当然,引擎那么庞大的代码不是那么好入手的,有本神书《Game Engine Architecture》,据说对游戏引擎讲解的相当不错,已经在淘宝买了打印版(原版59刀,买不起),目测看完这本书再看OGRE源码,又会有不小的长进。

  • 相关阅读:
    PAT (Advanced Level) Practice 1071 Speech Patterns (25分)
    PAT (Advanced Level) Practice 1070 Mooncake (25分)
    PAT (Advanced Level) Practice 1069 The Black Hole of Numbers (20分)
    PAT (Advanced Level) Practice 1074 Reversing Linked List (25分)
    PAT (Advanced Level) Practice 1073 Scientific Notation (20分)
    第一次冲刺个人总结01
    构建之法阅读笔记01
    人月神话阅读笔记01
    四则运算2
    学习进度条(软件工程概论1-8周)
  • 原文地址:https://www.cnblogs.com/wangchengfeng/p/3477677.html
Copyright © 2011-2022 走看看