2018年12月22日
プログラミング
360度動画を背景にする【これからはじめるReact 360】


はじめに
新しい技術にチャレンジし続けるeishisのアドベントカレンダーDay21です!
「自社WebARサービスのデザインと実装で苦労したこと」でした。
今回はReact 360で360度動画を背景として使う方法をご紹介していきます。
このシリーズでは、「ランニング360」と題したWebVRを開発していきます。
最終的には自分が走っているかのような体験をすることができ、またアイテムを獲得していくゲーム要素も入れていく予定です。
さて、前回は環境構築を行いました。
360度動画自体の撮影、また編集にも触れながらWebVRとして背景動画を設定していきます。
360度動画を撮影する
360度動画とは、その名の通り360度どこの角度からも見ることができる動画のことです。
例えばこちらのNational Geographic のような動画です。Youtubeも360度動画をサポートしています。
※マウスやスマートフォンを動かして角度を変えてみてください。
カメラを選ぶ
では、360度動画はどうやって撮影するのでしょうか。
いくつか専用のカメラをご紹介します。
価格帯は高いものだと数十万円しますが、今回は数万円程の価格のものです。
Insta 360はスマートフォンにさして使用するタイプの360度カメラです。
最後にGoPro Fusionをご紹介します。
今回はこのカメラを使用し、360度動画(もちろん画像も)を撮影しました。
スマートフォン経由で操作できるので、わかりやすいかなと思います。
動画を編集する
今回はAdobe Premiere Pro CCを使用しました。
詳細については、また別のシリーズでもご紹介しますが、他にもFinalCutProのような動画編集ソフトでは360度動画も編集可能なようです。
そしてオフィス近くで撮影を行い、出来上がったのがこちらの動画です。
Amazon S3に保存しています。
※少し重いのでご注意ください。
背景動画として使用する
では、背景動画を指定していきます。
まず、先程作成した動画をstatic_assets
ディレクトリに保存します。
run.mp4
というファイル名にします。
次に、client.js
を見ていきます。
...
function init(bundle, parent, options = {}) {
const r360 = new ReactInstance(bundle, parent, {
// Add custom options here
fullScreen: true,
...options,
});
// Creating a Video Player
const player = r360.compositor.createVideoPlayer('myplayer');
// Set the video to be played, and its format
player.setSource(r360.getAssetURL('run.mp4'), '2D');
r360.compositor.setBackgroundVideo('myplayer');
player.setLoop(true);
player.play();
// Render your app content to the default cylinder surface
r360.renderToSurface(
r360.createRoot('running360', { /* initial props */ }),
r360.getDefaultSurface()
);
...
ポイントをいくつか解説していきます。
const player = r360.compositor.createVideoPlayer('myplayer');
ここでmyplayerというビデオプレイヤーをつくります。
player.setSource(r360.getAssetURL('run.mp4'), '2D');
そしてここでrun.mp4を指定しています。
getAssetURL
はstatic_assetsをパス指定するものです。
そしてsetSource
メソッド2つ目の引数の’2D’ですが、フォーマットを指定する為のものです。
ヘッドセットでないとその効果は見れない為、今回はデフォルトの2Dフォーマットを指定します。
r360.compositor.setBackgroundVideo('myplayer');
そしてここでmyplayer
をReactのインスタンスであるr360の背景として宣言します。
player.setLoop(true);
player.play();
最後に、少しはまったポイントです。
ここで明示的にplayerをplayしないと動画が再生されません!
setLoopは繰り返すかどうかの指定ですね!
こうしてできたのがこのようなWebVRです。
サンプル
サイトはこちらですが、回が進むことでアップデートされるのでご注意!
まとめ
今回はReac360での背景360度動画再生についてご紹介しました。
360度の動画を流すことで、だいぶ没入感(自分がその空間に入り込んでいるような感覚)が強くなるのではないでしょうか。
いきなりこうして背景動画を流すこともできますが、途中から背景を変えることも当然可能です。
また、例えば目線によるインタフェースの実装も可能です。
次回以降、そのやり方をご紹介していきます。
React360のお仕事に関するご相談
Bageleeの運営会社、palanではReact360に関するお仕事のご相談を無料で承っております。
zoomなどのオンラインミーティング、お電話、貴社への訪問、いずれも可能です。
ぜひお気軽にご相談ください。
この記事は
参考になりましたか?
3
1
関連記事

2019年12月17日
3D空間上に2DのUIを重ねる【これからはじめるReact360】

2019年12月10日
React360でのレイアウトについて【これからはじめるReact360】

2019年10月9日
背景を変更してシーンを切り替える【これからはじめるReact360】

2018年12月22日
360度動画を背景にする【これからはじめるReact 360】

2018年12月8日
【これからはじめるReact 360】 まずは環境構築
簡単に自分で作れるWebAR
「palanAR」はオンラインで簡単に作れるWebAR作成ツールです。WebARとはアプリを使用せずに、Webサイト上でARを体験できる新しい技術です。
palanARへ
palanでは一緒に働く仲間を募集しています
正社員や業務委託、アルバイトやインターンなど雇用形態にこだわらず、
ベテランの方から業界未経験の方まで様々なかたのお力をお借りしたいと考えております。
運営メンバー

Eishi Saito 総務
SIerやスタートアップ、フリーランスを経て2016年11月にpalan(旧eishis)を設立。 マーケター・ディレクター・エンジニアなど何でも屋。 COBOLからReactまで色んなことやります。
sasakki デザイナー
アメリカの大学を卒業後、日本、シンガポールでデザイナーとして活動。

やまかわたかし デザイナー
フロントエンドデザイナー。デザインからHTML / CSS、JSの実装を担当しています。最近はReactやReact Nativeをよく触っています。
Sayaka Osanai デザイナー
Sketchだいすきプロダクトデザイナー。シンプルだけどちょっとかわいいデザインが得意。 好きな食べものは生ハムとお寿司とカレーです。

はらた エンジニア
サーバーサイドエンジニア Ruby on Railsを使った開発を行なっています

こぼり ともろう エンジニア
サーバーサイドエンジニア。SIerを経て2019年7月に入社。日々学習しながらRuby on Railsを使った開発を行っています。

ささい エンジニア
フロントエンドエンジニア WebGLとReactが強みと言えるように頑張ってます。

Damien
WebAR/VRの企画・開発をやっています。森に住んでいます。

ゲスト bagelee

かっきー

まりな

suzuki
miyagi

ogawa
雑食デザイナー。UI/UXデザインやコーディング、時々フロントエンドやってます。最近はARも。

いわもと
デザイナーをしています。 好きな食べ物はラーメンです。

taishi kobari
フロントエンドの開発を主に担当してます。Blitz.js好きです。

kubota shogo
サーバーサイドエンジニア。Ruby on Railsを使った開発を行いつつ月500kmほど走っています!
nishi tomoya

aihara
グラフィックデザイナーから、フロントエンドエンジニアになりました。最近はWebAR/VRの開発や、Blender、Unityを触っています。モノづくりとワンコが好きです。
nagao
SIerを経てアプリのエンジニアに。xR業界に興味があり、unityを使って開発をしたりしています。

Kainuma
サーバーサイドエンジニア Ruby on Railsを使った開発を行なっています

sugimoto
asama
ando
iwasawa ayane

oshimo
異業界からやってきたデザイナー。 palanARのUIをメインに担当してます。 これからたくさん吸収していきます!