Render SMPL or SMPL-X mesh or silhouette into differentiable tensors, and export video or images. Args: # smpl parameters: poses (Union[torch.Tensor, np.ndarray, dict]): 1). `tensor` or `array` and ndim is 2, shape should be (frame, 72).
(
# smpl parameters
poses: Optional[Union[torch.Tensor, np.ndarray, dict]] = None,
betas: Optional[Union[torch.Tensor, np.ndarray]] = None,
transl: Optional[Union[torch.Tensor, np.ndarray]] = None,
verts: Optional[Union[torch.Tensor, np.ndarray]] = None,
body_model: Optional[nn.Module] = None,
body_model_config: Optional[dict] = None,
# camera parameters
R: Optional[Union[torch.Tensor, np.ndarray]] = None,
T: Optional[Union[torch.Tensor, np.ndarray]] = None,
K: Optional[Union[torch.Tensor, np.ndarray]] = None,
orig_cam: Optional[Union[torch.Tensor, np.ndarray]] = None,
Ks: Optional[Union[torch.Tensor, np.ndarray]] = None,
in_ndc: bool = True,
convention: str = 'pytorch3d',
projection: Literal['weakperspective', 'perspective', 'fovperspective',
'orthographics',
'fovorthographics'] = 'perspective',
orbit_speed: Union[float, Tuple[float, float]] = 0.0,
# render choice parameters
render_choice: Literal['lq', 'mq', 'hq', 'silhouette', 'depth',
'normal', 'pointcloud',
'part_silhouette'] = 'hq',
palette: Union[List[str], str, np.ndarray, torch.Tensor] = 'white',
texture_image: Union[torch.Tensor, np.ndarray] = None,
resolution: Optional[Union[List[int], Tuple[int, int]]] = None,
start: int = 0,
end: Optional[int] = None,
alpha: float = 1.0,
no_grad: bool = True,
batch_size: int = 10,
device: Union[torch.device, str] = 'cuda',
# file io parameters
return_tensor: bool = False,
output_path: str = None,
origin_frames: Optional[str] = None,
frame_list: Optional[List[str]] = None,
image_array: Optional[Union[np.ndarray, torch.Tensor]] = None,
img_format: str = '%06d.png',
overwrite: bool = False,
mesh_file_path: Optional[str] = None,
read_frames_batch: bool = False,
# visualize keypoints
plot_kps: bool = False,
kp3d: Optional[Union[np.ndarray, torch.Tensor]] = None,
mask: Optional[Union[np.ndarray, List[int]]] = None,
vis_kp_index: bool = False,
verbose: bool = False)
| 431 | |
| 432 | |
| 433 | def render_smpl( |
| 434 | # smpl parameters |
| 435 | poses: Optional[Union[torch.Tensor, np.ndarray, dict]] = None, |
| 436 | betas: Optional[Union[torch.Tensor, np.ndarray]] = None, |
| 437 | transl: Optional[Union[torch.Tensor, np.ndarray]] = None, |
| 438 | verts: Optional[Union[torch.Tensor, np.ndarray]] = None, |
| 439 | body_model: Optional[nn.Module] = None, |
| 440 | body_model_config: Optional[dict] = None, |
| 441 | # camera parameters |
| 442 | R: Optional[Union[torch.Tensor, np.ndarray]] = None, |
| 443 | T: Optional[Union[torch.Tensor, np.ndarray]] = None, |
| 444 | K: Optional[Union[torch.Tensor, np.ndarray]] = None, |
| 445 | orig_cam: Optional[Union[torch.Tensor, np.ndarray]] = None, |
| 446 | Ks: Optional[Union[torch.Tensor, np.ndarray]] = None, |
| 447 | in_ndc: bool = True, |
| 448 | convention: str = 'pytorch3d', |
| 449 | projection: Literal['weakperspective', 'perspective', 'fovperspective', |
| 450 | 'orthographics', |
| 451 | 'fovorthographics'] = 'perspective', |
| 452 | orbit_speed: Union[float, Tuple[float, float]] = 0.0, |
| 453 | # render choice parameters |
| 454 | render_choice: Literal['lq', 'mq', 'hq', 'silhouette', 'depth', |
| 455 | 'normal', 'pointcloud', |
| 456 | 'part_silhouette'] = 'hq', |
| 457 | palette: Union[List[str], str, np.ndarray, torch.Tensor] = 'white', |
| 458 | texture_image: Union[torch.Tensor, np.ndarray] = None, |
| 459 | resolution: Optional[Union[List[int], Tuple[int, int]]] = None, |
| 460 | start: int = 0, |
| 461 | end: Optional[int] = None, |
| 462 | alpha: float = 1.0, |
| 463 | no_grad: bool = True, |
| 464 | batch_size: int = 10, |
| 465 | device: Union[torch.device, str] = 'cuda', |
| 466 | # file io parameters |
| 467 | return_tensor: bool = False, |
| 468 | output_path: str = None, |
| 469 | origin_frames: Optional[str] = None, |
| 470 | frame_list: Optional[List[str]] = None, |
| 471 | image_array: Optional[Union[np.ndarray, torch.Tensor]] = None, |
| 472 | img_format: str = '%06d.png', |
| 473 | overwrite: bool = False, |
| 474 | mesh_file_path: Optional[str] = None, |
| 475 | read_frames_batch: bool = False, |
| 476 | # visualize keypoints |
| 477 | plot_kps: bool = False, |
| 478 | kp3d: Optional[Union[np.ndarray, torch.Tensor]] = None, |
| 479 | mask: Optional[Union[np.ndarray, List[int]]] = None, |
| 480 | vis_kp_index: bool = False, |
| 481 | verbose: bool = False) -> Union[None, torch.Tensor]: |
| 482 | """Render SMPL or SMPL-X mesh or silhouette into differentiable tensors, |
| 483 | and export video or images. |
| 484 | |
| 485 | Args: |
| 486 | # smpl parameters: |
| 487 | poses (Union[torch.Tensor, np.ndarray, dict]): |
| 488 | |
| 489 | 1). `tensor` or `array` and ndim is 2, shape should be |
| 490 | (frame, 72). |
no test coverage detected