借助Houdini PDG批量处理alembic文件

1.导入

通过FilePattern Top来加载一个指定文件夹中的所有abc,目的是识别abc的filePath和fileName。

Pattern:$HIP/Fix/*

2.识别abc文件起始帧

通过PythonScript Top来判断始末帧,并保存到@startFrame、@endFrame属性中。

import hou
import _alembic_hom_extensions as abc


fileDirObj = work_item.attrib("directory")
fileDir = fileDirObj.asString()
fileName = strData(work_item,"filename")
filePath = fileDir + "/" + fileName
#print(filePath)
timeRange = abc.alembicTimeRange(filePath)
startFrame = int(hou.timeToFrame(timeRange[0]))
endFrame = int(hou.timeToFrame(timeRange[1]))
#print((startFrame,endFrame))
work_item.setIntAttrib("startFrame",startFrame-1)
work_item.setIntAttrib("endFrame",endFrame-1)

3.定制处理逻辑

在Sop Network中构建处理逻辑。其中第一个节点为Alembic Sop,用来真正加载abc文件。

FileName:`@directory`/`@filename`

4.输出处理后的结果

建立Rop NetWork,在其中创建alembic Driver,设置始末帧(Start/End/Inc:@startFrame/@endFrame),设置导出路径为源文件旁边(Alembic File:$HIP/Fix/`strreplace(@filename,".abc","")`_reMerge.abc)。通过ROPFetch Top引用刚刚创建的alembic Driver,且Evaluate Using设置为ROP Node Configuration。

5.执行

执行ROPFetch Top

你可能感兴趣的:(houdini)