示例#1
0
    def __init__(self, width=1200, height=800, use_offscreen=True):
        super(MeshViewer, self).__init__()

        self.use_offscreen = use_offscreen
        self.render_wireframe = False

        self.mat_constructor = pyrender.MetallicRoughnessMaterial
        self.trimesh_to_pymesh = pyrender.Mesh.from_trimesh

        self.scene = pyrender.Scene(bg_color=colors['white'],
                                    ambient_light=(0.3, 0.3, 0.3))

        pc = pyrender.PerspectiveCamera(yfov=np.pi / 3.0,
                                        aspectRatio=float(width) / height)

        camera_pose = np.eye(4)
        camera_pose[:3, 3] = np.array([0, 0, 2.5])
        self.scene.add(pc, pose=camera_pose, name='pc-camera')

        self.figsize = (width, height)

        if self.use_offscreen:
            self.viewer = pyrender.OffscreenRenderer(*self.figsize)
            self.use_raymond_lighting(5.)
        else:
            self.viewer = pyrender.Viewer(self.scene,
                                          use_raymond_lighting=True,
                                          viewport_size=self.figsize,
                                          cull_faces=False,
                                          run_in_thread=True)

        self.set_background_color(colors['white'])
示例#2
0
    def show(self, q=None, obstacles=None):
        cfg = self.get_config(q)
        # print(cfg)

        fk = self.robot.link_fk(cfg=cfg)

        scene = pyrender.Scene()
        # adding robot to the scene
        for tm in fk:
            pose = fk[tm]
            init_pose, link_mesh = self.get_link_mesh(tm)
            mesh = pyrender.Mesh.from_trimesh(link_mesh, smooth=False)
            scene.add(mesh, pose=np.matmul(pose, init_pose))

        # adding base box to the scene
        # table = box([0.5, 0.5, 0.01])
        # table.apply_translation([0, 0, -0.1])

        cam = pyrender.PerspectiveCamera(yfov=np.pi / 3.0, aspectRatio=1.414)
        # nc = pyrender.Node(camera=cam, matrix=np.eye(4))
        # scene.add_node(nc)
        init_cam_pose = np.eye(4)
        init_cam_pose[2, 3] = 2.5
        scene.add(cam, pose=init_cam_pose)

        # scene.add(pyrender.Mesh.from_trimesh(table))

        # adding obstacles to the scene
        for ob in obstacles:
            scene.add(pyrender.Mesh.from_trimesh(ob, smooth=False))

        pyrender.Viewer(scene, use_raymond_lighting=True)
示例#3
0
def load_dynamic_contour(template_flame_path='None', contour_embeddings_path='None', static_embedding_path='None', angle=0):
    template_mesh = Mesh(filename=template_flame_path)
    contour_embeddings_path = contour_embeddings_path
    dynamic_lmks_embeddings = np.load(contour_embeddings_path, allow_pickle=True, encoding='latin1').item()
    lmk_face_idx_static, lmk_b_coords_static = load_static_embedding(static_embedding_path)
    lmk_face_idx_dynamic = dynamic_lmks_embeddings['lmk_face_idx'][angle]
    lmk_b_coords_dynamic = dynamic_lmks_embeddings['lmk_b_coords'][angle]
    dynamic_lmks = mesh_points_by_barycentric_coordinates(template_mesh.v, template_mesh.f, lmk_face_idx_dynamic, lmk_b_coords_dynamic)
    static_lmks = mesh_points_by_barycentric_coordinates(template_mesh.v, template_mesh.f, lmk_face_idx_static, lmk_b_coords_static)
    total_lmks = np.vstack([dynamic_lmks, static_lmks])

    # Visualization of the pose dependent contour on the template mesh
    vertex_colors = np.ones([template_mesh.v.shape[0], 4]) * [0.3, 0.3, 0.3, 0.8]
    tri_mesh = trimesh.Trimesh(template_mesh.v, template_mesh.f,
                               vertex_colors=vertex_colors)
    mesh = pyrender.Mesh.from_trimesh(tri_mesh)
    scene = pyrender.Scene()
    scene.add(mesh)
    sm = trimesh.creation.uv_sphere(radius=0.005)
    sm.visual.vertex_colors = [0.9, 0.1, 0.1, 1.0]
    tfs = np.tile(np.eye(4), (len(total_lmks), 1, 1))
    tfs[:, :3, 3] = total_lmks
    joints_pcl = pyrender.Mesh.from_trimesh(sm, poses=tfs)
    scene.add(joints_pcl)
    pyrender.Viewer(scene, use_raymond_lighting=True)
