読者です 読者をやめる 読者になる 読者になる

Natural Software

KinectなどのDepthセンサーを中心に活動しています

HoloLensでのアプリからのファイル書き込み

HoloLensでのファイル書き込みについて紹介します。 HoloLensのファイルアクセスはUWP環境になるので、さまざま設定や制約があります。アクセスできるフォルダは下記を参照してください。

とはいえ、Device PortalのFile Explorerからアクセスできる方が何かと便利なので、必然的に「カメラロール」、「ドキュメント」、「アプリのローカルフォルダ」の3種類になると思います。 f:id:kaorun55:20170304201241p:plain

それぞれの特長をまとめます。これらを踏まえて決めればよいかと思います。

  • カメラロール
    • ピクチャーライブラリの権限が必要
    • フォルダが作れない
    • 自動的にOneDriveで同期される
  • ドキュメント
    • 権限のつけ方が特殊
    • 指定した拡張子のファイルのみアクセス可能
  • アプリのローカルフォルダ
    • 権限が不要
    • デプロイごとにファイルが消える

サンプルコード

こちらのリポジトリに置いています。

カメラロール

カメラロールへのファイル書き込みサンプルです。

// カメラロール
// ピクチャライブラリの権限が必要
// フォルダは作れない
{
    var file = await KnownFolders.CameraRoll.CreateFileAsync("test.txt",
                                    CreationCollisionOption.ReplaceExisting);
    using (var stream = await file.OpenStreamForWriteAsync())
    {
        var bytes = System.Text.Encoding.UTF8.GetBytes(@"テストてすとtest");
        await stream.WriteAsync(bytes, 0, bytes.Length);
    }
}

権限はUnityエディター上で「PuctureLibrary」をチェックします。

f:id:kaorun55:20170304201922p:plain

UWPプロジェクトの上書きなどで権限がうまく入らない場合には「Package.appxmanifest」の「ピクチャライブラリ」を直接チェックしてください。

f:id:kaorun55:20170304202015p:plain

ドキュメント

ドキュメントへのファイル書き込みサンプルです。

// ドキュメントフォルダ
// 1. Package.appxmanifestを開き
//    「宣言」から「ファイルの種類の関連付け」を行い、書き込むファイルの拡張を追加する
// 2. Package.appxmanifestを「コードを表示」で開き下記を追加する
//     <uap:Capability Name="documentsLibrary" />
{
    var folder = await KnownFolders.DocumentsLibrary.CreateFolderAsync("DocumentLibraryTest", 
                                                        CreationCollisionOption.OpenIfExists);
    var file = await folder.CreateFileAsync("test.txt", CreationCollisionOption.ReplaceExisting);

    using (var stream = await file.OpenStreamForWriteAsync())
    {
        var bytes = System.Text.Encoding.UTF8.GetBytes(@"テストてすとtest");
        await stream.WriteAsync(bytes, 0, bytes.Length);
    }
}

ドキュメントフォルダへのアクセス権限付与

ドキュメントフォルダへのアクセス権限は「Package.appxmanifest」への設定と、ファイル関連付けの2つを行います。

Package.appxmanifestの設定

Package.appxmanifestを「コードを表示」で開き下記を追加します。

<uap:Capability Name="documentsLibrary" />

f:id:kaorun55:20170304202853p:plain

ファイル関連付け

Package.appxmanifestを開き「宣言」から「ファイルの種類の関連付け」を行い、書き込むファイルの拡張を追加します。

f:id:kaorun55:20170304202724p:plain

アプリのローカルフォルダ

特に権限の必要もなく書き込めます。ただし、デプロイごとにファイルが初期化されます。 ファイルは「User Files\LocalAppData\<アプリ名>\LocalState」 以下に作成されます。

// ローカルフォルダー
// 「User Files\LocalAppData\<アプリ名>\LocalState」 以下にできる
{
    var folder = await ApplicationData.Current.LocalFolder.CreateFolderAsync(
                        "DocumentLibraryTest", CreationCollisionOption.OpenIfExists);
    var file = await folder.CreateFileAsync("test.txt", CreationCollisionOption.ReplaceExisting);

    using (var stream = await file.OpenStreamForWriteAsync())
    {
        var bytes = System.Text.Encoding.UTF8.GetBytes(@"テストてすとtest");
        await stream.WriteAsync(bytes, 0, bytes.Length);
    }
}

HoloLensのUnity/UWPでasync/awaitを使う

