1

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

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

4

1 回答 1

0

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

如果这是可以接受的/您想要的,那么您可以做的是将大量帧作为影片剪辑导入时间轴,然后使用 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();
}
于 2013-02-20T09:36:26.020 回答