Upload
satoshi-noda
View
306
Download
0
Embed Size (px)
Citation preview
DaydreamではじめるVR
GDG神戸 野田 悟志
Android Nougat(7.0)勉強会
2015年GDG神戸開催イベント
● 扱った言語/技術
Go、Angular、Android、AndroidWear、WebAudioApi、AndroidTV、Cardboard、Polymer、Firebase、TensorFlow
● イベント
I/O Extended、I/O報告会、忘年会
合計15回
2016年開催/開催予定02/28 GDG神戸 機械学習勉強会 [AlphaGoの論文を読む会]03/12 Unity入門勉強会(PG向け)04/16 Angular 2ハンズオン勉強会
04/24 VRに興味ある人のためのUnity入門講座【関西】
04/30 Cloud Vision Api & Tensorflow勉強会
05/18-19 Google I/O Extended 2016 ライブストリーミング in Kobe05/28 Cardboard勉強会
06/11 Google I/O Extended 報告会 2016 in 関西
06/25-26 VRアプリ開発勉強会
07/30 Progressive Web Appsハンズオン勉強会
09/10 Android Nougat(7.0)勉強会
11/27 Devfest Kansai 2016
自己紹介
GDG神戸 オーガナイザー (Co-Manager)
VR歴2015年6月頃にCardboard、7月にOculusRift DK2を入手
Unity 5使って個人開発
2016年はVR勉強会いっぱいやってる
6/11にCV1来た!
10/4(Daydreamリリース発表?)と10/13(PSVR発売!)が待ち遠しい
→ここ最近、VR廃人一歩手前に来てる気がするけど、まだいける
Magic The ShouterOculusGameJam(VRGameJam)2015 大阪会場
2015/11/28-29
ディフェンス系ゲーム。迫ってくる
敵を、魔法を唱えて迎え撃つ。
OculusRift用ゲーム。
https://github.com/ShingoKobayashi/M
agicTheShouterProject/releases/tag/0.2
LOOK BACK WESTERNCardboardハッカソン
Unityクリエーターズ/GDG京都 2015/12/12-13
西部劇風早打ちゲーム。西部劇のガンマンのよ
うに、お互いに背を向けあい、3つ数えたら振り
返って撃つ。
Cardboard用ゲーム。
https://github.com/scarviz/WesternHatsGunman/releases
/tag/0.1.0
今日話すこと
● VR酔いについて
● Daydreamの必要性について考える
● VRコンテンツ用にステレオカメラ化する
● VRコンテンツにコントローラを使ってみる
VR酔いについて
VR酔いとは
視覚情報は自分が動いているように見えてい
る(感じている)が、実際に体は動いていないた
めに、情報の不一致から起こる不快な現象。
特に移動時の加減速で発生しやすい。
車酔いに似ている。
一度酔うと、そのコンテンツや最悪VRは二度
としたくなくなる
VR酔い対策
対策として、移動手段をワープ移動(加減速が0)にしたり、
視点を3人称視点にしたりする。
下記記事が参考になる。
MoguraVR「VR酔い防止に向けて。これまで登場したVRでの酔わな
い移動方法のアイデアまとめ。」
http://www.moguravr.com/against-vr-nausea/
Crystal Rift1人称視点(FPS)の3DダンジョンRPGhttp://www.crystalrift.com/
酔わないのはどっち?
A. 自然にスムーズに進む方法 B. 従来のゲームと同じように
1マス毎に進む方法
Daydreamの必要性について考える
Google VR
https://developers.google.com/vr/
Daydream-Ready
● Low Persistence Display
● High Performance SoCs
● Low Latency, High Quality Sensors
なぜ?
● こんなにハイスペックな必要がある?
● スマートフォンである必要がある?
● VRの機能を(OS単位で)搭載する必要がある?
こんなにハイスペックな必要がある?
● 人間はヘッドトラッキングのレイテンシーが20msより長くに
なると、不自然に感じる。その状態が続くとVR酔いが発生
する。
○ Snapdragon 820(以降)が必要。Snapdragon 820は18ms以下のレイ
テンシーを実現している。
● フレームレートが低いと上記同様VR酔いが発生する。
○ 没入感の観点から、60FPSでも足りない。理想は120FPS以上。
(http://gamesonytablet.blogspot.jp/2014/03/blog-post.html)
http://www.moguravr.com/palmer-kusokora/
スマートフォンである必要がある?
● OculusRiftやViveはハイスペックなPCが必要になる。
● スマートフォンは誰でも持っている、生活必需品となっている。○ PSVRは一般普及しそうだが、 PS4がなければならなく、スマートフォンよりも限定的。
● 誰に対しても高品質なVRコンテンツを体験してもらうのに、Daydreamは最適。○ Cardboardの時は、端末によって性能が低く、まともに動かないものもあった。
VRの機能を(OS単位で)搭載する必要がある?
● 既にスマートフォンで必要な機能、便利な機能は一通り出尽くしている。○ いまどき防水機能やFelica機能がついてることがセールスポイントになるわけがない。
● 新たな体験としての機能を求めるのは自然の流れで、VRまたはARはその流れの
上にある。○ スマートフォンでできるくらい安価になった。一般普及する準備ができた。
○ TVで取り上げられたり、PSVRの登場で、一般的にVRが知られるようになった。
VRコンテンツ用にステレオカメラ化する
https://developers.google.com/vr/concepts/dev-kit-setup
Dev Kit● Viewer
○ Cardboard
● Viewer Phone○ Nexus6P (Android
Nougat DP4 or higher)
● Controller Emulator○ Android(API19 or
higher)
Viewer PhoneAndroid NougatDP4 or higher
Dev Kit
Controller Emulator● Connect
○ Bluetooth
Bluetooth
https://github.com/googlevr/gvr-android-sdk/blob/master/apks/controller_emulator.apk?raw=truehttps://developers.google.com/vr/concepts/dev-kit-setup#set_up_the_controller_phone
Controller Emulator App
Google VR SDK for Unity● Google VR SDK for Unity
○ https://github.com/googlevr/gvr-unity-sdk/raw/master/GoogleVRForUnity.unitypackage
■ http://www.slideshare.net/satoshinoda792/c
ardboard-62501002
● Unity○ 5.2.1 or later
● Debug (Controller)○ USB○ WiFi Hotspot
https://github.com/scarviz/GDGKobeGoogleVRApp
Software Design 2016/09
http://gihyo.jp/magazine/SD/archive/2016/201609
Compile● IL2CPP
○ C#からC++にコンバート
○ 処理の高速化
○ NDK r10e■ UE4だとNDK r11c
○ Edit > Project Settings > Player の Other Settings > Configuration
VRコンテンツにコントローラを使ってみる
Google VR SDK for Unity
https://developers.google.com/vr/unity/controller-basics
Google VR SDK for Unityvoid Update() {
if(GvrController.IsTouching) { /* タッチしている状態かどうか */ }if(GvrController.TouchDown) { /* タッチしたかどうか(1フレーム後) */ }if(GvrController.TouchUp) { /* タッチをやめたかどうか(1フレーム後) */ }Vector2 pos = GvrController.TouchPos; // タッチパッド上のタッチ位置
if(GvrController.ClickButton) { /* クリックしている状態かどうか */ }if(GvrController.ClickButtonDown) { /* クリックしたかどうか(1フレーム後) */ }if(GvrController.ClickButtonUp) { /* クリックをやめたかどうか(1フレーム後) */ }
if(GvrController.AppButton) { /* Appボタンを押下している状態かどうか */ }if(GvrController.AppButtonDown) { /* Appボタンを押下したかどうか(1フレーム後) */ }if(GvrController.AppButtonUp) { /* Appボタンの押下をやめたかどうか(1フレーム後) */ }
}
Google VR SDK for Unity● GvrControllerState
○ Disconnected○ Scanning○ Connecting○ Connected○ Error
Google VR SDK for Unity● GvrController
○ Orientation
Google VR SDK for Unity● GvrController
○ Gyro○ Accel
https://github.com/scarviz/D-Cleaver
ご清聴ありがとうございました
おまけDev Kit Headset Settings
Bluetoothを有効にし、コントローラとペアリングしておく位置情報が必要な場合は、Locationを有効にし、高精度に設定する
7回タップする