You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Source Filmmaker Python脚本导入模型时animSet未赋值引用报错如何解决

SFM Python导入模型报错修复方案

错误根因

  • 函数调用顺序与命名空间错误:代码先执行newAnimSet = sfmUtils.CreateModelAnimationSet( baseName, modelPath ),之后才定义CreateModelAnimationSet函数,执行调用时函数尚未加载;且你自定义的函数不属于sfmUtils内置工具命名空间,无需加此前缀。
  • 变量未做兜底初始化:animSet仅在模型加载成功、动画集创建成功的分支中被赋值,一旦模型路径错误、模型加载失败、动画集创建失败,就会出现变量未定义就被返回的情况,是触发UnboundLocalError的直接原因。

修复后代码

baseName = "secret_spy" 
modelPath = "models\\player\\hwm\\spy.mdl" 
# 模型路径中的反斜杠需要双写转义

# 先定义函数,再执行调用
def CreateModelAnimationSet( baseName, modelPath ):
    ''' 创建模型对应的动画集并将模型添加到当前场景 '''
    # 初始化animSet为None做兜底,避免分支未覆盖时变量未定义
    animSet = None
    shot = sfm.GetCurrentShot()
    model = sfm.CreateModel( modelPath )
    if model != None:
        animSet = sfm.CreateAnimationSet( baseName, target=model )
        if animSet != None:            
            dag = vs.CreateElement( "DmeDag", baseName, shot.GetFileId() )
            dag.AddChild( model )
            shot.scene.AddChild( dag )
    return animSet

# 直接调用自定义函数,无需加sfmUtils前缀
newAnimSet = CreateModelAnimationSet( baseName, modelPath )

额外排查项

如果修复后仍无法正常加载模型,确认modelPath对应的模型文件存在且在SFM的资源搜索路径中即可。

内容的提问来源于stack exchange,提问作者Joshua Rosenzweig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 13:45:03