MCPcopy Create free account
hub / github.com/Pixel-Talk/EHM-Tracker / render_shape

Method render_shape

src/modules/pixie/utils/renderer.py:371–468  ·  view source on GitHub ↗

-- rendering shape with detail normal map

(self, vertices, transformed_vertices, colors=None, background=None, detail_normal_images=None, lights=None, return_grid=False, uv_detail_normals=None, h=None, w=None)

Source from the content-addressed store, hash-verified

369 return shading.mean(1)
370
371 def render_shape(self, vertices, transformed_vertices, colors=None, background=None, detail_normal_images=None, lights=None, return_grid=False, uv_detail_normals=None, h=None, w=None):
372 '''
373 -- rendering shape with detail normal map
374 '''
375 batch_size = vertices.shape[0]
376 if lights is None:
377 light_positions = torch.tensor(
378 [
379 [-5, 5, -5],
380 [5, 5, -5],
381 [-5, -5, -5],
382 [5, -5, -5],
383 [0, 0, -5],
384 ]
385 )[None, :, :].expand(batch_size, -1, -1).float()
386
387 light_intensities = torch.ones_like(light_positions).float()*1.7
388 lights = torch.cat((light_positions, light_intensities), 2).to(
389 vertices.device)
390 # normalize z to 10-90 for raterization (in pytorch3d, near far: 0-100)
391 transformed_vertices = transformed_vertices.clone()
392 transformed_vertices[:, :, 2] = transformed_vertices[:,
393 :, 2] - transformed_vertices[:, :, 2].min()
394 transformed_vertices[:, :, 2] = transformed_vertices[:,
395 :, 2]/transformed_vertices[:, :, 2].max()
396 transformed_vertices[:, :, 2] = transformed_vertices[:, :, 2]*80 + 10
397
398 # Attributes
399 face_vertices = util.face_vertices(
400 vertices, self.faces.expand(batch_size, -1, -1))
401 normals = util.vertex_normals(
402 vertices, self.faces.expand(batch_size, -1, -1))
403 face_normals = util.face_vertices(
404 normals, self.faces.expand(batch_size, -1, -1))
405 transformed_normals = util.vertex_normals(
406 transformed_vertices, self.faces.expand(batch_size, -1, -1))
407 transformed_face_normals = util.face_vertices(
408 transformed_normals, self.faces.expand(batch_size, -1, -1))
409 if colors is None:
410 colors = self.face_colors.expand(batch_size, -1, -1, -1)
411 attributes = torch.cat([colors,
412 transformed_face_normals.detach(),
413 face_vertices.detach(),
414 face_normals,
415 self.face_uvcoords.expand(batch_size, -1, -1, -1)],
416 -1)
417 # rasterize
418 rendering = self.rasterizer(transformed_vertices, self.faces.expand(
419 batch_size, -1, -1), attributes, h, w)
420
421 ####
422 alpha_images = rendering[:, -1, :, :][:, None, :, :].detach()
423
424 # albedo
425 albedo_images = rendering[:, :3, :, :]
426 # mask
427 # transformed_normal_map = rendering[:, 3:6, :, :].detach()
428 # pos_mask = (transformed_normal_map[:, 2:, :, :] < 0).float()

Callers 2

render_resultsMethod · 0.80
rotate_resultsMethod · 0.80

Calls 2

add_directionlightMethod · 0.95
toMethod · 0.45

Tested by

no test coverage detected