如何批量编辑swf动画movieclip的形状?

时间:2013-02-19 10:36:22

标签: flash edit batch-processing maya

对于Flash游戏项目,我有swf通过3D渲染软件生成的动画剪辑(即Maya Vector Renderer)。现在我需要在单个复帧剪辑中分离部分剪辑(角色的身体,盔甲,剑等)。但是我需要这些剪辑被角色的身体掩盖(例如,当剑在身体后面摆动时,它应该被裁剪,所以我可以将剑的动画片段保持在身体剪辑的前面,即使剑实际上在身体后面摆动......)

要做到这一点,我使用的是一种传统的sfx技术:我将每个项目(例如剑)渲染在普通的绿色背景上,并且角色的身体也具有相同的绿色着色器。然后我只需擦除Flash中每个剪辑帧上的绿色形状。问题是我将有很多片段,每个片段都有很多帧...有没有办法使用flash或任何软件批量编辑?或者任何人都可以想到一个更方便的方法来做到这一点?

1 个答案:

答案 0 :(得分:0)

如果您有透明背景png,请尝试将其中一个进入闪存并对其进行位图跟踪。这应该只留下你的物体,为你节省每一帧上的“擦除绿色形状”步骤。

如果这是可接受的/你想要的,那么你可以做的是将一整帧的帧作为动画片段导入到时间轴中,然后使用jsfl脚本一次性地跟踪所有帧。

这是我编写的一个jsfl脚本,它可以跟踪遍布许多帧的位图(每帧有1个位图)。复制内容并将其另存为jsfl文件。

要运行它,请将一堆png导入时间轴并选择它们所在的所有帧。然后转到“命令” - > “运行命令”以跟踪所选帧中的每个位图。

var timeline = fl.getDocumentDOM().getTimeline();

// get selected frame numbers
var selectedFrameObject = timeline.getSelectedFrames();

var start = selectedFrameObject[1];
var end = selectedFrameObject[2];

fl.trace("Selected frames: "+ start +"-"+ end);

for(var counter = start; counter < end; counter++){
    timeline.currentFrame = counter;
    document.selectAll();
    // you can play with these values to change the tracing parameters
    document.traceBitmap(100, 8, "normal", "many corners");
    document.selectNone();
}