Files
2024-07-04 11:34:32 +08:00

2.0 KiB

Documentation

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

SMPLLoader节点旨在从指定文件加载和处理SMPL模型数据,便于将SMPL模型集成到运动分析和合成工作流程中。

Input types

Required

  • smpl
    • 指定要加载的SMPL模型文件名。该文件包含运动合成所需的关键数据,如姿势参数。
    • Comfy dtype: COMBO[STRING]
    • Python dtype: str
  • smpl_model
    • 确定要使用的具体SMPL模型,影响加载的SMPL数据的解释方式。
    • Comfy dtype: COMBO[STRING]
    • Python dtype: str

Output types

  • smpl
    • 输出一个元组,包含SMPL模型的路径、姿势参数(thetas)和元数据,可供进一步处理或可视化。
    • Comfy dtype: SMPL
    • 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), )