HoloLensはUnityでアプリを作りますが、Unityエディターから直接実行ファイルを生成するのではなく、一度UWPへ変換してVisual Studioでビルド後にHoloLens実機に配置、実行する流れになります。

このため、Unityの.NET 3.5とUWPのコードが共存することになります。特に問題になるのが、UWPではasync/awaitを多用しますが、Unityの環境ではC#のバージョン的にそもそもasync/awaitが使えないため、コードの多くがこれを想定していません。

ここではUnityのアプリでasync/awaitを使う方法について紹介します。またasync/awaitでマルチスレッドになるので、同期の方法についても合わせて紹介します。おかしなところがあったら教えてください。

UWPではないUnityでのasync/awaitはこちらが詳しいです。

 

サンプルプログラム

UWPにビルドしたコード上でasync/awaitを使う方法を2つ紹介します。

  1. Task.Run()内でasync/awaitする(UnityEngine.WSA.Application.InvokeOnAppThreadは後述します)
  2. StartCoroutine()してyield return new WaitWhile()する

リポジトリはこちら

ちなみにUWP内のみコードを有効にするには #if UNITY_UWP をつけます。他にもいくつか定義がありますが、UWPビルドのどこかたタイミングで有効になるので、ビルドエラーになる場合もあります(細かくは調べていません)。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;

#if UNITY_UWP
using System.Threading.Tasks;
#endif

public class AsycnAwaitTest : MonoBehaviour {
    public TextMesh textMeshAynsc;
    public TextMesh textMeshCoroutine;

    // Use this for initialization
    void Start() {
#if UNITY_UWP
        // Task.Runでasyncする
        Task.Run(async () => {
            UnityEngine.WSA.Application.InvokeOnAppThread(()=>{
                textMeshAynsc.text = "Task.Run before : " + Time.time;
            }, true);

            await Task.Delay(5000);

            UnityEngine.WSA.Application.InvokeOnAppThread(() => {
                textMeshAynsc.text = "Task.Run after  : " + Time.time;
            }, true);
        });

        StartCoroutine(HeavyTask());
#endif
    }

    private IEnumerator HeavyTask()
    {
#if UNITY_UWP
        // WaitWhileでまつ
        textMeshCoroutine.text = "Task.Run before : " + Time.time;

        var task = Task.Delay(5000);
        yield return new WaitWhile( () => !task.IsCompleted);

        textMeshCoroutine.text = "Task.Run after  : " + Time.time;
#else
        yield return null;
#endif
    }
}

Task.Run()内でasync/awaitする

Task.Run()で非同期タスクを起こし、この中のメソッドをasyncで定義すればその中ではawaitが使えます。これがシンプルだと思います。

StartCoroutine()してyield return new WaitWhile()する

StartCoroutine()で非同期処理を開始します。 コルーチンはasyncにできずawaitが使えないので、非同期メソッドのTaskを受け取りyield return new WaitWhile()で待ちます。従来のコードとの整合をとりつつ非同期メソッドを使う感じでしょうか。

マルチスレッド

上記2つの最大の違いはTask.Run()の場合はマルチスレッド、StartCoroutine()の場合はシングルスレッドになります(スレッドを生成せずメインスレッドを分割する)。

これによって何が変わるかというとTask.Run()内ではGameObjectへのアクセスができなくなります。WPFなどと同様にUIのオブジェクトはメインスレッドのみアクセスが可能です。そのため、ここで使っている3D TextのTextMeshをTask.Run()内で直接触ると例外が発生します。通常はSynchronizationContextで制御しますが、Unityにはこの仕組みがありません。

ではどうするかというと、UnityEngine.WSA.Application.InvokeOnAppThread()を使います。これによってアプリスレッド(Unityのメインスレッド)で処理されます。

もう一つ、UnityEngine.WSA.Application.InvokeOnUIThread()というのもありますが、こちらはXAMLのメインスレッドのようです。

ドキュメントはこちら docs.unity3d.com

HoloLensとWindows Mixed Reality HMD

「Windows Mixed Reality」(旧「Windows Holographic」)用のデバイスとしてAcerが開発者版のHMDを出すそうです。

www.moguravr.com

shiropen.com

「Windows Holographic」は「Windows Mixed Reality」に名前が変わったようです。

Windows Mixed Realityは$299~という価格でHoloLensの$3,000とはだいぶ違うのですが、値段相応に環境もかなり違います。ということで相違点をまとめてみます Windows Mixed RealityのHMDは想像の範囲でもあるので随時更新します。

