Beispiel #1
0
def create_mpm_snow_block(fn):
    particles = tc_core.RenderParticles()
    assert particles.read(fn)
    tex = Texture.from_render_particles(
        (grid_x, grid_y, grid_z), particles) * 5
    mesh_transform = tc_core.Matrix4(1.0).scale_s(0.3).translate(
        Vector(0.5, 0.5, 0.5))
    transform = tc_core.Matrix4(1.0).scale_s(2).scale(Vector(
        2.0, 0.5, 1.0)).translate(Vector(-2, -0.99, -1))
    vol = VolumeMaterial('sdf_voxel',
                         scattering=5,
                         absorption=0,
                         tex=tex,
                         resolution=(grid_x, grid_y, grid_z),
                         transform_ptr=transform.get_ptr_string())
    material = SurfaceMaterial('plain_interface')
    material.set_internal_material(vol)
    return Mesh('cube',
                material=material,
                transform=transform * mesh_transform)
Beispiel #2
0
 def levelset_generator(t):
     levelset = mpm.create_levelset()
     levelset.add_cuboid((0.01, 0.01, 0.01), (0.99, 0.99, 0.99), True)
     for i in range(0, 24, 3):
         px = 0.5 + 0.2 * math.sin(45.0 * i / 180 * math.pi)
         py = 0.5 + 0.2 * math.cos(45.0 * i / 180 * math.pi)
         vx = -bullet_speed * math.sin(45.0 * i / 180 * math.pi)
         vy = -bullet_speed * math.cos(45.0 * i / 180 * math.pi)
         levelset.add_sphere(
             Vector(px + t * vx, 0.04 * (i / 3 + 1), py + t * vy), 0.02,
             False)
     return levelset
Beispiel #3
0
            y = math.sin(fraction) * 1 + 0.5
            board_position = Vector(z, y)
            vec1 = eye_position - board_position
            vec2 = light_position - board_position
            vec1 *= 1.0 / math.hypot(vec1.x, vec1.y)
            vec2 *= 1.0 / math.hypot(vec2.x, vec2.y)
            half_vector = vec1 + vec2
            angle = math.degrees(math.atan2(half_vector.y, half_vector.x))
            mesh = Mesh('plane',
                        SurfaceMaterial('pbr',
                                        diffuse=(0.1, 0.1, 0.1),
                                        specular=(1, 1, 1),
                                        glossiness=100 * 3**i),
                        translate=(0, board_position.y, board_position.x),
                        rotation=(90 - angle, 0, 0),
                        scale=(0.4, 0.7, 0.05))
            scene.add_mesh(mesh)

            # envmap = EnvironmentMap('base', filepath='d:/assets/schoenbrunn-front_hd.hdr')
            # scene.set_environment_map(envmap)
    return scene


if __name__ == '__main__':
    renderer = Renderer(output_dir='veach_mis', overwrite=True)

    eye_position = Vector(0.9, -0.3)
    renderer.initialize(preset='pt', scene=create_mis_scene(eye_position))
    renderer.set_post_processor(LDRDisplay(exposure=4, bloom_radius=0.00))
    renderer.render(800)
Beispiel #4
0
 def levelset_generator(t):
     levelset = mpm.create_levelset()
     levelset.add_sphere(Vector(0.325 + 0.25 * (t + 0.05), 0.2, 0.5), 0,
                         False)
     # levelset.add_sphere(Vector(0.5, 0.2, 0.5), t, False)
     return levelset
 def scale(self, scale):
     if isinstance(scale, tuple):
         self.transform = self.transform.scale(Vector(scale))
     else:
         self.transform = self.transform.scale_s(scale)
 def rotate(self, rot):
     self.transform = self.transform.rotate_euler(Vector(rot))
 def translate(self, trans):
     self.transform = self.transform.translate(Vector(trans))