Ejemplo n.º 1
0
 def run(self):
     context = pg.Context(Program())
     font = pg.Font(self, 2, FONT, 24, (0, 0, 0, 1))
     self.message = 'loading triangle mesh'
     mesh = pg.STL('examples/%s.stl' % NAME).center()
     self.triangles = '%d triangles' % (len(mesh.positions) / 3)
     self.message = 'computing bounding box'
     (x0, y0, z0), (x1, y1, z1) = pg.bounding_box(mesh.positions)
     context.uv0 = (x0, z0)
     context.uv1 = (x1, z1)
     self.message = 'generating vertex buffer'
     context.position = pg.VertexBuffer(mesh.positions)
     self.message = 'generating height map'
     p = mesh.positions
     lookup = defaultdict(list)
     for v1, v2, v3 in zip(p[::3], p[1::3], p[2::3]):
         x, y, z = v1
         x, z = int(round(x / STEP)), int(round(z / STEP))
         lookup[(x, z)].append((v1, v2, v3))
     self.message = 'loading brightness texture'
     context.sampler = pg.Texture(0, 'examples/%s.jpg' % NAME)
     self.message = 'loading normal texture'
     context.normal_sampler = pg.Texture(1, 'examples/%s.png' % NAME)
     self.result = {
         'font': font,
         'context': context,
         'lookup': lookup,
     }
Ejemplo n.º 2
0
 def setup(self):
     self.set_clear_color(0.87, 0.81, 0.70)
     self.wasd = pg.WASD(self, speed=10)
     self.wasd.look_at((0, 0, 0), (30, -5, 30))
     self.context = pg.Context(pg.DirectionalLightProgram())
     self.context.specular_multiplier = 0.25
     self.context.ambient_color = (0.5, 0.5, 0.5)
     self.context.light_color = (0.5, 0.5, 0.5)
     self.context.use_texture = True
     self.context.sampler = pg.Texture(0, 'examples/gusev.jpg')
     mesh = pg.STL('examples/gusev.stl').smooth_normals()
     (x0, y0, z0), (x1, y1, z1) = pg.bounding_box(mesh.positions)
     for x, y, z in mesh.positions:
         u = 1 - (z - z0) / (z1 - z0)
         v = 1 - (x - x0) / (x1 - x0)
         mesh.uvs.append((u, v))
     self.mesh = mesh
     p = self.mesh.positions
     self.lookup = defaultdict(list)
     for v1, v2, v3 in zip(p[::3], p[1::3], p[2::3]):
         x, y, z = v1
         x, z = int(round(x)), int(round(z))
         self.lookup[(x, z)].append((v1, v2, v3))
Ejemplo n.º 3
0
 def setup(self):
     self.set_clear_color(0.87, 0.81, 0.70)
     self.wasd = pg.WASD(self, speed=10)
     self.wasd.look_at((0, 0, 0), (30, -5, 30))
     self.context = pg.Context(pg.DirectionalLightProgram())
     self.context.specular_multiplier = 0.25
     self.context.ambient_color = (0.5, 0.5, 0.5)
     self.context.light_color = (0.5, 0.5, 0.5)
     self.context.use_texture = True
     self.context.sampler = pg.Texture(0, 'examples/gusev.jpg')
     mesh = pg.STL('examples/gusev.stl').smooth_normals()
     (x0, y0, z0), (x1, y1, z1) = pg.bounding_box(mesh.positions)
     for x, y, z in mesh.positions:
         u = 1 - (z - z0) / (z1 - z0)
         v = 1 - (x - x0) / (x1 - x0)
         mesh.uvs.append((u, v))
     self.mesh = mesh
     p = self.mesh.positions
     self.lookup = defaultdict(list)
     for v1, v2, v3 in zip(p[::3], p[1::3], p[2::3]):
         x, y, z = v1
         x, z = int(round(x)), int(round(z))
         self.lookup[(x, z)].append((v1, v2, v3))