zer0から始めるプログラミング生活

unreal EngineやUnityのTipsを書いていきます。

Leap motionを用いた物体移動

12/6にOculus Touchが発売されたということでおそらくもうLeap motion

代用することもないと思いますが、何かあったときのためにここにメモしておきます。

ちなみにUE4のver4.13だとなぜか出来なかったのでそれ以下をおすすめします。

(私は4.12を使用しました。)

 

 

手順

プラグインのダウンロード

以下のGithubからLeap motionプラグインをダウンロードします。

github.com

 

プラグインを使用可能に

「編集→Plugins→Input Devices」にあるLeap Motion PluginのEnabledのところにチェックを入れます。

f:id:bigden:20161118030533p:plain

 

③GameModeの作成

コンテンツブラウザの場所で右クリックメニューから「ブループリント→ブループリントクラス→Game Mode」を選択します。名前は適当に。(ここではLeapGameModeとします。)

 

④キャラクターを作成

「表示オプション→プラグインのコンテンツを表示」にチェックを入れます。その後、「LeapMotion コンテンツ→Blueprints→Rigging」からLeapRiggedCharacterをコピーし、自分のコンテンツブラウザに置きます。ここではLeapCharacterと呼びます。

 

⑤GameModeの設定

LeapGameModeを開き、Default Pawn Classを④のLeapCharacterにします。 f:id:bigden:20161118232400p:plain

 

インターフェイスの作成

右クリックメニューから「詳細なアセットを作成→ブループリント→ブループリントインターフェイス」を選択します。ここではPickup Interfaceとします。下の画像のようにインプットにスタティックメッシュアクタとVector変数を追加します。

f:id:bigden:20161118231521p:plain

 

⑦キャラクターにインターフェイスを設定

LeapCharacterを開き、クラス設定を選択し、インターフェイスの部分に⑤、⑥で作成したインターフェイスを追加します。

f:id:bigden:20161118233005p:plain

 

⑧関数の作成(キャラクター) 1

関数(ここではClosest Handという名前にします)を作成し、関数内を以下のようにします。インプットにVector型、アウトプットにName型を追加し、ローカル変数にName型変数を追加します。

f:id:bigden:20161118234512p:plain

 

 

⑨関数の作成(キャラクター) 2

もう一つ関数(ここではPickup if Emptyという名前にします)を作成し、関数内を以下のようにします。インプットにスタティックメッシュアクタ変数とBoolean変数を作成します。Closest Handは⑧で作成したものです。

 

f:id:bigden:20161207041630p:plain

 

⑩関数の作成(キャラクター) 3

さらにもう一つ関数(ここではDrop if Not Emptyという名前にします)を作成します。

f:id:bigden:20161207042222p:plain

 

⑪キャラクターのイベントグラフ

LeapCharacterのイベントグラフを以下のようにします。イベントPickupは⑥で作ったものをコンパイルしておかないと出てきません。

f:id:bigden:20161208023049j:plain

 

⑫物体のブループリントを作成

 動かしたいスタティックメッシュをレベル上に出し、詳細からブループリントを作成します。

f:id:bigden:20161208023743p:plain

 

⑬物体のブループリントのイベントグラフ

Does Implement Interface と Pickup のインターフェイスをキャラクターに追加したインターフェイスと同じにします。

f:id:bigden:20161208024600p:plain

 

すべてコンパイルしてプレイすると物体移動できるようになります。

 

 物体を掴む条件として物体に手が当たっている(当たり判定がある)ことが条件で、グーのように握らないとGrabイベントが発生してくれません。また、手に強制的にひっつけている感じであり、実際に掴んでいるわけではないみたいです。

 

参考

UE4のLeap motionプラグイン製作者が以下の動画で説明していました。

www.youtube.com

www.youtube.com

www.youtube.com