HoloLens Windows Mixed Reality HMD
価格 $3,000/$5,000(PC不要) $299~(別途PCが必要)
動作形態 スタンドアロン PC接続
ケーブル なし あり
現実の見え方 シースルー カメラ映像を液晶画面に表示(要出典)
パフォーマンス 固定(CPUはAtom) PCに依存
アプリ実行環境 UWP UWP(要出典)
環境センシング Inside-Out Inside-Out

HoloLens Spectator Viewを試してみた

HoloLensのアプリで装着している人以外がその映像を見るにはMixed Reality Captureを使いますが、遅延があったり無線接続が不安定だったりカメラ画像があまりきれいではなかったりします。

それらを解決する一つの方法として、Spectator Viewというものがリリースされました。

f:id:kaorun55:20170225144532p:plain

Spectator view

試してみて動くところまではできました。右側のカラー映像が結果です。

間違っているところなどあればフィードバックいただけると助かります。 

 

概要

Spectator ViewはHoloLensアプリに第三者視点を提供します。いままでもMixed Reality Captureでできましたが、よりきれいな映像にすることができます。

Spectator Viewの特長をまとめるとこのようになります。

  • カメラ映像はデジタル一眼レフカメラなど高性能なカメラを使用する
  • 表示されるホログラム(オブジェクト)はPCで描画する
  • Sharingアプリのみ対象となる(スタートメニューなどの表示はできない)
  • HoloLensの位置情報のみ実機から取り込む

制約としては下記が考えられます。

  • Sharingを前提とするためスタートメニューやバイナリのみのアプリには使えない。
  • HoloLensが2台以上必要

このことから、開発したアプリを公の場で発表する、プロモーションビデオの撮影という用途になると思います。

 


Microsoft HoloLens: Uses for Spectator View

 

事前準備

必要なソフトウェアやリグのための3Dモデルはこちらにあります。cloneするかHoloLensCompanionKit全体をダウンロードしてください。

github.com

 

必要な機材

f:id:kaorun55:20170225150902p:plain

Spectator Viewには写真の機材が必要です。

  • DSLR:Digital Single Lens Reflex:デジタル一眼レフカメラ
  • Tripod:三脚
  • Hotshoe Fastener:カメラの上につける雲台
  • 3D Printed Adapter:雲台とブラケットをつなげるアダプター
  • Aluminum HoloLens Bracket:アルミで作成されたHoloLensを固定するブラケット

3D Printed Adapter」および「Aluminum HoloLens Bracket」は自分で作る必要があります。

 このほかに下記機材が必要です

  • HDMIケーブル:カメラ映像をキャプチャするためのケーブル
  • HDMIキャプチャーツール:カメラのHDMI出力をPCに取り込むための機材

カメラとレンズは下記を推奨のようです。合わせて約50万円です。

Canon デジタル一眼レフカメラ EOS 5D Mark III ボディ EOS5DMK3

Canon デジタル一眼レフカメラ EOS 5D Mark III ボディ EOS5DMK3

 

 

Canon 単焦点広角レンズ EF14mm F2.8 L II USM フルサイズ対応

Canon 単焦点広角レンズ EF14mm F2.8 L II USM フルサイズ対応

 

Hotshoeはちょっと値段が高い(元のAmazon.comが$6(600円)くらい、Amazon.co.jpが6000円くらい)ので別で買った方がよさそうです。。。

HDMIキャプチャボードは下記のようです(PCIe接続)。約24,000円です。

Blackmagic Design intensity pro 4k ビデオキャプチャボード

Blackmagic Design intensity pro 4k ビデオキャプチャボード

 

 

今回使用した機材

カメラについてはHDMI出力できれば良さそう。キャプチャーボードは最初の写真を見る限りUSB接続でも良さそうということで、下記2つを購入して試しました。両方で約8万円です。

【国内正規品】 GoPro ウェアラブルカメラ HERO5 Black

【国内正規品】 GoPro ウェアラブルカメラ HERO5 Black

 

 

Blackmagic Design キャプチャーカード Intensity Shuttle for USB 3.0 000856

Blackmagic Design キャプチャーカード Intensity Shuttle for USB 3.0 000856

 

 

ソフトウェアのセットアップ

手順はこちらに詳しく書いてあります。

github.com

必要なソフトウェア

