SlideShare a Scribd company logo
1 of 43
Download to read offline
HADO戦士を生み出した
テクノロジー
Kado Yasuyuki
自己紹介
がうる @Gaur24
2015‑2016 富士通株式会社
2016‑ 株式会社meleap
やってること
サーバーサイド全般(Scala, JavaScript, Python)
Unityの基盤ライブラリ(C#)
2
今回話すこと
HADOのシステム全般について
⇒「ロケーションベース型のマルチユーザーARアトラクション」
に必要な技術
コントローラー
ポジショントラッキング
リアルタイム通信
Wi‑FiやBluetoothの混線について
3
HADOの構成
4
HADOのハードウェア構成
5
HADOのソフトウェア構成
ローカルサーバー
Windows
Console App (Scala)
Node.js (Socket. IO, express)
クライアントアプリケーション
iPhone, Android, HoloLens, Windows
Unity
Socket .IO
Bluetooth
コントローラー
iPod touch
Unity
Bluetooth
6
HADOのソフトウェア構成
ポジショントラッキング
Vuforia
ARKit
Tango
HoloLens
LightHouse (HTC Vive)
OptiTrack
7
コントローラー
8
コントローラー
ゲームパッド
ボタン
ジェスチャー認識
9
コントローラー
エナジーボールの打ち方
腕を上げてチャージ ⇒ 腕を強く前に振る
10
コントローラー
シールドの出し方
腕を下げてチャージ ⇒ 腕を真上に振り上げる
11
コントローラー
パラメータ振り
自分のステータスのカスタマイズ
12
コントローラー
どうやって実装する?
認識したいジェスチャー
上下の腕の向き
強く前に振る
⇒ iPod touchのジャイロセンサーを使って実装
13
ここから数学の話
14
コントローラー
Unityの座標系
15
コントローラー
Unity座標系と重力ベクトル
16
コントローラー
Unity座標系と現実世界の関係
17
コントローラー
正規化された重力ベクトルをgとして
x‑g平面で考える
θ = arccos(g.x)
ϕ = π − (π/2 + θ)
= π/2 − arccos(g.x)
= arcsin(g.x)
18
コントローラー
つまり
腕の上下は重力から計算できる!
Unityなら正規化された重力ベクトルは
 UnityEngine.Gyroscope.gravity で取得できる!
19
コントローラー
強く振った判定
加速度の微分値の符号反転で判定できる!
20
コントローラー
注意
Landscapeを考慮して座標系を合わせる
端末が動いてるときは、静止しているときと比べて
重力ベクトルの測定精度が落ちる
21
HMDとコントローラーの接続
Bluetoothで接続
iPhoneをCentral(親)
iPod touchをPeripheral(子)
通信周りの実装は大変
⇒ がんばる
22
ポジショントラッキング
23
ポジショントラッキング
インサイドアウト方式
マーカー型
Vuforia
ドリフトしない
原点合わせが不要
マーカーが見えないとトラッキングできない 24
ポジショントラッキング
インサイドアウト方式
マーカーレス型
ARKit / Tango / HoloLens
どこでもトラッキングできる
原点合わせが必要
ドリフトする 25
ポジショントラッキング
アウトサイドイン方式
HTC Vive (Lighthouse) / OptiTrack
精度が高い / ドリフトしない
原点合わせが不要
カメラが高価
設営が大変 26
ポジショントラッキング
HADOでは
マーカー型のポジショントラッキング
6m × 2.6m の巨大マーカー
将来的にはマーカーレスに移行したい!
HADO by ARKit ‑ YouTube
27
リアルタイム通信
28
リアルタイム通信
ローカルサーバーと各クライアント
(iPhone, Android, Hololens, Windows等)を
Socket .IO(WebSocket)で接続
29
リアルタイム通信
位置情報の同期
FPSなどのオンラインゲームの位置情報の同期は10~20回/s
⇒ 足りない部分は位置を予測して描画する
ARだと生身とCGが同時に見える
⇒ 予測とのズレが顕著
HADOでは30回/s程度位置情報を同期
⇒ とにかく高頻度で位置情報を送りまくる
⇒ ローカルサーバーだからこそできる力技
オンラインゲームの仕組みと工夫 @imai̲factory
30
リアルタイム通信
基本はFPS
ゲーム中の出来事を全クライアントで
完全に同期させるのは難しい
当たり判定はFPSと同じく「攻撃側からの見た目」を基準
「避けたと思ったのに避けれてない」が起きる
どちらかというと不公平感を感じにくい
4Gamer.net ― [CEDEC 2010]ネットゲームの裏で何が起こっているのか。ネッ
トワークエンジニアから見た,ゲームデザインの大原則
31
リアルタイム通信
通信周りの実装は大変
⇒ がんばる
32
Wi‑FiやBluetoothの混線について
33
Bluetooth大量接続耐久テスト
オフィスにあるAndroidとMyoをかき集めて同時接続テスト
同じ部屋に約40セットのデバイスを並べて
ひたすら接続・切断を繰り返して安定性をチェック
=> 意外と大丈夫
34
Wi‑Fi干渉問題
イベント会場などのデモでネットワークが不安定に
無数のWi‑Fiが飛び交ってる
Wi‑Fiがブチブチ切れる
何度もやり直してやっと1回プレイできる
35
Wi‑Fi干渉問題
2.4GHz帯
各チャネルの周波数帯が重なっているため
干渉せず使えるのは13chのうち3chだけ
Bluetoothも2.4GHz帯のため干渉する
36
Wi‑Fi干渉問題
5GHz帯
各チャネルの周波数帯が重なっていない
日本では大半の周波数帯でDFSが規定されている
※ 気象レーダー等の干渉を検出=>一定時間電波を停止しチャネルを変更
37
Wi‑Fi干渉問題
チャネルボンディング
4ch分帯域幅を使うと4倍速い
=> その分干渉を受けやすい
38
Wi‑Fi干渉問題
結局どこ使えばいい?
5GHz帯のDFS規定のない36, 40, 44, 48chを使う
チャネルボンディングはOFF
39
Wi‑Fi干渉問題
電波の気持ちになれ
Wi‑Fiルーターとモバイル端末との間に物を置かない
金属 > コンクリート > 水(人間) >>>>>>> 空気
人間の頭より少し高めにWi‑Fiを設置するとよさそう
Wi‑Fi や Bluetooth を使用した通信を妨げる要因 ‑ Apple サポート 40
Wi‑Fi干渉問題
IEEE 802.11adを待つ(ボツ)
60GHz帯を使うWi‑Fiの新しい規格
対応デバイスもまだ市場にわずかしかない
待てない
電磁波シールドメッシュ(ボツ)
金属製の目の細かい網戸のようなもの
網穴の直径 < 波長にすると遮蔽効果がある
1㎡で15000円くらいする(高い
※ 波長は2.4GHzだと12.5cm、5GHzだと6cm程度
41
Wi‑Fi干渉問題
おまけ情報
3Dプリンターで作った特殊な形状を
アルミホイルで包みWi‑Fiルーターの周りに設置
=> 物理的にWi‑Fiに指向性を持たせられる
ダ大の研究者たちがアルミフォイルがWi‑Fiルーターの出力を強化/制御できる
ことを発見 | TechCrunch Japan
42
まとめ
がんばれば作れる!
43

More Related Content

Similar to HADO戦士を生み出したテクノロジー

Similar to HADO戦士を生み出したテクノロジー (20)

Phone gap+javascriptスマホアプリ開発(入門編)
Phone gap+javascriptスマホアプリ開発(入門編)Phone gap+javascriptスマホアプリ開発(入門編)
Phone gap+javascriptスマホアプリ開発(入門編)
 
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
.NET の今と未来 ~ デバイス&クラウド ネイティブを目指して
 
20190705 mas ken_azure_stack
20190705 mas ken_azure_stack20190705 mas ken_azure_stack
20190705 mas ken_azure_stack
 
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
Apache Hadoopに見るJavaミドルウェアのcompatibility(Open Developers Conference 2020 Onli...
 
WebSocket + Node.jsでつくるチャットアプリ
WebSocket + Node.jsでつくるチャットアプリWebSocket + Node.jsでつくるチャットアプリ
WebSocket + Node.jsでつくるチャットアプリ
 
NAO/Pepper 開発環境 について
NAO/Pepper 開発環境 についてNAO/Pepper 開発環境 について
NAO/Pepper 開発環境 について
 
クラウドサービスを使って作る動画サイト?
クラウドサービスを使って作る動画サイト?クラウドサービスを使って作る動画サイト?
クラウドサービスを使って作る動画サイト?
 
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
Cloud から IoT まで、なんでもおまかせ ~ .NET 5 正式リリース!
 
JAWS-UG Shimane vol.6 | なぜ今IoTなのか?ソラコムとは?
JAWS-UG Shimane vol.6 | なぜ今IoTなのか?ソラコムとは?JAWS-UG Shimane vol.6 | なぜ今IoTなのか?ソラコムとは?
JAWS-UG Shimane vol.6 | なぜ今IoTなのか?ソラコムとは?
 
Aiming のクラウド採用基準
Aiming のクラウド採用基準Aiming のクラウド採用基準
Aiming のクラウド採用基準
 
知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月
知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月
知っておくべきCephのIOアクセラレーション技術とその活用方法 - OpenStack最新情報セミナー 2015年9月
 
IoTアプリケーションで利用するApache NiFi
IoTアプリケーションで利用するApache NiFiIoTアプリケーションで利用するApache NiFi
IoTアプリケーションで利用するApache NiFi
 
PHPの今とこれから2020
PHPの今とこれから2020PHPの今とこれから2020
PHPの今とこれから2020
 
【Japan Partner Conference 2019】遂に来た! フルマーネージド Azure Red Hat OpenShift で実現する O...
【Japan Partner Conference 2019】遂に来た! フルマーネージド Azure Red Hat OpenShift で実現する O...【Japan Partner Conference 2019】遂に来た! フルマーネージド Azure Red Hat OpenShift で実現する O...
【Japan Partner Conference 2019】遂に来た! フルマーネージド Azure Red Hat OpenShift で実現する O...
 
Hardware control by .NET Core 3.1
Hardware control by .NET Core 3.1Hardware control by .NET Core 3.1
Hardware control by .NET Core 3.1
 
Software for Edge Heavy Computing @ INTEROP 2016 Tokyo
Software for Edge Heavy Computing @ INTEROP 2016 TokyoSoftware for Edge Heavy Computing @ INTEROP 2016 Tokyo
Software for Edge Heavy Computing @ INTEROP 2016 Tokyo
 
Node-RED v2.0新機能紹介
Node-RED v2.0新機能紹介Node-RED v2.0新機能紹介
Node-RED v2.0新機能紹介
 
ceph acceleration and storage architecture
ceph acceleration and storage architectureceph acceleration and storage architecture
ceph acceleration and storage architecture
 
Concentrated HTML5 & Attractive HTML5
Concentrated HTML5 & Attractive HTML5Concentrated HTML5 & Attractive HTML5
Concentrated HTML5 & Attractive HTML5
 
【16-D-4】3分ではじめるスマホアプリのビジュアル開発
【16-D-4】3分ではじめるスマホアプリのビジュアル開発【16-D-4】3分ではじめるスマホアプリのビジュアル開発
【16-D-4】3分ではじめるスマホアプリのビジュアル開発
 

HADO戦士を生み出したテクノロジー