一、课程介绍

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全部 - 课程

python实现3d建模工具_Python实现3D建模工具相关推荐

  1. python 3d绘图模块_Python绘制3D图形

    3D图形在数据分析.数据建模.图形和图像处理等领域中都有着广泛的应用,下面将给大家介绍一下如何使用python进行3D图形的绘制,包括3D散点.3D表面.3D轮廓.3D直线(曲线)以及3D文字等的绘制 ...

  2. python绘制3d动态模型_Python绘制3D图形

    3D图形在数据分析.数据建模.图形和图像处理等领域中都有着广泛的应用,下面将给大家介绍一下如何使用python进行3D图形的绘制,包括3D散点.3D表面.3D轮廓.3D直线(曲线)以及3D文字等的绘制 ...

  3. python 3d绘图立方体_python绘制3D立方体

    我想绘制一个平行六面体.其实我从python脚本开始画立方体为:python绘制3D立方体 import numpy as np from mpl_toolkits.mplot3d import Ax ...

  4. python绘制四边螺旋线代_Python绘制3d螺旋曲线图实例代码

    Line plots Axes3D.plot(xs, ys, *args, **kwargs) 绘制2D或3D数据 参数 描述 xs, ys X轴,Y轴坐标定点 zs Z值,每一个点的值都是1 zdi ...

  5. python 3d绘图 范围_python – 在3D绘图中绘制所有三个轴上的分布轮廓

    我在三维空间中有一堆点,并估计了这些点上的一些分布(也在3D空间中;使用 kernel density estimation虽然这与这个问题无关).我想将该分布的投影绘制为所有三个轴(x,y和z)上的 ...

  6. python自动翻译小工具_Python实现翻译小工具

    一.背景 利用Requests模块获取有道词典web页面的post信息,BeautifulSoup来获取需要的内容,通过tkinter模块生成gui界面. 二.代码 git源码地址 Python实现翻 ...

  7. python numpy和pandas数据处理_python中添加数据分析工具numpy和pandas

    python中添加数据分析工具numpy和pandas 最近要对一系列数据做同比比较,需要用到numpy和pandas来计算,不过使用python安装numpy和pandas因为linux环境没有外网 ...

  8. python图片转手绘软件_Python手绘可视化工具cutecharts使用实例

    这篇文章主要介绍了Python手绘可视化工具cutecharts使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天,给大家介绍一个很酷的 ...

  9. python qt 按钮实现拖放_python qtdesigner 拖拽工具

    image 本文由 沈庆阳 所有,转载请与作者取得联系! Qt Designer的介绍 在PyQt中编写UI界面可以直接通过代码来实现,也可以通过Qt Designer来完成.Qt Designer的 ...

  10. python自带的文档生成工具_Python文档生成工具pydoc使用介绍

    在Python中有很多很好的工具来生成字符串文档(docstring),比如说: epydoc.doxygen.sphinx,但始终觉得pydoc还是不错的工具,用法非常简单,功能也算不错,本文主要介 ...

最新文章

  1. 一个6年的菜鸟,在4年之前做的一些功能(二)
  2. lucene introduction
  3. 层 数据仓库_数据仓库的架构是什么样的,大家可以通过这篇文章了解一下
  4. Cortex-A9 UART
  5. 12个高矮不同的人排成两排
  6. C#中在定义事件委托时怎样跨窗体传递参数
  7. JMeter入门案例
  8. int、bigint、smallint 和 tinyint范围
  9. Android 代码动态生成ProgressBar
  10. 为什么都建议学java而不是python-就目前来说,学Java好还是学Python好?
  11. textarea 自动检测高度换行
  12. 软件工程-图书馆管理系统
  13. Stolz定理及其证明
  14. cpu压力测试 Android,android开发之压力测试的命令
  15. STM32使用外部中断控制led灯亮灭
  16. mysql统计出每个姓氏的人数_Python 之 MySql 每日一练 130——同名同性学生名单,并统计人数...
  17. 华为HCIP认证用处大吗?
  18. 2020年,微信的基地属性正在悄然转向。
  19. 一个离开大厂的产品经理,和她为数百万小微企业创造的“神器”
  20. ANSYS workbench数值分析 新手教程(1)

热门文章

  1. 大杀器TheFatRat
  2. Msfvenom木马使用及TheFatRat工具
  3. usb接口多少钱_3分钟搞懂USB
  4. Arcgis 连接PostgreSQL
  5. 机载 LiDAR 点云数据分类
  6. 使用软件测试路由器性能报告,路由器软件测试报告.doc
  7. [转自他人]一款好用的软件安装管理器
  8. 华人AI学者大盘点:清华培养了最多的高层次人才,韩家炜、吴恩达论文被引数“登顶”
  9. 莫烦python视频顺序_莫烦Python视频笔记
  10. s7200cpu224xp手册_西门子S7-200 CPU224XP