创建一个修剪立方体Pyglet的平面

时间:2019-03-13 16:52:49

标签: python opengl pyglet clipping opengl-compat

我有一个移动,缩放,旋转的立方体,我需要创建一个平面来像这样修剪立方体enter image description here

这是图形代码

pgl.glLoadIdentity()
pgl.glViewport(650, 500, 650, 500)
pgl.glMatrixMode(ogl.GL_PROJECTION)
pgl.glLoadIdentity()

pgl.gluPerspective(self.dist, 1.3, 1, 1000)

pgl.glMatrixMode(ogl.GL_MODELVIEW)

pgl.glTranslatef(0, 0, -400)

pgl.glPushMatrix()
pgl.glTranslatef(self.x, self.y, self.z)
pgl.glRotatef(self.xRotation, 1, 0, 0)
pgl.glRotatef(self.yRotation, 0, 1, 0)
pgl.glRotatef(self.zRotation, 0, 0, 1)
pgl.glScalef(self.zoom, self.zoom, self.zoom)


if not transparant:
    pgl.glPolygonMode(pgl.GL_FRONT_AND_BACK, pgl.GL_FILL)
else:
    pgl.glPolygonMode(pgl.GL_FRONT_AND_BACK, pgl.GL_LINE)

draw_big()

pgl.glPopMatrix()

1 个答案:

答案 0 :(得分:1)

使用Legacy OpenGL固定功能管道,您可以设置剪切平面。

可以有多个剪辑平面,并且必须通过glEnable(GL_CLIP_PLANEi)启用这些平面。

平面由glClipPlane设置。剪切平面的参数被解释为Plane Equation。 平面方程的前三个分量是剪切平面的法线向量。第四部分是到原点的距离:

Dispose

有关详细说明,请参见OpenGL 4.6 API Compatibility Profile Specification - 13.7. PRIMITIVE CLIPPING;第537页。
请注意,当前模型视图矩阵的逆值在指定时会应用于裁剪平面系数。

请参见示例,该示例基于问题的代码:

plane = plane = [-1.0, -1.0, -1.0, -280]
ogl.glClipPlane(pgl.GL_CLIP_PLANE0, plane)