示例#4
0
    def show(self, q=None, obstacles=None, use_collision=False):
        cfg = self.get_config(q)
        #print(cfg)
        if use_collision:
            fk = self.robot.collision_trimesh_fk(cfg=cfg)
        else:
            fk = self.robot.visual_trimesh_fk(cfg=cfg)

        scene = pyrender.Scene()
        # adding robot to the scene
        for tm in fk:
            pose = fk[tm]
            mesh = pyrender.Mesh.from_trimesh(tm, smooth=False)
            scene.add(mesh, pose=pose)

        # adding base box to the scene
        table = cylinder(radius=0.7, height=0.02)  #([0.5, 0.5, 0.02])
        table.apply_translation([0, 0, -0.015])
        table.visual.vertex_colors = [205, 243, 8, 255]

        scene.add(pyrender.Mesh.from_trimesh(table))

        # adding obstacles to the scene
        for i, ob in enumerate(obstacles):
            if i < len(obstacles) - 1:
                ob.visual.vertex_colors = [255, 0, 0, 255]
            else:
                ob.visual.vertex_colors = [205, 243, 8, 255]
            scene.add(pyrender.Mesh.from_trimesh(ob, smooth=False))

        pyrender.Viewer(scene, use_raymond_lighting=True)
示例#5
0
def test3():
    model_path = 'data/models/basic/cow.obj'
    scene = pyrender.Scene(ambient_light=white)

    # load the cow model
    tm = trimesh.load(model_path)
    tm.visual.vertex_colors = np.random.uniform(
        size=tm.visual.vertex_colors.shape)
    tm.visual.face_colors = np.random.uniform(size=tm.visual.face_colors.shape)

    mesh = pyrender.Mesh.from_trimesh(tm, smooth=False)
    pose = np.eye(4)
    x = 5
    dist = [x, x, x]
    pose[:3, 3] = dist
    scene.add(mesh, pose=pose)

    M = rotation_matrix(theta_x=90, theta_y=90)
    tm.apply_transform(M)
    mesh2 = pyrender.Mesh.from_trimesh(tm, smooth=False)
    pose2 = np.eye(4)
    pose2[:3, 3] = [-x for x in dist]
    scene.add(mesh2, pose=pose2)

    pyrender.Viewer(scene)
    def show(self, cfg=None, use_collision=False):
        """Visualize the URDF in a given configuration.
        Parameters
        ----------
        cfg : dict or (n), float
            A map from joints or joint names to configuration values for
            each joint, or a list containing a value for each actuated joint
            in sorted order from the base link.
            If not specified, all joints are assumed to be in their default
            configurations.
        use_collision : bool
            If True, the collision geometry is visualized instead of
            the visual geometry.
        """
        if use_collision:
            fk = self.urdf.collision_trimesh_fk(cfg=cfg)
        else:
            fk = self.urdf.visual_trimesh_fk(cfg=cfg)

        self.scene = pyrender.Scene()
        self.nodes = []
        for tm in fk:
            pose = fk[tm]
            mesh = pyrender.Mesh.from_trimesh(tm, smooth=False)
            mesh_node = self.scene.add(mesh, pose=pose)
            self.nodes.append(mesh_node)
        self.viewer = pyrender.Viewer(self.scene, run_in_thread=True, use_raymond_lighting=True)
