MCPcopy Create free account
hub / github.com/ZhengdiYu/SignAvatars / render

Function render

vis.py:150–197  ·  view source on GitHub ↗
(img, mesh, face, cam_param)

Source from the content-addressed store, hash-verified

148 return joint_proj
149
150def render(img, mesh, face, cam_param):
151 # mesh
152 mesh = trimesh.Trimesh(mesh, face)
153 rot = trimesh.transformations.rotation_matrix(
154 np.radians(180), [1, 0, 0])
155 mesh.apply_transform(rot)
156 material = pyrender.MetallicRoughnessMaterial(metallicFactor=0.125, roughnessFactor=0.6, alphaMode='OPAQUE', baseColorFactor=(0.425, 0.72, 0.8, 1))
157 mesh = pyrender.Mesh.from_trimesh(mesh, material=material, smooth=True)
158
159 scene = pyrender.Scene(bg_color=[0.0, 0.0, 0.0, 0.0], ambient_light=(0.3, 0.3, 0.3))
160 scene.add(mesh, 'mesh')
161
162 focal, princpt = cam_param['focal'], cam_param['princpt']
163 camera = pyrender.IntrinsicsCamera(fx=focal[0], fy=focal[1], cx=princpt[0], cy=princpt[1])
164 scene.add(camera)
165
166 # renderer
167 renderer = pyrender.OffscreenRenderer(viewport_width=img.shape[1], viewport_height=img.shape[0], point_size=1.0)
168
169 # # light
170 light = pyrender.DirectionalLight(color=np.array([1.0, 1.0, 1.0]), intensity=0.8)
171 light_pose = np.eye(4)
172 light_pose[:3, 3] = np.array([0, -1, 1])
173 scene.add(light, pose=light_pose)
174 light_pose[:3, 3] = np.array([0, 1, 1])
175 scene.add(light, pose=light_pose)
176 light_pose[:3, 3] = np.array([1, 1, 2])
177 scene.add(light, pose=light_pose)
178
179 spot_l = pyrender.SpotLight(color=np.ones(3),
180 intensity=15.0,
181 innerConeAngle=np.pi / 3,
182 outerConeAngle=np.pi / 2)
183
184 light_pose[:3, 3] = [1, 2, 2]
185 scene.add(spot_l, pose=light_pose)
186
187 light_pose[:3, 3] = [-1, 2, 2]
188 scene.add(spot_l, pose=light_pose)
189
190 # render
191 rgb, depth = renderer.render(scene, flags=pyrender.RenderFlags.RGBA | pyrender.RenderFlags.SHADOWS_DIRECTIONAL)
192 rgb = rgb[:,:,:3].astype(np.float32)
193 valid_mask = (depth > 0)[:,:,None]
194
195 # save to image
196 img = rgb * valid_mask + img * (1-valid_mask)
197 return img
198
199def process_single_video(file_name, result_path):
200 video_name = os.path.basename(file_name).split('.pkl')[0]

Callers 1

process_single_videoFunction · 0.85

Calls 2

addMethod · 0.45
renderMethod · 0.45

Tested by

no test coverage detected