Thanks to visit codestin.com
Credit goes to github.com

Skip to content

sandabu/SkywayVR

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SkywayVR

NTTコム・CodeSprintオンラインハッカソン 最優秀賞受賞Repo

開発したアプリケーションの使い方

アプリケーション名

SkywayVR

domain

https://sandabu.github.io/SkywayVR/app/vr/build/

How to use

SkywayVRは1:1のコミュニケーションツールです.

端末確認

  • iOS safari 11
  • iOS Chrome 63.0.3239.73
  • Desktop Mac Chrome 62.0.3202.94(Official Build) (64 ビット)

前段階

  • スマートフォン + スマートフォン向けVRヘッドセットの利用を推奨します.PC / SP, PC / PCも可能です
  • バックライト・スリープが自動でONにならないようにゲスト・ホストユーザーのスマホ設定から行います.
  • iPhoneでは,iOS/Safari 11からWebRTCに対応しているので,最新版でないと動きません.

利用法

  1. ドメインにアクセスします.
  2. 最初にホストユーザが「ホストとして入室する」をクリックし,場所を選んで入室します.
  3. 「Your id is XXX」と表示されたら,ゲストユーザにIDを伝えてください.表示されない場合はリロードしてください.
  4. ゲストユーザがドメインにアクセスします.
  5. 「ゲストとして入室する」をクリックし,場所を選び,3.で得られたIDをPeer IDに入力し,入室します.
  6. フロントのIDパネルが消え,アバターが表示されたら会話することができます.

いいね!機能

  • 画面左上にLikeボタンがあります.このボタンを注目すると相手に「いいね!」を送ることができます.
  • いいねを受け取ると,アバターがいいね!して,効果音が鳴ります(スマートフォン未対応)

アプリケーションの概要説明

技術背景

2016年はバーチャルリアリティ元年とも言われ,今年もその注目は常に集めています.しかし,VRヘッドセットとVRコンテンツを動かすPCは未だに高価であり,一般的とは言えません. そこで,スマートフォンをHMDとしたハコスコやGoogle Cardboardが台頭したことにより,没入感は低いですが,手軽にVR体験をすることができます. VRコンテンツは通常,UnityやUnreal Engineなどのゲームエンジンで開発され,アプリとしてAppStoreやGooglePlayからダウンロードする必要がありますが,2017年に正式リリースされたFacebook社のReactVRはReactNativeベースでWeb上で動かすことができます. 今回,SkywayとReactVRを組み合わせることによって,よりイマーシブな次世代のコミュニケーションを提案しました.

サービス背景

なぜVRなのか?

選べるロケーション

現在のリアルタイムコミュニケーションツールは,場所を選ぶことができません. SkywayVRならば,様々なロケーションでコミュニケーションが行えます.例えば,リゾート地をバックにミーティングをしたり,友達とのコミュニケーションにおしゃれなバーで話したり... 場所を変えることによって,より円滑なコミュニケーションにし,体験が向上されると考えます.

VRならではのノンバーバルコミュニケーション

NTTコミュニケーション科学基礎研究所の大塚ら(2013)[1]は,遠隔コミュニケーション環境では,非言語情報が十分に伝達されないことが,不自然なコミュニケーションである原因と指摘してます. SkywayVRを用いると,その頭部の動きが相手のアバターに反映されます.首を縦に振ることによる「肯定」,横に振ることによる「否定」などのノンバーバルコミュニケーションがアバターを介して表現でき,平面ディスプレイでビデオチャットよりも高い臨場感を感じることができます.

また,現在,若者のコミュニケーションツールとしてLINEが一般的です. LINEの特徴的な機能は「スタンプ機能」です.スタンプはメッセージを送るよりも手軽に意思表示をすることができます. SkywayVRでも,「いいね!機能」を実装しています.ボタンを見るだけで,その会話内容に対して気軽にリアクションすることができます.

[1]大塚和弘, 熊野史朗, 松田 昌史, 大和淳司:「MM-Space: 頭部運動の物理的補強表現に基づく会話場再構成」,情報処理学会論文誌,Vol. 54, No. 4, pp. 1450-1461, 14 April 2013

対称となるターゲットユーザ

10~30代・新しい物好きのイノベータ・アーリーマジョリティ

実装した機能紹介

機能

  • インデックスページによる場所選択
  • VR空間でのボイスチャット機能
  • 頭部Rotation情報伝達
  • いいね機能(詳細はHow to useより)

技術スペック

Core

  • ReactVR
  • Skyway

CSS Framework

Other lib.

Tips

  • 「Your id is undefined」と表示されたら,リロードしてください
  • 一部スマートフォンではアバターが表示されるまで時間がかかる場合があります.
  • 「Click to dump」をクリックするとデバッグ用としてconsoleにPeerIDが表示されます.
  • 音声が出力されない場合は,リロードしてください.

創意工夫した点

実装する上でこだわった創意工夫点

  • インデックスページを作成し,PeerId直打ちをしないUX・スマホ対応
  • SkywayとReactVRとのデータやりとり
  • いいね機能
  • 頭部Rotation伝達機能

発生した問題、難しかった箇所

getUserMedia問題

ReactVRでのコンポーネントライフサイクルの中で,getUserMediaが取得できない

ReactVRはReactNativeベースで動いていますが,特徴的なのはWebWorker上で動いていることです. スマートフォンの加速度ジャイロセンサーから得られた情報をディスプレイに高速でレンダーしなければ,人間が期待する風景と,実際に見る風景との乖離が発生し,いわゆる「VR酔い」が発生します. WebWorkerはJSでマルチスレッドを実現するAPIであり,これを用いることにより,VR酔いを回避しています. workerはwindow直下のグローバル空間とは異なるので,メモリの共有ができず,WebRTCに必要なgetUserMediaを呼ぶことができませんでした.

どのようにして解決したのか

Workerとグローバル空間でデータをやりとりする唯一の方法は,postMessage関数を呼び,文字列でやりとりすることです. そこで,Skywayがworkerと架け橋となるようにSkywayBridgeというクラスを作ました.具体的には,ピアとのやりとりを行い,また,Workerを通じてReactVRにメッセージを送受信するクラスです. ReactVR側・Skyway側でそれぞれpostMessage関数と,イベントリスナを実装し,この問題を解決しました.

例えば,HeadRotation情報はReactVRからSkywayBridgeに渡され,BridgeからSkywayを通じて送られ,相手側のdataConnから取得し,それをまた,ReactVRへ送信するフローとなっています.

その他アピールポイント

実験的・挑戦的アプリケーション

ReactVRは今年正式リリースされたもので,リファレンスが少ないです. 新しい技術なので,誰もやったことがないものをテーマに企画・開発を行いました.

また,VRにおけるスタンプ(いいね機能)は未だに実装された例がありません. 新時代のコミュニケーション方法の一つを提案することで実験的な開発となりました.

実際のサービスをリリースすることを前提に開発しました.

例えば,インデックスページのUI/UXや,SP対応などです.

アプリインストールが不要です

すぐに始められます.

3Dサウンド

ヘッドホンをした時,いいね!されると,アバター側から聞こえます. 通常の音声には指向性はありません.

iOS/Safari11のWebRTC対応に注目

iOS/Safari11よりWebRTCが対応され,これで主要ブラウザでは全てWebRTCに対応しました. スマートフォンVRとの組み合わせに興味を持ち,この企画を行いました.

WebエンジニアへのVRアピール

VRエンジニアというと,UnityにてC#,Unreal EngineにてC++での記述がメインとなり,ジャンルの違うWebエンジニア的には,興味はあるが,学習コストが高いという印象があるという意見を聞いたことがあります. WebVRはA-frameやReactVRなどのフレームワークはありますが,代表的なコンテンツは未だにありません.SkywayVRを例に,WebエンジニアでもVRコンテンツが作成できることをアピールしたいと思います.

依存アセット / サービス

エクイレクタングラ画像

  • Golden_Louvre by Zeljko Soletic

https://www.flickr.com/photos/136386099@N02/21597873406/

  • Day for perfect reflection as lake by Graeme Davidson

https://www.flickr.com/photos/gdavidson/38498464661/in/pool-360degrees/

tool

  • 5000兆円ジェネレーター super

https://yurafuca.github.io/5000choyen/

画像

  • いいねボタン

http://icooon-mono.com/

Model

About

NTTコム・CodeSprintオンラインハッカソン 最優秀賞受賞Repo

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •