Unity
Blender
HoloLens
Mixamo

■HoloLens 全身3Dスキャンデータ→Mixamo(リギング、モーション)→ HoloLens で動かしてみた件

■はじめに

・"Psychic VR Lab"さんの所で自分の全身3Dスキャンデータを撮って貰ったので、そのデータをMixamoでリギング、モーションを付加してHoloLensで見るアプリケーションにするまでの手順を忘れないうちに備忘録として残します

■■ここで出来るようになること

・"Blender"を使ったfbxフォーマット変換方法
・"Mixamo"を使ったリギングとモーション割当方法
・"Unity"を使ってHoloLensで動くUWPアプリケーションを作る方法

[実行イメージ(クリックすると動画が再生します)]
STYLY実行動画

▲初投稿:2018-04-30

■開発環境

・開発用パソコン(インストール要アプリケーション)
 ・Windows 10 Pro Fall Creators Update
 ・Visual Studio 2017 15.4.4
 ・Unity 2017.1.2f1 ダウンロードはこちら
 ・HoloToolkit-Unity-v1.2017.1.2.unitypackage ダウンロードはこちら
 ・Blender 2.7.9b・・・3DCGアニメーションを作成するための統合環境アプリケーション ダウンロードはこちら

・Mixamo・・・3Dキャラクターやアニメーション制作やカスタマイズを行うことができるWEBサービス 詳細はこちら
※上記のサイトには事前にアカウント登録を行っておく必要あり

■やってみよう!

■■全身3Dスキャンデータを入手

・自分の場合は"Psychic VR Lab"さんの所で全身3Dスキャンデータを撮って貰いました。ファイルには
  ・mesh.mtl
  ・mesh.obj
  ・mesh_u1_v1.jpg
 が入っており、このままだと、mesh.objのサイズが大きいので、"Mixamo" にアップロードすると
 エラーになります。と言う事で、サイズを小さくするため、"Blender" を使ってobjからfbxファイル
 に変換します

■■"Blender"を使ってobjからfbxファイルに変換

[Blender:初期画面]

・”Blender” を起動。初期画面にある”Cube”を削除する
・画面右側に出ている”アウトライナー”に出ている”Cube”の所で右クリックします
・表示されるメニュー内から”削除”を選択して押します

[Blender:objファイルをインポート]

・メニューバーの ”ファイル” から ”インポート” → ”Wavefront(.obj)” をクリックします

[Blender:objファイル指定]

・3Dスキャンした .obj ファイル(mesh.obj)を指定します。”OBJをインポート”ボタンを押します

[Blender:トランスフォームメニュー表示]

・画面右側に出ている”アウトライナー”に出ている”default”をクリックします
・画面右側に出ているメニューの”+”を押すと”トランスフォーム”メニューが表示されます

[Blender:オブジェクト位置調整]

[Blender:オブジェクト位置調整]

・”トランスフォーム”メニューの位置(x,y,z)、回転(x,y,z)等の数値を変えてオブジェクトが対面になうように位置を動かします

[Blender:fbxファイルにエクスポート]

・メニューバーの ”ファイル” から ”エクスポート” → ”FBX(.fbx)” をクリックします

[Blender:fbxファイル保存]

・任意の場所に保存するfbxファイル名を入力し、”FBXをエクスポート”ボタンを押します
・しばらく待って該当のファイルが出力されていれば成功です
・出力されたfbxファイルと3Dスキャン時にできたテクスチャのファイル(mesh_u1_v1.jpg)を一緒にした圧縮ファイル(Zipファイル)を作成します。この圧縮ファイルはMixamoにモデルデータをアップロードする際に使用します

■■Mixamoを使ってリギング、モーションを付けたfbxファイルを作成する

[Mixamo:ログイン画面]

・"Mixamo"サイトにアクセスして事前に取得したアカウントでログインします。ログイン画面はこちら

[Mixamo:ログイン後画面]

・ログイン後、画面右側にある”UPDATE CHARACTOR”ボタンを押して、モデルデータをアップロードする画面を呼び出します

[Mixamo:アップロード画面]

・先ほど圧縮したZipファイルを画面の点線で囲んでいる”Select charactor file...”と書かれている四角の中にDrag&Dropします

[Mixamo:アップロード中画面]

・アップロードが始まるとインジケータ画面が表示されるので、しばらく待ちます。

[Mixamo:アップロード完了画面]

・アップロードが完了するとモデルが表示された画面になるので画面左下にある矢印を押してモデルが正面に向くよう動かします

[Mixamo:アップロード完了画面]

・モデルが正面を向いたら、画面右下にある”NEXT”ボタンを押します。

[Mixamo:リグ入力画面]

・モデルにリグを入れていきます。画面右側にある女性のサンプルのように画面左側の円をモデルの関節部にDrag&Dropして配置します
・通常左右対称に配置が出来るのですが、画面の様にモデルが中央線に来ていない場合画面下部の”Use Symmetry”のチェックを外すと左右別々に配置できます
・CHIN  顎  青円
・WRISTS 手首 緑円(左右)
・ELBOWS 肘  黄円(左右)
・KNEES  膝  橙円(左右)
・GROIN  股  桃円
※3Dスキャンをした時は寒い時期だったので、厚着したままスキャンしたのですが、リグを設定する際に関節位置が見えずらかいのでやりにくかったです。スキャンは関節位置が分かりやすい服装でする事をお薦めします

