/CGLearning

OpenGL Learning and Exercises

Primary LanguageC++

CG Learning

首先从Foundation of 3D Computer Graphics开始学习Computer Graphics(CG)基础知识,这是是一本非常合适的Computer Graphics入门书籍,值得一遍又一遍的阅读。内容深浅适中,解读十分到位。

Solar System Simulation Project

太阳系3D模拟项目,目前已经实现的功能:

  1. 根据真实的太阳系模型数据,使用OpenGL ES实现了太阳和各个行星的渲染(借助真实的纹理)。
  2. 简化实现了行星的轨道(没有根据真实轨道模型)绘制。
  3. 每个行星依据真实的自转和公转周期决定其运动行为。
  4. 可以通过控制时间因子来加快各个行星的运动速度。
  5. 初步实现了相机的控制,可以控制视角缩放,位置可以上下左右调整。
  6. 使用raycast(射线投射与几何体相交方式)实现了picking功能。

太阳系3D模拟项目截图

Utah Teapot Rendering

Utah Teapot Rendering,模仿安卓ndk中的OpenGL例子实现的utah teapot渲染。 utah teapot rendering

作业项目(assignment project)

虽然这本教科书的实例代码和作业项目都是基于OpenGL,并且也是基于OpenGL管线进行了相关的原理讲解,但是这本教材中并没有任何OpenGL本身的学习内容。书中涉及的图形技术并没有使用OpenGL中的高级特征,只需要具备基本的现代可编程管线特征的版本即可。这意味着可以从一个精简版本的OpenGL着手(可以完全抛掉OpenGL中那些传统功能性编程的老古董),减少基于OpenGL学习CG技术的初始曲线的陡峭度,比如从OpenGL ES 3.0开始入手学习。本书中所有的实例几乎都可以无缝地移植到OpenGL ES3.0环境中。

一些问题

  1. 由于OpenGL的进化,目前Picking已经无法通过在屏幕(默认帧缓存)中通过读取像素的方式实现(正在考虑使用射线相交的方式实现)。
  2. 目前所有的项目已经实现了Mac环境下的运行,部分实现了iOS版本,windows版本正在进行中...
  3. 网站所给出的项目模版基于glut和较早期的OpenGL(4.0之前)版本,在实现课后项目时,我将其更换为GLFW版本,并对一些版本不兼容错误做出了改正(比如绘制时必须具备VAO对象)

项目情况

Project Description Detail
Assignment2 Hello World 3D 已完成 详情
Assignment3 Quaternion and Arcball 已完成 详情
Assignment4 Hierarchical Transformations and Pickin 已完成,Picking部分采用raycast方式
Assignment5 Keyframe Animation 初步完成,不少地方需要改进
Assignment6 Materials and Bump Mapping 初步完成,Picking部分未完成
Assignment7 Meshes and Subdivision Surfaces 初步完成,Catmull-clark规则的实现需要改进
Assignment8 Furry Animation 初步完成,Furry效果需要改进

正在进行的3D计算机图形基础(Foundation of 3D Computer Graphics)的翻译

已经完成的章节

总结文字

OpenGL

其它

File Structures

  • BaseFramework为通用代码目录。
  • 针对OpenGL ES和OpenGL平台的assignments项目代码分别位于FoundationOfCG-MIT和OpenGL目录
  • 本书的中文翻译位于FoundationOf3DComputerGraphics_Chinese_translation目录
  • 学习及开发过程中的记录文字位于DevelopingNotes目录