starthome-logo 無料ゲーム
starthome-logo

UE4+Leap Motion+VRで空を飛ぼう!


icon_title_tecnoligeek


※本記事はCyber Agent ゲーム技術戦略室 公式ブログの中からVRに関連する技術記事を寄稿いただいております。


 


ue4-leapmotion-sequel-eyecatch-1024x646


本記事は「Unreal EngineでLeap Motionを使ってみよう」の続きとなります。


 


1.ハングライダーをLeap Motionで操作する


Windows8.1 Pro

Unreal Engine 4.11.2

利用サンプルプロジェクト:ランドスケープマウンテン


 


1.1 ハングライダーに移植

ランドスケープマウンテンプロジェクトでは、「Assets>Blueprints>HangGlider_Gameinfo」を開いてみると分かりますが、Default Pawn Classに「Assets>Blueprints>BP_Hang_Glider(以下、BP_Hang_Gliderと呼びます)」が設定されています。


ゲームをプレイした時のキーボードからの入力も「BP_Hang_Glider」内のイベントグラフで処理されているようです。キーボード入力のイベントは「Input events for steering and camera」マクロになっているので、その中にUnreal EngineでLeap Motionを使ってみようで作成したLeap Motionの処理を移しましょう。


また、ランドスケープマウンテンプロジェクトをVRプレビューするとデバッグハンドが正しく表示されないので、前回作成した「Draw Debug Sphere at Actor」については削除しました。


ue4-leapmotion-sequel-9-1-1024x680


 


1.2  相対的な位置をトラッキング

1.2.1 相対的な位置


本章での「相対的な位置」というのは、Leap Motionのトラッキング開始時の位置を初期位置とする考え方です。伝わりにくいと思うので下図を参照してみて下さい。


Leap Motionが手を検出した位置がどの高さであっても、必ず座標を0にするといった意味合いに捉えて頂ければ大丈夫です。それでは、最初にLeap Motionが手を検出した位置を初期位置として、その位置からどの程度ずれたかを計算しながら動作を行うBlueprintを実装していきます。


ue4-leapmotion-sequel-9-2-1024x574


 


1.2.2 手のIDを保持


先ほど移してきたノードに「Set Hand ID」を追加して、検出した手のIDを「Right Hand ID」と「Left Hand ID」に保持しておきます。


ue4-leapmotion-sequel-9-3-1024x600


「Set Hand ID」の内容は下図のようになっています。現在のIDと検出したIDが異なっていれば新しくIDと座標を設定します。


ue4-leapmotion-sequel-9-4-1024x680


「Leap Motion Move Pattern」の内容も修正しました。


ue4-leapmotion-sequel-9-5-1024x680


 


1.2.3 座標の計算


座標の計算は「Two Hand Relative」で行います。最終的なBlueprintは下図のようになりました。大部分は前回の記事と同様なので移してきても問題ありません。


ue4-leapmotion-sequel-9-6-1024x680


まず、最初に検出された左手と右手の位置がBaseZ(定数値)からどれだけ離れているかを「BaseZ – OrizinZ」という計算で求めます。この計算結果を、「イベント RightHandMoved」と「イベント LeftHandMoved」で設定した手の位置と加算すると、常に最初に検出された手の位置を初期位置とした計算結果が得られます。


ue4-leapmotion-sequel-9-7-1024x680


手の状態設定についてはほぼ変わりはないですが、パラメータを多少調整しています。


ue4-leapmotion-sequel-9-8-1024x680


最後に手の状態から進む方向と上昇、下降値を設定していきます。Blueprintが長いので3つに分けて紹介します。


ue4-leapmotion-sequel-9-9-1024x680


こちらも前回とそこまで変化はないですが、「MoveForward」の値を設定するために「Relative Right Position」に「-0.02」を乗算しているので注意です。また、「Right Strength」は定数値で0.8を設定しています。これはハングライダーの曲がる強さに影響してきますので、ゲームをプレイしながら調整してみてください。


ue4-leapmotion-sequel-9-10-1024x680


左手に関しては「Relative Left Position」に「0.02」を乗算していることを除けば、右手と同様の処理を実装しています。


ue4-leapmotion-sequel-9-11-1024x680


 


1.2.4 キーボード入力を除去


1.2.3章で設定した「Move Forward」と「Move Right」をハングライダーに設定します。


ue4-leapmotion-sequel-9-12-1024x680


ue4-leapmotion-sequel-9-13-1024x680


 


1.3 手を表示する

動画のようにハングライダーから手の表示に切り替える実装をしていきます。「BP_Hang_Glider」のビューポートを開き「Hang glider body」を選択すると詳細ウィンドウが表示されるので、「Rendering」項目にあるビジブルのチェックをはずしてハングライダーを非表示にします。次に、コンポーネントウィンドウの「コンポーネントを追加」から「Child Actor」を選択して名前を「LeapHands」に変更しておきました。


