MEBIUSTOSのブログ

主にUnityに関する技術的な事を書いていきます。 Twitter @xflutexx

MMD4Mecanimの表情管理と制御 | MMD4MecanimFaciem

MMD4Mecanim*1の表情管理(保存・閲覧)と表情制御を行うアセット「MMD4MecanimFaciem」です。GUI操作により表情を保存でき、ゲーム中にスクリプトから表情設定が可能です。

アセット概要

  • MMD4Mecanimモデルの表情(全てのモーフ値)を保存・変更・閲覧できます。
  • スクリプトから表情名指定で表情を変更できます。
  • 表情の編集にはMMD4MecanimModelのMorphタブ画面を利用します。
  • モーフスピード値も管理します。一括設定・個別設定が可能です。

f:id:mebius-tos:20150801144715g:plain

ダウンロード

MMD4MecanimFaciem
(2015/11/29 リンク先を変更しました。)

コンポーネント概要

FaciemController.cs

再生中のシーンにおいて表情の制御を行うコンポーネントです。
MMD4MecanimModelのGameObjectにアタッチして使用してください。
表情の制御にはMMD4MecanimMorphHelperを利用しています。MMD4MecanimMorphHelperはシーン再生時に自動で追加されます。

FaciemDatabase.cs

表情データの保管・管理(追加・変更・削除)を行うコンポーネントです。
MMD4MecanimModelのGameObjectにアタッチして使用してください。
再生中のシーンに関してはノータッチで、何も行いません。
単体で表情データベースとして利用可能です。同梱のControllerを使用せず、自前で表情制御を書いてもいいかもしれません。

使用するときのポイント!

UnityEditorのメニューから「MMD4Mecanim > MMD4MecanimFaciem > Faciem Inspector」で専用インスペクターを立ち上げてモデルのMorph画面と併用すると、便利な気がします。

あと間違えそうなところとしては…

f:id:mebius-tos:20150801141419g:plain

GUI

ADD FACEボタン…現在のモデルの表情を保存します。
CLEAR FACEボタン…現在のモデルの表情をクリア(全Weight:0)します。
RENAMEボタン…選択中の表情名をリネームします。
SAVEボタン…現在のモデルの表情で選択中の表情データを上書き保存します。
LAODボタン…選択中の表情をモデルに読み込みます。
DEFAULTボタン…選択中の表情データをデフォルトとします。シーン開始時はこの表情です。
DELTEボタン…選択中の表情データを削除します。
BATCHボタン…スピードを一括で設定します。
Hide Wireframeボタン(2015/9/20追加)…シーンビューにてモデルを選択時に表示されるメッシュのワイヤーフレームを非表示にします。

スクリプトによる表情の変更

ControllerのSetFace(<表情名>)を実行してください。単純な表情設定であればこれでいけるはずです。

クラス詳細

頻繁に使いそうな変数や関数についてのみ記述します。必要があればソースを参照してください。

FaciemController

SetFace(string faceName)
表情を設定します。指定した表情名に使用されないMorphHelperのSpeedは変数ClearSpeedの値に設定されます。

SetFace(string faceName, bool isClearSpeed)
表情を設定します。isClearSpeedにfalseを設定すると未使用なMorphHelperに対するClearSpeed値の設定を行いません。

SetFace(string faceName, float speed)
表情を設定します。表情設定の際に、全てのMorphHelperのSpeed値を指定した値に上書きします。

SetFace(string faceName, float speed, float threshold)
表情を設定します。表情設定の際に、thresholdを超えるSpeed値を持ったMorphHelperのSpeed値を指定した値に上書きします。(例:thresholdに1を指定した場合は、Speed値1のMorphHelperは除外されます)

SetSpeed関数群
SetFace関数からSpeed部分だけを抜き出した物です。表情設定を行わず、MorphHelperのSpeed値を変更する場合に使用してください。

FaciemDatabase

FaceDataList
表情情報(FaceData)のリストです。FaceData内のMMD4Morphsに各モーフ情報が格納されています。MMD4Morph内のmorphIndexはMMD4MecanimModelのmodelData.morphDataListのインデックス値です。

変更履歴

2015.09.22

Faciem Database に「Hide Wireframe」ボタンを追加。

関連記事

広告

*1:Nora(@Stereoarts)さんが公開しているUnityでMMDモデルを表示するためのツールです。詳しくはこちら