Unity 2017.3の360 Panoramic Video Shaderを使ってみる
ayaです。
Advent Calender用の記事です。
空いているようなので、Unity 2017.3で360動画を再生する機能を試してみます。
次回の銀座VR Festの準備中ですが、当初はwarapuri様のSphere100.fbxを使っていました。ありがとうございます。
No hack, no work • UnityとOculusで360度パノラマ全天周動画を見る方法【無料編】
そんな中、360映像を表示する機能が追加された2017.3の正式版が公開されたことを知りました。恥ずかしながら、Unityで最後まで作ったことがなかったので、試してみました。
DRAFT: Panoramic 2D and 3D Video Shader in Unity - Google ドキュメント
上のリンクにある英文を要約すると、こんな感じです。使用する動画は2:1のEQ映像前提です。
- 360動画をシーンに追加する。そのVideo Playerの中にあるRender ModeをRender Textureにする。
- Asset内にRender Textureを新規作成し、サイズを動画に合わせる。depth bufferをno depth bufferにする。
- 1.でシーンに追加したVideo PlayerのTarget Textureに、2.で作ったRender TextgureをD&Dする。
- Asset内にMaterialを新規作成し、ShaderをSkybox/Panoramicにする。Sphercalに2.で作ったRender TextureをD&Dする。
- WindowにあるLighting設定を開き、EnvironmentのSkybox Materialに4.で作ったMaterialをD&Dする。
Play中にカメラのRotationを変えると、Skyboxに360動画が再生されていることがわかります。
せっかくのUnityなので、いろいろなObjectを画面内に配置しました。
足元を消すために円柱と90式戦車、背後の人の肖像権配慮のために半透明の壁を置きました。もう少し、修正していきます。
自作の360カメラは足元の30degに映像がなく、その部分を隠したいのですが、Skyboxに360映像を貼ったシーンの中に置く円柱の大きさをカメラとの相対位置で調整が必要なようです。Sphere100.fbxのときは大きさ関係が理解しやすかったのですが、Skyboxは貼った画がとても遠くにあるので、感覚をつかむのが難しいかもしれません。ただ、Sphereがシーン内にないので、シーン内がすっきりした気がします。
今回の映像には、ためしに、国土地理院の3Dデータを置きました。
今回の映像は総合火力演習なので、御殿場の3Dデータをいただきました。ありがとうございます。ちなみにこのときに置いたObjectの大きさは150unitでした。
Skyboxに貼られた360画像はアングルを変えても見え方は変わらないのが、不思議な感じがします。
なんとか位置合わせしてみて、こちらのような感じです。
実はインチキしていて、カメラの位置が撮影した場所と違っています(撮影場所はもうすこし画面右の灰色の部分・100mくらいの誤差)。
おそらく、シーン内に置いた地図データの大きさの問題か、ステッチの画のレジストレーション精度が不十分なせいだと推測します。
データと画像を突き合わせるように、Photogrammetryで取得したモデルと360映像を合成しようとするときは、改善すべき点かもしれません。
できれば、砲撃先がわかるように、データと映像を合わせたような作品に仕上げたいです。体験時間を考えると、そこまで入らないかもしれませんが、頑張ってみます。
今回は、かなり出しゃばった感じになり、すみません。
来年もよろしくお願いします。
Gear360(2016)をステレオカメラに魔改造する方法(失敗の巻)
ayaです。
Advent Calender用の記事です。
360動画向けのAdvent Calenderなのですが、360カメラのGear360(2016)をステレオカメラに改造した結果を紹介します。シンクロして二つの画像を取得しているはずなので、ステレオカメラに適していると考えたためです。
ですが、最初にお詫びしますが、画像処理の部分でうまくいきませんでした。改造する工程をお楽しみいただければ幸いです。
材料のGear360(2016)も分解動画が紹介されています。レンズ窓のリングを外してからは、プラスドライバで外せるねじを取っていけば、わりと簡単に分解できました。
フレキを開いてみるとセンサが一列に並び、しかも、間隔が70mmくらいで好都合でした。ほかにも同じような配置になる360カメラもありました。ステレオカメラへの応用を視野に入れているのかもしれません。
Gear360(2016)のレンズはSマウントではないのでピント調整ができなかったのと、ガラス窓を外すとピントがずれたこともあり、レンズを外して別のSマウントのレンズをつけました。
あとは、できなりでユニバーサルプレートを使ったり、可動式のステーをつけたり、平行化しやすいように水準器をつけたりしました。
動画撮影を試してみたところ、後ろに映っているテレビ画面のトランジションが左右同時だったので、シンクロ狙い通りでした。
しかし、残念なことが二つわかりました。
一つはセンサの向きです。無理しないようにレンズを配置した場合、90deg回転した状態になってしまいました。
もう一つは、取得画像がひずみ補正されてしまっている点です。交換したレンズは画角が80deg程度でひずみは大きくないのですが、周辺がひずまされていました。前後別々の画像撮影の時は補正されないのに、せめてdual fisheyeで出力されていたらよかったのですが、残念です。
後処理を試してみたいと思います。
追記
昨年末からphotogrammetryも試行錯誤しています。
360と同様に、空間をキャプチャする技術として興味深く追いかけています。
こちらは忘年会の後に試しに撮影した結果で恐縮ですが、ご笑覧いただけると幸いです。
いまさら?自作360カメラの作り方 作製編
ayaです。
Advent Calender用の記事です。
構成するカメラのセンサ解像度や画角と相談し、大まかな台数を決めますが、求める解像度によっては、もともと付属しているレンズの画角では実現できない場合があります。
前回の例の構成(HFOV185deg, VFOV120degのカメラを縦向き)の場合、360 / 120 = 3なので、4台以上はオーバーラップ増加に寄与することになります。とはいえ、無駄ではなく、ブレンディングやゴースト除去のためには必須な成分です。
逆に一度に撮影できる範囲を増やしたいときは、画角がさらに広いレンズに交換する必要があります。
レンズ交換式のカメラではなく、GoProなどのアクションカムの場合は、カメラを改造する必要があります。
大体のアクションカムは分解記事や動画を検索すると出てきますので、詳細は割愛します。基本的に、両面テープ止めされた部品は熱しながら上手く剥がすことと、ねじ止めされている部分を見えているところから外していくことになります。各人のスキルにより成功率は下がりますし、保証も効かなくなるので、改造は自己責任です。
GoPro(Hero5以降は未確認), Actioncam, Yi Camのレンズは、おおむね、Sマウントと呼ばれるM12 x 0.5のねじ構造で取り付けられていました。写真はYiCam 4K+です。
Sマウントはボードカメラにも使われていて、Alibabaで"lens M12 fisheye"などで検索するとたくさん出てきます。
センササイズと分解能、そして外形サイズで選択します。
送料や関税を除いて、1個5-7千円くらいです。窓口の人と簡単な英語でチャットすると、当日のうちに発送手続きまで進むぐらいスピーディーな対応です。
ただ、Megapixelレンズのところに1Mpix程度までのレンズしかないけど、同じ会社のfisheyeレンズのところを探すと8Mpix程度のレンズがあったり、
12Mと書いてあるけど実はM12のレンズのことで解像力は5Mpix相当だったり、
サムネールに表示されている価格と全然違う値段が見積もりで出てきて、質問すると「あれはサイトの運営会社に見せるための値段で、本当はこっちです」とか回答が来たりすることがあったので、取引は慎重に進める必要があります。
レンズを交換し、ピント調整したカメラを並べて、固定するリグを3Dプリンタなどで作りますが、一般的な工作技術なので、ここでは割愛します。
尻切れトンボですが、このあたりで失礼します。
ステッチ量産の一方法
ayaです。
Advent Calender用の記事です。
最近はオンカメラステッチや備え付けのステッチソフトと連動している360カメラが増えてきて、自作360カメラ→ステッチソフトのワークフローで処理する方は少なくなったのかもしれません。時代遅れな話かもしれませんが、よろしければお付き合いいただけると幸いです。
これはKolor社のAVP 2.6.2 windows版の話です※。
同じシーンで複数カット撮影している場合、カメラ条件やステッチ条件を変えず、同じステッチを繰り返すことがあります。ただ、カット間で背景のシーム位置が変わったりすると下流の編集で困りますので、マスクの当て方も完全に同一にしたくなります。
標準的な使い方としては、stichのメニューの中でpanoファイルの選択を行います。
これでも欲しい機能は満たせますが、動画ファイルをD&Dして読み込ませる手間がまどろっこしさを感じていました。
kavaファイルをワードパッドで開いてみます。kavaファイルがテキストファイルであることは、電塾で教えてもらいました。いつもお世話になっています。
入力している動画のファイル名が見つかりますので、ファイル名をカット間で統一していれば、同じkavaファイルを使いまわせそうです。(注意:ファイル上書きの危険性があるので、作業に取り掛かる前にバックアップしておくことが前提です。)
試しにこのまま起動してみると、当たり前ですがエラーが起きます。
今のファイル構成がこちらです。jpgファイルは要らないかもしれません。
kavaファイルを訂正した内容に合わせ、ファイル名を変更します。
kavaファイルを起動すると、今度は、うまくAVPを騙せました。
別の動画ファイルのセットに変えたときは、シンクロしなおすのをお忘れなく。
同様な手法をAutoPanoのpanoファイルでも使えます。APG4.4を使っていますが、なぜかテンプレートからマスクのデータを反映させる方法がわからず、仕方なく、この方法を使っています。どなたかご教示いただけると助かります。
ところで、kavaファイルの中を見ていると、マスクの位置やCPの位置などがテキストで表記されているので、この部分を修正すると、細かい調整を手入力で訂正できるのかもしれません。
また、PTGuiやMistikaVRなどのステッチソフトのプロジェクトファイルもワードパットで中身を読めたりするので、いろいろと解析して遊べそうです。
※
AutoPanoVideoは最新バージョンが3に上がっています。3での挙動は未確認です。デゴースティング技術のD-Warpが当初はOmniのみ有効だったので、少し足が遠ざかってしまいました。
いまさら?自作360カメラの作り方 設計編
ayaです。
Advent Calender用の記事です。
insta360やThetaなど、たくさんの360カメラが市販され、自作しなくても良くなりました。
どうしてもこのカメラの画づくりが好きなど、特別なこだわりで360カメラを自作したいときに参考になれば幸いです。
参考にしているのは、こちらの本です。
「この一冊ですべてがわかる!360度VRパノラマ制作 パーフェクトガイド」
https://www.amazon.co.jp/dp/B00O8GIL76
(2012年の本ですが、基本から応用まで網羅しているすごい本です。新しい手法を発明したと思っていても、大抵、この本に書いてあったりします。)
本当に設計するのであれば、記録する解像度や実質的な解像度(画角当たりの解像本数)を決めて、カメラのセンサ解像度や画角と相談し、大まかな台数を決めます。
そのとき気にするのは、画角のオーバーラップ率です。
ステッチすることだけを考えれば、一般的に、オーバーラップ率は20%程度と聞いています。
が、動画のカメラの場合は、20%では足りなくなる可能性があることが注意点だと考えています。
例えば、よくある構成として、HFOV185deg, VFOV120degのカメラを縦向きにして4台使う場合、水平方向は4 x 120 = 480degになるので、480 / 360 - 100%= 33%です。
オーバーラップを検証する場合、PTGuiやAutoPanoなどステッチソフトを使います。例えば、こんな感じのチャートをパワポなどで作って、ステッチソフトに入力します。
等距離射影のレンズの場合、書きやすいです。現実には半径ひずみがあるので、計算するときのマージンをとっておく方がよいです。
PTGuiに入力したときのイメージ画像がこちらです。
UnityやBlenderなどでカメラ出力をレンダリングした画像を入力してみると、ステッチソフトのカメラパラメータの挙動を解析できて面白いです。
さて、前述の注意点というのは、動画で全方向を同時撮影する場合、物理的にレンズのノーダルポイントを一致できず、近い距離でオーバーラップしない部分ができるということです。
ノーダルポイントの影響は、Kolor社のこちらのページのwith parallaxを参照ください。
http://www.kolor.com/wiki-en/action/view/Autopano_Video_-_Parallax_200
パララックスがあるので、被写体の距離が近づくほど、オーバーラップ率が下がり、ある距離でゼロになります。
私はCADや3D CGソフトでビューコーンを並べ、360が破たんしない最短撮影距離を設計的に把握します。
オーバーラップ率を高めにする配慮は、最短撮影距離を小さくするためです。
大型の高性能カメラを使うとパララックスが大きくなりやすいので、最短撮影距離の配慮は特に不可欠だと思います。
以上、基本的なところだけですが、個人的な検討活動の償却になり恐縮です。
次回の作製編に続きます。
360撮影で気をつけている点・個人的な一考察
ayaです。
360映像制作は4年目の新参者です。
Advent Calender用の記事です。
撮影で気をつけているのは、
横や後ろを向いたときに、向いて良かったと思えるように、
何かの情報があるようにすることです。
カメラの位置や向きを変えた時の見え方の違いを調べるため、
静止画ですが、いくつか撮ってみました。使用したカメラはinsta360 airです。
すみませんが、明るさや色の調整はしていません。
クリスマスツリーと内装がきれいなことを見てほしかったです。
take1:
ツリーが小さすぎだし、写真の左の方の部分に、建物の奥行きが感じられない。
take2:
立つ位置を少しずらすと、
写真の左の方の部分に、奥行きを感じてもらえると思いました。
でも、ツリーが小さすぎです。
take3:
もう少し寄ってみると、
階段の様子も面白くなりましたが、足元が乱れています。
このカメラは自動ステッチですが、視野の境目は配慮してあげた方が良さそうです。
まだ、ツリーが小さいです。
take4:
寄ってみると、
ツリーの上の方の変形が強すぎて、ツリーが不安定に見えます。
(水平補正を頑張ってみましたが、これが限界でした。)
もうちょっと離れた方がよいかもしれないです。
take5:
もう少し離れてみると、
モブもいい感じに入っていて、好きな感じになってきました。
ただ、カメラの位置が高すぎなので、人が潰れ気味。
もう低い位置に変えた方がよいかもしれません。
広角になるほど、
余計なものが映り込んだり、被写体が小さく映ってしまったり、
難しくなるのですが、
360撮影は究極の広角のように感じています。
フレームはありませんが、
ちょっとした位置の違いで見え隠れの様子が変わりますし、
HMDで見る場合はカメラの高さが重要だったりします。
今後も研鑽していきたいです。