1

フラッシュゲームプロジェクトの場合、3Dレンダリングソフト(つまり、Maya Vector Renderer)を介して生成されたswfアニメーションクリップがあります。次に、クリップの一部(キャラクターの体、鎧、剣など)を個々のマルチフレームクリップに分離する必要があります。ただし、これらのクリップをキャラクターの体でマスクする必要があります(たとえば、剣が体の後ろでスイングする場合はトリミングする必要があるため、実際に剣が体の後ろでスイングする場合でも、剣のアニメーションクリップをボディクリップの前に保持できます...)

これを行うために、私は一種の従来のsfxテクニックを使用しています。すべてのアイテム(剣など)を無地の緑の背景にレンダリングし、キャラクターの体にも同じ緑のシェーダーを使用します。次に、Flashのクリップのすべてのフレームの緑色の形状を消去する必要があります。問題は、それぞれがたくさんのフレームを持つたくさんのクリップを持っているということです...フラッシュまたは任意のソフトウェアを使用してこれをバッチ編集する方法はありますか?または、誰でもこれを行うためのより便利な方法を考えることができますか?

4

1 に答える 1

0

透明な背景の png がある場合は、そのうちの 1 つをフラッシュに取り込み、ビットマップでトレースしてみてください。これにより、オブジェクトだけが残り、すべてのフレームで「緑色の形状を消去する」ステップを節約できます。

これが許容できる場合/必要な場合は、大量のフレームをムービークリップとしてタイムラインにインポートし、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 に答える