计算机图形学学习方法和相关书籍,做游戏,GIS,虚拟现实,三维引擎的都能够看看.
本书參照<<图形学扫盲>> 整理的,原文内容引子: http://www.cppblog.com/lai3d/archive/2008/12/30/70796.html
前言:
以我如今的水平观之,3D图形学分3大块的学习内容:
a.空间几何数学:空间几何变换,加速算法,多边形技术,曲线和曲面,相交測试,碰撞測试。
b.光照着色系统:光照,纹理贴图,高级象素着色光照,艺术性渲染.
c.程序技术性应用:公告板,精灵,天空盒,体绘制,材质系统,场景图,渲染队列.
在实际学习过程中,3个部分相互制约,故不能单方面突进,应保持一种平衡发展,使得相互促进,深化理解,达到比較流畅的学习曲线.相对重要性以a,b,c序减(时间将无情淘汰现有的程序技术性应用),深刻掌握图形学基础才是王道。三个部分都略有小成后,大量高速阅读网上各方面的杂家资料,应用基础知识去分析理解,在短时间内掌握各种程序性技巧。再次通观全局基础,遍览全部细节,以图有更深的理解.
第一部分: 怎样学习API (OpenGL/Direct3D)
首先,我觉得API是工具,不是本质,OpenGL/Direct3D的本质是图形学,而不是OpenGL/Direct3D的本身,API的本身仅仅是一些Interface而已.假设你明确图形学的原理.那么你非常easy这些接口的作用,以及为什么要有这些接口的存在.所以,我要说的第一点是:你要学习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里不支持^_^.
通常我是採用先正向,再逆向,同一时候再进行正向学习的方法.希望以上的建议,对各位刚開始学习的人有一定的帮助.
第二部分: 关于计算机图形学的学习
注意:本文尽量避免理论化的描写叙述,试图用最通俗的语言介绍一下计算机图形学的学习,以及一些參考书目和网络资源;本文不涉及对概念的定义以免陷入学术讨论之中本文是作者学习计算机图形学的体会,假设有不同的意见,请不要攻击和漫骂,本文合适的题目应当是:白话说学计算机图形学?
引言:什么是计算机图形学? 本文尽量避免给它做严格的定义,可是通常来说,计算机图形学是数字图象处理的逆过程,这仅仅是一个不确切的定义,后面我们会看到,实际上,计算机图形学、数字图象处理和计算机视觉在非常多地方的差别不是非常清晰的,非常多概念是相通的。计算机图形学是用计算机来画东西的学科,数字图象处理是把外界获得的图象用计算机进行处理的学科。在法国,图形图象是一门课程。
怎样学习计算机图形学呢?除了计算机图形学的基础知识以外,你还须要有下面的知识,你懂的越多,当然做的越好。 英语, 你一定要把英语学好,假设你想学习计算机图形学的话,尽量看英文的书籍和资料; 数学, 计算机图形学里面的数学用的比較多,,我们能够列举一些经常使用的:高等数学,数值分析,微分几何,拓扑,概率, 插值理论,(偏)微分方程; 物理, 假设你要进行基于物理的建模,一些物理理论是要学习的:力学(运动学,动力学,流体力学…),光学,有限元; 编程语言: C或C++是计算机图形学最通用的‘普通话’; 数据结构:
你须要数据结构来描写叙述你的图形对象,除了通用的链表、树等数据结构外,图形学还有自己特殊的数据结构; 其它类别: 有的时候你须要其它学科的知识,依据你的须要去学习吧
上面列举的不是你必须学习的东西,而是计算机图形学可能会用到的东西,一定要记住,不要指望通过一本教材就学会计算机图形学,它比你想象的要复杂的多。
第三部分: 计算机图形学书籍
每一个学科都有自己学科的特定问题,图形学要解决的是怎样画出图来,得到须要的效果,当然这是图形学最大的一个问题。在開始学习计算机图形学的时候,找一本简单的书看,对计算机图形学有个大概的认识,你就能够開始图形学之旅了:
推荐书目1: 计算机图形学入门教材:
1):OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 1.4, Fourth Edition
2):OpenGL SuperBible (3rd Edition)
推荐书目2: 计算机图形学数据结构和算法:
1):Joseph O'Rourke 的Computational Geometry in C
推荐书目3: 计算机图形学建模书籍:
1):Gerald Farin 的Curves and Surfaces for CAGD: A Practical Guide(这本书算是CAGD (计算机辅助几何设计)的经典图书)
2):Les A. Piegl, Wayne Tiller 的The Nurbs Book(书里面有NURBS曲线、曲面的程序伪代码,非常easy改成C的,书讲的通俗)
3):曲线与曲面的数学(Bezier曲面技术)
4):Introduction to Implicit Surfaces(隐式曲面)
5):Joe Warren的Subdivision Methods for Geometric Design: A Constructive Approach(细分曲面)
6):David Luebke编著的 Level of Detail for 3D Graphics(层次细节)
推荐书目4: 计算机图形学渲染书籍:
1):Andrew Glassner 的An Introduction to Ray tracing (光线追踪)
2):R. Keith Morley, Peter Shirley 的Realistic Ray Tracing, Second Edition
3):Francois X. Sillion的Radiosity and Global Illumination(辐射度)
4):Philip Dutre 的新书Advanced Global Illumination
5):Ian Ashdown的Radiosity: A Programmer's Perspective
6):Henrik Wann Jensen的Realistic Image Synthesis Using Photon Mapping
7):Bruce Gooch, Amy Ashurst Gooch的 Non-Photorealistic Rendering(非真实性图形学)
8):Min Chen 编著的Volume Graphics(体图形学)
9)David Ebert等人的Texturing & Modeling: A Procedural Approach, Third Edition
10)F. Kenton Musgrave号称分形狂(Fractal Mania)
11)Evan Pipho Focus On 3D Models(对于图形学的经常使用模型格式)
12)Trent Polack的 Focus On 3D Terrain Programming (讲地形)
13)Donald H. House 的Cloth Modeling and Animation (讲布料的)
14)Nik Lever的Real-time 3D Character Animation with Visual C++ (讲角色动画的)
15)Richard Parent的 Computer Animation: Algorithms and Techniques(当然是讲动画的啦)
16)David H. Eberly的3D Game Engine Design : A Practical Approach to Real-Time Computer Graphics
17)Alan H. Watt, 3D Computer Graphics (3rd Edition)
18)James D. Foley等人的 Computer Graphics: Principles and Practice in C (2nd Edition) ,这本圣经没事的时候再看吧,呵呵
第四部分:
资料哪里下载呢,我的csdn资源里面就有,我会陆续上传的,大家也能够在网上搜索.
资料下载地址: http://download.csdn.net/detail/zg260/8129041 ; http://download.csdn.net/detail/zg260/8129007
计算机图形学学习方法和相关书籍,做游戏,GIS,虚拟现实,三维引擎的都能够看看.的更多相关文章
- 基于python win32setpixel api 实现计算机图形学相关操作
最近读研期间上了计算机可视化的课,老师也对计算机图形学的实现布置了相关的作业.虽然我没有系统地学过图形可视化的课,但是我之前逆向过一些游戏引擎,除了保护驱动之外,因为要做透视,接触过一些计算机图形学的 ...
- 分享:计算机图形学期末作业!!利用WebGL的第三方库three.js写一个简单的网页版“我的世界小游戏”
这几天一直在忙着期末考试,所以一直没有更新我的博客,今天刚把我的期末作业完成了,心情澎湃,所以晚上不管怎么样,我也要写一篇博客纪念一下我上课都没有听,还是通过强大的度娘完成了我的作业的经历.(当然作业 ...
- Mathematics for Computer Graphics数学在计算机图形学中的应用 [转]
最近严重感觉到数学知识的不足! http://bbs.gameres.com/showthread.asp?threadid=10509 [译]Mathematics for Computer Gra ...
- SIGGRAPH 2017:深度学习与计算机图形学的碰撞
每年由美国计算机协会(Association of Computing Machinery,简称ACM)计算机图形专业组举办的年会SIGGRAPH,是全球最负盛名的图形学和交互技术盛会.今年已经是这场 ...
- java 相关书籍介绍
自己做开发也有两年多了吧,其中也关注过许多大牛的博客,买过许多的书看. 自己也是个比较爱阅读的人,从小的时候被老爸逼着每次寒暑假看书,到后来慢慢长大爱上了阅读,习惯了看书. 农村的小孩吗,那时候又不像 ...
- unity零基础开始学习做游戏(一)为了实现你的游戏,你需要提前做的准备工作
-------小基原创,转载请给我一个面子 正所谓,工欲善其事,必现准备好电脑.接下来跟着小基一步一步来搭建你的开发环境吧 1.下载安装unity 上面的那个是破解软件,下面是unity5.5.6的安 ...
- 学习shader之前必须知道的东西之计算机图形学-渲染管线
引言 shader到底是干什么用的?shader的工作原理是什么? 其实当我们对这个问题还很懵懂的时候,就已经开始急不可耐的要四处搜寻有关shader的资料,恨不得立刻上手写一个出来.但看了一些资料甚 ...
- 学习shader之前必须知道的东西之计算机图形学(一)渲染管线
引言 shader到底是干什么用的?shader的工作原理是什么? 其实当我们对这个问题还很懵懂的时候,就已经开始急不可耐的要四处搜寻有关shader的资料,恨不得立刻上手写一个出来.但看了一些资料甚 ...
- Web前端可以转行做游戏吗?
作者:ManfredHu 链接:http://www.manfredhu.com/2018/03/15/31-laya-game-tips/index.html 声明:版权所有,转载请保留本段信息,谢 ...
随机推荐
- [置顶] IOS7状态栏StatusBar官方标准适配方法
IOS7状态栏StatusBar官方标准适配方法 hello,大家好,ios7正式版已经发布,相信大家都在以各种方式来适配ios7. 如果你已经下载了xcode5,正准备使用,你会发现各种布局的改变. ...
- hdu1015(Safecracker )
Problem Description === Op tech briefing, 2002/11/02 06:42 CST === "The item is locked in a Kle ...
- openssl 非对称加密算法RSA命令详解
1.非对称加密算法概述 非对称加密算法也称公开密钥算法,其解决了对称加密算法密钥分配的问题,非对称加密算法基本特点如下: 1.加密密钥和解密密钥不同 2.密钥对中的一个密钥可以公开 3.根据公开密钥很 ...
- Stm32高级定时器(三)
Stm32高级定时器(三) 1 互补输出和死区插入 1.1 死区:某个处于相对无效状态的时间或空间 本来OCX信号与OCXREF时序同相同步,OCXN信号与OCXREF时序反相同步.但为了安全考虑,以 ...
- CentOS CVS安装使用
CentOS CVS安装使用 一.CVS简介 CVS(Concurrent Versions System)版本控制系统:是一种GNU软件包,CVS是一个C/S系统,主要用于在多人开发环境下的源码 ...
- c#类初始化器
其实类型初始化器只是一种语法糖这样写MyClass a=new MyClass{ filedOne="a" ,filedTwo="b" };会被编译器编译成和如 ...
- Java这个名字怎么来
Java语言的历程丰富多彩,被现在众多程序员和企业广泛使用,不用质疑这是Java的领先技术的结果. Java是Sun公司开发的一种编程语言,Sun公司最初的方向是让Java来开发一些电器装置程序, ...
- 16 Socket通信(简单例子)
服务端代码: import java.io.*; import java.net.ServerSocket; import java.net.Socket; import java.util.Da ...
- CSSOM视图模式
相关技术文章: CSSOM视图模式(CSSOM View Module)相关整理 W3C CSSOM View Module
- 最常用的CSS技巧收集笔记
1.重置浏览器的字体大小 重置浏览器的默认值 ,然后重设浏览器的字体大小你可以使用雅虎的用户界面重置的CSS方案 ,如果你不想下载9MB的文件,代码如下: body,div,dl,dt,dd,ul, ...