INNER CODE UNIT · Python
inpaint_viewpoint
OpenTexture/Paint3D · pipeline_paint3d_stage1.py:22
def inpaint_viewpoint(sd_cfg, cnet, save_result_dir, mesh_model, dataloaders, inpaint_view_ids=[(5, 6)]):
# projection
print(f"Project inpaint view {inpaint_view_ids}...")
view_angle_info = {i:data for i, data in enumerate(dataloaders['train'])}
inpaint_used_key = ["image", "depth", "uncolored_mask"]
for i, one_batch_id in tqdm(enumerate(inpaint_view_ids)):
one_batch_img = []
for view_id in one_batch_id:
data = view_angle_info[view_id]
theta, phi, radius = data['theta'], data['phi'], data['radius']
outputs = mesh_model.render(theta=theta, phi=phi, radius=radius)
view_img_info = [outputs[k] for k in inpaint_used_key]
one_batch_img.append(view_img_info)
for i, img in enumerate(zip(*one_batch_img)):
img = torch.cat(img, dim=3)
if img.size(1) == 1:
img = img.repeat(1, 3, 1, 1)