[F&Q:How To Learn Computer Graphic]如何学习计算机图形学

本文开篇第一句话我觉得应该是:如果我有错,还希望各位朋友指证。我既不是图形学教授,也谈不上专业从事CG工作多么的富有经验。我只是一个觉得自己刚刚入门的初学者而已。很多人问我问题,但是很抱歉,你们的许多问题我实在没有时间一个一个的解释,我有自己的学业与工作,一周除了学校的学习还要把其它所有的时间都放在CG的学习上,包括写程序看论文看书,所以到现在,游戏基本上不会玩,连个女朋友都没有呵呵,因为,实在没有时间。

Q:计算机图形学是什么?

A:计算机图形学Computer Graphic是一门交叉学科,可以说与娱乐业的兴起有相当大的关联。它的主要目的是在现有计算条件下,根据实际需求进行数字图象的绘制。

Q:我在学CG前要有哪些基础学科的知识呢?

A:具体牵涉到的学科,很大程度上与你将来希望从事哪方面的工作,甚至和你想达到的层次息息相关。最基本的应该包括,微积分,数值分析,线性代数,离散数学,几何光学,以及一些绘图艺术知识,比如素描,电影摄影技术等。

Q:CG究竟包括哪些内容?

A:归纳起来:架构Architecture、渲染Rendering、物理Physics,而且三者之间交叉的成分很多。做物理的不可能完全不懂得渲染技术,弄渲染技术的不可能不对架构不熟悉。架构主要是软件方面,包括渲染工具、设计工具、游戏引擎的架构设计等。渲染包括光照理论,材质理论,表现手法等。物理包括动力学方面,比如流体模拟,角色动画等等。

Q:我是个学工科的,为什么要求我学习摄影技术等艺术方面的知识呢?

A:CG并不完全为了工程模拟,也为了非真实渲染,比如卡通动画等。一味的强调“完全基于物理”是一种偏激与不负责任的做法,因为,我们不仅办不到,也不会按照这个理论走下去。你能说梵高的画比达芬奇的好或者是差么?它们根本就不是一个流派,所以,无法比较。学习艺术知识是为了让你更好的理解技术的意义以及各自适用的范围。

Q:我是个学艺术的,我害怕数学物理,甚至包括英语,我能学好么?

A:如果你是个传统画家,那么,计算机对于你来说,很有可能除了看电影、听音乐、玩游戏、逛易趣淘宝、不小心看到我这篇F&Q之外没什么作用。但是如果你从事的是CG行业,并且如果想提高水平,我给你的答案就是:不可能。

Q:英语很重要么?我很怕,我喜欢用中文的软件,看中文的书籍。

A:首先我们要知道,中国的CG水平很差,欧美是这个星球上最强的。第二我们要看到,欧洲非英语国家受过良好教育的人群中,英语几乎都很好。相比德语、法语等语言,英语很简单。计算机是美国人发明的,CG的资料差不多几乎都是用英文书写的,包括网页、论坛、讨论组、书籍、论文。英语是这个行业的通用语言,重要性自然不用多提。

Q:我的英语就是不好,怎么办?

A:戒骄戒躁,多看多读多记。如果你天天看论文和英文书籍,考四六级的时候什么单词都没有背诵过什么题目都没有做过,一样能够高分通过。

Q:我应该学编程么?

A:是的,最少要会除了C++之外的另外一门语言,Python最好。事实上,一个成熟掌握3dsmax、maya等工具的工作人员都会写一些脚本程序;一个精通算法与编程的CG技术人员都会使用3dsmax、maya、blender等工具。你希望自己处处被别人牵着走么?

Q:我应该从何种建模工具开始学?3dsmax还是maya?

A:根据行业。3dsmax用于游戏中比较多,比如你把《鬼武者3》打穿后,Credit就会提到3dsmax,同样,还有《翡翠帝国》等。如果你是做CG动画的,那么无可例外的,从Maya开始吧。

Q:我看到人家做的各种各样很绚丽的效果很羡慕,有什么快速取得成就的方法么?

A:这要根据你学习和兴趣的侧重点。如果你是思维活跃并且喜欢用软件的话,那么多看教程,多看别人的作品,自己学习,就可以提高了。如果你是思维严谨不喜欢走捷径(比如我),那么最好还是先打消这些念头,先把noise读懂了再说。

Q:我要看书,看哪些好呢?

A:可以先找本《Fundamentals of Computer Graphics》或者类似的书籍先了解一下,然后根据你的兴趣,选择接下来的学习内容。

Q:OpenGL和D3D我学哪个呢?

A:它们本质上都是GDI的接口。如果想从事游戏行业,那么D3D是不可避免的。如果你想研究图形学本生,那么GL比较方面。当然,两者都掌握最好。

Q:CG行业中的艺术家和研究人员最大的区别是什么?

A:区别是,前者用手头的工具创造无限可能,后者用理论以及代码为艺术家提供创造无限可能的工具。

Q:CG编程中有哪些常用的工具呢?

