in phosa/global_opt.py [0:0]
def get_faces_and_textures(verts_list, faces_list):
"""
Args:
verts_list (List[Tensor(B x V x 3)]).
faces_list (List[Tensor(f x 3)]).
Returns:
faces: (1 x F x 3)
textures: (1 x F x 1 x 1 x 1 x 3)
"""
colors_list = [
[251 / 255.0, 128 / 255.0, 114 / 255.0], # red
[0.65098039, 0.74117647, 0.85882353], # blue
[0.9, 0.7, 0.7], # pink
]
all_faces_list = []
all_textures_list = []
o = 0
for verts, faces, colors in zip(verts_list, faces_list, colors_list):
B = len(verts)
index_offset = torch.arange(B).to(verts.device) * verts.shape[1] + o
o += verts.shape[1] * B
faces_repeat = faces.clone().repeat(B, 1, 1)
faces_repeat += index_offset.view(-1, 1, 1)
faces_repeat = faces_repeat.reshape(-1, 3)
all_faces_list.append(faces_repeat)
textures = torch.FloatTensor(colors).to(verts.device)
all_textures_list.append(textures.repeat(faces_repeat.shape[0], 1, 1, 1, 1))
all_faces_list = torch.cat(all_faces_list).unsqueeze(0)
all_textures_list = torch.cat(all_textures_list).unsqueeze(0)
return all_faces_list, all_textures_list