Python 3学习笔记(8):PyOpenGL之旋转茶壶

参考文献:《OpenGL超级宝典》、

   用PyOpenGL叩开3D的心扉——OpenGL全解析(3)https://blog.csdn.net/thystar/article/details/45438269

  • 安装 

1、在网址http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopengl   下载PyOpenGL‑3.1.2‑cp36‑cp36m‑win32.whl

2、拷贝上面文件到python文件夹下,在c:\ python>下运行命令:

        pip install PyOpenGL‑3.1.2‑cp36‑cp36m‑win32.whl 

      OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口(Application programming interface)的规格,它用于生成二维、三维图像。这个接口由近三百五十个不同的函数调用组成,用来从简单的图元绘制复杂的三维景象。OpenGL常用于CAD、虚拟实境、科学可视化程式和电子游戏开发。

  • 简介 

2D + 透视 = 3D

光靠线条的透视,大脑其实并不能得到唯一完美的结论,我们的3D艺术肯定还需要其他的东西来补足,就是后面两幅图中的重要演员——光照。事实上,一般最后的作品还需要纹理来帮忙;如果还能加上阴影等,会更真实。

观察方式:透视(perspectiveOpenGL

          正交(orthogonal) CAD

  • 练习 

1.初始化窗口

glutInit()是用glut来初始化OpenGL

glutInitDisplayMode(MODE)

glutInitWindowSize(400, 400) 设置出现的窗口的大小。

glutDisplayFunc(func)注册了一个函数,用来绘制OpenGL窗口,这个函数里就写着很多OpenGL的绘图操作等命令

2.绘图   

glClear(GL_COLOR_BUFFER_BIT)  #清除之前画面   

glRotatef(0.1, 10,5,0)   #(角度,x,y,z) 绕着向量(x,y,z)旋转

glutWireTeapot(0.5)      #画线框茶壶   

glFlush()#刷新显示

 

  • 代码 

#coding:utf-8

import sys

from math import pi as PI
from math import sin, cos

from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *


def drawFunc():
    #清除之前画面
    glClear(GL_COLOR_BUFFER_BIT)
    glRotatef(0.1, 10,5,0)   #(角度,x,y,z)
    glutWireTeapot(0.5)      #画线框茶壶
    #glutSolidTeapot(0.5)      #画实心茶壶
    #刷新显示
    glFlush()
 

	    
#使用glut初始化OpenGL
glutInit()
#显示模式:GLUT_SINGLE无缓冲直接显示|GLUT_RGBA采用RGB(A非alpha)
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA)
#窗口位置及大小-生成
glutInitWindowPosition(0,0)
glutInitWindowSize(400,400)
glutCreateWindow(b"first")

#调用函数绘制图像
glutDisplayFunc(drawFunc)

glutIdleFunc(drawFunc)      #产生动画函数
#主循环
glutMainLoop()

你可能感兴趣的:(Python)