Skip to content

Latest commit

 

History

History
302 lines (173 loc) · 15 KB

mixamo-tutorial.md

File metadata and controls

302 lines (173 loc) · 15 KB

Blenderでエクスポートしたメッシュをmixamoでアニメ付けする

キャラクターのサイズや体形がBaseArmatureと異なる場合などは、Adobe社が提供しているWebサービルmixamo(ミクサモ)を利用して、自動ウェイト設定をするのがオススメです。mixamoでアニメーションを設定して、Unityで動作確認をする手順です。

mixamoを利用するには、無料の会員登録(Sign up)が必要です。事前に登録してログインしておいてください。

MagicaVoxelでキャラクターを作成する

この方法の場合は、base.voxから作業を開始する必要はありません。いわゆるTポーズになっていればOKです。

  • キャラクターが完成したら、Export -> plyをクリックします

Export PLY

  • 分かりやすい場所に任意のファイル名で保存します。ファイル名は半角英数のみ推奨(日本語や全角が混じったファイル名だとUnityで不具合が起きる可能性があります)

Export Dialog

BlenderにPLYをインポート

ここからはBlenderでの作業です。必要なファイルを読み込みます。

  • Blenderが起動していなければ起動します。あるいは、FileメニューからNewを選択して、初期状態にします
  • 既存のCamera, Cube, Lamp全て不要なので、[Shift]キーを押しながらクリックして3つとも選択します

select objects

  • エディター上にマウスカーソルを移動させて、[Delete]キーを押して表示されるポップアップのDeleteをクリックして、選択していたものを削除します

delete

Outlinerから選択したオブジェクトが消えていればOKです。

delete result

  • 3D Viewの左のメニューでMiscタブをクリックして選択して、Import PLYボタンをクリックします

Import PLY

  • PLYファイルを保存したフォルダーを設定して、読み込むファイルを選択して、Import PLYボタンをクリックします

Import

デフォルトのPLYのサイズだとUnityでは大きくなりすぎるので、0.22倍するようにしています。倍率は左下のScale欄で設定できるので、読み込みと同時にサイズを調整したい場合は、値を変更してからImport PLYをクリックしてください。

PLYファイルのインポートが完了しました。

Imported PLY

FBXとPNGをエクスポート

mixamoを利用するならBlenderでウェイトを設定する必要はないので、このままFBXにエクスポートします。

  • Export FBX and Textureボタンをクリックします

Export FBX

  • エクスポート先とファイル名を設定したらExport FBX and Textureボタンをクリックすれば完了です

Click Export

デフォルトで生成されるテクスチャーのサイズは512x512ピクセルです。ボクセル数が多いと足りないかも知れないので、Unityで見た時に色がずれているような場合は、Texture WidthTexture Height10242048に変更してみてください。

ボクセル数が少なくて、もっと小さいテクスチャーで構わない場合は128256にしてみてください。テクスチャーのサイズは2のテクスチャーのサイズは2の累乗である必要があります(よく分からない場合は、この設定はいじらないでください)。

以上で完了です。出力先のフォルダーに、以下のようにfbxpngの2つのファイルが出力されていれば成功です。

output

mixamoにモデルを読み込む

生成したFBXとPNGをmixamoにアップロードするには、ZIP圧縮しておく必要があります。

  • FBXファイルとPNGファイルを選択して、右クリック -> 送る -> 圧縮(zip形式)フォルダーを選択します

archive

FBXやPNGのあったフォルダーにZIPファイルが出来上がります。

  • mixamoのページを開いて、ログインします
  • UPLOAD CHARACTERボタンをクリックします

Click Upload

  • 先ほど作成したZIPファイルをドラッグして、mixamoの点線の枠内にドロップします

DaD ZIP

  • モデルが表示されます。こちらを向いて立っているのが確認できたらNEXTをクリックします
    • 変な方向を向いていたら、左下の矢印をクリックして、以下の画像のように調整してからNEXTをクリックしてください

next

  • 左下に並んでいる丸をドラッグして、キャラクターの該当する場所に設定します
    • 左右が分かりづらいので、以下を参考にしてみてください
    • 左に並んでいる丸は、左半身用なので、向かって右側の関節に設定します

Drag Kansetsu

以下、設定例です。

Result

  • 指がないボクセルモデルの場合は、下で指の設定をNo Fingersにします

No Fingers

  • 設定が完了したらNEXTをクリックします

キャラクターがくるくる回って、自動的にウェイトを設定する処理が行われます。完了を待ってください。

Wait Done

ウェイト設定が成功すると、アニメーションのデモが動きます。うまく動いていたら、NEXTボタンをクリックします。

check anim

失敗していたら、BACKボタンで戻って、間接の設定をし直してください。

色がおかしいのはUnityに持っていけば治るので放っておいて構いません。

以下の画面でNEXTをクリックしたら読み込み完了です。

upload confirm

アニメの作成とエクスポート

アップロードとウェイト設定が完了したら、以下の画面に切り替わります。

DOWNLOAD

左でモーションの選択、右のパラメーターで腕の広げ方や速度などのアニメーションの微調整ができます。使い方は他の記事を検索してください。ここではそのままデータをダウンロードします。

  • 右上のDOWNLOADボタンをクリックします
  • 以下の設定をして、DOWNLOADします
    • Formatは、FBX for Unity(.fbx)
    • Poseは、T-poseのままで大丈夫です
    • 設定したら、DOWNLOADボタンをクリックします

DOWNLOAD Setting

以上で、メッシュ、アニメーション、マテリアル、テクスチャーを埋め込んだFBXファイルをダウンロードできます。

できあがったキャラクターをUnityで動かしてみましょう。

アニメを仕込んだ場合

