2018年11月25日日曜日

 LeapMotionは手のジャスチャー認識などができるデバイスです。仕組みとしては赤外線LEDと赤外線カメラを用いての位置を測定しています。

 そのためにカメラとしても使用することができます。この記事ではLeap Motionで映像をとりそれをリアルタイムでUE4で描画するといったことをしたい思います。パススルーという感じです。

最終的にはOculusでそれを見たいのですが、PCが不調で今回はお預けで・・・

バージョン
  • UE4.9.0
  • Leap Motion ソフトウェアバージョン 2.3.1(設定でイメージを許可するにチェック) 
  • Leap Motion公式のUEプラグイン


①適当にプロジェクトを作る。

②プラグインを確認する。UE4.9からはデフォルトでLeap Motionのプラグインが有効になっています。Enabledにチェックがあることを確認する。
メニューからEdit->Plugins->Input Devices

③Actorを継承したブループリントを作成する。
+Add Componentで「Leap MotionImage」を追加する。
コンパイルをして保存する。

④作成したアクターを適当にMapに配置してください。


⑤Play!それだけ!Leap Motionに映っている画像が表示されると思います。



これだとMRになってませんが・・・目指すはこのようなものです。 動画の環境はC++/OpenGLだそうです。Leap Motionなのにカラーなのは"Prototype Leap color sensor"を使っているからだそうです。

以下はLeap公式のアプリ 「Image Hands」って機能を使ってるけど、これは今のところUnityのプラグインのみにある。
https://developer.leapmotion.com/gallery/image-hands-500-blocks

UE4で鏡を作る

UE4で鏡のようなものを作ってみた。Content Examplesにも含まれているが、説明がないので書いてみました。カメラで撮った映像を映すマテリアルを作るようです。

結果。こんな感じにリアルタイムに反映されます。l




作り方概要
  1. レンダーターゲットを置く(テクスチャ)
  2. 撮影用のカメラを置き、テクスチャターゲット設定(シーンキャプチャ)
  3. テクスチャからマテリアルを作る
  4. マテリアルを張る 
作り方詳細

1. レンダーターゲットを置く(テクスチャ)

 コンテンツブラウザで右クリックしてRender Targetを追加する。名前を「NewTextureRenderTarget2D」とする。

2.撮影用のカメラを置き、テクスチャターゲット設定(シーンキャプチャ)

 ModesからScene Capture 2DをMapにドラックアンドドロップ。


 Scene Capture 2Dを選択した状態で、詳細画面のTexture Sceneで先ほど作った「NewTextureRenderTarget2D」テクスチャを設定する。


3.テクスチャからマテリアルを作る

 コンテンツブラウザで右クリックしてマテリアルを追加して、ダブルクリックしてマテリアルエディターを開く。
 何もないところで右クリックして「Sample Texture」を作る。選択して詳細のTextureで「NewTextureRenderTarget2D」を検索して選択する。画像の通り白い丸(謎)とEmissive Color(謎)を接続する。

4.マテリアルを張る
作ったマテリアルを適当なActorに張る。今回はCubeに張ってみた。解像度がもっとほしい場合は「NewTextureRenderTarget2D」をダブルクリックしてSizeX,Yを大きくする。



Content Examplesの以下に該当する箇所です。
https://docs.unrealengine.com/latest/JPN/Resources/ContentExamples/Reflections/index.html