MRが楽しい

MRやVRについて学習したことを書き残す

公式チュートリアル「HOLOGRAMS 210 1章」を試してみる

本日は公式チュートリアル実施枠です。
いつも通り、以下ブログの記事を参考に実施します。
・HOLOLENS 公式チュートリアル HOLOGRAMS 210 GAZE 1章
 https://azure-recipe.kc-cloud.jp/2016/12/holograms-210-1/


参考記事にある通りにチュートリアルを実施します。
アプリをビルドすると、下記の画面が表示されました。
f:id:bluebirdofoz:20170509014238j:plain
タップ操作を行うと…。
f:id:bluebirdofoz:20170509014243j:plain
宇宙飛行士が現れました。

今回の目新しい技術としてはfitboxのオブジェクトでしょうか。
アプリ起動時に表示された、所謂「スプラッシュスクリーン」のオブジェクトとなります。

作っている箇所は以下の辺り。
以前利用したPanelオブジェクトと異なり、四角形の3Dオブジェクトを作成する手法のようです。
・Fitbox.cs

    private void CreateFitboxQuad(Transform parent, float xPos, float yPos, float width, float height)
    {
        var quad = GameObject.CreatePrimitive(PrimitiveType.Quad);
        quad.transform.parent = parent;
        quad.transform.localPosition = new Vector3(xPos, yPos, 0);
        quad.transform.localScale = new Vector3(width, height, quad.transform.localScale.z);
        quad.transform.localRotation = Quaternion.Euler(0f, 180f, 0f);
        quad.GetComponent<MeshRenderer>().material = FitboxMaterial;
    }

以下でタップイベントをキャッチした際に呼び出す関数を設定しています。
・Fitbox.cs

        // Set up our GestureRecognizer to listen for the SelectEvent
        recognizer = new GestureRecognizer();
        recognizer.TappedEvent += (source, tapCount, ray) =>
        {
            DismissFitbox();
        };
        recognizer.StartCapturingGestures();