Desktop Video SDKが見つけづらかったので注意してください。下記画像の「Desktop Video 10.8.3 SDK」です。 

f:id:kaorun55:20170225154340p:plain

それぞれインストールを行います。OpenCVは展開してCドライブ直下においてください(「C:\opencv」となるように)。

Caribration

カメラとHoloLensのRGBカメラの位置を合わせるためにキャリブレーションを行います。

「HoloLensCompanionKit\HoloLensCompanionKit-master\SpectatorView\Calibration」にある「Calibration.sln」を開きます。

「dependencies.props」というファイルがあるので、下記2つのパスが通っていることを確認してください。

  • OpenCV:C:\OpenCV\build\x64\vc14
  • BlackMagic SDK:C:\BlackMagic\Blackmagic DeckLink SDK 10.8.3\Win\include

f:id:kaorun55:20170225154712p:plain

実行するとカメラの映像が表示されます。

f:id:kaorun55:20170225155024p:plain

つぎにHoloLensとカメラを配置します。今回はリグがないので、HoloLensの上にGoProをおいているだけです。

f:id:kaorun55:20170225155046p:plain

HoloLensとPCはUSBケーブルで接続します。

Calibrationプロジェクトの「stdafx.h」を開き、デバイスポータルのユーザー名とパスワードを設定します。事前にHoloLensのデバイスポータルをONにして、ユーザー名とパスワードを設定してください。

f:id:kaorun55:20170225182122p:plain

次に キャリブレーションを行います。GitHubにあるキャリブレーションパターンを印刷します。固めのボードに張るとよいと思います。

Caribrationアプリを起動し、キャリブレーションボードを動かします。途中Mixed Reality Captureが起動するので、HoloLensのカメラ撮影時のLEDが点滅します。

f:id:kaorun55:20170225175556p:plain

「C:\Users\<ユーザー名>\Documents\CalibrationFiles」にカメラ画像とHoloLensの画像および「CalibrationData.txt」が生成されます。

f:id:kaorun55:20170225182640p:plain

Compositorのビルド

必要かどうかわかりませんが「HoloLensCompanionKit\SpectatorView\Compositor」をビルドします。HoloLensの実機情報をやりとりする部分です。PC側のCompositorはx64、HoloLensに組み込む側はx86ですので両方のビルドを行い「CopyDLL.cmd」を実行します。

Unityサンプルを起動する

「HoloLensCompanionKit-master\SpectatorView\Samples\SharedHolograms」をUnityで起動します。Holograms-240をベースにSpectator Viewのアドインが入っています。

先ほどの「CalibrationData.txt」をProjectビューに追加します。

f:id:kaorun55:20170225183040p:plain

メニューに「Spectator View」が追加されます。「Compositor」を開くと新しいウィンドウが表示されます。これがSpectator Viewの画面になります。

f:id:kaorun55:20170225183043p:plain

f:id:kaorun55:20170225183041p:plain

「Spectator View」のアドインは「AddIns\HolographicCameraRig」になるようです。

f:id:kaorun55:20170225183044p:plain

ビルド設定から「Run In Backgorund」にチェックします。これで(Unityエディター側の動作だと思いますが)ウィンドウがバックグラウンド状態でも実行されます。

f:id:kaorun55:20170225183045p:plain

Sharingサービスを実行します。

f:id:kaorun55:20170225183046p:plain

ここで表示されるサーバーのIPアドレスを後で使用します。

場合によってはSchemaバージョンエラーが出る場合があります。その場合はオリジナルのHolograms-240やHoloToolkit-UnityにあるSharingServerを使用してください。f:id:kaorun55:20170225184125p:plain

Spectator View(HoloLens)とSharingサーバーのIPアドレスを設定します。

f:id:kaorun55:20170225183047p:plain

まずはエディター上で実行してSharingサーバーに接続できることを確認します。

f:id:kaorun55:20170225183048p:plain

続いてUWPを行い、HoloLensにデプロイします。

HoloLens上でこのアプリを実行し(デバイスポータルから起動すると楽です)、Sharingサーバーに接続されていることを確認します。次にUnityエディター上で実行し、サーバーおよびHoloLensに接続できると、PC上のカメラ位置がHoloLensに同期するようになります。

 

機材が複雑かつ3Dプリントで作成する必要がある、環境構築が煩雑、HoloLensが2台以上必要であることから、なかなか試しづらいですがアプリデモでは必要になってくるかと思います。

