まだ死んでない

なんか作ったり作らなかったりしたいです。

暮井 慧(プロ生ちゃん) Unity/FBX 公式データのVRM変換で発生する現象と対策

概要
http://pronama.azurewebsites.net/2018/07/27/pronama-chan-vrm/
こちらに挙げて頂きましたように、
主に靴下部分で不自然な表示になる現象について、
私がVRMデータを作成した際の対策をまとめます。

環境
Windows 10 Pro バージョン1803(OSビルド 17134.165)
Unity 2017.4.3f1 Personal(64bit)
DirectX 12
NVIDIA GeForce GTX 1070(Driver Version 388.43)

手順と現象
VRM変換の基本的な手順は以下を参照してください。
https://dwango.github.io/vrm/how_to_make_vrm/

質感(マテリアル/シェーダ)の設定として、
PronamaChan→PronamaChanに
割り当てられているマテリアルのシェーダを一旦全て
VRM/UnlitTextureに変更します。

すると以下のようになります。

図1

ご覧の通り、目と靴下が気になります。

対策
まずは目を直します。
マテリアルeyeLightのTextureであるeyeLight.pngは透過pngなので、
シェーダをVRM/UnlitTransparentに変更します。

すると以下のようになります。

図2

ここまでは少しUnityに触れた経験のある方なら迷わず出来ると思われます。
が、靴下は何故でしょう?良く見るとスカートの下も真っ白です。

原因はマテリアルtransparentの設定にあります。
このマテリアルは元々シェーダがLegacy Shaders/Transparent/Diffuseです。
Main Colorの設定がRGBA=255,255,255,0のため、
VRM系のシェーダで同様の表示にしたいと思います。

今回の対策としては、シェーダをVRM/UnlitTransparentとし、
Textureに1x1pixのRGBA=0,0,0,0の画像を設定します。

すると以下のようになります。

図3

一見正しい表示になったように見えますね。
私が作成したVRMはこの状態で作成しています。

注意
ただし、VRMにする前のデータを作成した時点で、
どのような表示のされ方を狙って設定されたかを理解しての対策ではないため、
本来の表示を忠実に再現できていない可能性がありますのでご注意ください。