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
OculusQuest完全に理解した。 / Oculus Quest Completely U...
Search
nkjzm
June 23, 2019
Technology
8
4.9k
OculusQuest完全に理解した。 / Oculus Quest Completely Understood.
xR Tech Tokyo #16 @ DMM.comでの登壇資料です。
https://vrtokyo.connpass.com/event/129570/
nkjzm
June 23, 2019
Tweet
Share
More Decks by nkjzm
See All by nkjzm
個人iOSアプリ開発で使っているClaude Code Hooksの紹介
nkjzm
0
430
アバター配信アプリ『Vフレット』 でVRM 1.0対応をしてみる
nkjzm
1
280
VRMアバターでギターの弾き語りがしたい!! 『Vフレット』の開発で考えたこと
nkjzm
0
540
『ALTDEUS: Beyond Chronos』で物語に没入できる操作感を実現するマルチプラットフォーム対応の道のり / The path to multi-platform support for immersive storytelling in ALTDEUS: Beyond Chronos
nkjzm
0
360
『ALTDEUS: Beyond Chronos』におけるマルチプラットフォーム向けコントローラーの対応 / Support for multi-platform controllers in "ALTDEUS: Beyond Chronos
nkjzm
0
440
Unityで使える汎用的な ハンバーガーメニューの実装 / UniHamburger
nkjzm
3
1.5k
20時間超の物語をVRで!『ALTDEUS: Beyond Chronos』の制作を支えた”Uranus”の制作過程と機能紹介 [CEDEC2021] / Introduction of ALTDEUS' VR ADV tool "Uranus", CEDEC2021
nkjzm
1
2.5k
withコロナに見るXR業界のイマ! [CEDEC2021] / XR NOW CEDEC2021
nkjzm
3
1.8k
VRプロダクト開発ラウンドテーブル2021
nkjzm
0
1.5k
Other Decks in Technology
See All in Technology
小さく始めるBCP ― 多プロダクト環境で始める最初の一歩
kekke_n
1
470
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
2
320
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
270
クレジットカード決済基盤を支えるSRE - 厳格な監査とSRE運用の両立 (SRE Kaigi 2026)
capytan
6
2.8k
茨城の思い出を振り返る ~CDKのセキュリティを添えて~ / 20260201 Mitsutoshi Matsuo
shift_evolve
PRO
1
360
Bill One 開発エンジニア 紹介資料
sansan33
PRO
5
17k
StrandsとNeptuneを使ってナレッジグラフを構築する
yakumo
1
120
Agent Skils
dip_tech
PRO
0
120
OWASP Top 10:2025 リリースと 少しの日本語化にまつわる裏話
okdt
PRO
3
830
Red Hat OpenStack Services on OpenShift
tamemiya
0
120
usermode linux without MMU - fosdem2026 kernel devroom
thehajime
0
240
20260204_Midosuji_Tech
takuyay0ne
1
160
Featured
See All Featured
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
117
110k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
Navigating Weather and Climate Data
rabernat
0
110
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
380
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
98
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
78
How STYLIGHT went responsive
nonsquared
100
6k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.9k
Claude Code のすすめ
schroneko
67
210k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3k
The Invisible Side of Design
smashingmag
302
51k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Transcript
Confidential - Do Not Share !1 OculusQuest શʹཧղͨ͠ xR Tech
Tokyo #16 @DMM.com ɹɹpresented by ɹ@nkjzm
!2 Who is @nkjzm ? Nakaji Kohki / ϦϦΧͪΌΜ Mercari,
Inc. R4D XR Engineer ຊόʔνϟϧϦΞϦςΟֶձೝఆ VRٕज़ऀ ΞϛϡʔζϝϯτϝσΟΞ૯߹ֶӃ ήʔϜϓϩάϥϚʔֶՊ VRઐ߈ ߨࢣ ஶॻ: ٕज़ධࣾʰVRΤϯδχΞཆಡຊʱڞஶ ࡞: ʰCrevasseʱʰࢸۙڑΨʔϧVRʱ #xRStreetStyle #xRfm #ϞʔγϣϯΩϟετ Twitter: @nkjzm
!3 #xRStreetStyle
!4 ൃදͷత OculusQuestͷ ։ൃऀΛ૿͢
!5 ݕূ࣌ͷόʔδϣϯ • Unity 2018.3.14f1 • Oculus Integration for Unity
- 1.37 • Oculus Utilities Plugin 1.32.0 • Mac OSX 10.14.4ʢ18E226ʣ • Windows 10 Home (1809)
!6 ຊͷൃද༰ 01 VRλϫʔσΟϑΣϯε 02 OculusQuest։ൃͷجຊ 03 OculusQuestͷ։ൃTIPS 04 OculusQuestશཧղʹཧղͨ͠
!7 VRλϫʔσΟϑΣϯε
!8 ຊͷൃද༰ 01 VRλϫʔσΟϑΣϯε 02 OculusQuest։ൃͷجຊ 03 OculusQuestͷ։ൃTIPS 04 OculusQuestશཧղʹཧղͨ͠
!9 OculusQuest։ൃͷجຊ ͜Ε͔Β։ൃΛ͡ΊΔਓ
!10 - OculusQuestຊମ - 5ສԁ~ - Android ϕʔεͷVRHMD - PC
- Mac / Win - Unity - 2017.4 LTS - 2018.4 LTS - 2019.1.2f1 - Android SDK - Oculus Integration ։ൃʹඞཁͳͷ ಋೖ͜ͷهࣄ͕͔Γ͍͢Ͱ͢ʂ UnityʴOculus Quest ։ൃϝϞ - ϑϨʔϜγϯηγε https://framesynthesis.jp/tech/unity/oculusquest/
!11 1. Unity্Ͱ։ൃ 2. AndroidΞϓϦ(*.apk)ͱͯ͠Ϗϧυ 3. QuestΛ༗ઢଓ(type-c) 4. adbίϚϯυͰΠϯετʔϧ
5. Quest্Ͱىಈ ϥΠϒϥϦ>ෆ໌ͳΞϓϦΑΓ ։ൃ͔Β࣮ػىಈ·ͰͷྲྀΕ $ adb install -r hoge.apk
!12 QuestͷήʔϜา͖ճΕΔͷͰɺϏϧυͷʹ༗ઢଓ͢Δͷ͕໘ʹͳΔ ↓↓↓ ϦϞʔτͰͷΠϯετʔϧ͕Մೳ tcpϞʔυͰϩʔΧϧωοτϫʔΫܦ༝ͰadbίϚϯυ͕ଧͯΔ έʔεελσΟᶃ ༗ઢଓ͕໘͍͘͞ʂ $ adb
tcpip 5555 $ adb connect 192.168.0.0:5555
!13 VRͰͷݟ͑ํಈ࡞Λ֬ೝ͢ΔͨͼʹϏϧυ͢Δͷ͕໘͍͘͞ ↓↓↓ Rift / Vive / ALVRͰϓϨϏϡʔ͕Մೳʂ - OculusͷSDKશOculusڞ௨ͳͷͰɺQuestͷػೳRiftͰಈ͘
- ΫϩεϓϥοτϑΥʔϜରԠͳͷͰViveWinMRͰಈ͘(ޙड़) - ALVRͰετϦʔϛϯάϓϨϏϡʔͱ͍͏ख έʔεελσΟᶄ ։ൃதʹVRϓϨϏϡʔ͍ͨ͠ʂ
!14 - ALVRͰετϦʔϛϯάϓϨϏϡʔͱ͍͏ख - PCVR(SteamVR)ΛϦϞʔτͰϓϨΠ͢Δ͜ͱͷͰ͖ΔOSS - SteamVRͷήʔϜΛOculus Go/QuestͰϓϨΠ͢Δ͜ͱՄೳ - ϦϙδτϦ
https://github.com/polygraphene/ALVR/blob/master/README-ja.md έʔεελσΟᶄ ։ൃதʹVRϓϨϏϡʔ͍ͨ͠ʂ
!15 ຊͷൃද༰ 01 VRλϫʔσΟϑΣϯε 02 OculusQuest։ൃͷجຊ 03 OculusQuestͷ։ൃTIPS 04 OculusQuestશཧղʹཧղͨ͠
!16 OculusQuestͷ։ൃTIPS ࣮ࡍʹ։ൃͯ͠Έ͔ͯͬͨݟ
!17 VRͰΓ͍ͨجຊతͳػೳ͕ ͯ͢ἧ͍ͬͯΔঢ়ଶ - खͰϞϊΛ௫Ή - ςϨϙʔτҠಈ - UIΛૢ࡞͢Δ(uGUI) σϝϦοτ:
Ҡ২େมʹ 1.31͔Β ΫϩεϓϥοτϑΥʔϜʹରԠ Oculus Integration͕ศརʂʂ OculusͷSampleFrameworkશγʔϯΛQuest࣮ػͰಈ͔ͯ͠Έͨ https://qiita.com/nkjzm/items/58a696f66c4989e5a35c
!18 - OVR Grabbable - ௫·ΕΔΫϥε - OVR Grabber -
௫ΉΫϥε खͰϞϊΛ௫Ή
!19 - OVR Grabbable (ӈਤܧঝͨ͠Ϋϥε) - Snapػೳ: ௫ΉॴΛఆٛՄೳ - Snap
Offsetʹҙ - GameObjectͷWorld࠲ඪܥ Ͱͷݪͱͷڑ = Offset - ͔ͭͬ͑ɾɾɾ - nullͩͱݪѻ͍ʹͳΔͷͰ ϓϨϋϒࣗମͰҐஔ߹Θͤ खͰϞϊΛ௫Ή
!20 - 2छྨͷΩʔόΠϯυ͕ଘࡏ - Combined - OVRInput.Get(OVRInput.But ton.PrimaryIndexTrigger); - OVRInput.Get(OVRInput.But
ton.SecondaryIndexTrigger); - Individual - OVRInput.Get(Button.PrimaryIndexTr igger, Controller.LTouch); - OVRInput.Get(Button.PrimaryIndexTr igger, Controller.RTouch); Combined Individual Touchίϯτϩʔϥʔͷࢥ
Touchίϯτϩʔϥʔͷࢥ !21 - Individual - OVRInput.Get(Button.PrimaryIndexTrigger, Controller.LTouch); - OVRInput.Get(Button.PrimaryIndexTrigger, Controller.RTouch);
- ୈೋҾΛ variableʹ͢Δ͜ͱ Ͱɺࠨӈͷ۠ผ͕ͳ͘ͳΔ → ϞϊࣗମʹτϦΨʔΛ࣋ͨͤΔ - OVRInputશൠ͕ଟͦ͏͍͏ࢥ - Hapticsػೳ ͳͲ Individual
Oculusͷ Hapticsػೳ !22 - OVRHaptics (deprecated) - OVRInput Haptics -
Haptics- Oculus Developers https://developer.oculus.com/documentation/unity/latest/concepts/ unity-haptics/ // Start OVRInput.SetControllerVibration ( 1, 1, OVRInput.Controller.RTouch); // End OVRInput.SetControllerVibration ( 0, 0, OVRInput.Controller.RTouch); hapticsClip = new OVRHapticsClip(audioClip); OVRHaptics.LeftChannel.Mix(hapticsClip)
Touchίϯτϩʔϥʔͷࢥ !23 - Individual - OVRInput.Get(Button.PrimaryIndexTrigger, Controller.LTouch); - OVRInput.Get(Button.PrimaryIndexTrigger, Controller.RTouch);
- ୈೋҾΛ variableʹ͢Δ͜ͱ Ͱɺࠨӈͷ۠ผ͕ͳ͘ͳΔ → ϞϊࣗମʹτϦΨʔΛ࣋ͨͤΔ - OVRInputશൠ͕ଟͦ͏͍͏ࢥ - Hapticsػೳ ͳͲ Individual
ϞϊࣗମʹτϦΨʔΛ࣋ͨͤΔ ॐͷ࣮ !24 public class Gun : OVRGrabbable, IGrabbable {
OVRInput.Controller currentController; public void GrabBegin(OVRInput.Controller controller) { currentController = controller; } void Update() { if (isGrabbed && OVRInput.GetDown(OVRInput.Button.PrimaryIndexTrigger, currentController)) { // implement } } }
ϞϊࣗମʹτϦΨʔΛ࣋ͨͤΔ ॐͷ࣮ !25 public interface IGrabbable { void GrabBegin(OVRInput.Controller controller);
} public class CustomOVRGrabbable : OVRGrabber { protected override void GrabBegin() { base.GrabBegin(); if (m_grabbedObj is IGrabbable) { ((IGrabbable)m_grabbedObj).GrabBegin(m_controller); } } }
!26 VRͰΓ͍ͨجຊతͳػೳ͕ ͯ͢ἧ͍ͬͯΔঢ়ଶ - खͰϞϊΛ௫Ή - ςϨϙʔτҠಈ - UIΛૢ࡞͢Δ(uGUI) σϝϦοτ:
Ҡ২େมʹ 1.31͔Β ΫϩεϓϥοτϑΥʔϜʹରԠ Oculus Integration͕ศརʂʂ OculusͷSampleFrameworkશγʔϯΛQuest࣮ػͰಈ͔ͯ͠Έͨ https://qiita.com/nkjzm/items/58a696f66c4989e5a35c
!27 Oculus IntegrationΞϓϦ͕ (΄΅)ͦͷ··Vive ProͰಈ͍ͨʂ །ҰඞཁͳରԠ • Open VRͷΠϯϙʔτ •
ίϯτϩʔϥʔରԠ ΫϩεϓϥοτϑΥʔϜʹରԠ
!28 • Open VRͷΠϯϙʔτ • [Player Settings]-[XR Settings]-[Virtual Reality SDKs]Ͱʮ+ʯΛԡͯ͠OpenVRΛՃ
• [Window]-[Package Manager]ΑΓ[OpenVR (Desktop)]ΛInstall (όʔδϣϯ1.0.5) • ίϯτϩʔϥʔରԠ ΫϩεϓϥοτϑΥʔϜʹରԠ
!29 • Open VRͷΠϯϙʔτ • ίϯτϩʔϥʔରԠ • ֓ͶײతͳରԠ͚ • Touch,
AxisXDʹରԠ • ཧతʹରԠ͍ͯ͠ͳ͍Ωʔ • A,X,Start,Back • ΫϩεϓϥοτϑΥʔϜରԠ͢Δ ͳΒࣄલͷఆΛ͓͢͢Ί ΫϩεϓϥοτϑΥʔϜʹରԠ Oculus IntegrationΛ༻͍ͨVive։ൃ࣌ͷίϯτϩʔϥʔରԠʹ͍ͭͯ - Qiita https://qiita.com/nkjzm/items/45112ef07f7d946e3521
!30 Ҡ২ʹ͍ͭͯ Standalone VR Meetup #02 - connpass https://standalone-vr.connpass.com/event/132070/ Standalone
VR MeetupͰฉ͍ͨײ͡ ૯ͯ͡؆୯ͦ͏…ʂ • OculusϓϥοτϑΥʔϜܥ • ౦ژΫϩϊε • EXOS_DEMO • SteamVR • ϦϦʔεࡁΈSteamVRήʔϜΛQuestʹҠ২ͨ͠ https://qiita.com/GONBEEE_project/items/ 590405a1f514559712c5
!31 τΡʔϯௐͷ3DϞσϧ͕ CC-BY3.0ͰखʹೖΔʂ - Poly Toolkit͕ศར https://developers.google.com/poly/ develop/toolkit-unity - Object2TerrainͰ
ܰྔίϦδϣϯΛੜ Google PolyͰ؆୯Ϩϕϧ੍࡞ʂ
!32 Google PolyͰ؆୯Ϩϕϧ੍࡞ʂ ΦϒδΣΫτʹ߹ΘͤͯTerrainΛ࡞ΔʲUnityʳʲΤσΟλ֦ுʳ http://kan-kikuchi.hatenablog.com/entry/ObjectToTerrain - Poly Toolkit͕ศར - Object2TerrainͰ
ܰྔίϦδϣϯΛੜ
!33 ϩέʔγϣϯϕʔεVRϨϕϧͷମݧ͕ࣗͰؾܰʹग़དྷΔ - 5ສԁͷσόΠεͰา͖ճΕΔͷ࠷ߴ͗͢Δ - ൣғ֎ʹߦ͚ͳ͍͜ͱ͕͔Δݟͨ ͩͱҰؾʹ͕Γ͕૿͢ ϧʔϜεέʔϧָ͕͍͠ʂʂʂ
!34 ൣғ֎ʹߦ͚ͳ͍͜ͱ͕͔Δݟͨ
!35 ຊͷൃද༰ 01 VRλϫʔσΟϑΣϯε 02 OculusQuest։ൃͷجຊ 03 OculusQuestͷ։ൃTIPS 04 OculusQuestશཧղʹཧղͨ͠
!36 OculusQuestશཧղʹཧղͨ͠ Ҿ༻ݩ: https://twitter.com/kaitendaentai/status/1052689241744896001
!37 OculusQuestશཧղʹཧղͨ͠ Ҿ༻ݩ: https://twitter.com/kaitendaentai/status/1052689241744896001 ೳྗͷ͍ਓ͕ ࣗΒͷ༰࢟ൃݴɾߦಈͳͲʹ͍ͭͯɺ ࣮ࡍΑΓߴ͍ධՁΛߦͬͯ͠·͏ ༏ӽͷࡨ֮ΛੜΈग़͢ೝόΠΞε Ҿ༻ݩ: μχϯάʹΫϧʔΨʔޮՌ
- Wikipedia
!38 OculusQuestશཧղʹཧղͨ͠ Ҿ༻ݩ: https://twitter.com/kaitendaentai/status/1052689241744896001
!39 OculusQuestશཧղʹཧղͨ͠ Ҿ༻ݩ: https://twitter.com/kaitendaentai/status/1052689241744896001 ͜Ε͔Βٸܹʹࣗ৴Λࣦ͍ͬͯ͘༧ఆͳͷͰɺ Twitterͱ͔Qiitaͱ͔ϒϩάͱ͔Ͱݟڞ༗ͭͭ͠ɺ ΈΜͳͰΓ্͍͖͛ͯ·͠ΐ͏
!40 ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠—
!41
!42