def view_mesh(mesh_filename, rotate_axis=[0, 0, 1]):
    # mesh_filename = f'checkpoints/train_autoencoder/{recon}/{meshanme}.ply'
    mesh = trimesh.load(mesh_filename)
    mesh = pyrender.Mesh.from_trimesh(mesh)
    scene = pyrender.Scene()
    scene.add(mesh)
    pyrender.Viewer(scene, use_raymond_lighting=True, rotate_axis=rotate_axis)
示例#8
0
文件: CW1.py 项目: xx0099xx/P2PICP
def run_gui(render_list, **kargs):
    scene = scene_factory(render_list)
    # call GUI
    v = pyrender.Viewer(scene, use_raymond_lighting=True, **kargs)
    # free resources
    del v
    return None
def start():
    modelPartsViewer.renderMode = 0
    modelPartsViewer.viewerModelIndex = 0

    defaultModel = modelPartsViewer.models[modelPartsViewer.viewerModelIndex]
    defaultScene = pyrender.Scene()
    defaultCaption = getCaptionForModel(defaultModel,
                                        modelPartsViewer.viewerModelIndex)
    setSceneMeshes(defaultScene, defaultModel.parts)

    pyrender.Viewer(defaultScene,
                    viewer_flags={'caption': defaultCaption},
                    registered_keys={
                        'd': viewNextModel,
                        'a': viewPrevModel,
                        's': viewPrevPart,
                        'w': viewNextPart,
                        'g': generateChairViewer,
                        'x': takeScreenshot,
                        'y': takePositiveScreenShot,
                        'n': takeNegativeScreenShot,
                        'e': evalCurrentChair,
                        'o': exportCurrentChair
                    },
                    use_raymond_lighting=True)
    def __init__(self,
                 width=1200,
                 height=800,
                 body_color=(1.0, 1.0, 0.9, 1.0),
                 registered_keys=None):
        super(MeshViewer, self).__init__()

        if registered_keys is None:
            registered_keys = dict()

        self.mat_constructor = pyrender.MetallicRoughnessMaterial
        self.mesh_constructor = trimesh.Trimesh
        self.trimesh_to_pymesh = pyrender.Mesh.from_trimesh
        self.transf = trimesh.transformations.rotation_matrix

        self.body_color = body_color
        self.scene = pyrender.Scene(bg_color=[0.0, 0.0, 0.0, 1.0],
                                    ambient_light=(0.3, 0.3, 0.3))

        pc = pyrender.PerspectiveCamera(yfov=np.pi / 3.0,
                                        aspectRatio=float(width) / height)
        camera_pose = np.eye(4)
        camera_pose[:3, 3] = np.array([0, 0, 3])
        self.scene.add(pc, pose=camera_pose)

        self.viewer = pyrender.Viewer(self.scene,
                                      use_raymond_lighting=True,
                                      viewport_size=(width, height),
                                      cull_faces=False,
                                      run_in_thread=True,
                                      registered_keys=registered_keys)
示例#11
0
def get_landmarks(dynamic_lmks_embeddings,
                  lmk_face_idx_static,
                  lmk_b_coords_static,
                  vertices,
                  faces,
                  angle=0):
    lmk_face_idx_dynamic = dynamic_lmks_embeddings['lmk_face_idx'][angle]
    lmk_b_coords_dynamic = dynamic_lmks_embeddings['lmk_b_coords'][angle]
    dynamic_lmks = mesh_points_by_barycentric_coordinates(
        vertices, faces, lmk_face_idx_dynamic, lmk_b_coords_dynamic)
    static_lmks = mesh_points_by_barycentric_coordinates(
        vertices, faces, lmk_face_idx_static, lmk_b_coords_static)
    total_lmks = np.vstack([dynamic_lmks, static_lmks])

    # Visualization of the pose dependent contour on the template mesh
    vertex_colors = np.ones([vertices.shape[0], 4]) * [0.3, 0.3, 0.3, 0.8]
    tri_mesh = trimesh.Trimesh(vertices, faces, vertex_colors=vertex_colors)
    mesh = pyrender.Mesh.from_trimesh(tri_mesh)
    scene = pyrender.Scene()
    scene.add(mesh)
    sm = trimesh.creation.uv_sphere(radius=0.005)
    sm.visual.vertex_colors = [0.9, 0.1, 0.1, 1.0]
    tfs = np.tile(np.eye(4), (len(total_lmks), 1, 1))
    tfs[:, :3, 3] = total_lmks
    # print(total_lmks)
    # print(len(total_lmks))
    joints_pcl = pyrender.Mesh.from_trimesh(sm, poses=tfs)
    scene.add(joints_pcl)
    pyrender.Viewer(scene, use_raymond_lighting=True)
