マテリアルをカスタマイズする

[最終更新日:2017/09/19]

by Traitam

全体の概要

最初にUnity上で、どのようにしてCubismモデルがUnity上で使用できるようになるのかの説明になります。
その後、モデルインポートの機能を活用し実例上でマテリアルのカスタマイズを行います。

 

CubismモデルがUnity上で使用できるまで

ここではCubismモデルがどのようにしてUnityEditor上で表示が行われているか、という説明になります。

概要

UnityEditor上では、通常Live2D/Cubism/Materials/Unlit*.matというマテリアルを用い、表示を行っています。
モデルにマテリアルが適用されるタイミングは、モデルインポート時です。

 

詳細

Unity上でCubismモデルを表示する時、通常はLive2D/Cubism/Materials/Unlit*.matのマテリアルを用いています。
これによりCubismEditor上の表示に近い表示を行っています。

Cubismモデルにマテリアルが適用されるタイミングは、モデルをUnityEditor上にインポートしたタイミングです。
そのため、UnityEditorへモデルをドラッグ&ドロップしたタイミングで表示に必要なマテリアルが適用されます。

CubismモデルがUnityへインポートされたとき、CubismImporter.cs内のOnPickMaterialが呼ばれます。
ここではデリゲートを用いCubismBuiltinPickers.MaterialPickerが使われます。
このメソッド内でCubismモデルの各Drawableにマテリアルが適用されます。
そしてその後、プレハブ化されUnityEditor上で自由に扱うことができるようになります。

もし、スクリプトからマテリアルをカスタマイズしたい場合、OnPickMaterialはデリゲートのため、メソッドを別途作成し、そのメソッドをOnPickMaterialに適用すればマテリアルをカスタマイズすることができます。

次に、その実例としてスクリプトから指定Drawableのマテリアルをカスタマイズして、表示するようにします。

 

実例:指定Drawableのマテリアルをカスタマイズ

 

 ここではスクリプトからモデルインポートのタイミングで、指定したDrawableのマテリアルを変更する実例です。

概要

指定したいマテリアルを作り、指定Drawableの名前を参照します。
指定Drawableの場合、指定したマテリアルを使用し、それ以外はカスタマイズせず、通常のマテリアルを用います。
上記の処理を行うメソッドを書き、OnPickMaterialに代入します。

 

詳細

UnityEditor上で指定するDrawable名は、CubismEditorで確認できるアートメッシュのIDを指定します。

 

UnityEditorのDrawable名は、CubismEditorで確認できるアートメッシュのIDと関連付けられているため、UnityEditor上で変更することができません。
そのため、Drawable名を変更するにはCubismEditor上でID名を変更する必要があります。

今回は髪全体の色を変更するので、髪のDrawableを使用します。
髪のDrawableにマテリアルを適用する時、カスタマイズしたマテリアルを適用します。

次に、UnityEditor上でMaterialフォルダを作成し、新規マテリアルを作成します。
このマテリアル名をCustomMaterialとします。このマテリアルのシェーダーをSprites/Defaultに変更します。
ここでは、分かりやすいようにTintの色を変更します。ここでは赤色にします。

 

最後に、Editorフォルダを作成し、そのフォルダ内に新規C#スクリプトを作成します。
ここではMaterialCustomizerという名前にします。
スクリプト内で、指定したDrawableを参照して、もし同名のDrawableの場合は先ほど作ったマテリアルを適用します。
それ以外のDrawableには通常のマテリアル(Live2D/Cubism/Materials/Unlit*.mat)を使用するようにします。
その機能を入れたものが、以下コードになります。

 

これでモデルインポート時に、指定Drawableのマテリアルをカスタマイズすることができるようになりました。

Copyright © 2018 Live2D Inc.