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.6k
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
160
VRMアバターでギターの弾き語りがしたい!! 『Vフレット』の開発で考えたこと
nkjzm
0
380
『ALTDEUS: Beyond Chronos』で物語に没入できる操作感を実現するマルチプラットフォーム対応の道のり / The path to multi-platform support for immersive storytelling in ALTDEUS: Beyond Chronos
nkjzm
0
310
『ALTDEUS: Beyond Chronos』におけるマルチプラットフォーム向けコントローラーの対応 / Support for multi-platform controllers in "ALTDEUS: Beyond Chronos
nkjzm
0
390
Unityで使える汎用的な ハンバーガーメニューの実装 / UniHamburger
nkjzm
3
1.2k
20時間超の物語をVRで!『ALTDEUS: Beyond Chronos』の制作を支えた”Uranus”の制作過程と機能紹介 [CEDEC2021] / Introduction of ALTDEUS' VR ADV tool "Uranus", CEDEC2021
nkjzm
1
2.3k
withコロナに見るXR業界のイマ! [CEDEC2021] / XR NOW CEDEC2021
nkjzm
3
1.8k
VRプロダクト開発ラウンドテーブル2021
nkjzm
0
1.4k
Unityでチャットに使えるモバイルキーボードの実現
nkjzm
2
5.1k
Other Decks in Technology
See All in Technology
家電アプリ共通PF "Linova" のAPI利用とPostman活用事例ご紹介
yukiogawa
0
130
これからSREになる人と、これからもSREをやっていく人へ
masayoshi
6
4.1k
マルチモーダル理解と生成の統合 DeepSeek Janus, etc... / Multimodal Understanding and Generation Integration
hiroga
0
360
君も受託系GISエンジニアにならないか
sudataka
1
370
WAF に頼りすぎない AWS WAF 運用術 meguro sec #1
izzii
0
460
データ基盤の成長を加速させる:アイスタイルにおける挑戦と教訓
tsuda7
3
650
Larkご案内資料
customercloud
PRO
0
600
Ask! NIKKEI RAG検索技術の深層
hotchpotch
13
2.8k
急成長する企業で作った、エンジニアが輝ける制度/ 20250214 Rinto Ikenoue
shift_evolve
2
880
プロセス改善による品質向上事例
tomasagi
1
1.6k
Classmethod AI Talks(CATs) #15 司会進行スライド(2025.02.06) / classmethod-ai-talks-aka-cats_moderator-slides_vol15_2025-02-06
shinyaa31
0
170
開発スピードは上がっている…品質はどうする? スピードと品質を両立させるためのプロダクト開発の進め方とは #DevSumi #DevSumiB / Agile And Quality
nihonbuson
1
1.3k
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
50
11k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Code Reviewing Like a Champion
maltzj
521
39k
Code Review Best Practice
trishagee
66
17k
How GitHub (no longer) Works
holman
313
140k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
193
16k
Fireside Chat
paigeccino
34
3.2k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
175
51k
A designer walks into a library…
pauljervisheath
205
24k
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