ゲーム開発奮闘記

Unity・エフェクト・アプリ開発に関係した記事を書いています

Blender2.79 頂点カラーと頂点アルファについて BlenderからFBX書き出しをしてUnityへ持っていく方法

ここでは、Blender2.79に頂点アルファの情報を持たせるためのアドオン(プラグイン?)の導入方法と使用方法について解説します。

ここでの目的

エフェクトの素材として、Blenderで作成したメッシュに対して頂点アルファ情報を持たせたい。
UnityでMaya・3dsMaxと同様の頂点アルファ情報を持ったメッシュを作成したい。

そもそもなぜ頂点アルファが必要なのか?

エフェクト制作では、モデル(Mesh)を加算か半透明で表示させることが多々あります。
モデルの表示は、モデル単体をパッと出すときや、モデル自身をパーティクルとして出すときもあります。

この時、モデルに対してテクスチャーを単純に貼っただけだと、メッシュの端がハッキリと見える状態になってしまいます。
f:id:KTK_kumamoto:20180226104844p:plain

この状態を解消するために頂点カラーや頂点アルファを使用します。

頂点カラーとは? 頂点アルファとは?

頂点カラーとは読んで字のごとく、各頂点にカラー情報(RGB)の値を持たせる機能です。
具体的には、図のように各頂点に赤や緑や黒など色を塗ることができます。
f:id:KTK_kumamoto:20180226105016p:plain

エフェクトの素材としては、色はグレースケールで塗ることが多いかと思います。
そして、加算表示する素材として使用します。
適当なPlaneにグレースケールで頂点カラーを塗って、
Unityで加算のマテリアルを適用させると、図のような見た目になります。
f:id:KTK_kumamoto:20180226105844p:plain
図:Blenderの頂点カラー

f:id:KTK_kumamoto:20180226110032p:plain
図:Unity上で加算マテリアルを適用した見た目



しかし、半透明表示できるマテリアルを適用すると
図のように頂点カラーで塗ったメッシュの際がただ黒く表示されるだけになります。
f:id:KTK_kumamoto:20180226110124p:plain

ここで、頂点アルファの登場です!
頂点アルファとは:こちらも読んだままの意味で、各頂点にアルファ情報(A)の値を持たせる機能です。
具体的には、図のように各頂点にアルファ情報をグレースケールで塗ることができます。
f:id:KTK_kumamoto:20180226110313p:plain
パッと見は、頂点カラーとやっていることは変わりません。
ただカラー情報をグレースケールで塗る必要があるというだけです。
白に近いほど不透明になり、黒に近づくほど透明になります。

これをUnity上で加算のマテリアル(Additve)で表示したものが図の内容になります。
f:id:KTK_kumamoto:20180226110525p:plain

そして、Unity上で半透明マテリアル(Alpha Blended)ので表示したものが図の内容です。
f:id:KTK_kumamoto:20180226110607p:plain

このように頂点アルファ情報を持たせることで、半透明描画でモデルの頂点に対して透明度の調整ができるようになります。

半透明モデルを使用する事で、ただ加算で明るく見せるだけの演出ではなく、発光しない厚みのあるエフェクトを作ることが出来ます。

Blender2.79のアドオン導入方法

ここからはBlender 2.79に対して頂点アルファのアドオンの導入方法を解説します。

Blender 2.79をインストール

ここは、ご自分の使用しているBlenderのバージョンをご使用ください。

アドオンのデータを入手する

下記サイトよりアドオンを入手します。
https://forum.unity.com/threads/vertex-rgba-blender-2-5x.254038/
図のリンク先のダウンロードボタンで export_fbx.pyとvertexRGBA.pyをダウンロードします。
f:id:KTK_kumamoto:20180226073734j:plain
f:id:KTK_kumamoto:20180226073852j:plain
f:id:KTK_kumamoto:20180226073915j:plain