mixamoでアニメーションを付けた場合は、エクスポートの設定項目が増えます。以下のようなダイアログだった場合の設定です。

  • Formatは、FBX for Unity(.fbx)
  • Frames per Secondは、60が使いやすいと思います
  • その他はそのままでDOWNLOADします

Export Setting2

Unityで動作確認する

作成したモデルをUnityに読み込んで動かしてみましょう。以下、前提です。

  • Unity2018.1.3で確認(2017以降なら似たような操作でいけると思います)
  • Standard Assetsインストール済み

テスト用シーンを作成する

Unityを起動して、確認用のプロジェクト(空のプロジェクトでよいです)を開きます。

  • AssetsメニューからImport Package -> Charactersを選択して、Importします

Import Assets

  • 地面用のPlaneを作成します。HierarchyビューのCreateをクリックして、3D Object -> Planeを選択します

Set Plane

  • Hierarchyビューで作成したPlaneをクリックして選択します
  • Inspectorビューで、Transformの右の歯車アイコンをクイックして、Resetを選択して、場所を原点にしておきます

Set Zero

  • Planeにマテリアルを設定して色を着けたり、Main Cameraの位置を調整して、Gameビューでそれっぽく見えるようにします

Sample Plane

  • Projectビューで、Standard Assets -> Characters -> ThirdPersonCharacter -> Prefabsの左の三角アイコンをクリックして開きます

Set TPC

  • ThirdPersonControllerプレハブをドラッグして、Sceneビューで良さそうな場所に配置します

テスト用のシーンができました。Playして、矢印キーや[A][S][D][W]キーでキャラクターを操作できます。

作成したキャラクターを設定

エクスポートしたキャラクターを読み込み、設定します。

  • mixamoからダウンロードしたFBXファイルをドラッグして、UnityのProjectビューの読み込みたい場所にドロップします

DaD FBX

  • Projectビューで読み込んだモデルをクリックして選択します
  • Inspectorビューで、Materialsタブを選択して、*Extract Textures...*をクリックして、適当なフォルダー(Texturesフォルダーなど)を選択します

Set Material

  • 同様に、*Extract Materials...*をクリックして、適当なフォルダー(Materialsフォルダーなど)を選択します
  • Projectビューで、展開したテクスチャーを選択します

select texture

  • Inspectorビューで以下を設定します
    • Generate Mip Mapのチェックを外す
      • 小さくした時に変な線が出ることがあるので
    • Wrap ModeClampに設定
      • 画像端のにじみ防止
    • Filter Modeを*Point(no filter)に設定
      • にじみ防止
    • 以上できたら、Applyボタンをクリック

PNG Setting

  • Projectビューで、読み込んだモデルをクリックして選択します(名前は実際に読み込んだものに読み替えてください)

Select Model

  • Modelについて、以下を設定します
    • Import Visibility, Import Cameras, Import Lightsのチェックを外す
      • くっついてませんが念のため
    • 設定したらApplyボタンをクリック

Model Setting

  • Rigについて、以下を設定します
    • Animation TypeHumanoidに変更します
    • Applyボタンをクリックします

Rig Setting

これで、*Configure...*の左にチェックが表示されれば成功です。これをやらないと、設定したアーマチュアなどの設定が反映されないので重要な設定です。

以上でキャラクターの読み込みと設定完了です。

プレイヤーに適用して動かす

読み込んだモデルをテスト用のキャラクターに差し替えて動かして見ましょう。

  • Hierarchyビューで、ThirdPersonControllerの左側の三角をクリックして開きます

Open TPC

  • Hierarchyビューで、[Shift]キーを押しながら、EthanBody, EthanGlasses, EthanSkeletonの3つを選択します

Select Original Models

  • Inspectorビューの左上のチェックを外して、選択したオブジェクトを無効にします

Set Disable

  • Projectビューから読み込んだモデルをドラッグして、HierarchyビューのThirdPersonControllerにドロップします(名前は実際に読み込んだものに読み替えてください)

DaD Model

  • Hierarchyビューで、ドロップしたモデルをクリックして選択します

Select My Model

  • Inspectorビューで、Animatorの左のチェックを外して、モデルにくっついているアニメーターを無効にします

Disable Animator

ThirdPersonControllerのアニメーターを作成したモデルで再生するようにします。

  • Projectビューで、読み込んだモデルの左の三角をクリックして開いておきます

open model

  • Hierarchyビューで、ThirdPersonControllerをクリックして選択します

select tpc

  • Projectビューからモデルの子供にあるAvatarをドラッグして、InspectorビューのAvatar欄にドロップします

Set Avatar

これで、ThirdPersonControllerのアニメーターが、オリジナルキャラクターのアバターを制御するようになります。

Playして、矢印キーなどで操作してみてください。エクスポートに成功していたらアニメーションを確認できます。

demo

キャラクターの大きさを調整したい場合の注意点

動かして見るとちょっとキャラクターが大きすぎるようです。半分の大きさにしてみます。

重要なのは、親のゲームオブジェクトのScaleを変更しないことです。変更するのは、子供にしたモデルのオブジェクトのScaleにしてください。以下の通りです。

Scaling

RigidbodyをアタッチしているゲームオブジェクトのScaleは、必ず1にしておきます。これを守らないと当たり判定や動作で予想外の不具合を引き起こします。必ず守りましょう!

まとめ

以上で、MagicaVoxelで作成したPLY形式のキャラクターに、maximoでウェイト設定をして、Unityに読み込んで、テスト動作させることができました。

mixamoを利用することで、モデルの体形の自由度があがり、モーションもmixamoで生成することができるようになります。

ご活用いただければ幸いです。

参考・関連URL