Submit Search
Upload
Kansai cedec 2015_okude
•
Download as PPTX, PDF
•
5 likes
•
1,897 views
Seiki Okude
Follow
KANSAI CEDEC 2015 スマートフォンのセンサーをUnityでつかう
Read less
Read more
Presentations & Public Speaking
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 56
Download now
Recommended
Actividad 1
Actividad 1
Andres Castillo M Dynack Mendiethaa
Katherine film magazines
Katherine film magazines
bir
Augmented reality communication that provides a new experience value
Augmented reality communication that provides a new experience value
Etsuji Kameyama
Hannah thorpe film trailer analysis
Hannah thorpe film trailer analysis
bir
Kat trailer analysis
Kat trailer analysis
bir
AR(拡張現実)アプリ+位置情報の事例紹介と導入ポイント
AR(拡張現実)アプリ+位置情報の事例紹介と導入ポイント
Etsuji Kameyama
Gerardi promo 31 12-2013
Gerardi promo 31 12-2013
Utensileria Modenese srl
MitsunoriMatsushita_HCI193
MitsunoriMatsushita_HCI193
Matsushita Laboratory
Recommended
Actividad 1
Actividad 1
Andres Castillo M Dynack Mendiethaa
Katherine film magazines
Katherine film magazines
bir
Augmented reality communication that provides a new experience value
Augmented reality communication that provides a new experience value
Etsuji Kameyama
Hannah thorpe film trailer analysis
Hannah thorpe film trailer analysis
bir
Kat trailer analysis
Kat trailer analysis
bir
AR(拡張現実)アプリ+位置情報の事例紹介と導入ポイント
AR(拡張現実)アプリ+位置情報の事例紹介と導入ポイント
Etsuji Kameyama
Gerardi promo 31 12-2013
Gerardi promo 31 12-2013
Utensileria Modenese srl
MitsunoriMatsushita_HCI193
MitsunoriMatsushita_HCI193
Matsushita Laboratory
タッチ操作の挙動分析による行動・感情認識
タッチ操作の挙動分析による行動・感情認識
Yutaka Arakawa
Arduino用3gシールドの開発と教育への実践(天良先生)
Arduino用3gシールドの開発と教育への実践(天良先生)
Takayori Takamoto
EKJAPAN IoT workshop
EKJAPAN IoT workshop
elekit
20140922 ble bootcamp
20140922 ble bootcamp
akihiro uehara
コードを書かずにIoT, IoT without-coding
コードを書かずにIoT, IoT without-coding
Hirokazu Tokuno
ビジュアライゼーションの役割とUI開発のイノベーション(2)
ビジュアライゼーションの役割とUI開発のイノベーション(2)
BizCOLLEGE
More Related Content
Similar to Kansai cedec 2015_okude
タッチ操作の挙動分析による行動・感情認識
タッチ操作の挙動分析による行動・感情認識
Yutaka Arakawa
Arduino用3gシールドの開発と教育への実践(天良先生)
Arduino用3gシールドの開発と教育への実践(天良先生)
Takayori Takamoto
EKJAPAN IoT workshop
EKJAPAN IoT workshop
elekit
20140922 ble bootcamp
20140922 ble bootcamp
akihiro uehara
コードを書かずにIoT, IoT without-coding
コードを書かずにIoT, IoT without-coding
Hirokazu Tokuno
ビジュアライゼーションの役割とUI開発のイノベーション(2)
ビジュアライゼーションの役割とUI開発のイノベーション(2)
BizCOLLEGE
Similar to Kansai cedec 2015_okude
(6)
タッチ操作の挙動分析による行動・感情認識
タッチ操作の挙動分析による行動・感情認識
Arduino用3gシールドの開発と教育への実践(天良先生)
Arduino用3gシールドの開発と教育への実践(天良先生)
EKJAPAN IoT workshop
EKJAPAN IoT workshop
20140922 ble bootcamp
20140922 ble bootcamp
コードを書かずにIoT, IoT without-coding
コードを書かずにIoT, IoT without-coding
ビジュアライゼーションの役割とUI開発のイノベーション(2)
ビジュアライゼーションの役割とUI開発のイノベーション(2)
Kansai cedec 2015_okude
1.
スマートフォンのセンサーを Unityでつかう
2.
2 講師自己紹介 奥出成希(Seiki Okude) • フリーランスのプログラマー •
専門学校の講師 2
3.
3 この世の中はセンサーであふれている • 自動ドア • 湯沸かしポット •
テレビのリモコン • 防犯センサーライト • エアコンの温度調整
4.
4 スマートフォンのセンサーは多彩 • 3軸加速センサー、ジャイロスコープ • GPS、デジタルコンパス、気圧 •
カメラ、マイク、近接センサー • タッチパネル、物理ボタン などなど
5.
5 デバイスの中と外をつなぐもの 外の状況を読み取りデバイス内に伝えることで、 その状況に応じた処理を行うことが出来る
6.
6 なにか使って、作ってみよう 今回の例 • バーチャルスノードーム • ヘッドマウントディスプレイの中身+立体視 •
ロケーションベースAR
7.
7 バーチャルスノードーム • スマートフォンの中でスノード ームを再現する • デバイスの傾きで中の雪が動く •
球状のガラス表現は難しそうな ので作らない • 固定オブジェクトも置きたい
8.
8 これを作ったきっかけ ● Unityでスマートフォンのアプリを作るという講義 のネタだった ● 授業の中で重力を弱めたいという質問が出た ●
設定項目は図の部分 ● Gravityの項目はVector3だった ● yの値をプラスにしたら上に「落ちる」、xに設定 したら横に「落ちる」、とうぜんzに設定したら前 後に「落ちる」わけですね ● 重力を操作するゲームとか面白いかな ● デバイスを傾けても重力の方向が現実と一致して たら面白いな
9.
9 使うセンサーは3軸加速センサー • Wiiリモコンのセンサー • その名の通り、加速を検知 •
だいたいのスマートフォンには搭載されている • デバイスの加速(移動)を三次元ベクトルで得る • 静止状態で重力の方向を検知 • 重力無視したければハイパスフィルタで除去
10.
10 設計 • Boxコライダのみを持つオブジェクトを床天井 壁にする • 重力の影響を受けるオブジェクトを雪に見立て る •
重力の影響を受けないオブジェクトも配置する • 三軸加速センサーからの値をUnityの物理エンジ ンの重力の方向に設定する
11.
11 プロジェクトの配置 ドームの作成 • 空のGameObjectにBoxコライダー を追加しそれを板状に変形 • それを6つコピーして中空のキュ ーブ状に配置する 雪の作成 •
キューブを雪の粒に見立てて小さ めに作る • Rigidbodyを仕込んで、Mass小さ めにしておく • Use Gravityチェックして重力で落 下するように • ドーム内にたくさんコピーしてお く
12.
12 スクリプト void Update ()
{ Physics.gravity = new Vector3( Input.acceleration.x, Input.acceleration.y, Input.acceleration.z * -1 ); }
13.
13 実演
14.
14 固定オブジェクトを置きます • Unityちゃんパッケージimportして 配置します • アニメさせません •
Boxコライダをこのポーズに仕込み ます • キラキラはこのコライダに当たり ます
15.
15 実演
16.
16 これだけじゃつまらないのでさらに追加 • 背景にカメラ画像をはめ込む • 忘れがちですが、カメラも立派なセンサー
17.
17 WebCamTexture • カメラの映像をテクスチャとして使える • 使い方は超簡単 •
WebCamTextureのインスタンス作って、そ れをマテリアルのMainTextureに割り当てて、 Play()を呼ぶだけ
18.
18 プロジェクトの配置 • 通常のオブジェクトたちとは違うレイヤーに 配置する(webcamという名前にしておく) • 平行投影カメラを設置 •
webcamレイヤーのみを映すように設定 • 通常のカメラはdepthを-1に、webcamのカメ ラは-2に設定(つまり向こう側に置く) • 通常カメラはClearFlagsをDepthOnlyに、 webCamはSolidColorで黒塗りつぶし • Quadオブジェクトを横縦比4:3の大きさで置 く • このオブジェクトがwebcamのスクリーンに なる • ちょうど画面に収まるように画角調整 • Unlit/Textureのテクスチャ無しでmaterialを作 成、割り当て • 光源の影響を受けないようにしたい
19.
19 スクリプト WebCamTexture webcamTexture =
null; public Transform cameraScreen; void Start () { WebCamDevice[] devices = WebCamTexture.devices; if (devices.Length > 0) { webcamTexture = new WebCamTexture (320, 240, 12); cameraScreen.renderer.material.mainTexture = webcamTexture; webcamTexture.Play (); } else { Debug.LogError ("no camera"); } }
20.
20 実演
21.
21 仕掛け部分だけをGitHubで配布しています。 あとは自分で実装してみてください。 https://github.com/sokude/VirtualSnowdome
22.
22 ヘッドマウントディスプレイの中身+立体視 • ある場所でOculusRiftをかぶってみた • とても感銘を受けたが買って開発は今すぐ は無理 •
でも立体視でぐるぐる周囲を見てみたい
23.
23 じゃあ裸眼立体視でつくってしまえ
24.
24 一晩で作りました と言いたいところですが 二晩かかりました
25.
25 設計 • 裸眼立体視はカメラを2つ配置して左右少しだ け位置をずらす • その2つのカメラのスクリーンをビューポート 設定で左右に配置 •
2つのカメラの親になるカメラルートオブジェ クトを設定 • ジャイロの値とこのカメラルートの向きを連 動させる
26.
26 立体視とは • 左右の目でそれぞれ少し位置のずれた画像を見せ ることにより、奥行き感を脳に錯覚させる • OculusRiftのようにヘッドセットで強制的に分ける •
Nintendo3DSのような視差バリア • ステレオグラム画像のように自力でがんばるなど ★今回は自力でがんばってみましょう
27.
27 まずは裸眼立体視を実現しておこう • 背景などを配置 • アセットストアから墓場の背景セ ットをimportして使わせていただ く xiaolianhuastudio
/ Make Your Fantasy Game - Lite
28.
28 まずは裸眼立体視を実現しておこう 2台のカメラは左右に座標が少しずれている ビューポート設定で左右に画面分割 図のように左右にカメラを2台配置 (真ん中は画面外塗りつぶし用)
29.
29 ゲームビューはこんなふうになります 裸眼立体視はできました
30.
30 ジャイロスコープとは • WiiリモコンプラスとかSixAxisとか • デバイスの姿勢を検出 •
UnityではQuaternionで取得できる
31.
31 ジャイロスコープを使う ● GameObjectをジャイロか らのデータを処理する入れ 物とする ● gyroScriptがCameraPrefab の方向を制御する ●
ジャイロスコープから現在 の端末の回転角を取得して、 カメラオブジェクトの向き にほぼそのまま放り込む
32.
32 スクリプト public Transform target;
//cameraset // Use this for initialization void Start () { if (SystemInfo.supportsGyroscope) { Input.gyro.enabled = true; } else { Debug.Log ("no support gyro."); } } // Update is called once per frame void Update () { if (Input.gyro.enabled) { Quaternion qqq = Input.gyro.attitude; qqq.x *= -1; qqq.y *= -1; qqq.z *= 1; target.localRotation = qqq; } }
33.
33 実演
34.
34 ちょっと追加要素 • せっかくなのでUnityちゃんにもう一度登場 していただきましょう。 • VirtualSnowdomeと同様にパッケージを importする •
カメラからさほど離れていない場所に配置 • 今度はアニメーションをさせておく
35.
35 実演
36.
36 妄想全開、Unityちゃんと墓場デート これもかんたんでした。
37.
37 仕掛け部分だけをGitHubで配布しています。 あとは自分で実装してみてください。 https://github.com/sokude/stereogram
38.
38 今後の課題 • 裸眼立体視はそれなりに人間的に疲れる • ゲーム内の空間を移動する術がない •
画面にタッチすることすらおぼつかない →素直にヘッドマウントディスプレイ →Bluetoothコントローラで操作
39.
39 この技術が向いているもの GPSやカメラと組み合わせてみる →ロケーションベースAR的な展開 (ただし立体視とは相性悪そう) 屋内測位システムと組み合わせてみる →アミューズメント施設のアトラクション的な もの
40.
40 GPSを使ったロケーションベースAR • AR(拡張現実) – 現実環境をコンピュータにより拡張する技術 •
ロケーション情報 – GPSやWiFi、携帯電話基地局情報などから地球 上の現在位置を取得する • ロケーション情報とARを組み合わせる – ARとして現実環境に付け加える情報を位置情報 から生成する
41.
41 概要 • 緯度経度で指定した場所に3Dモデルを置く • 端末のGPSから取得した現在位置の緯度経度と 照らし合わせる •
あたかもその3Dモデルが現実に存在しているか のようにカメラ画像と合成して表示する ※立体視は行わない
42.
42 使用するセンサー • カメラ • ジャイロスコープ •
GPS • 地磁気センサー(デジタルコンパス)
43.
43 設計 • GPSで得られる緯度経度の情報をゲーム空間上のX座標Y座標に見立て、 カメラオブジェクトの位置を決定する。 • 同様に3Dモデルもその平面上に緯度経度を模した値で配置する。 •
最遠景には背面カメラからの映像をリアルタイムで表示しておく。 • ジャイロスコープとデジタルコンパスにより、カメラオブジェクトの 回転(視線方向)を制御する。 • こうすることによってユーザー現実世界での移動とゲーム内カメラが 連動し、ゲーム内の仮想空間と現実の空間をつなぐことができる。
44.
44 問題点 地球は球体なのでゲームの仮想空間の地上とマッピングし た時に誤差が出る。 広いエリアでは問題になるがこの誤差が許される範囲での 運用を前提にしている。
45.
45 プロジェクト配置 ● 「バーチャルスノードーム」と同じよ うにWebCamTextureを使い最遠景に カメラ画像。 ● 「ヘッドマウントディスプレイの中 身」と同じようにジャイロスコープで 動くゲーム内カメラオブジェクト(た だしカメラは1つ) ●
表示物:なにか3Dモデルとか、看板 とか
46.
46 スクリプト ※Update()内、PlayerObjはジャイロカメラ playerObj.eulerAngles = new
Vector3 (0, cameraRot, 0); // 現在の位置を取得. nowpos.x = Input.location.lastData.longitude; nowpos.y = 0.00002f; nowpos.z = Input.location.lastData.latitude; //起動時の位置からの相対座標にする playerObj.transform.position = (nowpos - locationOffset) * 1000; // 表示オブジェクトの位置も相対座標にする
47.
47 コンパス使ってない? • ジャイロのY軸回転と合わせて端末の向いている方角を取得 するために使うはずだった。 • ところが、Unity/AndroidではジャイロのY軸回転の0位置が コンパスの北に一致していた。 •
全部の端末でそうなるのかは検証しきれないが、少なくとも Nexus4と7では問題なかった。実際にこの仕組みでアプリを リリースしたが不具合は報告されていない。 • 内部的にコンパスは使われているかもしれないがUnityのプ ロジェクトからは意識しなくてもいい。
48.
48 コンパス使ってない? • Unity/iOSではジャイロのY軸回転はジャイロをenableにした 時の向きを起点にしているようで、コンパスの北と一致しな かった。 • この場合はジャイロをenableにするのと同時にコンパスの値 を取得してY軸回転の値に足す。
49.
49 実演
50.
50 まとめ 本日3点の実装例を紹介したわけですが…
51.
51 据え置きゲーム機とセンサー コントローラー以外の入力デバイスのゲームはイマイチ流行ら ない • キネクトやPlaystationMoveは微妙だった • 例外:Wiiリモコン、WiiFit •
Wiiはあれが売りで全面に押し出した • WiiFitは体感モノとしてゲームとは違う分類にすべき • なぜかWii以外の場合、遊んでいるのを見られるのがちょっ と恥ずかしい(あくまで私の印象) • 緻密な入力を要求するゲームはいわゆるコントローラー以外 のデバイスでは無理がある
52.
52 モバイルゲーム機とセンサー 3DSのジャイロを使ったゲーム • 視差バリア方式の立体視とモーションコントロールの相性は最悪 • New3DSで劇的に改善 AndroidやiPhoneではどうか? •
ソーシャルゲームなんかではモーションコントロールがゲームの 中核となり得ることはなさそう – ガッツリ遊んでいる人ならまだしも空き時間とか移動中に本体 振り回して遊ぶか? • GPSは例外的に「位置ゲーム」と呼ばれるジャンルがある
53.
53 位置(ロケーション)ゲーム • GPSや携帯電話基地局から得られる「プレイヤー の位置情報」を利用したゲーム • プレイヤーの現在位置から都道府県を特定したり、 前回からの移動距離などでポイントを付与したり、 現実との関連が強いゲーム性をもつ •
「まちつく!」「コロニーな生活」「Ingress」など
54.
54 私が関わった今回のセッションに関連のあるプロダクト • ロケナゲ(iOS) :
位置情報(GPS/WiFi) – プレイヤーの現在位置を利用する、いわゆるロケーションゲーム – 前回のゲームプレイの場所と現在のプレイ場所の距離をポイントとして付 与し、そのポイントを使ってゲームを進行させる • 北斎今昔(iOS/Android) :位置情報、ジャイロ – ロケーションベースAR – 今日の講演内容を実際に運用したもの – スタンプラリー要素もある • 京都三条近代建築マップ(iOS/Android) : 位置情報とコンパス – 目標地点をいわゆる「レーダー」で確認して近くまで到着するとその場所 の説明を聴くことができる。
55.
55 今後のセンサーを使ったゲーム • いろいろ問題点を考えるときりがないのですが、 その分未発達、未開拓のジャンルと言えるので はないか • 未開拓の部分を切り拓いていき、センサーコン トロールがゲームの新たな方向を示し、新しい 遊びを作り上げていくのではないかと期待して います。
56.
56 本日はありがとうございました。
Download now