示例#12
0
def main():
    name = 's0_train'
    dataset = get_dataset(name)

    idx = 70

    sample = dataset[idx]

    scene_r = create_scene(sample, dataset.obj_file)
    scene_v = create_scene(sample, dataset.obj_file)

    print('Visualizing pose in camera view using pyrender renderer')

    r = pyrender.OffscreenRenderer(viewport_width=dataset.w,
                                   viewport_height=dataset.h)

    im_render, _ = r.render(scene_r)

    im_real = cv2.imread(sample['color_file'])
    im_real = im_real[:, :, ::-1]

    im = 0.33 * im_real.astype(np.float32) + 0.67 * im_render.astype(
        np.float32)
    im = im.astype(np.uint8)

    print('Close the window to continue.')

    plt.imshow(im)
    plt.tight_layout()
    plt.show()

    print('Visualizing pose using pyrender 3D viewer')

    pyrender.Viewer(scene_v)
示例#13
0
def show_urdf_transform_manager(tm, frame, collision_objects=False,
        visuals=False):
    """Render URDF file with pyrender.

    Parameters
    ----------
    tm : UrdfTransformManager
        Transformation manager

    frame : str
        Base frame for rendering

    collision_objects : bool, optional (default: False)
        Render collision objects

    visuals : bool, optional (default: False)
        Render visuals
    """
    scene = pr.Scene()
    if collision_objects:
        if hasattr(tm, "collision_objects"):
            _add_objects(scene, tm.collision_objects)
    if visuals:
        if hasattr(tm, "visuals"):
            _add_objects(scene, tm.visuals)
    pr.Viewer(scene, use_raymond_lighting=True)
示例#14
0
def view_smpl_model(smplx_model, model_output, plotting_module='pyrender', plot_joints=False):
    
    vertices = model_output.vertices.detach().cpu().numpy().squeeze()
    joints = model_output.joints.detach().cpu().numpy().squeeze()

    if plotting_module == 'pyrender':
        import pyrender
        import trimesh
        vertex_colors = np.ones([vertices.shape[0], 4]) * [0.3, 0.3, 0.3, 0.8]
        tri_mesh = trimesh.Trimesh(vertices, smplx_model.faces,
                                   vertex_colors=vertex_colors)

        mesh = pyrender.Mesh.from_trimesh(tri_mesh)

        scene = pyrender.Scene()
        scene.add(mesh)

        if plot_joints:
            sm = trimesh.creation.uv_sphere(radius=0.005)
            sm.visual.vertex_colors = [0.9, 0.1, 0.1, 1.0]
            tfs = np.tile(np.eye(4), (len(joints), 1, 1))
            tfs[:, :3, 3] = joints
            joints_pcl = pyrender.Mesh.from_trimesh(sm, poses=tfs)
            scene.add(joints_pcl)

        pyrender.Viewer(scene, use_raymond_lighting=True)
示例#15
0
def display(mesh, light=None, camera=None):
    scene = pyrender.Scene(ambient_light=white)
    scene.add(mesh)
    if light:
        scene.add(light)
    if camera:
        scene.add(camera)
    pyrender.Viewer(scene)
示例#16
0
def view_points(points, dists):
    import pyrender
    colors = numpy.zeros(points.shape)
    colors[dists < 0, 2] = 1
    colors[dists > 0, 0] = 1
    cloud = pyrender.Mesh.from_points(points, colors=colors)
    scene = pyrender.Scene()
    scene.add(cloud)
    viewer = pyrender.Viewer(scene, use_raymond_lighting=True, point_size=2)