DismissFitbox関数ではAstroManのオブジェクトがアクティブになり、表示されます。

    private void DismissFitbox()
    {
        // Destroy the GestureRecognizer ...
        recognizer.CancelGestures();
        recognizer.StopCapturingGestures();
        recognizer.Dispose();
        recognizer = null;

        // ... show the hologram collection ...
        if (HologramCollection)
        {
            HologramCollection.SetActive(true);

同時に、fitboxオブジェクトは削除されます。

        // ... and Destroy the Fitbox
        Destroy(gameObject);

因みに途中、差し替えたカメラオブジェクトは以下の設定を行ったカメラオブジェクトとなります。
・Move Camera to Origin: アプリ起動時にカメラ位置を0,0,0にする
・Camera Clears to Black: カメラのBackgroundを黒にする

以前の「Holograms 101」チュートリアルでは手動設定していた項目ですね。

Unityでのhololensアプリの開発プロジェクト作成手順

おいかけっこアプリの再設計にてプロジェクトを新規作成する際に気付いたことがありました。
これまでサンプルプロジェクトを用いていたため、hololensアプリ向けのプロジェクトの新規作成方法をまとめていません。
メモがないと不便なので以下を参考に新規プロジェクトの作成方法をまとめます。
・初めてのHoloLens開発(2D/Holographicアプリ)[環境準備~実行、HoloToolkit-Unity活用]
 http://www.buildinsider.net/small/hololens/002


1.Unityを起動したら、右上の[New]アイコンをクリックしてプロジェクト名を設定する。[Create project]ボタンをクリックして新規プロジェクトを作成する。
f:id:bluebirdofoz:20170508005839j:plain


2.HoloToolKit-UintyのAssetsフォルダにある「HoloToolkit」をプロジェクトのAssetsフォルダにコピーする。f:id:bluebirdofoz:20170508005504j:plain
これによりメニューバーに「HoloToolkit」が追加される。


3.メニューバーから「HoloToolkit」->「Configure」->「Apply HoloLens Scene Settings」をクリックする。
f:id:bluebirdofoz:20170508005510j:plain
これにより、以下の設定が行われる。
・Move Camera to Origin: アプリ起動時にカメラ位置を0,0,0にする
・Camera Clears to Black: カメラのBackgroundを黒にする
・Update Near Clipping Plane
・Update Field of View


4.メニューバーから「HoloToolkit」->「Configure」->「Apply HoloLens Project Settings」をクリックする。
f:id:bluebirdofoz:20170508005518j:plain
これにより、「Build Settings」が自動的に設定される。


5.メニューバーから「File」->「Save Scene As...」でシーンを保存する。
f:id:bluebirdofoz:20170508005612j:plain


6.「Build Settings」で「Add Open Scenes」を選択し、作成したシーンを追加する。
f:id:bluebirdofoz:20170508005621j:plain


7.「Build Settings」で「Build」を実行する。初回時は出力先のフォルダ選択が必要となる。
これで完了です。新規プロジェクトとして最低限必要な設定は以上となります。


以下、必須作業ではないですが、追加で行った設定もメモとして残しておきます。
1.「Holograms 101」のAssetsフォルダから「Holograms」を取り込み、Lightsオブジェクトを配置する。
f:id:bluebirdofoz:20170508005700j:plain
初期配置のライトだと単一ライトのため、現実世界と合わせたとき、違和感のある光源になります。
何らかの方法で光源を動的に判断することがない限り、hololens用のライト設定を用意しておくと楽かも。


2.「Build Settings」で「Unity C# Project」をチェックする。
f:id:bluebirdofoz:20170508005726j:plain
これを行っておくと、ビルド時にC# Projectとして出力が行われるため、VisualStudio側でのコード修正が可能となります。


また、参考先にある以下の設定は空間のワイヤーフレーム表示を利用する際に設定する項目です。
機能が不要な場合は設定を行わなくても大丈夫です。
1.「HoloToolkit」->「Input」->「Prefabs」->「HoloLensCamera」を「Hierarchy」ウィンドウにドラッグする。
f:id:bluebirdofoz:20170508005741j:plain


2.「Build Settings」->「Player Settings」から「SpatialPerception」にチェックを入れる。
f:id:bluebirdofoz:20170508005753j:plain
空間認識の利用選択のようです。「Spatial Mapping」などを使う際にはチェックを入れていないと機能が利用できません。

ARとVRデバイスを色々調べてまとめる(Real Sense)

ARとVRデバイスを色々調べてまとめる 周辺機器枠その2 Real Sense R200 です。

スペック

搭載センサ

カラーカメラ1920x1080@30FPS
Depthカメラ最大628x468@30FPS
距離範囲0.5~4m(屋外をサポート)

サポート環境

サポートOSWindows 8.1以降
USBUSB 3.0
サポートCPU第4世代(Haswell)以降のインテル Core プロセッサー
インテル Core M プロセッサー
インテル Atom プロセッサー(Cherry Trail以降)

開発環境

OSWindows 8.1以降(デスクトップモードのみ)
アプリ開発言語C++
C#.NET Framework 4.0以降)
JavaScript
JavaJDK 1.7.0_11以降)
Processing(2.1.2以降)
開発環境 Visual Studio 2010以降
Unity Pro 4.1.0以降(Unity5.0以降であればPersonalでも可)
参考:中距離対応インテル RealSense カメラ
   http://www.intel.co.jp/content/www/jp/ja/architecture-and-technology/realsense-longrange.html
参考:インテル RealSense R200で進化した新機能とは?
   http://www.buildinsider.net/small/newsensor/realsenser200

価格

Intel RealSense Developer Kit (R200)$169(約1万9000円)

説明

Intelから開発者向けに販売されているタブレットPCの背面セットを目的としたカメラセンサデバイスです。

RealSense SDKによる提供機能

インテルRealSenseの開発はIntelが提供する「Intel RealSense SDK」を利用して行うことができます。
SDKには同じSDKを用いる各RealSenseの提供機能の一覧があり、R200ではSDKより下記の機能の利用ができるようです。

ストリームカラー、Depth(深度)、Left(IR)、Right(IR)
顔認識検出、特徴点抽出
手認識ブロブ(輪郭)
空間環境認識(空間の3Dスキャン)、距離計測
3D スキャン物体、頭、体(全身)
写真写真、動画
参考:インテル RealSense R200で進化した新機能とは?
   http://www.buildinsider.net/small/newsensor/realsenser200

ARデバイスとの相性

使い方はタブレットなどの小型PCに接続し、空間認識や顔認識機能の利用によるARカメラとしての利用目的のデバイスとなります。
ARデバイスとしての利用用途だけでなく、深度センサが付いているのでタブレットをかざして画像データと共に3Dデータを取り込む用途でも利用可能です。
RealSenseは他にもジェスチャー検出機能のついたSR300などの型番がありますが、R200はAtomもサポート環境となっており、動作の軽さによる取り回しの良さが特徴です。
VRデバイスでも外部情報の入力デバイスとして利用可能かもしれません…機能としてはARデバイスになってしまいますが。

Unityでの使用例

下記のブログで様々な使用例が示されていました。
www.naturalsoftware.jp

特に検出した表情を元に3Dキャラクタの表情を変更するのは仮想空間でのSNSでも注目されている技術です。
AR/VRデバイスと非常に相性の良いデバイスであることが分かります。

ARとVRデバイスを色々調べてまとめる(Leap Motion)

ARとVRデバイスを色々調べてまとめる 周辺機器枠その1 Leap Motion です。

スペック

本体スペック

サイズW80×D30×H11mm
インターフェースUSB 3.0/2.0
対応OSWindows 7/8、Mac OS X 10.7、Ubuntu Linux 12.04LTS/13.04
CMOSイメージセンサー半径50センチ、中心角110度の空間でポイントを0.01ミリの精度で認識

ラッキング速度

バランスモード120fps
プレシジョンモード60fps
高速モード214fps

開発環境

アプリ開発言語C++, Objective-C, Java, C#, Python, JavaScript
参考:イベントのために調べたLeapMotionのスペックと開発手順
   https://gist.github.com/K90j1/8563595

価格

Leap Motion10,080円

説明

Leap Motion社から一般向けに販売されている手のジェスチャーを認識する入力デバイスです。

モーションキャプチャ機能

Leap Motionでは両手とその指10本のモーションキャプチャが行えます。
手と指の動きは3次元空間でキャプチャされ、上下左右、前後への手の移動、手首の捻り動作も認識します。
ラッキング速度はバランスモードで120fps、精度重視のプレシジョンモードでも60fpsということで仮想空間へも遅延を感じさせない取り込みが可能でしょう。

VRデバイスとの相性

特にハンドトラッキング機能のないスマートフォン系VRデバイスでの入力センサとしての用途が期待できます。
ハンドコントローラのあるハイエンドVRでもコントローラを利用しない入力デバイスとしての利用が可能です。
実際、その需要が高かったのか公式ページでVRデバイスへのマウント用器具が提供されています。
f:id:bluebirdofoz:20170506144622j:plain
価格は$19.99です。(高くない?)

開発環境について

Leap Motion SDKを利用することでLeap Motionを用いたアプリ開発が可能です。
スペック欄にまとめましたが、数多くの開発言語に対応しています。
Unityでの開発にも対応しており、サンプルプロジェクトやOculus RiftやHTC viveと連動するアセットも用意されています。
開発の敷居はとても低いと言えるでしょう。

筆者も機会があれば試してみたいと考えていますが、形状的にhololensへのセットは難しそう。

ARとVRデバイスを色々調べてまとめる(Gear VR)

ARとVRデバイスを色々調べてまとめる VR枠その3 Gear VR です。

Gear VR

f:id:bluebirdofoz:20170505091426j:plain
www.samsung.com

スペック

本体スペック

OSAndroid(Galaxy S6/S7接続)
対応デバイスGalaxy S6/Galaxy S6 edge/Galaxy S7 edge
電源スマートフォン電源利用
重量345g(フロントカバー含む)

ディスプレイ

視野角約101度
解像度(全体)2560×1440
解像度(片目)1280×1440

搭載センサ

センサジャイロセンサー/加速度センサー/近接センサー
参考:Galaxy Gear VR
   http://www.samsung.com/jp/consumer/mobilephone/gear/gear/SM-R323NBKAXJP#gallery
参考:徹底比較!おすすめのVRヘッドマウントディスプレイ5選【2017年最新版】
   http://life-saver.jp/1

価格

GearVR(Galaxy本体含まず)約1万3000円

長所/短所

長所

・VR端末として手頃な価格設定
・携帯をセットすればコード不要で単体動作可能
・追加のジャイロ加速度センサによる快適なトラッキング性能

短所

・位置トラッキングの機能はなし
・携帯端末によっては発熱問題により長時間利用が不可能

感想

samsung社から一般向けに販売されているHUD型VRデバイスです。
本デバイスは前期モデルを筆者が所有しております。最新モデルとの違いは視野角の広さです。

優れた点について

本機の優れた点は大きく2点あります。
一点目はVRデバイスの中では安価な価格設定です。GearVR本体の価格は1万強です。
本体の携帯端末をどれを購入するかで大きく変わりますが、最も古いモデルのS6であれば4万程度で手に入ります。
キャリアの購入プランや中古購入を利用すればより安価に手に入れることもできるでしょう。
凡そ5万前後の価格でVRを体験可能です。

スマートフォンVRの中で優れたトラッキング性能

二点目はスマートフォンを本体として利用するVRデバイスとしては優れたトラッキング性能です。
これはハコスコを代表するGoogle Cardboardのプラットフォームと大きく異なる点です。
Gear VR自体に追加のジャイロセンサ/加速度センサが搭載されています。
これを連携利用することで、Gear VRはスマートフォンを利用するVRデバイスの中で非常に優れたトラッキング性能を発揮します。
加えて、スタンドアローン機で接続コードが不要なため、VR空間での視点変更の快適度はOculusなどのハイエンドVR端末よりも優れて感じます。

位置トラッキング機能はなし

外部センサが存在しないため、位置トラッキング機能は提供されません。
このため、仮想空間を歩き回るなどといった体験はGear VRでは行えません。

解像度はハイエンドVRと比べても遜色なし

筆者はGalaxy S6と前期モデルを利用しての体験でしたが、映像の解像度についてOculusなどのハイエンドVRと比べても遜色ないと感じました。
ただし、起動可能なアプリのクオリティには明確な隔たりが存在します。これは本体機として利用する携帯端末と高性能PCの差によるものです。
Gear VRのアプリではハイエンドVRでのゲームのような大容量/高画質のアプリは存在しません。
現状、VRデバイスはゲーム利用が主な使用目的となるので、コンテンツの不足は痛いところです。

古いモデルでは熱暴走の問題あり

筆者が利用したGalaxy S6ではGear VRアプリを動作させたときの端末の温度上昇も問題になりました。
10分程度の連続利用で、端末温度が上昇し、アプリが停止してしまいます。
本問題は後継機ではある程度改善されたとのことですが、それでも1時間以上の連続利用は難しいようです。

ARとVRデバイスを色々調べてまとめる(HTC Vive)

ARとVRデバイスを色々調べてまとめる VR枠その2 HTC vive です。

HTC Vive

f:id:bluebirdofoz:20170504164531j:plain
www.vive.com

スペック

本体スペック

OS外部PC接続
スピーカー3.5mmジャック
電源USB給電
重量620g(ヘッドバンド含む)

外部PC要求スペック

CPUIntel i5-4590同等以上
GPUNVIDIA GTX 1060同等以上
メモリ4GB以上のRAM
OSWindows 7 SP1以降

ディスプレイ

視野角約110度
解像度(全体)2160×1200
解像度(片目)1080×1200
リフレッシュレート90fps

搭載センサ

センサジャイロセンサー/加速度センサー/位置センサー
ラッキングカメラベースステーション(2個)
ルームスケールサイズ11.5ft(約3.5m)四方
参考:VIVE
   https://www.vive.com/jp/
参考:いま買うべきVR機器は?
   http://japanese.engadget.com/2016/09/20/vr-playstation-vr-oculus-rift-htc-vive-vr/
参考:HTC ViveとOculus Rift CV1&Touchを徹底比較
   http://blog.livedoor.jp/wisteriear/archives/1063074467.html
参考:徹底検証!VIVEとOculus Touchのトラッキング機能にはどんな差があるのか?
   http://vrinside.jp/news/vive-vs-oculus-rift-touch-roomscale/
参考:HTC viveのスペック情報とおすすめアプリ、ゲームを紹介する
   http://blog.endstart.net/article/htc-vive-spec.html

価格

HTCvive9万9,800円税別
※ 日本向け販売価格

長所/短所

長所

・広い視野角と高い解像度による没入感の高さ
・広域なルームスケール機能、ベースステーションによるトラッキング性能の高さ
・steamとの連携によるコンテンツの豊富さ

短所

・高額な価格設定
・起動にはHTC viveとは別に外部PCが必要

アプリ開発環境

・Viveport SDK
・Unity/Unreal Engine 4など
参考:開発者のためのViveportのご紹介
   https://developer.viveport.com/jp/develop_portal/

感想

HTC社から一般向けに販売されているHUD型VRデバイスです。

優れた点について

本機の優れた点はハイエンドVRデバイスとしては最高レベルの広い視野角と高い解像度です。
映像面でも非常に高い没入感を提供してくれます。
HTC viveではそれに加えてルームスケール機能の存在があります。
11.5ft(約3.5m)四方の空間を仮想空間として歩き回ることができるため、仮想空間内の移動面でも高い没入感を提供します。
特にアトラクション系のアプリと親和性が良く、イベントで利用されるVRデバイスOculus RiftよりHTC viveが多い印象です。

筐体以外の利点

本体としての優れた点だけでなく、HTC viveには環境面での利点も多く存在します。

第一の利点として、コンテンツが非常に充実していることです。
HTC viveはアプリストアとして既存のPCゲームストアのsteamをプラットフォームとして利用しています。
このため、非常に多くのゲームコンテンツがHTC viveのVR機能に対応しています。
Oculus RiftはOculus Homeという新規ストアを利用しているため、専用アプリの数には倍以上の差があります。

第二の利点として、日本の国内販売店の存在です。
対抗機であるOculus Riftは日本国内の代理店が存在せず、Oculus社に直接注文を行い、国際宅配で受け取る形となります。
その点、HTC viveは国内に代理店が存在し、そこから購入することができます。
非常に高額な買い物のため、故障などのリスクを考えると、日本在住の個人ユーザにはとても有り難いでしょう。

第三の利点として、販売台数の多さです。
現状での販売台数はHTC viveがOculus Riftを上回っています。当然ながら販売台数が多ければ情報も多くなります。
上記の代理店問題もあってか、日本の開発コミュニティはHTC viveの方が活発である印象を受けます。

Oculus Riftと比較した際の難点

第一には価格の問題があげられます。
2017年3月1日にOculus Rift CV1が値下げを行ったことから、その価格設定に大きな差が発生しました。
本体のみだと1.5倍近い価格となります。見た目上のスペックは差ほど変わらないため、購入者としては悩み処となるでしょう。

また、対抗機のOculus Riftと使用感を比較した場合、欠点として上げらることが多いのは重量の問題です。
事実、HMD本体はOculus Riftと比較して重いことと、重心の設計が前面寄りなのが、Oculusに劣る点として指摘されます。
しかし致命的なほどの問題ではなく、あくまで比較すると感じられる程度の問題のようです。

ARとVRデバイスを色々調べてまとめる(Oculus Rift CV1)

ARとVRデバイスを色々調べてまとめる VR枠その1 Oculus Rift CV1 です。

スペック

本体スペック

OS外部PC接続
スピーカー専用ヘッドホン
電源USB給電
重量440g(ヘッドバンド含む)

外部PC要求スペック

CPUIntel i5-4590同等以上
GPUNVIDIA GTX 970/AMD R9 290同等以上
メモリ8GB以上のRAM
OSWindows 7 SP1 64ビット以降

ディスプレイ

視野角約110度
解像度(全体)2160×1200
解像度(片目)1080×1200
リフレッシュレート90fps

搭載センサ

センサジャイロセンサー/加速度センサー/地磁気センサー
ラッキングカメラ赤外線センサ(1~3個)
ルームスケールサイズ8.2ft(約2.5m)四方
(センサー3台時)
参考:Oculus Rift
   https://www.oculus.com/rift/
参考:いま買うべきVR機器は?
   http://japanese.engadget.com/2016/09/20/vr-playstation-vr-oculus-rift-htc-vive-vr/
参考:HTC ViveとOculus Rift CV1&Touchを徹底比較
   http://blog.livedoor.jp/wisteriear/archives/1063074467.html
参考:徹底検証!VIVEとOculus Touchのトラッキング機能にはどんな差があるのか?
   http://vrinside.jp/news/vive-vs-oculus-rift-touch-roomscale/
参考:Oculus Rift スペック情報
   http://vrinside.jp/vr/oculus-rift/

価格

OculusRiftCV1(専用コントローラ含まず)$499(約6万4000円)税別
OculusRiftCV1(専用コントローラ(OculusTouch)含み)$599(約7万7000円)税別

長所/短所

長所

・広い視野角と高い解像度による没入感の高さ
・専用コントローラ(OculusTouch)の動作没入感の高さ
・ハイエンドVRとしては低めの価格設定

短所

・HTCviveと比較した際のルームスケールの狭さ
・専用コンテンツの少なさ
・起動にはOculus Riftとは別に外部PCが必要

アプリ開発環境

・RIFT PC SDK
・Unity/Unreal Engine 4など
参考:Oculus Rift開発者用のSDK1.3がリリース
   http://www.moguravr.com/oculusrift-sdk13/

感想

Oculus社から一般向けに販売されているHUD型VRデバイスです。
本デバイスは筆者が所有しているものとなります。

優れた点について

本機の優れた点はハイエンドVRデバイスとしては最高レベルの広い視野角と高い解像度です。
現状、最高品質の仮想空間への没入感を提供してくれます。
対抗機として注目されるHTC viveと同じ視野角と解像度ですが、レンズの違いかOculusの方が映像が鮮明という意見が多いです。
(VRは広い視野角を実現するための魚眼レンズ部により、一般的に中央部の方が画素の密度が高くなるよう調整されています)

専用コントローラ(Oculus Touch)について

これは私個人の使用しての感想です。
対抗機のHTC viveと比較した際、Oculusの最大の優位点は専用コントローラ(OculusTouch)の優れたデザインです。
グリップ型のコントローラは構成がとても優れており、ハンドトラッキングについても高い没入感を提供してくれます。
物を掴む、手を開いて離す、触れる、何かを指さす、などの動作が自然に行えます。

Oculus以外のデバイスにもコントローラとして利用したいほどに優秀です。
Oculus Riftを購入する際は必ず専用コントローラも同時購入することを進めます。
後述しますが、逆に言うと、現状Oculusの優位点はこのコントローラを除けば価格くらいです。
しかし、他の欠点を補って余るほどに素晴らしいコントローラです。

HTC viveと比較した際の欠点

Oculus Riftは優秀なデバイスですが、対抗機にHTC viveが存在し、ハイエンドVRとして非常に近いコンセプトを持っています。
そして両機を比較した際に、Oculus Riftの欠点が見えてきます。

大きな欠点として、指定の領域を仮想空間として歩きまわるルームスケール機能の弱さがあります。
HTC viveが11.5ft(約3.5m)四方のルームスケール機能を提供しているのに対し、Oculusは追加のセンサを購入しても8.2ft(約2.5m)四方程度となります。
更に追加センサを購入しない場合、360度トラッキングができないため、回転動作を行うと背後を向いた際にコントローラのトラッキングが切れるなどの問題が発生します。

HTC viveとのトラッキング手法の違い

何故、同じハイエンドVRにも拘らず、Oculus Riftはトラッキング性能で劣るかについてです。
これはOculus RiftとHTC viveではトラッキング手法が根本から違っていることに原因があります。

端的に言うと下記の違いがあります。

Oculus Rift

 HMD本体が照射する赤外線を設置センサが受信して位置情報を算出する。

HTC vive

 設置センサが照射する赤外線をHMD本体が受信して位置情報を算出する。

つまりトラッキングのアプローチが全く逆です。
このため、Oculus RiftHMD本体がHTC viveに比べて軽い代わりに、ビーコンが障害物に隠れる背後のトラッキングができない。
また、一つのセンサで複数台のHMD本体の追跡を行えないという問題を抱えています。

Oculus社も追加のセンサを販売し、ソフトアップデートで複数センサによるトラッキングを可能にするなど対応を行っていますが、ハードウェアの構造は変えられません。
このトラッキング手法の違いが、今後、Oculus RiftとHTC viveの命運を分ける要因となりそうです。