自分も3台のHoloLensでMixed Reality Captureを使った第三者視点はやったので。

 

 

デベロッパーズサミット2017で展示、登壇しました

2017年2月16(木)のデベロッパーズサミット2017で展示、登壇してきました。

展示

TMCNベースでPETS、ホロラボ、ショッカソン、HoloEyes 連合で展示をしていました。

HoloLensが目を引くので、休憩時間中は人もたえず、3,4台体制だったので、今回も結構な人数に体験してもらうことができたと思います。

f:id:kaorun55:20170217145611j:plain

f:id:kaorun55:20170217145618j:plain

 

登壇

17:25分からの枠でした。

200-300人くらいでしょうか。おかげさまで満席でした。

最初に聞いてみたところ、HoloLens持ってる人は数人、興味あるけど買ってない人が9割くらい、まだかぶったことがないひとが6割くらいのようです。

 

Togetterのまとめと当日の資料はこちらです。

togetter.com

 

docs.com

HoloLens Meetupを開催しました。

1/28(土)の福岡を皮切りに、全国4か所でHoloLens Meetupを開催しました。

参加してくれた方々、協力してくれた各地のスタッフの方々、会場提供などご協力いただいた方々ありがとうございます。

各地それぞれ楽しく会を開催できました。

2016/12/2の日本での予約開始時にリリースが2017/1/18に決まったことを受けてTMCNや各地のxMCNメンバーの方に持ちかけたところ、みなさん乗ってくれました。

1/18に株式会社ホロラボの登記をしたこともあり、会社紹介もかねて回ることができて良かったです。

 

HoloLens所持者を対象としたハンズオンと、興味あるからすべてを対象としたミートアップの2部構成で、ハンズオンは92人、ミートアップは237人の方にご参加いただきました(スタッフ除く)。

f:id:kaorun55:20170213094947p:plain

ハンズオンでは、1台のHoloLensを使ったアプリ開発の初歩から複数台のHoloLensの空間を強調させるSharing体験までを行いました。Sharingは複数台のHoloLensが必要ですが、HoloLensの真価を発揮するための重要な特徴であることから、せっかく集まるこの機会に体験してもらおうと考えました。

 

今回ぼくが使った資料はこちらにまとめています。ハンズオン、ミートアップで使用した資料をまとめています。HoloLensの概要から開発体験までできました。実施したうえでの改定事項も対応していきます。

docs.com

 

 

1/28(土) Fukuoka HoloLens Meetup vol.1

最初のイベントは福岡で17人の方にご参加いただき開催しました。

日本マイクロソフトの高橋忍さんにもご参加いただき、HoloLensを含めたマイクロソフト全体の話や、ハンズオンのフィードバックをいただくことができました。

f:id:kaorun55:20170213081140p:plain

 

togetter.com

2/2(木) Tokyo HoloLens Meetup vol.1

平日の日中、HoloLens所持者対象にもかかわらず60人以上の方がハンズオンに参加してくれました。スタッフと合わせると80台を超えたHoloLensが集結しました。

f:id:kaorun55:20170213081252p:plain

Photo by 集合写真家Masahiro Takechi

この写真がHoloLensの生みの親であるAlex Kipmanまで届いたこと。

 

 HoloLens公式アカウントからリプライをもらったことが、個人的に非常にうれしかったです。

 

 

ミートアップも申し込みで約200人、スタッフも合わせて実際に参加された人数が約180人、HoloLensの台数は数えきれないほどになりました。

日本マイクロソフトのWindows本部長である三上さんからも開会のあいさつをいただきました。

 

ここで発表していただいた坪倉さんのスライドがとても分かりやすいので、特に広告などコンシューマー向けにHoloLensの利用を検討している方は一度見ておくべし。と思います。

www.slideshare.net

 

取材記事もでています。

 

robotstart.info

 

PANORA VR » HoloLensはおもちゃではない——クリエイターが語る「仕事でMR」の魅力とは?

 

togetter.com

 

ハンズオン、ミートアップの様子は動画でも公開しています。

www.youtube.com

www.youtube.com

2/4(木) Osaka HoloLens Meetup vol.1

大阪は34人の方に参加していただきました。

日本マイクロソフトの西脇さんとちょまどさんにもご参加いただき、日本のコミュニティでは初の公開となるSruface Studioのデモが行われました。Surface Studio、DialとHoloLensの連携も今後楽しみですね。

f:id:kaorun55:20170213081407p:plain

