引言
博主是北京理工大学计算机2021级研一的学生,这项任务是计算机图形学这门课程的第一个大作业。由于之前并未接触过opengl,所以在完成这个作业过程中费了一些劲。因为网上找不到符合老师需求的代码,所以代码都是自己拼拼凑凑整的,可能仍有不规范之处。当然,这篇博客是在这门课全结束之后才发布的。
依赖
- python3.9
- opengl库
估计python3.7、3.8也都行,但没试过。具体导入库的代码如下:
from OpenGL.GL import *
from OpenGL.GLUT import *
from OpenGL.GLU import *
import numpy as np
画方块
这里使用的是opengl自带的画面函数进行绘制的。
首先给出每个面的点坐标:
vertices2 = 1.4*np.array([
[[0.2, 0.2, 0.2], [-0.2, 0.2, 0.2], [-0.2, -0.2, 0.2], [0.2, -0.2, 0.2]], # 前
[[0.2, 0.2, -0.2], [0.2, -0.2, -0.2], [-0.2, -0.2, -0.2], [-0.2, 0.2, -0.2]], # 后
[[0.2, 0.2, 0.2], [0.2, 0.2, -0.2], [-0.2, 0.2, -0.2], [-0.2, 0.2, 0.2]], # 左
[[0.2, -0.2, 0.2], [0.2, -0.2, -0.2], [-0.2, -0.2, -0.2], [-0.2, -0.2, 0.2]], # 右
[[0.2, 0.2, 0.2], [0.2, -0.2, 0.2], [0.2, -0.2, -0.2], [0.2, 0.2, -0.2]], # 上
[[-0.2, 0.2, 0.2], [-0.2, -0.2, 0.2], [-0.2, -0.2, -0.2], [-0.2, 0.2, -0.2]] # 下
])
这里的1.4倍是为了调整大小关系,可根据实际情况调整这个系数。
再给出每个面的颜色:
colours = np.array([
[0, 1, 1], [1, 0.5, 0.5],
[1, 1,