一、课程介绍
1. 内容简介
本课程将基于OpenGL实现一般CAD软件都会具备的基础功能:渲染显示3D空间的画面并可以操作3D空间中物体。
2. 课程知识点
本课程项目完成过程中,我们将学习:OpenGL坐标系的转换
实现简单的用户输入事件回调机制
设计模式中组合模式的使用
基于包围盒的碰撞检测
3. 课程来源
本课程核心部分来自《500 lines or less》项目,作者是 Erick,Erick从事电子游戏,3D特效软件,CAD软件的开发。课程内容在原文档基础上做了许多修改,增加了部分原理介绍,步骤的拆解分析及源代码注释。
二、实验说明
1. 背景介绍
人类是那么得有创造力,我们创造、发明、设计、生产了一切大自然没有直接给予我们的东西使我们的生活变得更轻松更美好。在过去,我们只能在图纸上进
行产品的创造与设计,而现在,有了计算机的帮助,有了CAD(计算机辅助设计)软件,大大节省了我们的精力与时间成本,使我们的工作更高效,能够拥有更多
时间去思考设计本身。
那么CAD软件是如何写出来的呢?CAD软件种类繁多,但它们有一个共同的特点,就是对三维世界的建模,对三维世界中物体的控制,对三维设计的展示。
这,就是本课程要实现的内容了。
2. 实验工具
渲染流程决定了设计是如何呈现在屏幕上的,我们希望程序能为我们处理复杂的物体,同时我们也希望代码的复杂度能够尽可能得低。这些我们该如何做到呢?
在渲染画面之前,我们首先需要新建一个窗口,并且我们不希望直接操作图形驱动来生成画面,所以我们选择跨平台图形接口OpenGL与OpenGL的工具库GLUT来帮助我们管理窗口和渲染画面。
关于OpenGL
OpenGL是开发跨平台图形应用的接口标准,当前的OpenGL编程分为两类:现代OpenGL与传统OpenGL。
传统OpenGL采用固定管线的形式。通过对一系列全局变量的赋值,你可以启动或者禁止一些渲染流水线上的工作,比如光照,着色,隐面剔除等,之后自动地根据流水线进行画面渲染,固定管线的编程形式现在已经不推荐使用了。
现代OpenGL采用可编程管线的形式,我们只需编写称作shaders的小程序运行即可。可编程管线已经替代了固定管线。
但是在本课程中,我们仍然使用传统OpenGL,因为固定管线能够减少代码量,并且要求的线性代数知识也更少。
关于GLUT
在本课程中,GLUT负责创建窗口与注册用户接口的回调函数(处理键盘输入、鼠标输入等),如果需要一个功能更全面的窗口管理库,推荐使用GTK或者QT。
三、项目效果图
本项目的详细教程和代码详解,可在实验楼中查看并在线完成,立即【开始实验】
更多Python经典项目:Python全部 - 课程