ゴーストエフェクトについて[MMD制作]
そぼろさんへ。
以前作成していただいたゴーストエフェクトなのですが、より具体的にこうであると嬉しいというのを考えてみましたので、こういうことは可能でしょうか?お手すきであれば力を貸していただきたいです。
ゴースト残像の最新フレームを上書きで
■現在フレームの表示をゴーストの上にしたい
今の仕様では過去フレームのゴーストが現在フレームの描画の上に半透過で表示されていますが、現在フレームの描画を一番上にして、ゴーストに邪魔されないようにしたい。
・今の仕様はこういう感じで、現在フレームの描画の上に半透過のゴーストが重ねられている状態
・現在フレームの描画を一番上にすると残像がすっきりする。(参考のため画像加工で作成)
■参考
fxの最後の箇所、"AlphaTestEnable"をfalseからtrueにすると残像がクリアされなくなる。その状態が結構イメージに近い。
pass DrawlastGhost < string Script = "Draw=Buffer;";> {
AlphaBlendEnable = false;
AlphaTestEnable = true;
VertexShader = compile vs_2_0 VS_passDraw();
PixelShader = compile ps_2_0 PS_BufCopy(GhostView);
}
想定している使い方
実際にこのエフェクトをどういう風に役立てるかというのは大きく2つのことを考えてます。
■モーション作成の補助
モーションの動線や補間曲線を可視化することによって、モーションにおける補間調整への意識を高めることができるのではないか?
静止フレーム状態でも時間的な動きが確認できると参考になるのではないか?
■残像エフェクト
もっとも単純なモーションブラー効果、あるいは格闘ゲーチックな残像効果
参考:http://img5.blogs.yahoo.co.jp/ybi/1/4d/e7/hitikiriizoh/folder/1509310/img_1509310_63627929_5
こういう使い方をするならば、残像にα値だけでなく色味をつけられるとよいかも。
また、30fpsだと残像が多すぎるので2フレーム、3フレームおきの描画といった表示ができると効果的かもしれない。
avi出力を想定した実用エフェクトとして使うためには
残像エフェクトとして出力を考えると問題点が生じるのでその対応について。
現在の仕様では、残像を残さない設定にしたオブジェクトは前後の位置関係がどうであれ残像より奥に描画されてしまうようになっているので、「自身は残像を残さないが残像より手前に描画される」という設定もできると実用的でおもしろくなるかなと。
描画位置 | 残像あり | 残像なし |
---|---|---|
上レイヤー | ☓ | ☓ |
残像レイヤー | ○ | ○ |
下レイヤー | ○ | ○ |