落としてきたデータは、Blender 2.5環境で作成されたものなのでBlender2.79で使用する場合は、
図の位置にあるzip(Blender fbx Alpha io.zip)をダウンロードして、export_fbx.py・export_fbx_bin.py・import_fbx.pyを使用します。
f:id:KTK_kumamoto:20180226111021p:plain
f:id:KTK_kumamoto:20180226111027p:plain

次に落としてきたexport_fbx.py・export_fbx_bin.py・import_fbx.py を所定の場所にコピーして上書きします。(この時動作が不安な人はバックアップとして、元あったexport_fbx.py・export_fbx_bin.py・import_fbx.pyをどこかに避難させてください)
C:\Program Files\Blender Foundation\Blender\2.79\scripts\addons\io_scene_fbx
f:id:KTK_kumamoto:20180226111453p:plain

次に落としてきたvertexRGBA.py を所定の場所にコピーします。
C:\Program Files\Blender Foundation\Blender\2.79\scripts\addons
f:id:KTK_kumamoto:20180226111458p:plain

次にBlenderを立ち上げてアドオンを有効にする

File > User Prefarences (ユーザー設定)を開く
f:id:KTK_kumamoto:20180226111815p:plain

①Add-onsのタブを選択、②検索窓にvertexと検索、③リストにPaint: Vertex RGBA、④Save User Settings
f:id:KTK_kumamoto:20180226111826p:plain

これでアドオンの導入が済みました。
ツールシェルフのウィンドウ内にVertex RGBA Paint Toolsが表示されます。
f:id:KTK_kumamoto:20180226112649p:plain

Vertex RGBA Paint Toolsの使用して頂点アルファを情報を持たせたFBXデータをUnityにもっていく方法

このツールを使用する時の注意点が、Col(RGB)情報の頂点カラー、_ALPHA(A)情報の頂点カラーの4チャンネルの情報を持った状態でエキスポートする必要がある事です。
f:id:KTK_kumamoto:20180226114432p:plain
加えてアルファ情報を持たせる_ALPHAのチャンネル名は、「○○_ALPHA」とすることと、2つ目の情報として持つ必要があります。(カラーのRGBチャンネル、その下に_ALPHAのアルファチャンネルとする)
これは、ツール制作者様の使用方法にもちゃんと明記されており見落とすと結構はまってしまいます。。
FBX書き出し時の設定も Version: FBX 6.1 ASCIIに変更する必要があります。
f:id:KTK_kumamoto:20180226114317p:plain

実際の頂点カラー、頂点アルファの塗り方を説明します。
・Planeを作成
f:id:KTK_kumamoto:20180226113351p:plain

・Vキーを押す。Vertex Paintモードに切り替える。
Vertex Colorのチャンネルが追加される。
f:id:KTK_kumamoto:20180226113545p:plain

・Vertex RGBA Paint ToolsのPaint on Alphaをクリック
Col_ALPHAのカラーチャンネルが追加される
f:id:KTK_kumamoto:20180226113711p:plain

・追加されたCol_ALPHAのチャンネルを選択していることを確認して、各頂点をグレースケールで塗る
f:id:KTK_kumamoto:20180226113859p:plain

・FBXで書き出す File > Export > FBX(.fbx)
f:id:KTK_kumamoto:20180226114044p:plain

・FBXの書き出し設定のVertionを Version: FBX 6.1 ASCIIに変更して書き出し。
f:id:KTK_kumamoto:20180226114317p:plain

・Unityにfbxをインポートしてシーンに配置
f:id:KTK_kumamoto:20180226114823p:plain

・マテリアルをMobile/Particles/Alpha Blendedに変更
f:id:KTK_kumamoto:20180226115009p:plain

・完成です!!
f:id:KTK_kumamoto:20180226115052p:plain

アドオン作成者様、情報を教えて頂きました「zanbarさん」ありがとうございました!

Blender 3DCG モデリング・マスター

Blender 3DCG モデリング・マスター

Blender 3Dキャラクター メイキング・テクニック

Blender 3Dキャラクター メイキング・テクニック