今回は3Dモデルの投稿サイトニコニコ立体で公開されているMMDキャラクターschwarz式博麗霊夢をUnityにインポートして操作できるようになるまでの手順を試してみました。
MMDモデルを Unity にインポートするためのツール MMD4Mecanim を配布しているサイト Stereoarts Homepage にアクセスしてファイルをダウンロードします。
ダウンロードしたファイル MMD4Mecanim_Beta_20180304.zip を解凍するこのようなファイルが含まれてます。
ツール配布サイトにもチュートリアルPDFが用意されていましたが、解凍したファイルにもちゃんと用意されていました。素晴らしい!
MMD4Mecanim チュートリアル(基本編).pdf の内容は次の通りです。
Unity のバージョン 2018.2.20f1 に MMD4Mecanim.unitypackage(MMD4Mecanim 2018/05/23 版(β))をインストール中、このように API ファイルのアップグレードダイアログが表示されれました。そのまま [I Made a Backup Go Ahead!]ボタンをクリックして継続。MMD4Mecanim.unitypackage をインストールする場合は新規プロジェクトにインストールした方が良さそうです。
インポートが完了後にフォルダ構成を確認。[Project]ウィンドウ > Assets > MMD4Mecanim フォルダ内はこのようになっています。
MMDキャラクターモデルが数多く公開されている3Dモデルの投稿サイト、ニコニコ立体 から探してみることにします。
今回は東方Projectのキャラクターからschwarzさんの作品で博麗霊夢 をお借りしました。
キャラクターの公開ページの右側にある[ダウンロード]ボタンをクリックするとライセンス情報が表示されるので[利用規約に同意してダウンロード]ボタンをクリック。ファイルのダウンロードが開始します。
ダウンロードしたファイル(博麗霊夢.zip)はZIP形式で圧縮されているので解凍。解凍したフォルダ(博麗霊夢)をUnityの[Project]ウィンドウにドラッグ&ドロップでインポート。
インポートが完了した[Project]ウィンドウ > Assets > 博麗霊夢フォルダ内はこのようになっています。
インポートした博麗霊夢フォルダに作成されている 霊夢v2.MMD4Mecanim ファイルを選択。[Inspector]ウインドウで利用規約のチェックを入れて[同意する]ボタンをクリック。
さらにインポート設定はそのままで[Process]ボタンをクリック。
変換処理のコマンドラインウィンドウが開いて処理が進行するのでしばらく待ちます。処理が終わると博麗霊夢フォルダ内にFBX形式のファイル 霊夢v2.fbx が作成されています。
MMD4Mecanim で出力されたFBXファイルの設定を変更します。
霊夢v2.fbx ファイルを選択して[Inspector]ウインドウ >[Animation]タブボタン > Import Animation のチェックを外します。
[Rig]タブボタンをクリック。Animation Type > Humanoid に変更。最後に[Apply]ボタンをクリックして変更内容を適用します。
Standard Assets のThirdPersonCharacter のコンポーネントを使用して操作できるようにします。
Third Person Character コンポーネントの追加するために作業用のシーンを作成します。メニュー:File > New Scene を選択。[Hierarchy]ウィンドウ > [Create]ボタン > 3D Object > Plane を選択。[Inspector]ウィンドウ > Transform > 歯車アイコン > Reset を選択。
[Project]ウィンドウ > 博麗霊夢フォルダ > 霊夢v2.fbx を[Hierarchy]ウィンドウにドラッグ&ドロップで配置。[Inspector]ウィンドウ > Transform > 歯車アイコン > Reset を選択して位置をリセットしておきます。まずはStandard Assets の Character をインポートします。
ファイル:Assets > Import Package > Character を選択。[Project]ウィンドウ > Assets >Standard Assets > Characters > ThirdPersonCharacter > Prefabs > ThirdPersonController を選択。
インポートが完了したら[Project]ウィンドウ > Assets > Standard Assets > Characters > ThirdPersonCharacter > Prefabs > ThirdPersonController を選択。
入力制御のコンポーネント、Third Person User Control (Script) コンポーネントは一緒にペーストされていません。もう一度[Project]ウィンドウ > Assets >Standard Assets > Characters > ThirdPersonCharacter > Prefabs > ThirdPersonController を選択。
[Inspector]ウィンドウ > Third Person User Control (Script) コンポーネント > 歯車アイコン > Copy Component を選択。これで必要なコンポーネントがアタッチされました。(画像クリックで拡大)
コライダーコンポーネントの調整をします。
[Hierarchy]ウィンドウ > 霊夢v2 を選択。[Inspector]ウィンドウ > Capsule Collider のパラメータを調整。
Center Y0.8 / Radius 0.5 / Height 1.6
大体完成ですが最後に物理マテリアルの設定を行います。ThirdPersonAnimatorController ではコライダーコンポーネントに摩擦のない物理マテリアルを割り当てないと床に段差がある部分でこのように空気椅子ポーズで操作ができなくなる場合があります。
ファイル選択ウィンドウから ZeroFriction マテリアルをダブルクリックで割り当て。
再生ボタンを押して動作を確認します。キーボード操作でキャラクターを操作できるようになりましたが、腕が後ろにねじれて、スカートから足が突き抜けています。
腕のねじれを修正するためにFBXファイルを選択してボーンの角度を編集します。
[Project]ウィンドウ > 博麗霊夢 > 霊夢v2.fbx を選択。[Inspector]ウィンドウ > [Rig]タブボタン > [Configure]ボタンをクリック。作業中のシーンを保存するためのダイアログが表示されるので[Save]ボタンをクリック。
赤色で表示されているボーンを[Scene]ビューまたは[Inspector]ウィンドウでボーン選択します。
正しい角度に調整すると[Scene]ビューのボーン表示が緑色になります。
下記のようにボーンを調整しました。
このようにすべてのボーンが緑色になりました。
再生ボタンを押して動作を確認します。腕のねじれはこれで修正できました。
コスチュームの袖が腕の動きに追従していないので袖のボーン階層を変更します。あらかじめ、階層を変更するボーンの名前を確認しておきます。
[Project]ウィンドウ > 博麗霊夢 > 霊夢v2.fbx を選択。[Inspector]ウィンドウ > [Rig]タブボタン > [Configure]ボタンをクリック。[Scene]ビューでコスチュームのボーンを選択して名前を確認します。階層を変更する必要があるのは下記のボーンになります。
右袖:48.!joint_migikataerisaki
右袖肘:53.!joint_RightArmSleeveTip
左袖:147.!joint_hidarikataerisaki
左袖肘:152.!joint_LeftArmSleeveTip
霊夢v2 > 287.!Root > 8.joint_HipMaster > 3.joint_Torso > 4.joint_Torso2 > 46.joint_RightShoulder > 50.joint_RightArm にドラッグ&ドロップして階層を移動。
プレハブのインスタンス破壊の注意ダイアログが表示されるので[Continue]ボタンをクリック。
次に右袖肘の階層を移動します。
霊夢v2 > 287.!Root > 8.joint_HipMaster > 3.joint_Torso > 4.joint_Torso2 > 46.joint_RightShoulder > 50.joint_RightArm > 48.!joint_migikataerisaki > 53.!joint_RightArmSleeveTip を選択。
霊夢v2 > 287.!Root > 8.joint_HipMaster > 3.joint_Torso > 4.joint_Torso2 > 46.joint_RightShoulder > 50.joint_RightArm > 58.joint_RightElbow にドラッグ&ドロップして階層を移動。
階層変更ができたらシーンを再生してCキーを押してしゃがみポーズにすると袖が腕の通りに曲がっていることが確認できます。
左袖肘の階層を移動します。
[Scene]ウィンドウ > 霊夢v2 > 287.!Root > 8.joint_HipMaster > 3.joint_Torso > 4.joint_Torso2 > 145.joint_LeftShoulder > 149.joint_LeftArm > 147.!joint_hidarikataerisaki > 152.!joint_LeftArmSleeveTip を選択。
霊夢v2 > 287.!Root > 8.joint_HipMaster > 3.joint_Torso > 4.joint_Torso2 > 145.joint_LeftShoulder > 149.joint_LeftArm > 157.joint_LeftElbow にドラッグ&ドロップして階層を移動。
階層変更ができたらシーンを再生してCキーを押してしゃがみポーズにすると袖が腕の通りに曲がっていることが確認できます。
脚がスカートを突き抜けないようにキャラクターの動きに合わせてスカートに物理演算を設定します。
[Hierarchy]ウィンドウ > 霊夢v2 を選択。[Inspector]ウィンドウ > MMD 4 Mecanim Model (Script)コンポーネント > Physics Engine > Bullet Physics に変更。Bullet Physics の物理演算のパラメータについては詳しい設定が分からないので、とりあえず MMD4Mecanim リアルタイム版 Bullet Physics.pdf に書かれている動作処理を軽くするためのパラメータを調整します。
[Hierarchy]ウィンドウ > 霊夢v2 を選択。[Inspector]ウィンドウ > MMD 4 Mecanim Model (Script)コンポーネント > [Physics]タブボタン > Bullet Physics のプロパティを下記の通り変更。シーンを再生して確認。コスチュームがキャラクターの動きに合わせて揺れるようになりました。
霊夢の操作ができるようになったので、最後にカメラを追従させることにしました。
ファイル:Assets > Import Package > Camera を選択。[Project]ウィンドウ > Assets >Standard Assets > Camera > Prefabs > FreeLookCameraRig を選択。[Hierarchy]ウィンドウにドラッグ&ドロップでシーンに配置.。Main Camera は不要なので選択して削除します。
FreeLookCameraRig のカメラはタグ名が Player のオブジェクトを自動追尾するので霊夢のタグ名を変更します。[Hierarchy]ウィンドウ > 霊夢v2 を選択。[Inspector]ウィンドウ > Tag を Player に変更。
今回作成したシーンをWebGLでビルドしてみようと、メニュー:File > Buld Settings を選択。[Buld Settings]ウィンドウ > Platform を WebGL に変更したところ [Console]ウィンドウにエラーメッセージが表示されました。
[Console]ウィンドウにエラーメッセージに従って、ダウンロードした MMD4Mecanim のフォルダに同梱されているReadme_jp.txt を読んだところ下記の通り書かれていました。
今回はこちらのWebサイトを参考にさせていただきました。
2. MMD4Mechanimのインポート・モデルの読み込み – Unity+Oculus+MMD とりあえず書き留めておく場所
View Comments