MCPcopy Create free account
hub / github.com/MotrixLab/AiOS / render_smpl

Function render_smpl

detrsmpl/core/visualization/visualize_smpl.py:433–1054  ·  view source on GitHub ↗

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)

Source from the content-addressed store, hash-verified

431
432
433def 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).

Callers 2

inferenceMethod · 0.90
inferenceMethod · 0.90

Calls 15

update_paddedMethod · 0.95
vid_info_readerClass · 0.90
ParametricMeshesClass · 0.90
save_meshes_as_plysFunction · 0.90
save_meshes_as_objsFunction · 0.90
compute_orbit_camerasFunction · 0.90
convert_camera_matrixFunction · 0.90
SMPLRendererClass · 0.90
build_camerasFunction · 0.90
align_input_to_paddedFunction · 0.90
_prepare_input_poseFunction · 0.85
_prepare_body_modelFunction · 0.85

Tested by

no test coverage detected