7080 + 1

ゲームプログラミングの記事を書いてます。

【Blender】頂点カラーのAチャンネルを編集・出力できるようにする【v2.77】

※追記 タイトルが誤解を与えてる気がしたので変更しました。

ふと暇だったのでギルティギアXrdのグラフィック記事を読んでいました。もうだいぶ前の記事ですね。
www.4gamer.net

当時読んだときよりもちゃんと理解出来たので、できそうなところはやってみよう、というのが今回の記事の始まりです。
ですが自分は3Dモデリングが出来ません。ならばBlenderを使って既存のモデルを改造しようと思いました。

頂点ペイント

ギルティギアは頂点カラーに色情報は一切持たせず、陰影判定や輪郭線描画にRGBA全てのチャンネルを使っています。

Blenderには頂点ペイントという機能があり、それを使えばペイントツールを使う感覚で頂点カラーを編集出来ます。
f:id:atori708:20171224070157p:plain

が、そのままではRGBしか編集することができません。
やるとすれば、VertexColorsをアルファチャンネル用として作って編集する方法があります。しかしそれではRGBチャンネルが2つで6チャンネル必要になるので、今回の場合メモリの無駄使いです。(というか頂点シェーダに複数の頂点カラー渡せるんでしょうか?)

ということで、この記事ではタイトルの通り、Blenderで頂点カラーのRGBAチャンネルを編集する方法を紹介します。(ギルティギアではない。まさにギルティ)

アドオンを使う

色々調べていると、Aチャンネルも頂点ペイントで編集出来るアドオンを作ってくれている方がいました。
https://forum.unity.com/threads/vertex-rgba-blender-2-5x.254038/

v2.xと書いてありますが、2.77でも動作を確認できました。
アルファチャンネルをいじれるアドオンと、それをFBXに埋め込むためのアドオン両方必要です。入れ方はリンク先を参照してください。

使い方

まずRGBチャンネル用のVertexColorsを追加します。名前はなんでも良いです。次にアドオンで追加したツールから、[Paint on Alpha]をクリックしてください。(見当たらなかったら上図での左下の+ボタンを押すと出てくると思います)
すると先程作ったVertexColorsの名前に _ALPHA とついたVertexColorsが追加されます。これを同じように編集するだけです。色は彩度0で塗って、白が不透明、黒が透明になります。

適当にこんな感じで塗りました。シンプルに4頂点。
f:id:atori708:20171224071842p:plain

次にエクスポートですが、File->Export->Fbxから出来ます。エクスポートする時のFBXのバージョンは FBX 6.1 ASCII を選択してください。仮にUnityにインポートするときには他の設定もいじったほうが良いですが、他のブログがたくさん紹介してるので割愛します。

Unityで描画してみました。頂点カラーのアルファを見て透過処理するシェーダはデフォルトではない(多分)ので、簡単なものですが必要になります。
f:id:atori708:20171224071911p:plain


アドオンのリンク先によると、4チャンネルを全てバラバラに編集するアドオンもあるみたいです。ギルティギアのようにチャンネルごとに意味の違う値が必要な場合には便利ですね。
今回は以上です。質問、訂正などありましたらコメントからお願いします。

補足

Unityは.blendファイルもそのままインポート出来るので、fbxである必要はないです。

蛇足

まだギルティギアの表現には全然至っていません。きっと出来たら記事書こうかと思います。
この記事とは関係ないですが、ギルティギアを作っているアークシステムワークスの次回作であるドラゴンボールファイターズは、照り返しやリムライト表現が増えてよりリッチになっているっぽいので、またどこかで発表してほしいなあとか思いました!