2016/04/05(火) [n年前の日記]
#1 [cg_tools] Vue 5 Easelのパノラマ画像出力をアレコレ試してたり
Vue 5 Easel で360度パノラマ画像を生成して Cubemap画像にする実験をしてたのだけど。天井と真下の地面が歪むというか萎んだような見た目になるのが気になって。別の方法で Cubemap画像を作れないものかなと実験を。
そこで試しに、Vue上で6方向=6個のカメラ(画角は90度)を生成して、6枚レンダリングしてCubemapを作ってみたり。
各結果画像は、CC0 / Public Domain ってことで。お好きにどうぞ。
そこで試しに、Vue上で6方向=6個のカメラ(画角は90度)を生成して、6枚レンダリングしてCubemapを作ってみたり。
各結果画像は、CC0 / Public Domain ってことで。お好きにどうぞ。
◎ Vue 5 Easelの画角指定。 :
Vue 5 Easel には、カメラの画角を設定するオプションが無い。焦点距離しか設定できない。ただ、焦点距離を18mmにしたら、画角が90度になってくれた、ような気がする。
そのあたり、 _Vueのカメラ設定 - 日々適当 という記事が大変参考になった。ありがたや。「35mmフィルムの値が36mm x 24mm」と仮定すると、焦点距離 = (36 / 2) / tan(水平画角 /2) になるらしい。水平画角90度として計算すると、焦点距離は 18mm ということになる。
そのあたり、 _Vueのカメラ設定 - 日々適当 という記事が大変参考になった。ありがたや。「35mmフィルムの値が36mm x 24mm」と仮定すると、焦点距離 = (36 / 2) / tan(水平画角 /2) になるらしい。水平画角90度として計算すると、焦点距離は 18mm ということになる。
◎ Vue 5 Easelでのカメラ追加手順。 :
Vue 5 Easel で、6方向のカメラを追加する手順は…。
各カメラの切り替え方は、色々。
カメラの向きは「数値」タブ(物差しみたいなアイコン)をクリックして、左側のアイコンの中の「方向」を選べば指定できる。ピッチは90度、ヨーが0度、ロールが、0,90,180,270度、みたいな感じで指定。天井と真下は、ピッチを0度と180度にすればいい。
- メニューの表示 → カメラ生成。
- もしくは、Ctrl + テンキーの「.」。
各カメラの切り替え方は、色々。
- カメラが生成されるたびに、Ctrl + テンキー2、Ctrl + テンキー3 といった感じでショートカットキーが割り当てられるので、該当キーを押してカメラの切り替えができる。
- あるいは、右上の「メインカメラ」ウインドウ内、「メインカメラ」の横の小さな三角を押して他のカメラを選べる。
- もしくは、表示 → カメラ選択。
- はたまた、「メインカメラ」ウインドウの左にあるアイコンをクリックするとカメラマネージャが開くので、そこから切り替え。
カメラの向きは「数値」タブ(物差しみたいなアイコン)をクリックして、左側のアイコンの中の「方向」を選べば指定できる。ピッチは90度、ヨーが0度、ロールが、0,90,180,270度、みたいな感じで指定。天井と真下は、ピッチを0度と180度にすればいい。
◎ 結果画像。 :
出来上がった画像は、360度パノラマ画像から作ったソレとは随分違う画像になった。
_panorama03c_cross_a.png (2.8MB) が、6方向のカメラでレンダリングした画像を並べた Cubemap 画像。
_panorama03c_cross_b.png (2.5MB) が、360度パノラマ画像から生成した Cubemap 画像。これは、画像の横:縦=1:1で360度パノラマ画像をレンダリング → GIMP で縦方向を1/2に縮小して 2:1 の画像に → そこから、 _PanoramaToCubemapConverter を使って Cubemap画像を生成したもの。
さておき。6方向のカメラでレンダリングしたソレは…。
対して、360度パノラマ画像から作ったソレは…。
まあ、後者はGIMPで縦方向を1/2にしてるんだから、オブジェクトが小さくなって当たり前じゃないのか、という気もするけれど。しかし、Vue が360度パノラマ画像をレンダリングする際、縦方向180度をレンダリングしてるなら、縦を1/2にするだけで正距円筒図法に近い結果になりそうな気も。いや、ならないのかな。どうなんだ。
とにかく、Vue で360度パノラマ画像をレンダリングした際、天井と真下が歪むのも妙だし、縦方向をどんな比率でレンダリングしているのかもよく分からないわけで…。どうも怪しい。というか、どんな前提でレンダリングしてるのか、そこが分からない。
とりあえず、6方向のカメラでレンダリングするソレは、6回手作業でカメラ切り替え・画像保存をしなきゃいけないのが面倒だけど、その時間を含めても360度パノラマをレンダリングするより総レンダリング時間が速かったので…。Vue 5 Easel で Cubemap を作る際は、6個カメラを用意するソレで作業したほうが良さそうだなと。面倒だけど。
ちなみに、Vueの現行版・上位バージョンは、レンダリング時のオプションで「球面パノラマレンダリング」とやらがあるらしいし、画像比率も自由に設定できるらしいので、ちゃんと正距円筒図法でレンダリングできるのだろうと想像。 _Vueのパノラマレンダリング - 日々適当 によると、Spherical Render てのがソレっぽい。
_panorama03c_cross_a.png (2.8MB) が、6方向のカメラでレンダリングした画像を並べた Cubemap 画像。
_panorama03c_cross_b.png (2.5MB) が、360度パノラマ画像から生成した Cubemap 画像。これは、画像の横:縦=1:1で360度パノラマ画像をレンダリング → GIMP で縦方向を1/2に縮小して 2:1 の画像に → そこから、 _PanoramaToCubemapConverter を使って Cubemap画像を生成したもの。
さておき。6方向のカメラでレンダリングしたソレは…。
- 当然ながら天井も地面もちゃんと歪まずにレンダリングできてる。
- 画像の変換処理が入らないので画像が荒れない。
- 何より、オブジェクトが縦方向に大きくなってる。
対して、360度パノラマ画像から作ったソレは…。
- 何故か天井と真下が歪む。
- 画像の変換処理が何度か入るので画像が荒れる。
- オブジェクトが縦方向に小さい。
まあ、後者はGIMPで縦方向を1/2にしてるんだから、オブジェクトが小さくなって当たり前じゃないのか、という気もするけれど。しかし、Vue が360度パノラマ画像をレンダリングする際、縦方向180度をレンダリングしてるなら、縦を1/2にするだけで正距円筒図法に近い結果になりそうな気も。いや、ならないのかな。どうなんだ。
とにかく、Vue で360度パノラマ画像をレンダリングした際、天井と真下が歪むのも妙だし、縦方向をどんな比率でレンダリングしているのかもよく分からないわけで…。どうも怪しい。というか、どんな前提でレンダリングしてるのか、そこが分からない。
とりあえず、6方向のカメラでレンダリングするソレは、6回手作業でカメラ切り替え・画像保存をしなきゃいけないのが面倒だけど、その時間を含めても360度パノラマをレンダリングするより総レンダリング時間が速かったので…。Vue 5 Easel で Cubemap を作る際は、6個カメラを用意するソレで作業したほうが良さそうだなと。面倒だけど。
ちなみに、Vueの現行版・上位バージョンは、レンダリング時のオプションで「球面パノラマレンダリング」とやらがあるらしいし、画像比率も自由に設定できるらしいので、ちゃんと正距円筒図法でレンダリングできるのだろうと想像。 _Vueのパノラマレンダリング - 日々適当 によると、Spherical Render てのがソレっぽい。
◎ 出来上がった画像がCubemapとして使えるかどうか。 :
以下の Processing で、両方の画像を切り替えながら表示確認してみたところ、一応それらしく見えてるっぽいので、まあ、使えるんじゃないかと。
_sketch_cubemap_test2 (Processing.js版)
_sketch_cubemap_test2.pde (ソース)
_sketch_cubemap_test2 (Processing.js版)
_sketch_cubemap_test2.pde (ソース)
◎ 正距円筒図法の画像かどうかを検証できるツール。 :
ググってたら、
_aitch-two/THETATools: Paint.net Plugins for RICOH THETA
というプラグインに遭遇。
_paint.net
上で、
_360度を一度に撮影できる RICOH THETA
の画像を編集できるプラグイン、らしい。
THETAの画像は、おそらく正距円筒図法だと思うので、このプラグインを使えば自作画像が該当図法になってるか検証できそうな気がする。
_akokubo/ThetaViewer: RICOH THETA like equirectangular projection panorama HTML5 viewer という、ブラウザ上で動くビューアも役に立ちそう。ローカルでは動かないので、どこかのサーバにアップロードして動かす必要があるけど。自分の場合は、メインPC上で動いてるIISのドキュメントフォルダ以下にファイル群をコピーして使ってみたり。
THETAの画像は、おそらく正距円筒図法だと思うので、このプラグインを使えば自作画像が該当図法になってるか検証できそうな気がする。
_akokubo/ThetaViewer: RICOH THETA like equirectangular projection panorama HTML5 viewer という、ブラウザ上で動くビューアも役に立ちそう。ローカルでは動かないので、どこかのサーバにアップロードして動かす必要があるけど。自分の場合は、メインPC上で動いてるIISのドキュメントフォルダ以下にファイル群をコピーして使ってみたり。
◎ 甘かった。 :
別のシーンデータで、6方向のカメラを作ってレンダリングしてみたら、おかしなことになった。
_panorama02c_cross_a.png (8.8MB)
同じシーンデータでも、大気設定を変更すれば、おかしくならない状態になるときもあるのだけど。
_panorama02d_cross_a.png (8.5MB)
しかしコレでは、暗い風景しか作れない。やっぱり一度で全部レンダリングする方法を見つけないとダメっぽい。
まあ、Vue 5 Easel を使ってこのへんどうにかしようというのが、そもそも無理なんじゃないかと。blender を使えば最初から正距円筒図法でレンダリングできるという情報も見かけたので、そっちを使ってどうにかしようと試みるほうがマシかも。地形データを作るのが一苦労だろうけど。あるいは、もしかすると Terragen 3 あたりを使ったほうがいいのかも。
Vue、使えそうで使えねえ。まあ、古くて安い版だから、ですけど。
_panorama02c_cross_a.png (8.8MB)
- レンズフレアが入ってる画像と入ってない画像がある → 画像の端が全然繋がってない。
- 明度が異なってる画像がある → 画像の端が綺麗に繋がってない。
同じシーンデータでも、大気設定を変更すれば、おかしくならない状態になるときもあるのだけど。
_panorama02d_cross_a.png (8.5MB)
しかしコレでは、暗い風景しか作れない。やっぱり一度で全部レンダリングする方法を見つけないとダメっぽい。
まあ、Vue 5 Easel を使ってこのへんどうにかしようというのが、そもそも無理なんじゃないかと。blender を使えば最初から正距円筒図法でレンダリングできるという情報も見かけたので、そっちを使ってどうにかしようと試みるほうがマシかも。地形データを作るのが一苦労だろうけど。あるいは、もしかすると Terragen 3 あたりを使ったほうがいいのかも。
Vue、使えそうで使えねえ。まあ、古くて安い版だから、ですけど。
[ ツッコむ ]
以上です。