这篇文章不包含任何技术知识,但个人但愿它能指明一条从零开始通往3D领域的成功之路.我将罗列我看过的相关经典书籍做为学习文献,阅读规则是每进入下个内容,我都会假设已经完成前面所有的文献研习内容.相信若能按照这条路走到最后,会有所进益.
完成整部份内容须要具有基础:
英语:CET4以上
数学:精通数字加减乘除法.
物理:基本力学.
计算机:了解电脑的基本知识,熟练使用
Windows.
电脑配置:
CPU:双核1.5以上
显卡:NVIDIA GeForce8400G MS以上(支持DirectX10)
内存:512以上
_____________________________________________________
下面是不须要解释的几句话|||||||||||||||||||||||||||||||||||||||||
_____________________________________________________
要进军3D计算机图形学领域,首要前提必须对其有浓烈的兴趣,而后是勤奋,和拥有一颗聪明的大脑.
须要理论实践相结合,若是说成就感能够延续兴趣,那么实践既是获取成就的坦途.而理论是铺垫坦途的基石.
在3D领域得到成就并不是一朝一夕,3D领域是不断前进的,要在其中获取一席之地,那么必须与时俱进.
任何软件,语言或库,接口以至设备,硬件皆一类工具而已,精通它们并不能引觉得豪,它们是死物,在这个及不少领域里,咱们应该获取的是其实践和理论的思想.这句话在这里也能够理解为:程序不过是实现3D计算机图形学工具中的一种.
网络是一所很好的学校.
_____________________________________________________
计算机和编程|||||||||||||||||||||||||||开始||||||||||||||||||||||||||||
_____________________________________________________
我一直认为,计算机入门须要具有必定的理论基础,<计算机导论>很好的诠释了这一点:
<研习周期>:半个月.
<理论>:囊括了计算机基本的知识,对认知计算机处理机制和为不少内容奠基基础.
<批注>:个人大学教材,为了考试,被迫看完,事实上里面仍是有不少有趣的东西的.若是以为太乏味,大体了解以后能够跳过.
了解计算机基本知识后就能够开始向编程迈进了,在这以前须要选择一个编译环境,我认为Microsoft Visual Studio最为适合,Baidu一下便可了解其基本使用方式.
接下来须要选定一门计算机语言做为启蒙语言,相信我,这时候C语言必定是不二之选.因此<C程序设计>这时候颇有用.
<研习周期>:1-3个月.
<理论>:介绍C语言语法和其基本库.
<实践>:课后习题很完整地针对相关知识进行练习.
<批注>:谭浩强强强的大学教材,是我摸得最滥的一本书.是培养兴趣的关键所在,若是在研习时没法提起兴趣,那么以后的事情天然无从谈起,请尽早放弃. 最好的状况是课后习题所有弄懂,大部分通过上机实践,附录则能够当字典使用,当C语言基本了解以后,更好的另外一本字典是MSDN,经过Baidu能够了解它的使用,大多数状况下,MSDN是和Microsoft Visual Studio邦在一块儿的.
熟悉C语言与Microsoft Visual Studio的使用,标志着迈向计算机编程的第一步.可是要进行项目,单纯语法使用远远不够,何谓算法是灵魂?熟悉数据结构就是起点.因此这时候须要的是<数据结构 使用C语言>.
<研习周期>:1-3个月.
<理论>:介绍经常使用数据结构.
<实践>:把每种数据结构编写成头文件,有良好的扩展性.
<批注>:大学教材,我用的是第三版,实践时候有些乏味,可是很是重要,必定不可跳过,建议实现哈夫曼编码加密解密等以熟悉数据结构.
_____________________________________________________
学习OOP||||||||||||||||||||||||||||||入门|||||||||||||||||||||||||||||
_____________________________________________________
C语言是面向过程的语言,在了解图形以前,可能看不到任何非命令行效果.
众所周知,黑底白字永远没有图文并茂来得有激情.因此这时候对面向对象越越欲试是理所固然的.
学习OOP,应该从最简单入手,若是有比较好视觉冲击效果,那再好不过了.
权衡再三,我认为Flash的脚本语言ActionScript3.0最为适合.
做为脚本语言,它简单.通过2代的演变,它成熟.基于Flash平台,它的图形API丰富,为3D打下很好的图形基础.
学习一门脚本语言,我以为不必进行单纯的语法学习,应该综合起来对算法思想进行初步学习.
因而<Make Thing Move>成为当前最好的一本书.
<研习周期>:1-3个月.
<理论>:介绍基本的物理,图形知识,并ActionScript3作比较好的介绍.
<实践>:每个语法或算法,都会进行实现并列出所有代码.
<批注>:第一本经典书籍.后面介绍基本了3D知识,是zerO3D引擎的启蒙读物, 这本书被我翻得破破烂烂,我把所有的代码都重写或者抄进Flash CS3里面,CS3的IDE实在很慢很慢,代码码得很辛苦辛苦,可是很值得很值得.
<项目1>:如今能够开始第一个图形或物理引擎的编写了,Flash里编写一个引擎实际上是很简单的事情.它的API很齐全,把<Make Thing Move>的源码扩展成一个Flash3D物理引擎核心,是当前巩固编程基础,熟悉OPP思想和了解设计模式的最好途径.这个项目周期应该在1周以上,代码量上千,相机至少实现粒子与相机(3D Camera)功能(尽可能在不参阅其它资料的前提下),以实现纹理贴图为佳,可尝试参照相关资料实现导入,动画等功能.在项目开始以前,须要Baidu了解ActionScript3.0的软件工程基础(命名规则等),接口(Interface)使用,事件处理机制(event).
除了全中文的zerO3D以外可参照其它开源Flash3D引擎PaperVision3D,Away3D,Sandy3D.
还有ActionScript 3.0 语言和组件参考及<ActionScript3.0 Cookbook>.
<研习周期>:任意.
<理论>:ActionScript3.0的语法及组件介绍.
<实践>:提供大量例程演示代码.
<批注>:可做为字典使用,Flash Player9时代我翻得挺多的,Flash Player10出来以后就丢角落里了,不过据说如今出Flash Player10版了.
这期间,应该试着经过Baidu了解什么是API,SDK,SVN等词汇.
相信不少人会认为所谓引擎是很神圣的一类事物,可是当试着去实现以后才发现这并无什么大不了的Flash3D引擎更是如此.也许作得还不够好,别担忧,作好准备向3D迈开第二步.
_____________________________________________________
扎实理论,深刻语言||||||||||||||||||||||准备|||||||||||||||||||||||||||||
_____________________________________________________
每一件事情,最艰难的是门槛,若是一路走到这里,那么说明最艰难的时刻已通过去了.从如今起,每种计算机框架技术的学习周期都应该大幅缩短.由于马上要深刻技术堆中去,若是周期过长,只会说明两个问题,一个是自身基础不扎实,须要回顾到上一个阶段中去.另外一个问题更为严重,由于用那么长的周期学完这些技术以后,大概咱们都已经老了.
ActionScript3.0是一款脚本语言,也许可使用它作很炫很漂亮的东西,可是若是仅知足于它的编程思想那目光也太过浅显了.在高级语言中,若是你不了解C++,那么你将始终不会了解一门语言能够如此博大,如此霸气.至始至终,我历来没质疑的一句话是:若是你没有使用过C++,那你以前所做的根本不是真正的编程.
所以,要彻底掌握OOP,C++才是王道.
<C++程序设计教程>很好的诠释了这点.
<研习周期>:2-7天.
<理论>:C++语法及库介绍.
<实践>:课后习题与语法一一对应.
<批注>:书是厚得能够,但我读完这本书就用了2天,而后基本就掉在角落里封尘了.我相信,当入门以后,理解这些东西很垂手可得.
在学习了C++以后,不得不提的是一本经典读物.C++沉思录
<研习周期>:床前读物.
<实践>:分析C++的常见陷阱和编程要害.
<批注>:第二本经典书籍,做为一个C++程序员,绝对是床前读物之一.
学过数据结构都知道,世界上有效率这种东西.相信每一个使用ActionScript3.0开发过本身3D物理引擎的人都会深有体会.高级语言封装的东西太多太杂,致使效率在不经意间流失.提升效率的一种好方法是使用低级语言,比较C语言,好比汇编,而有的时候,汇编比C语言更为有用,因此须要一本<汇编语言程序设计>.
<研习周期>:1-2周.
<理论>:汇编命令介绍.
<实践>:课后习题与语法一一对应.
<批注>:因为汇编与中高级计算机语言有些略微差别,因此可能研习周期要多一点,不过相信仍是能够轻松掌握.
接下来须要为大型项目作准备,按照软件工程,须要一个好的设计模式作框架,这就须要<设计模式>.
<研习周期>:床前读物.
<理论>:很详细地讲解了设计模式和编程注意事项.
<批注>:软件工程必备.
项目中必不可少的是测试,测试是一件很麻烦可是必须的事情.掌握比较完善的测试技术有利于项目的完善.<软件测试教程>很完整地对测试技术作了介绍.
<研习周期>:1-2周.
<理论>:对测试技术作了介绍.
<实践>:白盒测试有例程.
<批注>:这本书的内容实际上是从另外两本国外测试书籍搬过来的,虽然有抄袭之嫌,可是抄得很全,测试技术的内容很足,不过测试技术是与时俱进的,有些测试模型都比较旧了,可是原理差异不大,必定要作相关了解.比较乏味,我看的时候很挣扎,哈欠连天:-(.
以上是为计算机图形学3D引擎编程作准备,然而3D引擎一贯离不开游戏,或者说,游戏是目前最能直接实现3D计算机图形学技术价值的体现.因此<电脑游戏设计>也能够看一看.
<研习周期>:随便看看.
<理论>:游戏的介绍.
<实践>:少许游戏逻辑算法.
<批注>:实话说这本书就是这里抄一点那里抄一点而后一捆就成一本书了(中国IT出版物的癖病,通常XXX主编的书基本都是这样),不过抄得很好,对于电脑游戏的入门颇有帮助.
而后是必不可少的数学基础<高等数学(上)(下)>.
<研习周期>:1-3个月.
<理论>:介绍导数,微分等高等数学知识.
<批注>:大学教材读本,如今看起来可能不晓得它上面写的像蚯蚓同样的东西是干什么的,顶个屁用,可是随着3D图形学的深刻,必定会以为它们颇有用,特别到高级部分,不懂实在不行.我手头的是第五版,相信通过五代的演变,第六版会更好,当之无愧是学3D计算机图形学需了解,考研需翻烂的东西.
好了,下面是本篇的压轴,经典中的经典,一个好的程序员必备的床前读物,众所周知的<Code Complete>,隆重登场!
<研习周期>:睡前必读.
<理论>:软件工程等理论详细介绍.
<实践>:代码分析,构陷,要害,效率等分析.
<批注>:经典之王,若是你想成为高级程序员,这本书必不可少.这本书十年如一日地放在我床头,睡前都看一下.
磕磕碰碰,终于走到这里了,回首从开始至今,是一个很长的过程.如今已经有了一个很好的理论和实践基础,好吧,从如今开始, 正式开始进入计算机图形的研究.
_____________________________________________________
基本图形API学习||||||||||||||||||||||||初级||||||||||||||||||||||||||||||
_____________________________________________________
之学习C++,最主要的缘由是它有很完善的图形接口和构架接口.
什么都是按部就班的,3D计算机图形学是计算机图形学里的一个中层分支,先从简单的比较刺激眼球开始.
如今的状况是,不认识什么是Win32,什么是MFC,C++编程仍是命令行的.
可是,这里并不想再专门弄一本书详细学习这些接口.个人意见是,API仅是供人使用的工具而已,专于这些东西是不能带来任何自豪感的.
因此,综上所述,无疑,此时<Windows游戏编程大师技巧>是最佳读物.
<研习周期>:1-3个月.
<理论>:Win32编程及Windows游戏编程算法介绍,逐步呈现一个游戏引擎.
<实践>:每章都有完整的游戏代码,实现游戏引擎.
<重写周期>:1个月.
<批注>:经典之四,大师级做品,代码必定要重写过,封装成本身的游戏.
<项目2>:如今的知识已经足够开始一个游戏的编写,研习<Windows游戏编程大师技巧>以后写一个游戏简直垂手可得,这个游戏项目周期应该在1个月以上,代码量应该超过一万行,至少应该实现游戏可玩性,以实现初级人工智能为佳,可尝试3D游戏的构建.
若是此时对游戏里面的人工智能编程感兴趣,渴望更高级的内容,<游戏编程---人机博弈>和<游戏编程中的人工智能>是我认为很经典的游戏人工智能读物,它们重在算法,原本应该放在中级里的,可是我想如今的知识已经足够应付它们,而且对眼前的方向和发展颇有利,在这里兴趣可能会产生分歧,人工智能与3D计算机图形学都是大方向,虽然这里不打算再深刻人工智能,亦可尝试着向这个领域进行深刻摸索.
<研习周期>:1-2个月.
<理论>:各类搜索树的算法.
<实践>:以一个象棋游戏为实例,实现各类人工智能搜索引擎算法.
<重写周期>:1个月.
<批注>:经典书籍,这本书写得浅显易懂,我正准备着手重写成一个象棋游戏.
<研习周期>:1-3个月.
<理论>:遗传算法和神经网络算法的介绍.
<实践>:每章都有实例.
<批注>:经典书籍,本书把遗传算法和神经网络算法运用到人工智能算法中去.
接下来<Visual C++ 数字图像处理开发入门与编程实践>正好是Windows编程及图形的后续.
<研习周期>:1-3个月.
<理论>:MFC,GUI及各类图像技术很详尽的介绍.
<实践>:每项技术都有相关实例.
<批注>:经典之七,这本书放在这里可能有点难,也算初级的一个大门槛,不过它介绍得很详细,实例也很好,代码必定要实现过一遍.这是Win32图形图像的入门攻略本.
以上所学习的都是2D图形学内容,相信此时必定对3D有所期待.老规矩,先来看得见的.
C++平台有两种3D SDK用得最为普遍.第一个是DirectX,另外一个是OpenGL.
前者效果较好,后者移植性较好.
可是考虑到DirectX的文献较多,而且我相信大多数中国人喜欢看中文的.<DirectX 9.0 3D游戏开发编程基础>是公认最好的入门书籍.虽然DirectX 9.0在国外很落伍了,可是这里毕竟须要考虑到国内市场,何况学习它们,只做为一种参照,仅此而已.这里不得不提的是Web即将进入Web GL时代,若是须要从事Web 3D开发,比较适合仍是OpenGL.
<研习周期>:1-7天.
<理论>:基本图形数学理论介绍,DirectX9.0 API介绍.
<实践>:每章都有内容实例.
<批注>:这本书实际就是把DirectX 9.0的Sample抄一遍,有些数学方法说得很侈谈,不知道是否是翻译缘由,像应付了事那种,很让人火大,相信学了3D计算机图形学再回头看这本书的人都会有此类心得体会.这本书实际上我是最近才买的,看得漫不经心,不过仍是...但是...可是只花2天时间就看完了.
这本书介绍的东西是远远不够的,要深刻学习D3D最好的方式是从SDK的Sample入手,这期间必定要熟悉Shader(HLSL),了解DX的相关封装环境,因为据说(DX10我尚未作很深刻的了解,只能据说)DX10已经抛弃了固定流水线采用纯Shader方式,因此要很好的使用D3D,Shader很重要,固<Shaders for Game Programmers and Artists>此时可能会颇有帮助.这里须要说明的是事实上DirectX的中文书不多,既然要好书,英文读物是必不可少的,因此下面两本都是英文的,而且越下去英文越会占据主导地位,不能把眼光仅局限于国内,不是么?
<批注>:这本书我还没看,不过据说很好,就先放上来了,等我看完再补上评论好了:-).
这时候可能已经对3D充满激情,迫切想开发本身的3D做品了,而游戏是此时最直接的表达方式,然而开发一个好的3D游戏须要一个好的3D游戏引擎支持.好的,<3D Game Programming All In One>能够引领前进的路.也是熟悉游戏引擎开发游戏的最好方式.
<研习周期>:1-2个月.
<理论>:游戏开发的细节介绍.
<实践>:使用Torque引擎开发一款游戏.
<重写周期>:1个月.
<批注>:做者是著名游戏引擎Torque的开发者,它手把手地指引读者使用Torque开发成一款3D游戏.实话说,这本书我没看完,不过写得很好,很适合熟悉使用游戏引擎开发游戏.代码最好重写.
到这里,计算机图形学的基础知识已经了解得八八九九,3D计算机图形学也了解皮毛,下面将进入到中级阶段的研习.
_____________________________________________________
算法是程序的灵魂||||||||||||||||||||||||中级||||||||||||||||||||||||||||||
_____________________________________________________
一流企业卖文化,二流企业卖品牌,三流企业卖产品.同理可证,人亦如此.上面学习的满是他人写好的接口,若是单晓得使用,那谈不上什么值得骄傲的资本.要成为大师,须要了解更深层次的东西.下面将深刻3D图形学底层算法中去.<3D游戏编程大师技巧>是最好的表明.
<研习周期>:1-3个月.
<理论>:3D图形学流水线及3D游戏引擎基础介绍.
<实践>:编写一个完整的软件3D引擎,并加入动画,场景管理等系统.
<重写周期>:3个月.
<批注>:经典之八,与Windows游戏编程大师技巧同样是大师级做品,Alchemy3D算法不少来自此书.此书中文版绝版了,实在是国人的悲哀,不过淘宝上还能够买到.要学习3D,本书必看,代码必定要重写.我手头这本被翻来复去的看,做为办公台读物一点都不为过.
<项目3>:研习完<3D游戏编程大师技巧>,已经能够写出本身的软3D引擎.这个3D引擎应该周期在3个月以上,代码量2万以上,至少实现使用高级语言对<3D游戏编程大师技巧>的封装,渲染同屏2万面FPS30以上,实现3D流水线,以实现场景管理,动画系统,粒子系统,地形系统,代码量在10万以上为佳,最好能在保留高效率的前提下对光栅化进行DirectX或OpenGL式扩展,完成整个DirectX或OpenGL3D流水线及渲染功能,如:纹理寻址模式等,引擎应以效率为最优先,可以使用C与汇编进行底层编写.
这里提供两条线路,
Windows线路:可以使用C++进行封装,operator关键字对于3D数学基本运算颇有用.
Web线路:首推Flash,可以使用Alchemy技术,一边使用C,而后在ActionScript3.0进行封装.
参考引擎:Alchemy3D(除此以外我找不到任何参考引擎了:-)).
这期间,可能用到也必须用到一些数学算法,因此<3D游戏与计算机图形学中的数学方法>颇有用.
<研习周期>:1-2个星期.
<理论>:如书名.
<批注>:成为3D大师不得手头一本的书.书很薄,可是设计到不少数学知识,众所周知数学算法是很麻烦的,要理解可能要看好久,不过必定要理解,我那本多是盗版的,错别字不少,很让人火大,可是仍是被我摸得不少页都发黄了,封面一半不见了.
在上面全部文献我都尽量选择中文或中文翻译书籍,但随着内容的深刻,国内文献会愈来愈少,至此,我以为国内的技术已经没法遇上潮流.因此下面所有或大部分将是英文读本,要掌握顶尖技术,就要学会适应全英文的环境,好吧,如今已经具有开发3D软引擎的能力,可是目光不能仅此而已.要提高本身能力水平,从扩展3D引擎开始.而游戏是实现3D引擎的最直接方式.好的,<3D Game Engine Programming>将展现这一切.
<研习周期>:1-3个月.
<理论>:游戏引擎渲染,动画,网络,AI,场景管理等介绍.
<实践>:编写一个游戏引擎的各类细节.
<重写周期>:3个月.
<批注>:经典之九,游戏的巅峰书籍了,游戏编程大师必经之路.,国内可能买不到这本书,不过能够看电子版的,电驴上能够找到256MB的读本,不过那下载速度...我下了好久...好久,而后800多页所有打印出来了.
<项目4>:开发一个本身的3D游戏引擎,相信这是很简单的事情.这个3D游戏引擎项目可找人合做开发,应该至少代码量在10万行以上,至少实现渲染,动画,网络,AI,场景管理等功能,以实现编辑器(场景编辑器,AI编辑器,人物编辑器等)为佳,最好实现高效率,高扩展性(可对DirectX,OpenGL对接).
也能够选择对<项目3>进行扩充,可是比较推荐的仍是使用硬件加速,图形效率方面单靠CPU是没法承受太多的考验的,GPU是引擎可用性的有力保证.
3D游戏引擎可能须要多种导入格式及动画系统,这时候<Focus On 3D Models>最为适合.
<研习周期>:工具书籍.
<理论>:介绍各类模型格式和动画算法.
<实践>:每种模型都有解析库.
<批注>:页数很少,电子版电驴上有.各类骨骼各类动画(骨骼蒙皮,渐变等)包罗万象,标准版模型导入库全攻略.
3D游戏引擎也可能须要本身的地形系统.因此<Focus On 3D Terrain Programming>也颇有用.
<研习周期>:1-2周.
<理论>:介绍地形高位图,LOD,纹理等算法.
<实践>:各类地形算法一一实现.
<重写周期>:1周.
<批注>:页数很少,也很容易找到电子版.从地形高位图到地形光照等都包罗万象,标准版地形引擎手册.
以上对3D计算机图形学的了解都是实践性,可是要真正在3D计算机图形学里游刃有余,则须要深厚的理论作基石.如今已经有了很好的实践以后再去理解纯理论的教科书读本<3D计算机图形学>就会发觉不那么生涩了.
<研习周期>:1-3月,床前读物.
<理论>:3D计算机图形学完整的理论知识.
<批注>:若是攻读过软件硕士学位,修过<高级计算机图形学>课程或者攻读过博士学位,研讨过<图形图像处理>方向,也许会了解这本书,不过我相信那时候是用英文版的,因此这本全中文版的会好看一些.我手头这本很不幸也是中文的,由此可证我很喜欢中文...个人床前读物之二,没得说的,必看.
走到这里的人,想必已经对3D计算机图形学有比较深刻的了解,无论是实践仍是理论都已经很充足.下面迎来的将是图形领域的高级领域.这些领域可能已经超过程序的范畴,既是纯技术的东西,这里可能会有一些难度,可是如今对于应经拥有1个游戏,3个引擎开发经验的本身来讲,这已经不是最困难的考验了.
_____________________________________________________
技术的考验||||||||||||||||||||||||高级||||||||||||||||||||||||||||||
_____________________________________________________
就如今的能力来讲,也许单纯的编程并不能知足本身的求知欲了.所幸3D计算机图形学并不是只局限于软件编程,要精通3D计算机图形学,硬件也是很必要的.而图形处理硬件的表明是什么?GPU固然是首当其冲.<GPU Gems>很好的诠释了这点.
<研习周期>:1-2年.
<理论>:对GPU的挖掘和不少新技术的介绍.
<批注>:最后的经典书籍(不能不经典的经典),GPU Gems目前总共有三本,Nvdia及业界精英编写.能够说每一本都是技术的革新.电子版电驴3本都有下.我就不一一说明了,可能难度会很高,最好的方式是能找到一个伙伴一块儿讨论研习.
到达这里的标志是,可能会出现一种很奇怪的现象:网络无论用了.本来本身遇到的问题均可以在网上找到合理的解释,可是如今却搜不到了.接下来的东西都是研讨性的,零散的.攻读过博士学位的人都知道,这就如博士课程通常,学校的课程是其次,研发是主导.就像在某一领域的顶峰,不少东西都须要本身来作,本身来思考.
(转载请注明出处:Copyright 2009(C)怀念从前,zerO3D.cn)