Skip to content

SMPL Loader

Documentation

  • Class name: SMPLLoader
  • Category: MotionDiff/smpl
  • Output node: False

The SMPLLoader node is designed to load and process SMPL model data from specified files, facilitating the integration of SMPL models into motion analysis and synthesis workflows.

Input types

Required

  • smpl
    • Specifies the file name of the SMPL model to be loaded. This file contains essential data for motion synthesis, including pose parameters.
    • Comfy dtype: COMBO[STRING]
    • Python dtype: str
  • smpl_model
    • Determines the specific SMPL model to be used, affecting the interpretation of the loaded SMPL data.
    • Comfy dtype: COMBO[STRING]
    • Python dtype: str

Output types

  • smpl
    • Comfy dtype: SMPL
    • Outputs a tuple containing the path to the SMPL model, pose parameters (thetas), and metadata, ready for further processing or visualization.
    • Python dtype: Tuple[str, torch.Tensor, Dict]

Usage tips

  • Infra type: CPU
  • Common nodes: unknown

Source code

class SMPLLoader:
    @classmethod
    def INPUT_TYPES(s):
        global smpl_model_dicts
        smpl_model_dicts = get_smpl_models_dict()
        input_dir = folder_paths.get_input_directory()
        files = [f for f in os.listdir(input_dir) if os.path.isfile(os.path.join(input_dir, f))]
        files = folder_paths.filter_files_extensions(files, ['.pt'])
        return {
            "required": {
                "smpl": (files, ),
                "smpl_model": (list(smpl_model_dicts.keys()), {"default": "SMPL_NEUTRAL.pkl"})
            }
        }

    RETURN_TYPES = ("SMPL", )
    FUNCTION = "load_smpl"
    CATEGORY = "MotionDiff/smpl"

    def load_smpl(self, smpl, smpl_model):
        input_dir = folder_paths.get_input_directory()
        smpl_dict = torch.load(os.path.join(input_dir, smpl))
        thetas, meta = smpl_dict["thetas"], smpl_dict["meta"]
        global smpl_model_dicts
        if smpl_model_dicts is None:
            smpl_model_dicts = get_smpl_models_dict()
        smpl_model_path = smpl_model_dicts[smpl_model]

        return ((smpl_model_path, thetas, meta), )