環境
Windows7x64Unity 5.0.1f1 Personal
Blender2.74(x64)
SDユニティちゃん 3Dモデルデータ Download ver1.0。(2015/5時点最新)
※作業中素材には『ユニティちゃんライセンス』で提供されるコンテンツを利用しています。
概要
顔の表情はシェイプアニメで作られています。公式配布SDユニティちゃんのFBXファイルをBlenderでインポート&エクスポートすると、
シェイプアニメの、
- 定義名
- 並び順
これが原因で公式配布のスクリプト(FaceUpdateや、まばたき)アニメーションからの表情制御が動作しなくなっています。
Blender上でこの辺を調整してエクスポートすれば、公式配布のスクリプト、アニメーション下でも表情が動きます。
Blenderで作業
Blender上で作業します。Blenderを起動、公式配布のSDユニティちゃんのFBXファイルをインポートしておきます。
(参考: SDユニティちゃん活用その1 ~Blenderでインポート~ )
Humanoidモデルをインポートして使っていますが、シェイプアニメはGenericモデルでも同じだと思います。
- Outlinerウィンドウ上から、
- インポートしたモデルの階層を展開し、
- _faceオブジェクトを選択する。
- Propertiesウィンドウから、
- Object Dataをクリック
- Shape Keysパネルにシェイプキーの定義名一覧が表示。
図中のShape Keys一覧のように定義名、並び順を変更します。
Shake Keysの定義名の上でダブルクリックで名前を変更できます。
定義名を選択し、右にある上下ボタンで並び順を変更できます。
モデルをFBXエクスポートします。
(参考: SDユニティちゃん活用その3 ~Blenderでエクスポート~)
Unityで作業
□インポート
Unity上で先程FBXエクスポートしたモデルをインポートします。(参考: SDユニティちゃん活用その4 ~Blender出力のFBXファイルをUnityでインポート~)
□スクリプト設定
表情の動作確認に公式配布のFaceUpdateスクリプトを利用します。インポートしたモデルにFaceUpdateスクリプトを追加、Inspectorからスクリプト内の変数を以下のように設定します。
Animatorにアニメーションコントローラ SD_unitychan_motion_humanoid を設定します。
AutoBlinkforSDスクリプトを追加します。(まばたき用)
これでUnityをPlayしてGUIボタンで表情の動作確認ができます。
※この辺の一連のスクリプト設定を自動化するスクリプト(C#)を書いたので後述します。何度か繰り返す場合は少し楽ができるかもしれません。
スクリプトで設定の自動化
以下のことを自動化するコードを書きました。自動追加後の各スクリプトの持つ変数は、配布モデルの既定値に自動で初期化します。
- Animatorにアニメーションコントローラ SD_unitychan_motion_humanoid を設定。
- IdleChangerスクリプトを追加。
- FaceUpdateスクリプトを追加。
※Animations配列のElementも設定します。 - AutoBlinkforSDスクリプトを追加。
- RandomWindスクリプトを追加。
□ダウンロード
C#ソースはGitHubに置いてあります。次のURLでサイトを開き、https://github.com/maruton/Tools_for_SDUnityChan
右下付近の「Download.ZIP」でダウンロード&展開。
Setup_Animations_for_SDUnityChan.cs をUnityのAssetにドラッグ&ドロップして追加しておきます。
□利用方法
便宜上文中でモデルの呼称を以下のようにしています。SD_unitychan_humanoid : 公式配布のPrefabsフォルダにあるモデル。
blender_SDUnityChan : Blender経由でUnityにインポートしたモデル。
- SD_unitychan_humanoid がシーンにあることを確認
もしなければシーンに配置します。
- blender_SDUnityChan をシーン上に配置。
- 空のGameObjectをシーンに配置。
CTRL+SHIDT+N で空のGameObjectを追加できます。
Setup_Animations_for_SDUnityChan を追加し、Inspector上の
- Go_Original にシーン上の SD_unitychan_humanoid をドラッグ&ドロップ。
- Go_Target にシーン上の blender_SDUnityChan をドラッグ&ドロップ。
- Unity を Play。
START ~ COMPLETE とログウィンドウに表示されれば設定完了しています。
※もし ERROR や not found などが見える場合は、Go_Original、Go_Targetの設定やモデルに問題がある可能性があります。
- シーン上の blender_SDUnityChan をAssetにドラッグ&ドロップ。
この状態で(UnityがPlay状態のまま)、シーン上の blender_SDUnityChan をAsset(フォルダ Assets/Blender_SDUnityChan/Prefab あたりに)にドラッグ&ドロップ。
各種設定済み状態でAssetに保存されます。
このモデル名を便宜上 blender_SDUnityChan 1 としておきます。
※名前はなんでも構いません。文中で区別する為です。
- Unity のPlayを停止。
- blender_SDUnityChan 1 をシーンに配置。
Inspector上から以下のコンポーネントにチェックを入れてEnableに。
- Animator。
- AutoBlinkforSD
- RandomWind
- シーン上blender_SDUnityChan 1 を blender_SDUnityChan_FaceOKにリネーム。
- シーン上の blender_SDUnityChan_FaceOK をAsset(フォルダ Assets/Blender_SDUnityChan/Prefab あたりに)にドラッグ&ドロップ。
以後このモデルを使えば、設定済み状態で使えます。
blender_SDUnityChan_FaceOKをシーンに配置してPlayします。
(他にSD_unitychan_humanoid 等のモデルはシーンに置かないで下さい)
GUIからいろいろボタン操作すると表情も動きます。
公式配布のアニメーション動作にも表情が連動します。
補足: ユレモノ設定(SDユニティちゃん活用その6 ~SDユニティちゃんにユレモノを自動設定する~)をしていない場合は、RandomWindスクリプトは外して下さい。Consoleウィンドウにエラー表示がでます。
0 件のコメント:
コメントを投稿