A:由于CG编程是一门和性能密切相关的技术,不同于商业软件,所以你必须掌握多线程技术。此外,处理各种图形格式也是家常便饭,所以我们需要FreeImage、CxImage、OpenEXR等库。用C++处理3D模型的话,我们有lib3ds、COLLADA DOM,前者处理经典的3DS场景格式,后者处理COLLADA XML描述文件。

Q:我想出国学习,我应该去哪里呢?

A:各种条件都好的话,首选美国。当然,德国法国也不错。欧洲的学者和美国学者联系很密切,很多美国的学者都是德国人。

Q:最后,有什么我应该时刻记住的么?

A:抓紧时间,努力学习。

posted @ 2007-12-28 14:55 Bo Schwarzstein 阅读(578) 评论(5)  编辑 收藏

  回复  引用  查看    
#1楼 2007-12-28 18:51 | Len3d      
很全面了。。。
  回复  引用    
#2楼 2007-12-29 13:59 | Saul [未注册用户]
你的blog實在是太棒了!
  回复  引用    
#3楼 2008-01-02 17:57 | lion.chen [未注册用户]
科技改变生活!NVIDIA Tesla深入解析

CPU和操作系统是现代PC的动力提供者,并为用户解决了数值计算这个有时困难到令人无法相信的问题。在你使用电脑,一边听音乐、浏览网站、一边阅读电子邮件的同时,操作系统会跟踪记录你的所有活动,并与后台交流信息、将你使用到的信息组织起来,尽管CPU一次只能执行多个独立任务中的一个,但是由于其运行速度足够快,所以这一系列任务看上去是同时执行。而对新一代多核CPU来说,每个核心都可以真正同时的执行更多的任务。不同的计算类型决定了GPU的架构更加适合通用计算。

另外一种不同类型的计算问题——并行计算,却一直局限在大型服务器集群和超型计算机领域。标准CPU架构的特长是管理多个离散的任务,但是有些任务能够被细分为多个更小的单位并且可以被并行化,CPU在处理这些任务的时候并没有突出的性能优势,但这恰恰就正好是适合GPU解决的问题类型。

对于快速、廉价的解决这一类问题,GPU有着相当大的潜力可以发挥。GPU计算可以使得PC和工作站具有超级计算的能力,并且可以扩展服务器集群的处理范围,以解决先前CPU集群不能处理的问题。

GPU的浮点运算能力和CPU不在一个数量级

GPU计算的目标是充分利用GPU先天的巨大计算能力,以解决在高性能计算领域内许多相当困难但很重要的问题。

在刚刚过去的几年中,图形处理单元已经发展为具有强劲马力的计算设备。由于具有多达128个的处理单元以及相当高的存储带宽,为GPU提供了多到令人难以置信的计算资源,在图形或非图形处理中都是如此。

由于GPU在架构上就是为计算密集型处理而设计,高强度并行计算—这本身也是图像渲染的需要。因此在GPU中,更多的晶体管被用于数据处理而不是数据存储与流控制。

GPU特别适合处理那些可以具有较高算法强度且可以被表达为并行数据计算的问题,换句话说,同样的程序如果通过细分成众多数据元素的并行执行,会具有较高的算术操作与存储操作之比。

CPU的处理方式是使用一个单独的程序顺序的循环处理数据,GPU则是进行数据的并行处理,它把数据元素映射、规划为数以千计的并行处理线程。很多应用程序都有一个较大的数据集,就可以通过数据并行编程模式来加速他们的执行。这些应用程序包括:

·地震模拟

·计算生物学

·选择商业风险计算

·医学成像

·模式识别

·信号处理

·物理仿真

NVIDIA Tesla:GPU计算解决方案

NVIDIA提供了一套完整的GPU计算产品线,包括系统产品和全新的开发环境。产品线的中心是基于GeForce 8系列架构的GPU,以及CUDA开发工具包和C编译器。

G80特殊的缓存式架构进一步提高了ALU浮点运算效能

·NVIDIA Tesla GPU将给PC和工作站带来更高计算性能;

·NVIDIA Tesla GPU 桌面超级计算机配合标准工作站可以提供令人难以置信的高强度计算性能;

·NVIDIA Tesla GPU 在一个1U形式的装置内集成了高密度的GPU核心;

·NVIDIA CUDA开发环境包含了快速傅氏变换、BLAS 算法。

·NVIDIA 软件开发包提供了文档以及编程样例。

NVIDIA计算解决方案设计上与现行的IT基础结构做到了无缝衔接,遵守下列的工业标准:

· C 编译器,提供一个为令人熟悉的、支持度很好的开发环境

· 支持独立128bit的IEEE 754单精度浮点单元,和CPU浮点单元一样支持各种高级的浮点操作。

· 可以兼容于Intel/AMD的x86 32-bit和64-bit微处理器架构以及Microsoft or Linux 的操作系统。

·具有PCI Express总线,最大数据传输的上升沿和下降沿可以传送达到最大4 GBps的传输率。

·标准工业形式,同时支持桌面式和架装式配置

· 支持NVIDIA 统一驱动架构

Tesla C870 GPU 特性:

新一代NVIDIA Tesla C870 GPU 专为计算程序所设计,板载级GPU计算产品没有显示接口。处理器核心频率、显存配置以及计算特性都与图形卡产品发生了变化。