[Mixamo:リグ入力画面]

・リグの設置が終わったら、画面右下にある”NEXT”ボタンを押します

[Mixamo:リグ設定中画面]

・処理中のクルクル回る画面になるのでしばらく待ちます

[Mixamo:リグ処理終了画面]

・処理が終了するとデモンストレーション画面になるので画面右下にある”NEXT”ボタンを押します

[Mixamo:アニメーション選択画面]

・モデルにモーションを割り当てます。画面の左側にサンプルアニメーションが表示されているので、割り当てたいものをクリックします
・アニメーションは多種類存在しているので、画面左上の検索枠か画面右の”FIND ANIMATIONS”ボタンを押して検索キーワードを入力して抽出します
・デフォルトで”combat”, ”dance”等の選択ワードを指定することも可能ですので色々探してみましょう

[Mixamo:アニメーションデモ画面]

・サンプルアニメーションをクリックすると画面右側でモデルが指定したモーションで動き出します。これで良ければ”DOWNLOAD”ボタンを押します

[Mixamo:ダウンロード設定画面]

・ダウンロードする際のファイルの設定が出来るのでFormatの項目を"FBX for Unity(.fbx)"に設定変更します。開始するときは画面右下の”DOWNLOAD”ボタンを押します

[Mixamo:ダウンロード準備画面]

・ダウンロードするファイルを作成したいますのでしばらく待ちます。作成出来たらダウンロードが開始されます。ファイル名はアニメーションの名前が自動的に割り振られます
・ここではfbx形式ファイルを作成したという前提で話を続けます

■■Unityに新規プロジェクトを作成

・Unityを最初に起動するときは、アカウント登録等の手続を実施します。その後初期画面になります

[初期画面]

・まず画面右上にある New をクリックします。
 ・Project Nameに作成するプロジェクトの名前を入力
 ・Locationにプロジェクトを保存するパスを指定
 ・3D Object を使うので、3Dを選択
 ・”Create Project”ボタンを押してプロジェクトを作成します

[Unity画面]

・Unityが起動すると上記の画面が表示されます

※ここではUnityの詳しい使い方は説明しませんので、別途UnityのDocumenntサイトで確認して下さい

■■Mixed Reality Toolkit-UnityのImport
・HoloLens開発用のライブラリパッケージ(HoloToolkit-Unity-v1.2017.1.2.unitypackage)をImportします。このパッケージはHoloLensを開発する際に便利なツールが多数含まれているので、利用することをお勧めします

[Package読込]

・メニューバーの ”Assets” から ”Import Package” → ”Custom Package” をクリックして事前にダウンロードしておいた”Mixed Reality Toolkit”(HoloToolkit-Unity-v1.2017.1.2.unitypackage)を指定します

[Package Import]

・Import項目の選択画面が表示されますので、全てチェックされていることを確認して”Import”ボタンを押して開始します
・Importに成功したら、メニューバーに”Mixed Reality Toolkit”が表示されます

■■HoloLensアプリ開発環境設定
・HoloLensで動作するアプリケーションを開発する際には、複数のパラメータを設定する必要がありますが、”Mixed Reality Toolkit” をImportすることにより、その設定をボタンを押すだけで出来るようになります
 (実際に設定する内容についてはMicrosoftのMixed Reality Academy等で確認してください)

[Mixed Reality Toolkit 環境設定]

・メニューバーの ”Mixed Reality Toolkit” から ”Configure” をクリックしてサブメニューの下記3つを行います
 ・Apply Mixed Reality Project Settings
 ・Apply Mixed Reality Scene Settings
 ・Apply UWP Capability Settings

[Mixed Reality Project Settings]

・メニューバーの ”Mixed Reality Toolkit” から ”Configure” → "Apply Mixed Reality Project Settings"をクリックします
・環境設定用のチェック画面が上記の様になっていることを確認して "Apply" ボタンを押しま
[Mixed Reality Scene Settings]

・メニューバーの ”Mixed Reality Toolkit” から ”Configure” → "Apply Mixed Reality Scene Settings"をクリックします
・環境設定用のチェック画面が上記の様になっていることを確認して "Apply" ボタンを押します

[UWP Capability Settings]

・メニューバーの ”Mixed Reality Toolkit” から ”Configure” → "Apply UWP Capability Settings"をクリックします
・環境設定用のチェック画面が上記の様になっていることを確認して "Apply" ボタンを押します

■■HoloLensCameraの設定
・カメラの設定を変更します

[HoloLensCameraの 設定]

・Hierarchyウィンドウ内にある”HoloLensCamera”を選択します

[Near Clipの 設定]

・Inspectorウィンドウ内のCameraのClipping Planes Near を 0.1 に設定します(0.1は10cm)

■■Mixamoからダウンロードしたモデルデータを読込

[Modelsフォルダの作成]

