Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- import glooey
- import pyglet
- from pyglet import gl
- import trimesh
- from trimesh import rendering
- class MyGroup(pyglet.graphics.Group):
- def set_state(self):
- # find the maximum depth based on
- # maximum length of scene AABB
- gl.glDepthRange(0.0, 100)
- gl.glClearDepth(1.0)
- gl.glEnable(gl.GL_DEPTH_TEST)
- gl.glDepthFunc(gl.GL_LEQUAL)
- gl.glEnable(gl.GL_DEPTH_TEST)
- gl.glEnable(gl.GL_CULL_FACE)
- # do some openGL things
- gl.glColorMaterial(gl.GL_FRONT_AND_BACK,
- gl.GL_AMBIENT_AND_DIFFUSE)
- gl.glEnable(gl.GL_COLOR_MATERIAL)
- gl.glShadeModel(gl.GL_SMOOTH)
- gl.glMaterialfv(gl.GL_FRONT,
- gl.GL_AMBIENT,
- rendering.vector_to_gl(
- 0.192250, 0.192250, 0.192250))
- gl.glMaterialfv(gl.GL_FRONT,
- gl.GL_DIFFUSE,
- rendering.vector_to_gl(
- 0.507540, 0.507540, 0.507540))
- gl.glMaterialfv(gl.GL_FRONT,
- gl.GL_SPECULAR,
- rendering.vector_to_gl(
- .5082730, .5082730, .5082730))
- gl.glMaterialf(gl.GL_FRONT,
- gl.GL_SHININESS,
- .4 * 128.0)
- # enable blending for transparency
- gl.glEnable(gl.GL_BLEND)
- gl.glBlendFunc(gl.GL_SRC_ALPHA,
- gl.GL_ONE_MINUS_SRC_ALPHA)
- # make the lines from Path3D objects less ugly
- gl.glEnable(gl.GL_LINE_SMOOTH)
- gl.glHint(gl.GL_LINE_SMOOTH_HINT, gl.GL_NICEST)
- # set the width of lines to 1.5 pixels
- gl.glLineWidth(1.5)
- # set PointCloud markers to 4 pixels in size
- gl.glPointSize(4)
- pyglet.gl.glPushMatrix()
- gl.glClear(gl.GL_COLOR_BUFFER_BIT | gl.GL_DEPTH_BUFFER_BIT)
- pyglet.gl.glLoadIdentity()
- transform_camera = [[1.0, 0.0, 0.0, -0.045143118705688864], [0.0, 1.0, 0.0, -0.04509277932377646], [0.0, 0.0, 1.0, -0.2325577568287513], [0.0, 0.0, 0.0, 1.0]]
- pyglet.gl.glMultMatrixf(trimesh.rendering.matrix_to_gl(transform_camera))
- view = [[1.0, 0.0, 0.0, 0.0], [0.0, 1.0, 0.0, 0.0], [0.0, 0.0, 1.0, 0.0], [0.0, 0.0, 0.0, 1.0]]
- pyglet.gl.glMultMatrixf(trimesh.rendering.matrix_to_gl(view))
- pyglet.gl.glPopMatrix()
- pyglet.gl.glPushMatrix()
- pyglet.gl.glLoadIdentity()
- pyglet.gl.glPopMatrix()
- class MyWidget(glooey.Widget):
- def __init__(self):
- super().__init__()
- self.vertex_list = None
- self._regroup(MyGroup(self.group))
- def do_claim(self):
- return 640, 480
- def do_regroup(self):
- if self.vertex_list is not None:
- self.batch.migrate(
- self.vertex_list, pyglet.gl.GL_TRIANGLES,
- self.group, self.batch)
- def do_draw(self):
- if self.vertex_list is None:
- mesh = trimesh.creation.axis(0.01)
- args = trimesh.rendering.mesh_to_vertexlist(mesh, group=self.group)
- self.vertex_list = self.batch.add_indexed(*args)
- self.vertex_list.draw(mode=pyglet.gl.GL_TRIANGLES)
- def do_undraw(self):
- if self.vertex_list is not None:
- self.vertex_list.delete()
- self.vertex_list = None
- if __name__ == '__main__':
- window = pyglet.window.Window(width=640, height=480)
- gui = glooey.Gui(window)
- gui.add(MyWidget())
- pyglet.app.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement