def render(self, cam, vertices, textures, faces=None, get_fim=False): if faces is None: bs = cam.shape[0] faces = self.faces.repeat(bs, 1, 1) # lighting is inplace operation textures = textures.clone() # lighting faces_lighting = nr.vertices_to_faces(vertices, faces) textures = nr.lighting( faces_lighting, textures, self.light_intensity_ambient, self.light_intensity_directional, self.light_color_ambient, self.light_color_directional, self.light_direction) # set offset_z for persp proj proj_verts = self.proj_func(vertices, cam) # flipping the y-axis here to make it align with the image coordinate system! proj_verts[:, :, 1] *= -1 # calculate the look_at vertices. vertices = nr.look_at(proj_verts, self.eye) # rasterization faces = nr.vertices_to_faces(vertices, faces) images = nr.rasterize(faces, textures, self.image_size, self.anti_aliasing, self.near, self.far, self.rasterizer_eps, self.background_color) fim = None if get_fim: fim = nr.rasterize_face_index_map(faces, image_size=self.image_size, anti_aliasing=False, near=self.near, far=self.far, eps=self.rasterizer_eps) return images, fim
def render_fim(self, vertices, faces=None): if faces is None: bs = vertices.shape[0] faces = self.faces.repeat(bs, 1, 1) # calculate the look_at vertices. vertices = nr.look_at(vertices, self.eye) # rasterization faces = nr.vertices_to_faces(vertices, faces) fim = nr.rasterize_face_index_map(faces, self.image_size, False) return fim
def render_fim(self, cam, vertices, faces=None): if faces is None: bs = cam.shape[0] faces = self.faces.repeat(bs, 1, 1) # set offset_z for persp proj proj_verts = self.proj_func(vertices, cam) # flipping the y-axis here to make it align with the image coordinate system! proj_verts[:, :, 1] *= -1 # calculate the look_at vertices. vertices = nr.look_at(proj_verts, self.eye) # rasterization faces = nr.vertices_to_faces(vertices, faces) fim = nr.rasterize_face_index_map(faces, self.image_size, False) return fim