ue4-leapmotion-sequel-9-14-1024x624


「LeapHands」を選択すると「Child Actor Class」が選択できるのですが、これにはLeap Motion Plugin内のBlueprintを指定します。コンテンツブラウザの表示オプションから「プラグインコンテンツを表示」にチェックを入れます。LeapMotionコンテンツの内容が表示されたので、「LeapRiggedEchoHandsActor」を選択しましょう。私は直接プラグイン内のBlueprintを指定したくなかったのでコピーしました。


ue4-leapmotion-sequel-9-15-1024x622


 



「LeapRiggedEchoHandsActor」に付けられているマテリアルは、ベースカラーに白を繋いでいるだけなので少し修正しました。ブレンドモードを「トランスルーセント」に変更し「オパシティ」を変更します。


あとはFresnelを使って手の周囲は白に、内側は緑に設定しました。「Fresnel」ノードのパラメータである「Exponent」は1.0、「Base Reflect Fraction」は0.001です。(透過しすぎると手が見えなくなるので、オパシティの値は高めの方が良さそうです)


ue4-leapmotion-sequel-9-16-1024x624


 


1.5 VRプレビューで表示

1.4章までの実装が終わると動画のように、空を飛び回ることが可能です。ところが、Leap Motionを下図のように配置してVRプレビューを実行すると手の挙動が逆になってしまったり、手の表示位置がずれてしまうことがあります。どうやらこれはLeap Motionプラグイン内の「Optimize for HMD」ノードが影響しているようです。

ue4-leapmotion-prequel-4-9-1024x576


調べたところ修正対象のBlueprintは、Leap Motionのプラグイン内にある「LeapAnimBodyConnector」でした。


ue4-leapmotion-sequel-9-19-1024x624


「Begin Play」から追っていくと、「Handle HMDMode Change」という関数でHMDモードの設定をしており、ここで「Optimize for HMD」ノードに「Leap Facing Mode Is HMD」の値が入力されています。


ue4-leapmotion-sequel-9-17-1024x624


この部分を少し修正して「UseTopdownFlag」を繋げることで、「Optimize for HMD」の設定を外部から行えるようにします。Unreal Engineをアップデートするとこの設定は元に戻ってしまうので、毎回修正しなければならないという面倒臭さがあります。

ue4-leapmotion-sequel-9-18-1024x624


設定をするBlueprintは「LeapAnimBodyConnector」を継承している、1.3章でコピーしておいた「LeapRiggedEchoHandsActor」になります。下図では「コンストラクションスクリプト」内で、「Is Head Mounted Display Enabled」ノードによりHMDモードの判定をしています。


ue4-leapmotion-sequel-9-20-1024x615


また、それぞれ「Init HMD Mode」と「Init Default Mode」はどのプロジェクトでも使いまわせるように「ブループリント関数ライブラリ」として作成しておきました。今回の場合は、「UseTopdownFlag」をfalseにしておく必要があるのでチェックを入れていません。HMD手の位置も外部から調整できるように「Hand Position」としてパラメータを渡しています。


ブループリント関数ライブラリとは(ドキュメント参照)


ブループリント関数ライブラリは、特定のゲームプレイ オブジェクトに結びついていないユーティリティ機能を提供する静的関数のコレクションです。これらのライブラリは、 AI ブループリント ライブラリなど、ロジックごとの関数セットにグループ化したり、あるいは システム ブループリント ライブラリなど、様々な関数領域へのアクセスを提供するユーティリティ関数を含むことができます。


 


「Init HMD Mode」


ue4-leapmotion-sequel-9-21-1024x615


「Init Default Mode」


ue4-leapmotion-sequel-9-22-1024x615


 


2.まとめ


今回はLeap Motionを使って空を飛んでいるようなサンプルを作ってみました。既存のサンプルプロジェクトの出来が素晴らしいので、Leap Motionへの操作変更が非常に楽でした。後半で紹介したように、VRプレビューをするからといって必ず「Optimize for HMD」ノードの「UseTopdownFlag」をtrueにする必要がないというのは新しい発見でした(実は何か良い方法がある?)。


 


※元記事:https://tech.sge.cyberagent.co.jp/ue4-leapmotion-fly/


©CyberAgent, inc. All Riht Reserved