GPU计算产品虽然没有显示接口,但是保留了完整的OpenGL and DirectX 功能支持,和NVIDIA Quadro graphics boards 以及NVIDIA GeForce GPU, 完全相同,所以除了CUDA开发工具包以外,GPU计算产品也可以支持基于图形API的程序。


·一个GPU

·518 gigaflops

·1.5 GB专用存储器

· 通过一个PCI Express x16插槽支持完整长度、双槽的产品

Tesla D870 特性:

NVIDIA Tesla GPU桌面超级计算机提供高强度的计算性能,具有工作站以及灵活的架式服务器解决方案。作为一个工作站的附属,每个Tesla D870提供两个GPU核心。也可以选择两套桌面系统,通过架式组合成一个3U配置。 未来版本的桌面系统可以每个系统提供4个GPU核心或者由3U架式系统提供8个GPU。


· 双GPU

· 1.036 teraflops

· 3 GB系统存储器

· 和主机通过低功率的PCI Express x8 or x16适配器相连接

·可选择的机架固定组件

Tesla GPU服务器S870特性:

NVIDIA Tesla GPU服务器具有顶级的计算性能,NVIDIA将提供一个1U的GPU计算服务器。每个1U设备提供4到8个GPU,在获得最高性能的同时降低功耗。NVIDIA Tesla服务器产品的产品配置也将十分灵活,可以分别满足最大化性能或者低功耗要求等不同的应用场合。最初的服务器提供4个GEFORCE8系列GPU,消耗550瓦的功率。


· 四个GPU

· 2.072 teraflops

· 6 GB系统存储器

· 和主机通过低功率的PCI Express x8 or x16适配卡相连接

· 标准配置:一个PCI Express连接器驱动四个GPU

· 可选配置:两个PCI Express连接器,每个驱动2个GPU


NVIDIA CUDA GPU计算软件

NVIDIA CUDA技术基于一种全新的用于开拓GPU运算性能的软件架构,CUDA程序执行时,GPU作为主CPU的协处理器工作,GPU可以处理大量的并行信息,同时CPU组织、解释、与后台交流要处理的信息。应用程序的计算密集型部分要被执行很多次,每次由主应用程序提交的不同数据,经过编译后由GPU并行执行。

CUDA辅助CPU进行通用运算功能的示意图

CUDA包含3个主要的组件,可以高效执行并行程序的GEFORCE8 系列GPU;一个可访问GPU上并行计算资源的编译器,以及一个计算专用的运行时驱动。


CUDA的核心部分是专门开发的C编译器。首开先河的编程环境简化了并行程序的编码。C语言对大多数开发人员都十分熟悉的,可以使编程人员专注于开发并行程序而不是处理负责的图形API。为了简化开发,CUDA的C编译器允许程序员将CPU 和 GPU的代码混合记录到一个程序文件中。一些简单代码被增加到的C程序中,通知CUDA编译器哪些函数由CPU处理,哪些为GPU编译。然后程序被CUDA编译器编译,而CPU处理的代码则由开发者的标准C编译器编。


CUDA的计算流程开发人员使用一种全新的编程模式将并行数据映射、安排到GPU中。CUDA程序则把要处理的数据细分成更小的区块,然后并行的执行它们。这种编程模式允许开发人员只需对GPU编程一次,无论是包含多处理器的GPU产品或是低成本、处理器数量较少的产品。当GPU计算程序运行的时候,开发者只是需要在主CPU上运行程序,CUDA驱动会自动在GPU上载入和执行程序。主机端程序可以通过高速的PCI Express总线与GPU进行信息交互。数据的传输、GPU运算功能的启动以及其它一些CPU 和GPU交互都可以通过调用专门的运行时驱动中的专门操作来完成。这些高级操作把程序员从手动管理GPU运算资源中解放出来。对大规模数据进行解译与处理的能力处于计算科学的前沿领域,通过可以广泛普及CUDA的开发工具,任何程序都可以释放GPU的计算力量。通过CUDA软件和Tesla GPU的结合,开发者现在能够在桌面平台进行大规模超级计算,同时也可以戏剧性的增加服务器集群的处理能力。
如果您对NVIDIA Tesla 感兴趣,请浏览NVIDIA 全球网站www.nvidia.com/tesla或上海宙盟官方网站www.syzygia.cn/tesla.htm,网站上有关于NVIDIA Tesla 的产品介绍,功能特点,规格比较,技术规格的详细描述,如果您有这方面的需求希望购置此类产品,可以联系我们,我们会提供更详细的产品资料,包括具体的产品资料,和CUDA配套测试程序及源代码资料给您。谢谢!

==================================================================================================

NVIDIA 丽台(Leadtek)中国总代理: 上海宙盟数码技术有限公司
021-51879779




  回复  引用    
#4楼 2008-01-10 22:56 | Len_3d [未注册用户]
楼上的素广告撒?……发在blog上貌似不合适……
  回复  引用    
#5楼 2008-07-03 13:23 | konfuss [未注册用户]
好累

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-06-19 22:27 编辑过


相关链接: