タイトル画像

【BGE】魁!クロマキー高校【python】

2015.01.17(22:13) 21

 前にやっていたリアルタイム生成のビデオテクスチャをもうちょっと使えるようにしたくてずっといろいろ弄っておりました。

 背景の青い部分をどうにかしたかったんですよね。

 で、出来ました(*・ω・)
青い部分を透明にしました。

丁度こんな感じです。
videotex07.png

 シーンの状況を簡単に説明すると、中継用のカメラの前にはスザンヌ(猿の頭)があり、その奥にSAMEと書かれたロゴの描いてある板があります。

[カメラ]< (スザンヌ)   |←板

 メインカメラの端に板ポリのワイプ画面が用意してあり、そこに中継用のカメラで撮影した映像がリアルタイムでテクスチャとして貼られています。
黄色いリングはワイプ画面の透過具合を見るために置いているだけです。

 ワイプ画面の背景(中継用カメラの後方クリップ面より奥)は真っ青になります。
なぜその色なのかは分からないですが、どうやらそういう仕様のようで World 設定で背景色を変えても変化しませんでした。

 青い部分をムリヤリ背景色にするには、後方クリップ面のぎりぎり手前に板ポリを置いて、それをマテリアルタブの Transparency パネルで [Mask]に設定し、Alpha を 0 にすることでなんとか出来ます。
 しかし結構な力技なので、メインのカメラからその透明な板を見たときもその向こう側は背景色一色に塗りつぶされて見えてしまいます。そのため使いどころが難しいです。

 そこでクロマキ―合成の要領で青い部分だけを透明に出来ないかと考えていたわけですが、参考になる資料がどこをさがしても無く試行錯誤しておりました。
 ところが昨日、なんか今日頭が冴えてるな~と思いながらマテリアルノードを弄っていたら1時間くらいでやり方が解っちゃいました(*・ω・)b
今までの苦労はなんだったのだろう……と思いつつ、今から説明します。



 やり方は簡単です。

・まず前回の段階で既に作ってあるマテリアル[Screen]にノード編集を追加します。

・ノード編集画面を開いて下の画像のように組んでください。
videotex06.png
※後で気付いたのですが[RGBtoBW]ノードは無くても正常に機能するようです。

・ノードを組むとマテリアルタブに[Render Pipeline Options]というパネルが出現するので、そこで透過の設定が[Z Transparency]になっていることを確認してください。

 設定は以上です。 P キーを押してゲームを実行して確認してみてください。

【仕組みと考え方】
 テクスチャ[screen]は[RenderToTexture.py]という python で処理されているテクスチャに差し替えられるので、もうそこには手を出さない(というか技術力的に手を出せない;)という前提で進めています。
ということで、既に出来上がったテクスチャを持つマテリアルのノード(実は1つでも良い)から始まり、アウトプットに至るまでの間を考えます。

1.まずそのまま出力する経路を持たせておき、そこにアルファ(透過)の情報を加えると考えます。
2.次に透過用のマスク画像を作らなくてはいけないので、画像から青の成分だけ抜き取ります(SeparateRGB)。
3.真っ青(R,G,B:0,0,255)以外は透過したくないので、閾値をタイトにします。
  [ColorRamp]で補間方法を[Constant]にし、白い部分を端に寄せているのはそのためです。
4.そのまま出力すると“青以外が透明”になってしまうので[Invert]を噛まして output の alpha に繋ぎます。
 3の段階で白と黒の位置を逆にしておけば4の手順は不要だと気付きました。


【備考】
・透過の具合をよく見るために、編集の際に中継用のカメラが撮った画像をスクリーンショットで取っておき、ダミーのテクスチャとして使っています。
・このやり方だとマテリアルやテクスチャの設定で透過の設定をする必要が無いです。
・仕組みとしてクロマキー合成そのものなので、切り抜きの輪郭が汚かったり真っ青な物体を撮影するとそれも透過されてしまったりといった不具合がそのまま起きます(;-ω-)
videotex08.png
あまり真っ青な物体は写さない方が良いです。



 それで、これをやるメリットですが(*・ω・)
それはこういう表現をするときに役に立つというのが一番の理由です。
game comu.png

 昨今のRPGの会話シーンでは、よくキャラクタの表情差分のあるイラストが出てきますよね(・ω・)
でもせっかくリグ組んだモデルがあるんだから絵でやるのはもったいないような気がするんですよね。
会話用のグラフィックが3Dモデルでぬるぬる動くゲームは個人的にはアイマスくらいしか知らないです。
(それか海外の写実的な表現のゲームとか)
この手法は絵コンテを描いたりカメラアングルを決めたりして作るムービーみたいに膨大な手間が掛からないのがメリットですね|・ω・)

 あぁ、それにしてもホントにコロンブスの卵みたいですね;
普通マテリアルノードでこんなコンポジットノードみたいなことはしないですからね(;-ω-)
ひとたび解ってしまえばこんなに簡単なのに、そこに行きつくまでに何発もハズレの発想撃ちましたよ……。
関連記事
スポンサーサイト

超エキサイティン! フンストンの3DCG至難の書


<<blender と英語 その1 | ホームへ | プログラミングを学ぶ>>
コメント
コメントの投稿













管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://funstone.blog.fc2.com/tb.php/21-cc317e17
この記事にトラックバックする(FC2ブログユーザー)