Example #1
0
    def __init__(self, max_side, simulator, color_scheme, levelset_supersampling=2, show_grid=False, show_images=True,
                 rescale=True, video_framerate=24, video_output=True, substep=False, need_press=False, show_stat=True):
        if rescale:
            scale = min(1.0 * max_side / simulator.res[0], 1.0 * max_side / simulator.res[1])
            width = int(round(scale * simulator.res[0]))
            height = int(round(scale * simulator.res[1]))
        else:
            width = max_side
            height = max_side

        super(SimulationWindow, self).__init__(width=width, height=height, fullscreen=False, caption='Taichi',
                                               config=pyglet.gl.Config(sample_buffers=0, samples=0, depth_size=16,
                                                                       double_buffer=True))
        self.width = width
        self.height = height
        self.video_framerate = video_framerate
        self.task_id = get_unique_task_id()
        self.simulator = simulator
        self.frame_count = 0
        self.color_scheme = color_scheme
        self.show_images = show_images
        self.levelset_supersampling = levelset_supersampling
        self.show_grid = show_grid
        self.quit_pressed = False
        self.output_directory = os.path.join(get_output_directory(), self.task_id)
        self.cpu_time = 0
        self.show_stat = show_stat
        os.mkdir(self.output_directory)
        self.substep = substep
        self.video_output = video_output
        self.video_manager = VideoManager(self.output_directory, automatic_build=self.video_output)
        self.need_press = need_press
        self.pressed = False
        pyglet.clock.schedule_interval(self.update, 1 / 120.0)
        pyglet.app.run()
Example #2
0
    def __init__(self, **kwargs):
        self.c = tc_core.create_simulation3d('mpm')
        self.c.initialize(P(**kwargs))
        self.task_id = get_unique_task_id()
        self.directory = tc.get_output_path(self.task_id)
        try:
            os.mkdir(self.directory)
        except Exception as e:
            print e
        self.video_manager = VideoManager(self.directory, 540, 540)
        self.particle_renderer = ParticleRenderer('shadow_map',
                                                  shadow_map_resolution=0.3,
                                                  alpha=0.7,
                                                  shadowing=2,
                                                  ambient_light=0.01,
                                                  light_direction=(1, 1, 0))
        self.resolution = kwargs['resolution']
        self.frame = 0

        dummy_levelset = self.create_levelset()

        def dummy_levelset_generator(_):
            return dummy_levelset

        self.levelset_generator = dummy_levelset_generator
Example #3
0
    def __init__(self, **kwargs):
        res = kwargs['res']
        self.frame_dt = kwargs.get('frame_dt', 0.01)
        if 'frame_dt' not in kwargs:
            kwargs['frame_dt'] = self.frame_dt
        self.num_frames = kwargs.get('num_frames', 1000)
        if len(res) == 2:
            self.c = tc_core.create_simulation2('mpm')
            self.Vector = tc_core.Vector2f
            self.Vectori = tc_core.Vector2i
        else:
            self.c = tc.core.create_simulation3('mpm')
            self.Vector = tc_core.Vector3f
            self.Vectori = tc_core.Vector3i

        if 'task_id' in kwargs:
            self.task_id = kwargs['task_id']
        else:
            self.task_id = sys.argv[0].split('.')[0]
        if 'delta_x' not in kwargs:
            kwargs['delta_x'] = 1.0 / res[0]
        else:
            self.task_id = sys.argv[0].split('.')[0]

        print('delta_x = {}'.format(kwargs['delta_x']))
        print('task_id = {}'.format(self.task_id))

        self.directory = tc.get_output_path(self.task_id)
        self.video_manager = VideoManager(self.directory)
        kwargs['frame_directory'] = self.video_manager.get_frame_directory()
        self.c.initialize(P(**kwargs))
        try:
            os.mkdir(self.directory)
        except OSError as exc:
            if exc.errno != errno.EEXIST:
                raise
        vis_res = self.c.get_vis_resolution()
        self.video_manager.width = vis_res.x
        self.video_manager.height = vis_res.y
        self.particle_renderer = ParticleRenderer('shadow_map',
                                                  shadow_map_resolution=0.3,
                                                  alpha=0.7,
                                                  shadowing=2,
                                                  ambient_light=0.01,
                                                  light_direction=(1, 1, 0))
        self.res = kwargs['res']
        self.frame = 0

        dummy_levelset = self.create_levelset()

        def dummy_levelset_generator(_):
            return dummy_levelset

        self.levelset_generator = dummy_levelset_generator
        self.start_simulation_time = None
        self.simulation_total_time = None
        self.visualize_count = 0
        self.visualize_count_limit = 400000.0
