【问题标题】:How to batch edit shapes of a swf animated movieclip?如何批量编辑 swf 动画影片剪辑的形状?
【发布时间】:2013-02-20 17:36:26
【问题描述】:

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

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

【问题讨论】:

  • 是否可以用透明背景渲染每个对象的框架,保存为 pngs?
  • 是的,为什么不呢,因为我要使用位图精灵表

标签: flash edit batch-processing maya


【解决方案1】:

如果您有透明背景 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();
}

【讨论】:

  • 是的!这个 jsfl 东西正是我想要的……我对你的脚本做了一些小改动,并设法做我想做的事。非常感谢!
猜你喜欢
  • 2011-03-07
  • 1970-01-01
  • 2018-01-13
  • 1970-01-01
  • 2019-07-02
  • 2017-08-23
  • 2011-01-19
  • 2016-04-06
  • 2017-06-24
相关资源
最近更新 更多