示例#17
0
def run_gui_pyrmesh(pyr_meshes, point_size=10):
    scene = generateSceneWithPyrenderMeshes(pyr_meshes)
    v = pyrender.Viewer(
        scene,
        use_raymond_lighting=True,
        point_size=point_size,
        refresh_rate=60,
    )
    del v
示例#18
0
def prediction_animation(real_traj,
                         pred_traj,
                         loop_time,
                         urdf_path='robots/right_hand_relative.urdf',
                         real_color=np.array([71, 107, 107, 255]),
                         pred_color_cmap=matplotlib.cm.get_cmap('tab10'),
                         background_color=np.array([1.0, 1.0, 1.0]),
                         title="Hand Motion Prediction",
                         hand_offset=0.2,
                         reverse=True):

    scene, origin, node_map, real_hand, pred_hands, pred_trajectories, times, fps = setup_animation_scene(
        real_traj=real_traj,
        pred_traj=pred_traj,
        hand_offset=hand_offset,
        loop_time=loop_time,
        urdf_path=urdf_path,
        real_color=real_color,
        pred_color_cmap=pred_color_cmap,
        background_color=background_color,
        reverse=reverse)

    # Pop the visualizer asynchronously
    v = pyrender.Viewer(
        scene,
        run_in_thread=True,
        use_raymond_lighting=True,
        window_title=title,
        use_perspective_cam=False,
        view_center=origin[:3, 3] +
        np.array([(hand_offset * (len(pred_trajectories) + 1)) / 2, 0, 0.04]))

    # Now, run our loop
    i = 0
    while v.is_active:
        real_cfg = {k: real_traj[k][i] for k in real_traj}
        pred_cfgs = [{k: pred_traj[k][i]
                      for k in pred_traj} for pred_traj in pred_trajectories]
        i = (i + 1) % len(times)

        fk_real = real_hand.visual_trimesh_fk(cfg=real_cfg)
        fk_preds = [
            pred_hand.visual_trimesh_fk(cfg=pred_cfg)
            for pred_hand, pred_cfg in zip(pred_hands, pred_cfgs)
        ]

        v.render_lock.acquire()
        for real_mesh in fk_real:
            real_pose = fk_real[real_mesh]
            node_map[real_mesh].matrix = real_pose
        for fk_pred in fk_preds:
            for pred_mesh in fk_pred:
                pred_pose = fk_pred[pred_mesh]
                node_map[pred_mesh].matrix = pred_pose
        v.render_lock.release()

        time.sleep(1.0 / fps)
示例#19
0
    def animate(self, q_traj=None, obstacles=None):
        import time
        fps = 10.0
        cfgs = [self.get_config(q) for q in q_traj]

        # Create the scene
        fk = self.robot.visual_trimesh_fk(cfg=cfgs[0])

        node_map = {}
        init_pose_map = {}
        scene = pyrender.Scene()
        for tm in fk:
            pose = fk[tm]
            mesh = pyrender.Mesh.from_trimesh(tm, smooth=False)
            node = scene.add(mesh, pose=pose)
            node_map[tm] = node

        # adding base box to the scene
        #table = cylinder(radius=0.7, height=0.02) #([0.5, 0.5, 0.02])
        #table.apply_translation([0, 0, -0.015])
        #table.visual.vertex_colors = [205, 243, 8, 255]
        #scene.add(pyrender.Mesh.from_trimesh(table))

        cam = pyrender.PerspectiveCamera(yfov=np.pi / 3.0, aspectRatio=1.414)
        init_cam_pose = np.eye(4)
        init_cam_pose[2, 3] = 2.5
        scene.add(cam, pose=init_cam_pose)

        # adding obstacles to the scene
        for i, ob in enumerate(obstacles):
            if i < len(obstacles) - 1:
                ob.visual.vertex_colors = [255, 0, 0, 255]
            else:
                ob.visual.vertex_colors = [205, 243, 8, 255]
            scene.add(pyrender.Mesh.from_trimesh(ob, smooth=False))

        # Pop the visualizer asynchronously
        v = pyrender.Viewer(scene,
                            run_in_thread=True,
                            use_raymond_lighting=True)
        time.sleep(1.0)
        # Now, run our loop
        i = 0
        while v.is_active:
            cfg = cfgs[i]
            fk = self.robot.visual_trimesh_fk(cfg=cfg)
            if i < len(cfgs) - 1:
                i += 1
            else:
                i = 0
                time.sleep(1.0)
            v.render_lock.acquire()
            for mesh in fk:
                pose = fk[mesh]
                node_map[mesh].matrix = pose
            v.render_lock.release()
            time.sleep(1.0 / fps)