・Projectウィンドウ内のAssets配下に”Models”フォルダを作成します。”Assets”を選択してマウスの右クリックから”Create” → ”Folder” をクリックして新しいフォルダ”Models”を作成します

[Model データを”Models”フォルダにインポート

・”Models”フォルダを選択してマウスの右クリックから”Import New Asset...” をクリックします
・ファイル選択ウィンドウが表示されるので"Mixamo"からダウンロードしたFBX形式のファイルを指定します。
・”Import”ボタンを押すとFBXファイルの読み込みが始まります。

[FBXファイルの設定]

・Importしたモデルデータの"Materials”フォルダにあるMeshデータファイルをクリックします。”Inspector”ウィンドウ内の"shader"の設定を変更します

・"shader"のドロップダウンメニューから"Unit" → "Texture" と選択してクリックします

・ImportしたモデルデータのFBXファイルをクリックします。”Inspector”ウィンドウ内の”Rig”ボタンを押して、"AnimationType"のドロップダウンリストの中から”Humanoid”を選択します。最後に”Apply”ボタンを押します

・ImportしたモデルデータのFBXファイルをクリックします。”Inspector”ウィンドウ内の”Animations”ボタンを押して、"Looptime","Loop Pose"にチェックを入れます。最後に”Apply”ボタンを押します

[Animator Controller 作成]

・Projectウィンドウ内のModelデータがあるフォルダを選択してマウスの右クリックから”Create” → ”Animator Controller” をクリックして”Animator Controller”を作成します

[State 作成]

・作った”Animator Controller”をクリックして”Animator”ウィンドウを表示させます。そのウィンドウ内で右クリックから”Create State” → ”Empty” とクリックして”New State”を作成します

[Motionデータ登録]

・作った”New State”をクリックして”Inspector”ウィンドウを表示させます。そのウィンドウ内のMotion項目のギアアイコンをクリックし、”Select Motion”ウィンドウからMixamoからモデルと一緒にダウンロードしたMotionデータをダブルクリックして選択します

・FBXファイルをHierarchyウィンドウ内にドラッグ&ドロップします。”Hierarchy”ウィンドウ内のFBXファイルをクリックします

[Animator Controller登録!]

・”Inspector”ウィンドウ内の”Animator” → ”Controller” の右側にあるギアアイコンをクリックします。"Select RemoteAnimationController"ウィンドウが表示されますので、先ほど作った ”Animator Controller” をダブルクリックします
・正常に出来ていれば、画面上方の"▶"ボタンを押すとMixamoで選択したアニメーションが実行されます

■■Scenesの保存

[Scenes Save]

・メニューバーの ”File” から ”Save Scenes” をクリックします

[Scenes Save]

・まだ、Scenesフォルダーを作っていない場合は、”新しいフォルダー”をクリックしてScenesフォルダーを作成します
・Scenesフォルダーを指定します。Sceneファイル名を入力して”保存”ボタンを押します

■■UnityでBuildの実行

[Build Setting]

・メニューバーの ”File” から ”Build Settings” をクリックします

[Build Setting]

・最初の場合はBuild Setting画面の”Add Open Scenes”ボタンを押してBuildするSceneファイルを指定します。
・”Unity C# Projects”にチェックします
・”Build”ボタンを押すとBuildが開始されます

[App 指定]

・初めてのBuildの場合はAppフォルダーを”新しいフォルダー”をクリックして作成します
・Appフォルダーを指定します
・”フォルダーの選択”ボタンを押すとBuildが開始されます

■■Visual StudioでBuildの実行

・今回はVisual StudioからHoloLensに接続してアプリケーションをデプロイします。事前にHoloLensを起動してネットワークに接続した状態にしてください

[Visual Studio 起動]

・Buildが成功すると、エクスプローラーが起動します
・Appフォルダーの配下に ”Project名.sln” というファイルが作成されているのでダブルクリックします
・Visual Studio が起動して ”Project名.sln” を読み込みます

[Build 設定]

・Visual Studioの設定を次のようにします
 ・ソリューション構成:Release
 ・ソリューションプラットフォーム:x86
 ・Device:リモートコンピューター

[リモート接続 設定]

・アドレスに リモートコンピューター(HoloLens)の接続先のIPアドレスを入力します
・”選択”ボタンを押します

[デバッグ実行]

・メニューバーの ”デバッグ” から ”デバッグなしで開始” をクリックします。これでBuildが開始され、成功したら、リモートコンピューター に指定したHoloLensに接続してデプロイします

・デプロイも成功するとHoloLens側で作成したアプリケーションが自動的に起動します

■あとがき

・気づかれている方もいるかと思いますが、今回の手順では一切プログラムコードは書いていません。VR系のアプリを技術的なことは判らないのだけど作ってみたいという方にはお勧めです。まずは自分で体感してみて次に進むのは重要なことです。興味を持たれたあなたちょっとやってみませんか?別の異世界が見えてきますよ!

■参考

・Blender ダウンロードはこちら

・Mixamo サイトはこちら
・Mixamoチュートリアルはこちら

・Microsoft Mixed Reality Academy こちら
・Unity 2017.1 Document こちら