大阪開催の後、参加者の @sumihiro さんが、iPhone用のHoloLensキーボードを作ってくれました。HoloLensは日本語入力が難しいのですが、このアプリでだいぶ改善されました。

 

 

togetter.com

2/11(土) Tohoku HoloLens Meetup vol.1

最後の東北では15人の方にご参加いただきました。

日本マイクロソフトの金尾さんから、マイクロソフト全体の中でのHoloLensの位置づけについてお話いただきました。

f:id:kaorun55:20170213081446p:plain

 

hololens.connpass.com

 

ミートアップを終えて

HoloLensを購入して、コミュニティに参加する人が100人近くもいることが今回一番の驚きです。日本の購入数の初動が「欧州6か国合計」の3倍と言われるなど、たくさんのHoloLensが日本に来ています。

今回のミートアップで各地でHoloLensを活用しようとしている方たちとたくさん出会えたので、これからも継続して進めていこうと思います。

 

Structure Sensorで3Dスキャンした人のモデルをHoloLensで表示させたときのまとめ

思い付きで3Dスキャンしたデータにリグ(ボーン)、モーションをつけてHoloLensに入れてみたら、思いのほか反響があったのでおおよその手順を記録しておきます。

慣れるとスキャンからリグ入れまでで30-60分でしょうか。

詳しい人からすると目新しいものではないかもしれませんが、手軽にここまでできるようになったというのは進歩なんだろう思います。

f:id:kaorun55:20170123020613p:plain

モデル

フリー素材です。常識の範囲内でご使用ください。

https://www.dropbox.com/sh/kxtcgvzbgxo4bzv/AAAS1TkKjCWPe826qYXQkhr_a?dl=0

必要な機材、アプリ

  • Storcutre Sensor:iPadに装着する3Dスキャナーです。iPadの世代によってStructure Sensorのブラケットが違うの注意してください。Structure Sensor単体で$379です。
  • iPad:Structure Sensorを装着します。
  • itSeez3D:3Dスキャンアプリです。クラウドで処理してダウンロードする際に課金されます。サブスクリプションによって値段が変わりますが、1体あたり$7と考えておけばいいと思います。
  • Unity:HoloLensアプリを作ります。
  • Maya(Blender):3Dスキャンしたモデルデータにリグ(ボーン)を入れます。ぼくはMayaの自動リグを使いました(廉価版のMaya LTでも可)。出力はFBXにします。
  • Motion Builder(Blender):モーションデータを加工します。UnityはBVHファイルが使えないので、モデルデータに埋め込むか、BVHをFBXに変換します。
  • HoloLens:オプション。見るだけならUnityエディター上でも、VRデバイスでもなんでも。

手順

1. iPadにStructure Sensorを接続し、itSeez3Dで3Dスキャンします。このとき、Tポーズでとることで、リグを入れて好きなようにできます。ただし、Tポーズの3Dスキャンが難しいのでAポーズでリグを入れてモデルを調整するやり方でもいいかもしれません。

f:id:kaorun55:20170123021134j:plain

2. スキャンデータはクラウドに上げて処理されます。しばらくすると、iPadでプレビューできます。itSeez3Dアプリでここまでの手順は無料です。

f:id:kaorun55:20170123022719p:plain

3. 3Dデータに問題なければダウンロードします。ここで課金が発生します。

f:id:kaorun55:20170123022853p:plain

4. 3Dモデルの形式はOBJなので、MeshLabなどで見られます。

f:id:kaorun55:20170123021233p:plain

5.このモデルをMayaに入れ、モデルを調整(スケールの関係でX,Y,Zの大きさをそれぞれ100倍、正面を向くように回転)し、自動リグ処理をします。

このファイルをFBXで出力すれば、Unity上で扱えるようになります。

f:id:kaorun55:20170123021305p:plain

6.モーションデータを作成します。UnityはBVHファイルが使えないので、Motion Builderでモデルデータに埋め込むか、BlenderでBVHをFBXに変換します。

7.3DモデルとモーションデータをUnityに入れ、アプリを作成します。

そのままだとHoloLensで表示するには重いのでメッシュの数を減らしたり、ボーンも調整してあげると、きれいに表示できるようになります。

 

ちなみに、モーションデータはPerfume official global websiteのものを使用しています。


Perfume x TMCN x HoloLens

3Dスキャン、リグ入れは場所、機動性とトレードオフで改善可能なので、それも進めようと思います。