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
Nakaji Kohki
June 23, 2019
Technology
8
4.8k
OculusQuest完全に理解した。 / Oculus Quest Completely Understood.
xR Tech Tokyo #16 @ DMM.comでの登壇資料です。
https://vrtokyo.connpass.com/event/129570/
Nakaji Kohki
June 23, 2019
Tweet
Share
More Decks by Nakaji Kohki
See All by Nakaji Kohki
アバター配信アプリ『Vフレット』 でVRM 1.0対応をしてみる
nkjzm
1
220
VRMアバターでギターの弾き語りがしたい!! 『Vフレット』の開発で考えたこと
nkjzm
0
480
『ALTDEUS: Beyond Chronos』で物語に没入できる操作感を実現するマルチプラットフォーム対応の道のり / The path to multi-platform support for immersive storytelling in ALTDEUS: Beyond Chronos
nkjzm
0
340
『ALTDEUS: Beyond Chronos』におけるマルチプラットフォーム向けコントローラーの対応 / Support for multi-platform controllers in "ALTDEUS: Beyond Chronos
nkjzm
0
420
Unityで使える汎用的な ハンバーガーメニューの実装 / UniHamburger
nkjzm
3
1.3k
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
Unityでチャットに使えるモバイルキーボードの実現
nkjzm
2
5.5k
Other Decks in Technology
See All in Technology
会社にデータエンジニアがいることでできるようになること
10xinc
9
1.6k
MySQL HeatWave:サービス概要のご紹介
oracle4engineer
PRO
4
1.7k
我々は雰囲気で仕事をしている / How can we do vibe coding as well
naospon
2
220
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual Localization
takmin
0
430
Postman MCP 関連機能アップデート / Postman MCP feature updates
yokawasa
0
150
実践アプリケーション設計 ③ドメイン駆動設計
recruitengineers
PRO
3
210
[CV勉強会@関東 CVPR2025 読み会] MegaSaM: Accurate, Fast, and Robust Structure and Motion from Casual Dynamic Videos (Li+, CVPR2025)
abemii
0
190
Goss: New Production-Ready Go Binding for Faiss #coefl_go_jp
bengo4com
0
1.1k
「守る」から「進化させる」セキュリティへ ~AWS re:Inforce 2025参加報告~ / AWS re:Inforce 2025 Participation Report
yuj1osm
1
130
Figma + Storybook + PlaywrightのMCPを使ったフロントエンド開発
yug1224
9
2.7k
Yahoo!広告ビジネス基盤におけるバックエンド開発
lycorptech_jp
PRO
1
280
モダンフロントエンド 開発研修
recruitengineers
PRO
3
360
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
GraphQLとの向き合い方2022年版
quramy
49
14k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.8k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
A Modern Web Designer's Workflow
chriscoyier
695
190k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.8k
Designing Experiences People Love
moore
142
24k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
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