示例#20
0
文件: GUI.py 项目: mnolp/INFOMR
def render_mesh(filepath):
    filepath = filepath[0][0]
    if filepath[0] != '/':
        filepath = 'dataset/' + filepath  #[:filepath.index('.')]+'_processed.off'
    fuze_trimesh = trimesh.load(filepath)
    mesh = pyrender.Mesh.from_trimesh(fuze_trimesh)
    scene = pyrender.Scene()
    scene.add(mesh)
    pyrender.Viewer(scene, use_raymond_lighting=True)
def rendering(mat):
    pcd = open3d.geometry.PointCloud()
    pcd.points = open3d.utility.Vector3dVector(mat["verts"])
    pcd.normals = open3d.utility.Vector3dVector(mat["normal_vec"])
    # pcd.estimate_normals()

    # estimate radius for rolling ball
    distances = pcd.compute_nearest_neighbor_distance()
    avg_dist = np.mean(distances)
    radius = 1.5 * avg_dist

    mesh = open3d.geometry.TriangleMesh.create_from_point_cloud_ball_pivoting(
        pcd, open3d.utility.DoubleVector([radius, radius * 5])
    )

    # mesh, density = open3d.geometry.TriangleMesh.create_from_point_cloud_poisson(pcd)

    # create the triangular mesh with the vertices and faces from open3d
    tri_mesh = trimesh.Trimesh(
        np.asarray(mesh.vertices),
        np.asarray(mesh.triangles),
        vertex_normals=np.asarray(mesh.vertex_normals),
        process=False,
    )
    # tri_mesh.export("test.stl")

    # tri_mesh.convex.is_convex(tri_mesh)

    mesh = pyrender.Mesh.from_trimesh(tri_mesh, smooth=False)

    # mesh = pyrender.Mesh.from_points(pcd.points, normals=pcd.normals)

    center = np.zeros(3)
    # center = (mat["verts"].min(axis=0) + mat["verts"].max(axis=0)) / 2
    # center[1] = mat["verts"][:, 1].min() + 10
    center[1] = -5
    center[2] = mat["verts"][:, 2].min()

    # compose scene
    scene = pyrender.Scene(ambient_light=[0.1, 0.1, 0.1], bg_color=[0.7, 0.7, 0.7])
    camera = pyrender.PerspectiveCamera(yfov=np.pi / 4.0)
    # camera = pyrender.IntrinsicsCamera(1, 1, 0, 0)
    # light = pyrender.DirectionalLight(color=[1, 1, 1], intensity=1)
    light = pyrender.PointLight(color=[1.0, 1.0, 1.0], intensity=2.5e3)

    scene.add(mesh, pose=np.eye(4))
    scene.add(light, pose=[[1, 0, 0, center[0]], [0, 1, 0, center[1]], [0, 0, -1, center[2] - 20], [0, 0, 0, 1]])
    scene.add(camera, pose=[[1, 0, 0, center[0]], [0, -1, 0, center[1]], [0, 0, -1, center[2] - 40], [0, 0, 0, 1]])

    # render scene
    # r = pyrender.OffscreenRenderer(800, 768)
    # color, _ = r.render(scene)
    # r.delete()
    pyrender.Viewer(scene)

    return color
示例#22
0
def plot3d(pc):
    colors = np.zeros(pc.shape)
    colors[:,1] = 0.85

    cloud = pyrender.Mesh.from_points(pc, colors=colors)

    scene = pyrender.Scene()
    scene.add(cloud)
    viewer = pyrender.Viewer(scene, use_raymond_lighting=True, point_size=2.5)
    viewer.close_external()
