トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

unity_leapmotion_get_image


カメラ画像の取得


Leap Motionのカメラから画像を読み込むときの覚書です。
Leap_Motion_CoreAssets_4.2.0.unitypackageで確認しました (2017/06/13)。

  シーンにLeap Motionでキャプチャするためのprefabを配置


  • LeapMotionのprefabより「LMHeadMountedRig」をシーンに追加
  • 手を使わない場合は、配置したprefab内の「Hand Models」を削除
  • 配置したprefab内の「CenterEyeAnchor」に、Componentとして「LeapImageRetriever」を追加。
  • 「LeapImageRetriever」Component内のProviderに「LeapHandController」を指定
  • 「CenterEyeAnchor」の"Leap VR Camera Control" Componentを削除
  • シーンにQuadを追加し、Materialとして「LeapMotion/Passthrough/Foreground」与える。

「LMHeadMountedRig」は、アクティブなカメラの直下にposition(0, 0, 0)として配置するのがよさそう。

ここでのLeap Motion関連のシーン構成は以下の通り。

LMHeadMountedRig
  CenterEyeAnchor  <== "LeapImageRetriever" Componentが追加される
    LeapSpace
      LeapHandController
      Quad     <== Materialとして「LeapMotion/Passthrough/Foreground」を与える

これで、Quadにカメラからのキャプチャが表示される。
ただし、キャプチャ自身はスクリーン全体のビューポート的な投影になるため、
生テクスチャを取得する場合はMaterialの「LeapMotion/Passthrough/Foreground」は使わずに、「LeapImageRetriever」から情報を取得することになる。

  LeapImageRetrieverからカメラでのキャプチャ情報を取得


「CenterEyeAnchor」にComponentとして「LeapImageRetriever」を配置している場合、
「LeapMotionGetImage.cs」みたいなのを作成し、同じGameObject内にこれをComponentとして追加。
C#スクリプト内で

using Leap.Unity;

LeapImageRetriever imgR = this.GetComponent<LeapImageRetriever>();

のように、LeapImageRetrieverオブジェクトを取得できるようにしている。

LeapImageRetrieverで取得できる情報

LeapImageRetrieverでは、

  • BrightTexture (LeapTextureData型)
  • RawTexture (LeapTextureData型)
  • Distortion (LeapDistortionData型)

の3つのテクスチャ情報を作成している。


最終更新時間:2017年06月13日 13時40分18秒