$30 off During Our Annual Pro Sale. View Details »
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
330
アバター配信アプリ『Vフレット』 でVRM 1.0対応をしてみる
nkjzm
1
260
VRMアバターでギターの弾き語りがしたい!! 『Vフレット』の開発で考えたこと
nkjzm
0
530
『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
430
Unityで使える汎用的な ハンバーガーメニューの実装 / UniHamburger
nkjzm
3
1.4k
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
AWS運用を効率化する!AWS Organizationsを軸にした一元管理の実践/nikkei-tech-talk-202512
nikkei_engineer_recruiting
0
170
100以上の新規コネクタ提供を可能にしたアーキテクチャ
ooyukioo
0
240
AWS re:Invent 2025~初参加の成果と学び~
kubomasataka
0
180
AI駆動開発の実践とその未来
eltociear
1
480
JEDAI認定プログラム JEDAI Order 2026 エントリーのご案内 / JEDAI Order 2026 Entry
databricksjapan
0
170
SQLだけでマイグレーションしたい!
makki_d
0
1.2k
ハッカソンから社内プロダクトへ AIエージェント「ko☆shi」開発で学んだ4つの重要要素
sonoda_mj
6
1.5k
Connection-based OAuthから学ぶOAuth for AI Agents
flatt_security
0
340
AIBuildersDay_track_A_iidaxs
iidaxs
4
1.1k
Strands Agents × インタリーブ思考 で変わるAIエージェント設計 / Strands Agents x Interleaved Thinking AI Agents
takanorig
4
1.9k
[Neurogica] 採用ポジション/ Recruitment Position
neurogica
1
110
LayerX QA Night#1
koyaman2
0
240
Featured
See All Featured
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
0
88
Discover your Explorer Soul
emna__ayadi
2
1k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
0
210
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
25
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
How to build a perfect <img>
jonoalderson
0
4.6k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
92
Art, The Web, and Tiny UX
lynnandtonic
304
21k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
0
180
Building an army of robots
kneath
306
46k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
Marketing to machines
jonoalderson
1
4.3k
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