|
一台电脑,一根网线,能学会世界上所有东西! 昨天晚上我学习叠衬衫了! OpenGL和d3d都是好剑,但是没有图形学这门内功秘籍的基础,也只能当菜刀来用; 反之,有了这内功秘籍的深厚基础,则草木竹石皆可为剑,剑锋所指,所向披靡! 杨过提起右首第一柄剑,只见剑下的石上刻有两行小字:“凌厉刚猛,无坚不摧,弱冠前以之与河朔群雄争锋。” 再看那剑时,见长约四尺,青光闪闪,的是利器。他将剑放回原处,拿起长条石片,见石片下的青石上也刻有两行小字:“紫薇软剑,三十岁前所用,误伤义士不祥,乃弃之深谷。” 杨过心想:“这里少了一把剑,原来是给他抛弃了,不知如何误伤义士,这故事多半永远无人知晓了。”出了一会神,再伸手去拿第二柄剑,只提起数尺,呛啷一声,竟然脱手掉下,在石上一碰,火花四溅,不禁吓了一跳。 原来那剑黑黝黝的毫无异状,却是沉重之极,三尺多长的一把剑,重量竟自不下七八十斤,比之战阵上最沉重的金刀大就尤重数倍。杨过提起时如何想得到,出乎不意的手上一沉,便拿捏不住。于是再俯身拿起,这次有了防备,拿起七八十斤的重物自是不当一回事。见那剑两边剑锋都是钝口,剑尖更圆圆的似是个半球,心想:“此剑如此沉重,又怎能使得灵便?何况剑尖剑锋都不开口,也算得奇了。”看剑下的石刻时,见两行小字道:“重剑无锋,大巧不工。四十岁前恃之横行天下。” 杨过喃喃念着“重剑无锋,大巧不工”八字,心中似有所悟,但想世间剑术,不论哪一门哪一派的变化如何不同,总以轻灵迅疾为尚,这柄重剑不知怎生使法,想怀昔贤,不禁神驰久之。 过了良久,才放下重剑,去取第三柄剑,这一次又上了个当。他只道这剑定然犹重前剑,因此提剑时力运左臂。哪知拿在手里却轻飘飘的浑似无物,凝神一看,原来是柄木剑,年深日久,剑身剑柄均已腐朽,但见剑下的石刻道:“四十岁后,不滞于物,草木竹石均可为剑。自此精修,渐进于无剑胜有剑之境。”
3D图形学的学习策略 1.以我现在的水平观之,3D图形学分3大块的学习内容: a.空间几何数学:空间几何变换,加速算法,多边形技术,曲线和曲面,相交测试,碰撞测试。 b.光照着色系统:光照,纹理贴图,高级象素着色光照,艺术性渲染. c.程序技术性应用:公告板,精灵,天空盒,体绘制,材质系统,场景图,渲染队列. 2.在实际学习过程中,3个部分相互制约,故不能单方面突进,应保持一种平衡发展,使得相互促进,深化理解,达到比较流畅的学习曲线. 3.相对重要性以a,b,c序减(时间将无情淘汰现有的程序技术性应用),深刻掌握图形学基础才是王道。 4.3个部分都略有小成后,大量快速阅读网上各方面的杂家资料,应用基础知识去分析理解,在短时间内掌握各种程序性技巧。 5.再次通观全局基础,遍览所有细节,以图有更深的理解.
如何学习API (OpenGL/Direct3D等)
最近很多人在问,我该如何学习OpenGL?我学完了OpenGL了,该怎么用?我想在回答这些类似的问题以前先和大家谈谈怎么学习API的方法,或许谈完了,我就不需要回答了。 首先,我认为API是工具,不是本质,OpenGL/Direct3D的本质是图形学,而不是OpenGL/Direct3D的本身,API的本身只是一些Interface而已.如果你明白图形学的原理.那么你很容易这些接口的作用,以及为什么要有这些接口的存在.所以,我要说的第一点是:你要学习3D编程,不是学会了OpenGL/Direct3D就可以了。甚至会不会这些API都不是那么的重要(虽然这么说,或许很多人不太赞同).最重要的,最根本的是,你要明白这些API背后的图形学的原理---因为那才是根本中的根本. 下面我来介绍我对API学习的看法. 我认为API的学习有两种方法:一是正向学习.二是反向学习. 一:正向学习,所谓的正向学习,就是学习API的本身.我觉得这种方法是一种Brute Force行为.不是很好.我们只要看看API的特性,有那些部分.就可以了。比如学习Direct3D的时候,我们要知道它如何初始化,以及它和操作系统的结合.它在Direct3D8里引入了VS/PS.最后就是创建一个Direct3D应用的步骤和方法.这些就足够了。要不然.Direct3D那么多的函数,一个几十个参数。每一个都会要了我的命. 正向学习的第二个作用就是你在熟悉了图形学和大概了解了API后,有空就来看看API的细节,然后思索一下API里提供的一些特性对你的程序有什么作用.比如Direct3D里的Two Side Stencil.OpenGL里的TextureCombine等。 二:逆向学习.这是根本的方法,到了这一步,你就可以真正的算是图形学入门了。这要求你要有一定的图形学基础.比如,你现在开始做一个demo.你预计你的demo里有一堆眩眩的效果,当然你也要明白你的这些眩眩的效果要怎么实现的.然后你去找API里对应的功能,我想如果你的想法正常,一般的功能在Direct3D/OpenGL里应该都会有的.当然你也会碰到你想要的功能在这些API里没有,但是这不重要,重要的是你又学到新东西了---这个特性在XX API里不支持^_^. 通常我是采用先正向,再逆向,同时再进行正向学习的方法.希望以上的建议,对各位初学者有一定的帮助. 关于计算机图形学的学习 原创 FatGarfield
关于计算机图形学的学习 注意: 本文尽量避免理论化的描述,试图用最通俗的语言介绍一下计算机图形学的学习,以及一些参考书目和网络资源; 本文不涉及对概念的定义,以免陷入学术讨论之中 本文是作者学习计算机图形学的体会,如果有不同的意见,请不要攻击和漫骂
本文合适的题目应当是:白话说学计算机图形学?
1. 引言 什么是计算机图形学? 本文尽量避免给它做严格的定义,但是通常来说,计算机图形学是数字图象处理的逆过程,这只是一个不确切的定义,后面我们会看到,实际上,计算机图形学、数字图象处理和计算机视觉在很多地方的区别不是非常清晰的,很多概念是相通的。 计算机图形学是用计算机来画东西的学科,数字图象处理是把外界获得的图象用计算机进行处理的学科。在法国,图形图象是一门课程。 如何学习计算机图形学呢?除了计算机图形学的基础知识以外,你还需要有以下的知识,你懂的越多,当然做的越好。 * 英语, 你一定要把英语学好,如果你想学习计算机图形学的话,尽量看英文的书籍和资料 * 数学, 计算机图形学里面的数学用的比较多,,我们可以列举一些常用的: 高等数学,数值分析,微分几何,拓扑,概率, 插值理论,(偏)微分方程… * 物理, 如果你要进行基于物理的建模,一些物理理论是要学习的: 力学(运动学,动力学,流体力学…),光学,有限元… * 编程语言: C或C++是计算机图形学最通用的‘普通话’, * 数据结构: 你需要数据结构来描述你的图形对象,除了通用的链表、树等数据结构外,图形学还有自己特殊的数据结构 * 其他类别: 有的时候你需要其他学科的知识,根据你的需要去学习吧
上面列举的不是你必须学习的东西,而是计算机图形学可能会用到的东西,一定要记住,不要指望通过一本教材就学会计算机图形学,它比你想象的要复杂的多。
2. 图形学的问题 每个学科都有自己学科的特定问题,图形学要解决的是如何画出图来,得到需要的效果,当然这是图形学最大的一个问题。
在开始学习计算机图形学的时候,找一本简单的书看,对计算机图形学有个大概的认识,你就可以开始图形学之旅了:
OpenGL rogramming Guide: The Official Guide to Learning OpenGL, Version 1.4, Fourth Edition OpenGL SuperBible (3rd Edition)
是比较好的学习计算机图形学的入门教材,在练中去学,一开始就去啃
Foley的 Computer Graphics: rinciples and ractice, Second Edition in C 不是好主意,会看的一头雾水,一本什么都讲的书的结果往往是什么都没讲清楚。 当你把OpenGL的基本内容掌握之后,你对图形学就有了大概的了解了
那么下面你可以来学习一下计算机图形学的数据结构和算法,下面的书比较适合 Joseph O'Rourke 的Computational Geometry in C,书里面有C的源代码,讲述简单,清晰,适合程序员学习
总的来说,计算机图形学涉及到2大部分:建模和渲染 2.1建模
你想画一个东西,首先要有它的几何模型,那么这个几何模型从什么地方来呢?下面的书很不错的: Gerald Farin 的Curves and Surfaces for CAGD: A ractical Guide 这本书就有一点的难度了,呵呵,要努力看啊
这本书算是CAGD (计算机辅助几何设计)的经典图书,CAGD方面的全貌,还有2本很好的讲述曲面的书Bezier和Nurbs的书
Les A. iegl, Wayne Tiller 的The Nurbs Book 书里面有NURBS曲线、曲面的程序伪代码,很容易改成C的,书讲的通俗、易懂,但是你要有耐心看的:)
曲线与曲面的数学 这本书是法国人写的中文翻译版,里面还有Bezie本人写的序J,翻译的很不错的,看了你就掌握Bezier曲面技术了
//另外一些你想知道的事情:其他的造型方式-开始 注意:在后面会有这样的章节,标明 //另外一些你想知道的事情:其他的造型方式-开始 //另外一些你想知道的事情:其他的造型方式-结束 里面是我认为的一些高级话题,跳过他们不影响你学习计算机图形学,但是要学好就要注意了,呵呵 还有其他的一些造型技术,比如: 隐式曲面(Implicit Surface)的造型: 就是用函数形式为F( x ,y ,z ) = 0的曲面进行造型,这样的造型技术适合描述动物器官一样的肉乎乎的东西,有2本书推荐大家 Jules Bloomenthal编辑的Introduction to Implicit Surfaces,是一本专著,讲述了Implicit Surface建模型(Modeling),面片化(Polygonization),渲染(Rendering)的问题 Luiz Velho 的 Implicit Objects Computer Graphics 也是一本专著,讲述个更新的一些进展
细分曲面(Subdivision Surface)造型 当用NURBS做造型的时候,曲面拼接是复杂的问题,在动画的时候,可能产生撕裂或者褶皱,Subdivision Surface用来解决这个问题 Joe Warren的Subdivision Methods for Geometric Design: A Constructive Approach就是这方面的专著
从实际物体中得到造型,现在的技术可以用三维扫描仪得到物体表面的点,然后根据这些点把物体的表面计算出来,称为重建(Reconstruction),因为这些技术之在文章中论述,所以我们省略对它的描述
//另外一些你想知道的事情:其他的造型方式-结束
下面还是一个高级话题:)
//另外一些你想知道的事情:光有造型是不够的!-开始 在你的几何模型做好之后,有一些问题需要对这个模型进一步处理,得到适合的模型,当面片很多的时候,或者模型很复杂的时候,需要对几何模型进行简化,才可以满足一些实时绘制的需要,这个技术叫做层次细节(LOD-Level of Detail)。下面的书就是讲这个的: David Luebke编著的 Level of Detail for 3D Graphics //另外一些你想知道的事情:光有造型是不够的!-结束
|
|