コード例 #1
0
def main():
    # Instantiate manager
    manager = ModelManager()

    # Create box models
    manager.add_model('cube1', vertices=BOX['vertices'], faces=BOX['faces'])
    manager.add_model('cube2', vertices=BOX['vertices'], faces=BOX['faces'])
    manager.add_model('cube3', vertices=BOX['vertices'], faces=BOX['faces'])
    manager.add_model('cube4', vertices=BOX['vertices'], faces=BOX['faces'])
    manager.add_model('cube5', vertices=BOX['vertices'], faces=BOX['faces'])

    # Recolour cubes
    manager.set_colour('cube1', (255, 255, 255))
    manager.set_colour('cube2', (0, 255, 0))
    manager.set_colour('cube3', (255, 0, 0))
    manager.set_colour('cube4', (0, 0, 255))
    manager.set_colour('cube5', (255, 255, 0))

    # Scale the cubes
    manager.scale('cube1', 10)
    manager.scale('cube3', 0.5)
    manager.scale('cube4', 2)

    # Add motion to the models (box1 is stationary)
    manager.add_motion('cube2', positions=cube2_position)
    manager.add_motion('cube3', positions=cube3_position)
    manager.add_motion('cube4', positions=cube4_position)
    manager.add_motion('cube5', positions=cube5_position)

    # Create scene
    scene = Scene()
    scene.set_screen_size(800, 800)
    scene.set_viewpoint((0, -30, -30))
    scene.set_rotation((np.pi / 3, 0))
    scene.set_title('Orbit Example')

    # Add manager to scene
    scene.add_manager(manager)

    # Run scene
    scene.run()
コード例 #2
0
def main():
    # Instantiate manager
    manager = ModelManager()

    # Load paddle model from STL
    data_dir = Path(__file__).absolute().parent.joinpath('data')
    manager.add_model('paddle', stl_file=data_dir.joinpath('paddle.stl'))

    # Re-define local coordinate system of paddle
    manager.change_local_basis('paddle', ((1, 0, 0), (0, 0, -1), (0, 1, 0)))

    # Get motion data from a csv
    data = get_data(data_dir.joinpath('paddle.csv'), headersize=1)

    # Convert to correct data types
    times = [datetime.strptime(t, '%Y-%m-%d %H:%M:%S.%f') for t in data[0]]
    times = [(t - times[0]).total_seconds() for t in times]
    yaw = [float(v) for v in data[1]]
    pitch = [float(v) for v in data[2]]
    roll = [float(v) for v in data[3]]
    orientations = [(yaw[i] / 180 * np.pi, -pitch[i] / 180 * np.pi,
                     -roll[i] / 180 * np.pi) for i in range(len(yaw))]

    # Add motion to the model
    manager.add_motion('paddle', times=times, orientations=orientations)

    # Create scene
    scene = Scene()
    scene.set_screen_size(800, 800)
    scene.set_viewpoint((0, 0, -5))
    scene.set_title('Paddle Example')

    # Add manager to scene
    scene.add_manager(manager)

    # Run scene
    scene.run(duration=60)