示例#23
0
文件: util.py 项目: zren96/shapegan
def show_sdf_point_cloud(points, sdf):
    import pyrender
    colors = np.zeros(points.shape)
    colors[sdf < 0, 2] = 1
    colors[sdf > 0, 0] = 1
    cloud = pyrender.Mesh.from_points(points, colors=colors)

    scene = pyrender.Scene()
    scene.add(cloud)
    viewer = pyrender.Viewer(scene, use_raymond_lighting=True, point_size=2)
示例#24
0
def render(obj):
    import pyrender, os

    m = pyrender.Mesh.from_trimesh(obj.mesh, smooth=False)

    scene = pyrender.Scene(ambient_light=[0.1, 0.1, 0.1, 0.1])
    light = pyrender.PointLight(intensity=500)
    scene.add(m)
    #scene.add(light)
    pyrender.Viewer(scene)
示例#25
0
    def create_scene(self, off_screen=False, ego_view=True, pose=None):
        """ Creates a scene with the robot and a camera

        Parameters
        ----------
        off_screen : bool, optional
            False for showing and displaying the robot, by default False
        ego_view : bool, optional
            True for ego view, false for observer camera, by default True
        """
        if pose is None:
            if ego_view:
                pose = [[0, 0.5, -0.35, 0.2], [-1, 0, 0, 0.0],
                        [0, 0.35, 0.5, 1.5], [0, 0, 0, 1]]
            else:
                pose = [[0, 0, 1, 1.5], [1, 0, 0, 0.0], [0, 1, 0, 1.2],
                        [0, 0, 0, 1]]

        node_map = {}
        self.scene = pyrender.Scene()
        fk = self.get_robot_trimesh()
        for tm in self.get_robot_trimesh():
            pose = fk[tm]
            mesh = pyrender.Mesh.from_trimesh(tm, smooth=False)
            node = self.scene.add(mesh, pose=pose)
            self.r_node_map[tm] = node
        if off_screen:
            if ego_view:
                camera = pyrender.IntrinsicsCamera(400, 400, 1920 / 2,
                                                   1080 / 2)
                light = pyrender.DirectionalLight(color=[1, 1, 1],
                                                  intensity=2e3)
                '''
                self.scene.add(camera, pose=[[ 0,  0.5,  -0.87,  0.2],
                            [ -1,  0,  0, 0.0],
                            [ 0,  0.87,  0.5,  1.5],
                            [ 0,  0,  0,  1]])'''
                self.scene.add(camera, pose=pose)

                self.scene.add(light, pose=np.eye(4))
            else:
                camera = pyrender.IntrinsicsCamera(800, 800, 1920 / 2,
                                                   1080 / 2)
                light = pyrender.DirectionalLight(color=[1, 1, 1],
                                                  intensity=2e3)
                self.scene.add(camera, pose=pose)

                self.scene.add(light, pose=np.eye(4))

            self.rend = pyrender.OffscreenRenderer(1920, 1080)
            logger.debug("renderer initialised: " + str(self.rend))
        else:
            self.viewer = pyrender.Viewer(self.scene,
                                          use_raymond_lighting=True,
                                          run_in_thread=True)
示例#26
0
def visualize_smpl():
    smpl_file = 'assets/neutral_smpl.pkl'
    with open(smpl_file, 'rb') as fh:
        smpl = pickle.load(fh, encoding='latin1')

    # Form the scene, with smoothing turned on.
    tm = trimesh.Trimesh(vertices=smpl['v_template'], faces=smpl['f'])
    mesh = pyrender.Mesh.from_trimesh(tm, smooth=True)
    scene = pyrender.Scene()
    scene.add(mesh)

    pyrender.Viewer(scene, use_raymond_lighting=True)
