MCPcopy Create free account
hub / github.com/MotrixLab/ADHMR / render_pose

Function render_pose

HMR-Scorer/main/render.py:29–96  ·  view source on GitHub ↗
(img, body_model_param, body_model, camera, return_mask=False)

Source from the content-addressed store, hash-verified

27# smplx_shape = smplx_shape_except_expression
28
29def render_pose(img, body_model_param, body_model, camera, return_mask=False):
30
31 # the inverse is same
32 pyrender2opencv = np.array([[1.0, 0, 0, 0],
33 [0, -1, 0, 0],
34 [0, 0, -1, 0],
35 [0, 0, 0, 1]])
36
37 output = body_model(**body_model_param, return_verts=True)
38
39 vertices = output['vertices'].detach().cpu().numpy().squeeze()
40 faces = body_model.faces
41
42 # render material
43 base_color = (1.0, 193/255, 193/255, 1.0)
44 material = pyrender.MetallicRoughnessMaterial(
45 metallicFactor=0,
46 alphaMode='OPAQUE',
47 baseColorFactor=base_color)
48
49 material_new = pyrender.MetallicRoughnessMaterial(
50 metallicFactor=0.1,
51 roughnessFactor=0.4,
52 alphaMode='OPAQUE',
53 emissiveFactor=(0.2, 0.2, 0.2),
54 baseColorFactor=(0.7, 0.7, 0.7, 1))
55 material = material_new
56
57 # get body mesh
58 body_trimesh = trimesh.Trimesh(vertices, faces, process=False)
59 body_mesh = pyrender.Mesh.from_trimesh(body_trimesh, material=material)
60
61 # prepare camera and light
62 light = pyrender.DirectionalLight(color=np.ones(3), intensity=2.0)
63 cam_pose = pyrender2opencv @ np.eye(4)
64
65 # build scene
66 scene = pyrender.Scene(bg_color=[0.0, 0.0, 0.0, 0.0],
67 ambient_light=(0.3, 0.3, 0.3))
68 scene.add(camera, pose=cam_pose)
69 scene.add(light, pose=cam_pose)
70 scene.add(body_mesh, 'mesh')
71
72 # render scene
73 os.environ["PYOPENGL_PLATFORM"] = "osmesa" # include this line if use in vscode
74 r = pyrender.OffscreenRenderer(viewport_width=img.shape[1],
75 viewport_height=img.shape[0],
76 point_size=1.0)
77
78 color, _ = r.render(scene, flags=pyrender.RenderFlags.RGBA)
79 color = color.astype(np.float32) / 255.0
80 # alpha = 1.0 # set transparency in [0.0, 1.0]
81 # color[:, :, -1] = color[:, :, -1] * alpha
82 valid_mask = (color[:, :, -1] > 0)[:, :, np.newaxis]
83 img = img / 255
84 # output_img = (color[:, :, :-1] * valid_mask + (1 - valid_mask) * img)
85 color = cv2.cvtColor(color, cv2.COLOR_BGR2RGB)
86 output_img = (color[:, :, :] * valid_mask + (1 - valid_mask) * img)

Callers 3

render_multi_poseFunction · 0.85
render_frameFunction · 0.85
visualize_seqsFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected