Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
UE4でのSteamVRを使ったVRゲーム開発
Search
Fresnel
May 17, 2020
Programming
0
1.2k
UE4でのSteamVRを使ったVRゲーム開発
UE4でSteamVRを使う際のノウハウあれこれです。LTで発表した資料の公開版です。
Fresnel
May 17, 2020
Tweet
Share
More Decks by Fresnel
See All by Fresnel
Clusterの入り方
fresnel
0
120
Other Decks in Programming
See All in Programming
AI Agent 時代のソフトウェア開発を支える AWS Cloud Development Kit (CDK)
konokenj
6
1k
SwiftでMCPサーバーを作ろう!
giginet
PRO
2
210
Streamlitで実現できるようになったこと、実現してくれたこと
ayumu_yamaguchi
2
240
ご注文の差分はこちらですか? 〜 AWS CDK のいろいろな差分検出と安全なデプロイ
konokenj
4
720
バイブコーディング超えてバイブデプロイ〜CloudflareMCPで実現する、未来のアプリケーションデリバリー〜
azukiazusa1
2
740
AI Ramen Fight
yusukebe
0
120
[Codecon - 2025] Como não odiar seus testes
camilacampos
0
100
0から始めるモジュラーモノリス-クリーンなモノリスを目指して
sushi0120
0
210
「次に何を学べばいいか分からない」あなたへ──若手エンジニアのための学習地図
panda_program
3
680
CLI ツールを Go ライブラリ として再実装する理由 / Why reimplement a CLI tool as a Go library
ktr_0731
3
810
코딩 에이전트 체크리스트: Claude Code ver.
nacyot
0
1k
SQLアンチパターン第2版 データベースプログラミングで陥りがちな失敗とその対策 / Intro to SQL Antipatterns 2nd
twada
PRO
35
10k
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
Git: the NoSQL Database
bkeepers
PRO
431
65k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
How to Think Like a Performance Engineer
csswizardry
25
1.8k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
A Tale of Four Properties
chriscoyier
160
23k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Transcript
フレネルさん (@fres_nel)
Who are you? HN: フレネル で活動してます (情報系M2) 最近はほとんどNeosVRにいます VRChatのワールドとか Neosの小物・ワールド作ってます
ホントはプログラマーです 最近InDesignでDTPとかAeで動画とかの雑用ばっかだけど… ガチで職が見つからない ヤバい VR系の研究・開発で働きたい…‼ SteamVR with UE4 2 1-1 ↑最近よく使ってる有坂みとさんのメープルちゃん! かわいいからみんなも買おうね
Who are you? SteamVR with UE4 3 1-1 最近作ったヤツ
(NeosVR Essentials Only, No Blender!)
Introduction みなさん… UE4、使ってますか? SteamVR with UE4 4 1-2
Introduction UE5が発表されました! PS5でのデモ映像が公開されました 数十億ポリゴンを直接扱える「Nanite」 新しい動的ライティングの「Lumen」
UE4→UE5への前方互換性 今、Unreal Engineがアツイ‼ SteamVR with UE4 5 1-2
Introduction 最近は多くのAAAタイトルで採用されています ACE COMBAT 7, Dragon Quest XI, Fortniteなどなど…
UE4に乗り換える積極的な理由って? ノードベースのビジュアルスクリプティング プログラマ:挙動が可視化されるので激烈にデバッグがしやすくてうれしい デザイナー:プログラマに頼らなくても簡単なスクリプトを自分でテストできる C++によるプログラミングももちろん可能 UObjectを起点としたオブジェクト指向 運営(Epic)がとってもユーザフレンドリー サブスクとかはなく、一定売上額まで全機能が無料で使える!! SteamVR with UE4 6 1-2
Introduction 宣伝はいいけどじゃあVRはどうなんですか 超使いやすい!!!! ということで… 今回はUE4でSteamVRを使う際のノウハウあれこれの共有 VR周りは私も最近触り始めたばっかりなので… もし間違ってるところあったらご指摘お願いします! SteamVR with UE4
7 1-2
Introduction おことわり UE4ガチ初心者向けに作ってます はじめてUE4を触って、VR開発するぞ!って人向けです。 慣れている方にはたぶんめっちゃ冗長なスライドです。お許しを… UE4.25を想定しています 後述のインプット周りが割と最近のアプデのものです ご注意下さい SteamVR with
UE4 8 1-2
とりあえず動かす • 前準備 • カメラをHMDに追従 SteamVR with UE4 9 1
前準備 プロジェクトの作成 SteamVR with UE4 10 2-1
前準備 今回はゼロから作るのでBlankを選択 「バーチャルリアリティ」テンプレートは実装例があるので、こちらも見てみると面白いかもしれません SteamVR with UE4 11 2-1
前準備 下図のような設定にします SteamVR with UE4 12 2-1
前準備 起動! SteamVR with UE4 13 2-1
前準備 編集→プラグイン SteamVRプラグインが有効になっていることを確認 SteamVR with UE4 14 2-1
前準備 ファイル → 新規レベル SteamVR with UE4 15 2-1
前準備 Default SteamVR with UE4 16 2-1
前準備 ファイル → 現在のレベルを保存 SteamVR with UE4 17 2-1
HMDを動かしてみよう 何はともあれ、HMDに合わせてカメラを動かしたい! 秒で出来ます。 SteamVR with UE4 18 2-2
HMDを動かしてみよう まずカメラのオブジェクトを作ります コンテンツブラウザを右クリック ブループリントクラスを選択 SteamVR with UE4
19 2-2
HMDを動かしてみよう Pawn SteamVR with UE4 20 2-2
HMDを動かしてみよう 適当に命名してダブルクリックして開きます SteamVR with UE4 21 2-2
HMDを動かしてみよう ブループリントとは? UE4の一番の目玉機能 ノードベースのビジュアルスクリプティング VRChatを触っている方には超絶高機能なUdonというと分かりやすい かも
関数の定義なども可能 ノードベースでも、本格的なOOP開発もできる SteamVR with UE4 22 2-2
HMDを動かしてみよう SteamVR with UE4 23 2-2 開くとこんな画面が出てきます Unityでいうところの、Prefabのようなイメージです
HMDを動かしてみよう コンポーネントを追加 Cameraを追加 SteamVR with UE4 24 2-2
HMDを動かしてみよう イベントグラフを開く BeginPlayから線を伸ばしてSet Tracking Originを検索 OriginはFloor Level
SteamVR with UE4 25 2-2
HMDを動かしてみよう メイン画面に戻ってドラッグ&ドロップでLevel上に配置 座標は0,0,0に SteamVR with UE4 26 2-2
HMDを動かしてみよう Auto Possess PlayerをPlayer 0に (本来はGameModeをちゃんと設定したほうがいいと思います) SteamVR with UE4
27 2-2
HMDを動かしてみよう VRプレビューモードで起動 SteamVR with UE4 28 2-2
HMDを動かしてみよう Good. SteamVR with UE4 29 2-2
HMDを動かしてみよう UE4VR speedrun any% 30sec 完走した感想ですがとても簡単でした ホントにこれだけ? これだけですよ。 これがUE4のパワーだ! SteamVR
with UE4 30 2-2
コントローラ • コントローラを表示してみよう • SteamVR Inputのテスト UE4 with SteamVR 31
2
コントローラを動かす HMDを動かしたらやっぱり次はコントローラだよね 動かしてみましょう! UE4 with SteamVR 32 2-1
コントローラを動かす さっきのHMDCameraを再び開く コンポーネントの追加→MotionControllerを二つ Left/Rightと名前を変えておきます UE4 with SteamVR
33 2-1
コントローラを動かす Leftをとりあえず選択 右の詳細パネルのここらへんで設定ができます UE4 with SteamVR 34 2-1
コントローラを動かす ビジュアリゼーション コントローラのモデルの表示を設定できます Display Device Modelにチェックを入れる
Display Model SourceをSteamVRに Rightのコンポーネントも同様に設定しましょう UE4 with SteamVR 35 2-1
コントローラを動かす モーションコントローラー コントローラ自体の設定です LeftのコンポーネントはMotion SourceをLeftに RightのコンポーネントはMotion
SourceをRightに! UE4 with SteamVR 36 2-1
コントローラを動かす VRプレビューでプレイすると? UE4 with SteamVR 37 2-1
コントローラを動かす もしかしたらLIV入れてる人はこうなっちゃうかも… UE4 with SteamVR 38 2-1
コントローラを動かす 設定の「アドオン管理」からLIVをオフにすれば治ります UE4 with SteamVR 39 2-1
SteamVR Input Systemの設定 SteamVR Plugin 2.0以降にはInputに関する仕組みがある この画面なら見たことあるかも? UE4
with SteamVR 40 2-2
SteamVR Input System 簡単にまとめると? UE4 with SteamVR 41 2-2
Action Manifest Valve Index Oculus Rift S VIVE Pro … ゲームで使用される Interact, Cancelといったボタンや スティックのXY軸といった アクションの一覧リスト
SteamVR Input System 簡単にまとめると? UE4 with SteamVR 42 2-2
Action Manifest Valve Index Oculus Rift S VIVE Pro … Action Manifestのアクションに対して 対応するボタンを記録した コントローラバインディング
SteamVR Input System 中身はJSONで書かれている ProjectRoot/Config/SteamVRBidings/*.json UE4 with SteamVR
43 2-2 steamvr_manifest.json knuckles.json
SteamVR Input System でも自分でJSONなんか書きたくないよ!! UE4からどうやって触ればいい? プロジェクトのインプット設定をするだけ
勝手にSteamVR Pluginがそこから自動生成してくれる! 試しにL/Rトリガーを割り当ててみよう! UE4 with SteamVR 44 2-2
SteamVR Input System 編集→プロジェクト設定 左のリストから「インプット」を選択 UE4 with SteamVR
45 2-2
SteamVR Input System バインディングの設定 ここでの設定がSteamVRのInputに対応します UE4 with SteamVR
46 2-2
SteamVR Input System アクションマッピングの + を押して追加 名前はとりあえずTriggerとしておきます
自分のVR機器に対応するトリガーのボタンを設定してください UE4 with SteamVR 47 2-2
SteamVR Input System 左のリストのプラグインからSteamVRを選択 UE4 with SteamVR 48 2-2
SteamVR Input System 3つのボタンをクリックしてJSONを生成・リロードします アクションマニフェストを再生成 コントローラバインディングを再生成
アクションマニフェストをリロード UE4 with SteamVR 49 2-2
SteamVR Input System 「SteamVRバインディングダッシュボードを起動」を押して 公式バインドが生成されているので、表示ボタンを押すと 設定が反映されていることが確認できます UE4 with SteamVR 50
2-2
SteamVR Input System 実際にトリガーが反応するかテスト さっきのブループリントを開いて、イベントグラフを表示 UE4 with SteamVR
51 2-2
SteamVR Input System 何もない所を右クリックすると新規ノードが出せるので… Triggerと検索してアクションイベントのTriggerを追加 UE4 with SteamVR
52 2-2
SteamVR Input System UE4のインプットで設定したモノはそのままノードが出せます ボタンを押したときの処理はこれが使いやすいです UE4 with SteamVR
53 2-2
SteamVR Input System Pressedから引っ張ってPrint Stringを出します デバッグ用の画面表示です UE4 with
SteamVR 54 2-2
SteamVR Input System HMDを被らずにトリガーを押してみると… 画面の左上にデバッグ文字列が表示されます! UE4 with SteamVR
55 2-2
その他いろいろTips • SteamVR Inputの設定をツールバーに表示 • 二軸への対応 • Haptic Feedback •
Skeleton Inputの取得 • デバイスIDからのデータ取得 UE4 with SteamVR 56 3
SteamVRの設定をツールバーに表示 これ、いちいち開くのめんどくさいですよね UE4 with SteamVR 57 3-1
SteamVRの設定をツールバーに表示 チェックを入れておくと、ツールバーに表示されます UE4 with SteamVR 58 3-1
二軸への対応 少し厄介なのが、X/Yの2D値を持つスティックの扱いです SteamVR Vector1, 2, 3と3次元までの入力に対応
UE4のインプット 軸マッピングは1次元入力のみ 対応させる方法があります UE4 with SteamVR 59 3-2
二軸への対応 hoge_X, hoge_Yという名前で軸マッピングを作成 これで自動でSteamVRのVector2に変換してくれます ちょっとややこしい仕様ですが頻繁に使うので覚えておくとうれしい UE4 with
SteamVR 60 3-2
Haptic Feedback コントローラを振動させたい場合… Play Steam VR Haptic Feedback関数を呼び出す
下図の例:トリガーを押したときにコントローラを振動 UE4 with SteamVR 61 3-3
Skeleton Inputの取得 SteamVRには指の曲がり具合を取得できるSkeleton Inputが APIに用意されています https://valvesoftware.github.io/steamvr_unity_plugin/articles/Skeleton-Input.html 記事がUnity版しかないのですが、仕組みとしてはSteamVR自体のものなので同じです
指が取れないコントローラではボタンなどの押し具合からの推 測値、指が取れるIndexのようなコントローラでは実測値(?) これによりコントローラの種類に依存せず、キャラクターの指 を動かすことができます UE4 with SteamVR 62 3-4
Skeleton Inputの取得 UE4ではGet Finger Curls and Splaysで呼び出せます UE4 with
SteamVR 63 3-4
デバイスIDからのデータ取得 トラッカーなど非コントローラの座標はどうやって? デバイスのIDを取得 IDに対応するデバイスのPosition(位置), Orientation(向き)を取得 UE4 with
SteamVR 64 3-5 トラッカー所持してないのでテストできていませんが、恐らくこれで動くはず…?
まとめ UE4でのVR開発、こわくないよ SteamVRもUE4もえらい! UE5も発表されて今大盛り上がりのUE界隈 互換性アリとのことなので、今UE4で開発始めてUE5に持っていくこ ともできるよ
みんなもレッツUE4! UE4 with SteamVR 65
参考文献 SteamVR 用 スタンディング式カメラの設定方法 | Unreal Engine Documentation https://docs.unrealengine.com/ja/Platforms/VR/SteamVR/HowTo/StandingCamera/index.html モーション
コントローラー コンポーネントの設定 | Unreal Engine Documentation https://docs.unrealengine.com/ja/Platforms/VR/DevelopVR/MotionController/index.html Steam VR Input System(OpenVR Action Input)についてのメモ – Qiita https://qiita.com/gpsnmeajp/items/e423c699dde7aecb25cc SteamVR Input · ValveSoftware/openvr Wiki https://github.com/ValveSoftware/openvr/wiki/SteamVR-Input SteamVR Input System の設定方法 | Unreal Engine Documentation https://docs.unrealengine.com/ja/Platforms/VR/SteamVR/HowTo/SteamVRInput/index.html Skeleton Input | SteamVR Unity Plugin https://valvesoftware.github.io/steamvr_unity_plugin/articles/Skeleton-Input.html UE4 with SteamVR 66
Thank you for listening!