Copyright ©2016 VR Inside All Rights Reserved.

    Loading...
    アクセスランキング
    1. AI漫画生成プラットフォーム「MangaNow」がWebtoon制作に正式対応。新画像生成AIモデル「MangaNow Comic 1.0」も公開し、横型・縦型漫画の両方に対応。

    2. AI動画生成 DomoAI ドモエイアイ Google最新AI Nano Banana Pro Gemini 3 Pro Image に対応し無制限生成が可能に 圧倒的な制作精度向上と効率化でワンストップAI生成

    3. AI動画生成 DomoAI ドモエイアイ トーキングアバター機能強化で音声 感情 会話表現がより人間らしくリアルに マルチボイス 動画素材入力 スクリプト自動分割などアップデート

    4. 「銀魂」空知英秋デビュー作「だんでらいおん」がアニメ化決定 「Netflixにはデリカシーがない」とチクリ

    5. ReFa THE PERFUMEがハンドセラムに♡香りとうるおいを楽しむ新作が11月15日発売

    6. HitPaw Edimakor、AIによる【テキストから動画生成】機能を新搭載――構成もAIで自動化

    7. 犬猫用ペットチェア【Chocorin(チョコリン)】がクラウドファンディング達成率605%突破。その背景には飼い主の切実な願い

    8. 金沢市首都圏工芸アート市場開拓事業「ゲンザイチを計る Mapping KOGEI Today」展を東京・丸の内にて11月15日(日)より開催!

    9. 「ラヴ上等」出演、あっすん容疑者を逮捕 無許可風俗営業の疑い

    10. 竹内順子「サスケが味方。その時期がどれだけ尊いか」激アツ忍者漫画コラボ!新作アニメ『NARUTO-ナルト-×NINKŪ-忍空-』全4話決定PV公開

    1. AI動画生成 DomoAI ドモエイアイ Google最新AI Nano Banana Pro Gemini 3 Pro Image に対応し無制限生成が可能に 圧倒的な制作精度向上と効率化でワンストップAI生成

    2. GoogleがGemini 3発表 マルチモーダル強化で検索と開発基盤に同時展開

    3. 竹内順子「サスケが味方。その時期がどれだけ尊いか」激アツ忍者漫画コラボ!新作アニメ『NARUTO-ナルト-×NINKŪ-忍空-』全4話決定PV公開

    4. HitPaw Edimakor 4.6系列アップデート-Klingモーションコントロール&Vidu Q3 Proで AI 動画表現を進化

    5. まだ9月なのにインフル流行入り!? ワクチンは“打って終わり”じゃない、研究で分かったワクチンの効果(抗体応答)を左右する生活習慣とは

    6. 加工NG、ワンタップで即送信! Instagramが放つ新機能『Instants』。スクショ禁止&閲覧後消滅で、令和のSNSは「映え」から「ありのまま」へ完全シフト

    7. AI動画生成 DomoAI ドモエイアイ トーキングアバター機能強化で音声 感情 会話表現がより人間らしくリアルに マルチボイス 動画素材入力 スクリプト自動分割などアップデート

    8. YouTube、AI動画の開示機能を刷新 システム検知で自動ラベル付与

    9. インフルエンザは冬だけじゃない!異例の早期流行「オフピークインフルエンザ」に備える日常の対策とは

    10. HitPaw Edimakor、AIによる【テキストから動画生成】機能を新搭載――構成もAIで自動化

    game_banner
    おすすめ
    1. AI漫画生成プラットフォーム「MangaNow」がWebtoon制作に正式対応。新画像生成AIモデル「MangaNow Comic 1.0」も公開し、横型・縦型漫画の両方に対応。

    2. AI動画生成 DomoAI ドモエイアイ Google最新AI Nano Banana Pro Gemini 3 Pro Image に対応し無制限生成が可能に 圧倒的な制作精度向上と効率化でワンストップAI生成

    3. AI動画生成 DomoAI ドモエイアイ トーキングアバター機能強化で音声 感情 会話表現がより人間らしくリアルに マルチボイス 動画素材入力 スクリプト自動分割などアップデート

    4. 「銀魂」空知英秋デビュー作「だんでらいおん」がアニメ化決定 「Netflixにはデリカシーがない」とチクリ

    5. ReFa THE PERFUMEがハンドセラムに♡香りとうるおいを楽しむ新作が11月15日発売

    6. HitPaw Edimakor、AIによる【テキストから動画生成】機能を新搭載――構成もAIで自動化

    7. 犬猫用ペットチェア【Chocorin(チョコリン)】がクラウドファンディング達成率605%突破。その背景には飼い主の切実な願い

    8. 金沢市首都圏工芸アート市場開拓事業「ゲンザイチを計る Mapping KOGEI Today」展を東京・丸の内にて11月15日(日)より開催!

    9. 竹内順子「サスケが味方。その時期がどれだけ尊いか」激アツ忍者漫画コラボ!新作アニメ『NARUTO-ナルト-×NINKŪ-忍空-』全4話決定PV公開

    10. 「ラヴ上等」出演、あっすん容疑者を逮捕 無許可風俗営業の疑い

    Starthome

    StartHomeカテゴリー

    Copyright 2026
    ©KINGSOFT JAPAN INC. ALL RIGHTS RESERVED.