示例#27
0
def renderVertices(vertices):
    mesh = pyrender.Mesh.from_points([[v[0], v[1], -1.0] for v in vertices])
    cam = pyrender.OrthographicCamera(xmag=ORTHO_CAM[0], ymag=ORTHO_CAM[1])
    pos = np.eye(4)
    scene = pyrender.Scene()
    scene.add(mesh)
    scene.add(cam, pose=pos)
    pyrender.Viewer(scene,
                    VIEWPORT_SIZE,
                    all_wireframe=True,
                    cull_faces=False,
                    use_perspective_cam=False)
示例#28
0
def show_meshes(meshes, angle_x=-0.7854, angle_y=0, angle_z=0.31416, 
                ax=None, resolution=(1200, 1200), interactive=False):

    if ax is None:
        fig, ax = plt.subplots(1, 1)

    scene = pyrender.Scene(ambient_light=[0.0, 0.0, 0.0],
                           bg_color=[1.0, 1.0, 1.0], )

    for mesh in meshes:
        mesh = mesh.copy()
        re = trimesh.transformations.euler_matrix(angle_x, angle_y, angle_z, 'rxyz')
        mesh.apply_transform(re)
        scene.add(pyrender.Mesh.from_trimesh(mesh))
    camera = pyrender.PerspectiveCamera(yfov=np.pi / 4.0, aspectRatio=1.0)

    camera_pose = np.eye(4)
    camera_pose[:3, 3] = [0, 0, 240]
    scene.add(camera, pose=camera_pose)

    ligth_poses = [np.array([[-0.000, -0.866,  0.500,  0.],
                             [ 1.000, -0.000, -0.000,  0.],
                             [ 0.000,  0.500,  0.866,  0.],
                             [ 0.000,  0.000,  0.000,  1.]]),
                   np.array([[ 0.866,  0.433, -0.250,  0.],
                             [-0.500,  0.750, -0.433,  0.],
                             [ 0.000,  0.500,  0.866,  0.],
                             [ 0.000,  0.000,  0.000,  1.]]),
                   np.array([[-0.866,  0.433, -0.250,  0.],
                             [-0.500, -0.750,  0.433,  0.],
                             [ 0.000,  0.500,  0.866,  0.],
                             [ 0.000,  0.000,  0.000,  1.]])]

    for pose in ligth_poses:
        light = pyrender.DirectionalLight(color=[1.0, 1.0, 1.0],
                                          intensity=1.0)
        scene.add(light, pose=pose)
    if interactive:
        pyrender.Viewer(scene, use_raymond_lighting=True)
    else:
        r = pyrender.OffscreenRenderer(*resolution)
        color, depth = r.render(scene)
        if ax is None:
            fig, ax = plt.subplots(1, 1, figsize=(10, 10))
        ax.axis('off')
    
        ind_ax0 = np.where(np.any(np.any(color != 255, axis=2), axis=1))[0]
        ind_ax1 = np.where(np.any(np.any(color != 255, axis=2), axis=0))[0]
    
        ax.imshow(color[ind_ax0[0]:(ind_ax0[-1]+1), ind_ax1[0]:(ind_ax1[-1]+1), :])

        return ax
示例#29
0
 def setup_viewer(self):
     render_flags = {
         "shadows": True,
     }
     viewer_flags = {
         "window_title": "Pyrender Bullet GUI",
     }
     viewer = pyrender.Viewer(self._scene,
                              viewport_size=(1600, 900),
                              run_in_thread=True,
                              render_flags=render_flags,
                              viewer_flags=viewer_flags)
     self._viewer = viewer
示例#30
0
def display(mesh, grasps, quality_s=None):
    scene = dex.DexScene(ambient_light=[0.02, 0.02, 0.02],
                         bg_color=[1.0, 1.0, 1.0])
    scene.add_obj(mesh)
    if quality_s is None:
        quality_s = [1] * len(grasps)
    for g, q in zip(grasps, quality_s):
        c = q * np.array([255, 0, -255]) + np.array([0, 0, 255])
        c = np.concatenate((c, [255]))
        c = c.astype(int)
        scene.add_grasp(g, color=c)
        scene.add_grasp_center(g)
    pyrender.Viewer(scene, use_raymond_lighting=True)