Example #4
0
 def __init__(self, directory, width, height):
     self.directory = '../output/frames/' + get_unique_task_id() + '/'
     self.input_directory = '../output/frames/' + directory + '/'
     self.video_manager = VideoManager(self.directory, width, height)
     self.particle_renderer = ParticleRenderer('shadow_map',
                                               shadow_map_resolution=0.5, alpha=0.5, shadowing=0.1, ambient_light=0.2,
                                               light_direction=(-1, 1, -1))
     try:
         os.mkdir(self.directory)
     except Exception as e:
         print e
     self.step_counter = 0
Example #5
0
 def __init__(self, **kwargs):
     self.c = tc_core.create_simulation3('nbody')
     self.c.initialize(P(**kwargs))
     self.directory = taichi.get_output_path(get_unique_task_id())
     try:
         os.mkdir(self.directory)
     except Exception as e:
         print(e)
     self.video_manager = VideoManager(self.directory, 512, 512)
     self.particle_renderer = ParticleRenderer('shadow_map',
                                               shadow_map_resolution=0.01,
                                               alpha=0.12,
                                               shadowing=0.1,
                                               ambient_light=0.3,
                                               light_direction=(1, 3, -3))
     self.step_counter = 0
Example #6
0
 def __init__(self, **kwargs):
     self.c = tc_core.create_simulation3d('mpm')
     self.c.initialize(P(**kwargs))
     self.directory = tc.get_output_path(get_unique_task_id())
     self.video_manager = VideoManager(self.directory, 960, 540)
     try:
         os.mkdir(self.directory)
     except Exception as e:
         print e
     self.particle_renderer = ParticleRenderer('shadow_map',
                                               shadow_map_resolution=0.5,
                                               alpha=0.5,
                                               shadowing=0.1,
                                               ambient_light=0.2,
                                               light_direction=(-1, 1, -1))
     self.resolution = kwargs['resolution']
     self.frame = 0
Example #7
0
    def __init__(self, snapshot_interval=20, **kwargs):
        res = kwargs['res']
        self.frame_dt = kwargs.get('frame_dt', 0.01)
        if 'frame_dt' not in kwargs:
            kwargs['frame_dt'] = self.frame_dt
        self.num_frames = kwargs.get('num_frames', 1000)
        if len(res) == 2:
            self.c = tc_core.create_simulation2('mpm')
            self.Vector = tc_core.Vector2f
            self.Vectori = tc_core.Vector2i
        else:
            self.c = tc.core.create_simulation3('mpm')
            self.Vector = tc_core.Vector3f
            self.Vectori = tc_core.Vector3i

        self.snapshot_interval = snapshot_interval

        if 'task_id' in kwargs:
            self.task_id = kwargs['task_id']
        else:
            self.task_id = sys.argv[0].split('.')[0]
        if 'delta_x' not in kwargs:
            kwargs['delta_x'] = 1.0 / res[0]

        print('delta_x = {}'.format(kwargs['delta_x']))
        print('task_id = {}'.format(self.task_id))

        self.directory = tc.get_output_path('mpm/' + self.task_id, True)
        self.snapshot_directory = os.path.join(self.directory, 'snapshots')
        self.video_manager = VideoManager(self.directory)
        kwargs['frame_directory'] = self.video_manager.get_frame_directory()

        try:
            opts, args = getopt.getopt(sys.argv[1:], 'c:d:',
                                       ['continue=', 'dt-multiplier='])
        except getopt.GetoptError as err:
            print(err)
            # TODO: output usage here
            sys.exit()
        self.continue_opt = False
        self.continue_frame = ''
        for o, a in opts:
            if o in ('--continue', '-c'):
                print('clear_output_directory is disabled with --continue.')
                self.continue_opt = True
                self.continue_frame = int(a)
            elif o in ('--dt-multiplier', '-d'):
                kwargs['dt-multiplier'] = float(a)

        self.c.initialize(P(**kwargs))
        self.check_directory(self.directory)
        self.check_directory(self.snapshot_directory)
        vis_res = self.c.get_vis_resolution()
        self.video_manager.width = vis_res.x
        self.video_manager.height = vis_res.y
        self.particle_renderer = ParticleRenderer('shadow_map',
                                                  shadow_map_resolution=0.3,
                                                  alpha=0.7,
                                                  shadowing=2,
                                                  ambient_light=0.01,
                                                  light_direction=(1, 1, 0))
        self.res = kwargs['res']
        self.c.frame = 0

        dummy_levelset = self.create_levelset()

        def dummy_levelset_generator(_):
            return dummy_levelset

        self.levelset_generator = dummy_levelset_generator
        self.start_simulation_time = None
        self.simulation_total_time = None
        self.visualize_count = 0
        self.visualize_count_limit = 400000.0