LoginSignup
39
34

360度カメラの撮影像からモデリングする

Last updated at Posted at 2024-03-25

RICOH THETAやinsta360といった 上下左右360度一気に撮影できる
全天球カメラというのがあります

Blenderのシェーダーを利用して撮影空間をラフに再現する方法を解説したいと思います
22021101-.gif

オブジェクト基準の座標と座標変換

360度カメラの撮影データは正距円座標の画像データとして取得できます
また、Blenderシェーダーには 特定のオブジェクトを基準にした座標を取得する機能があります
つまり うまく撮影座標とオブジェクトの位置を計算できれば 撮影空間を再現できます

空間上の任意の座標x,y,zを正距円筒図法[u,v]に変換する式は
$u = atan(x/y)$
$v = atan(z/sqrt(x^2 + y^2))$
となり

これをBlenderのシェーダーのノードで再現するとこうなります
image.png
u,v それぞれが360度や180度をラジアン変換で除算されているのは
シェーダーでの角度の単位がラジアンで テクスチャの座標が0.0~1.0の値で表されるため
Y座標で0.5を引いているのはカメラの位置が画像の中心を表すようにするオフセットです
キャプチャは円筒の面を反転した状態で裏面を非表示状態にしています

モデリング

撮影条件の疑似的な再現の場合には 円筒や球体への投影だけでいいかもしれませんが
シェーディング状態のままモデルの編集ができるBlenderの利点を利用した
もう少し細かいモデルの作成方法を例示したいと思います

まずは さきほど基準に設定したEmptyオブジェクトを撮影時のカメラの高さに合わせて
地面位置に合わせた面を作成してみました
image.png
大まかな床面の形は合ってそうに見えますね
鉛直方向の板ポリゴンを床との境目に作成すれば壁が作れます。
このように 撮影地の既知のデータを基準に未測定だったものも含めた空間の再現ができます
image.png

冒頭の動画作成時は壁は間取り図でも既知だったので壁面を配置して
さらに細かいディテールは壁面に辺を追加した上で押し出しといった方法で作っています

活用例

今回の例は以前の引越しの検討先で 家具を置いてみたらどうなるのかを検証に使った時のものです
22032701.png
複数のカメラの結果をミックスして ここまで例示したものよりも広い範囲を2時間程度で作れました

BlenderにはVRヘッドセットを使ってビューをVR表示するアドオンもあるので
この時はVR空間で家具の収まり具合を確認しました

また、この方法でビル街を撮影して地上からの見え方を再現するといったこともやりました
image.png
地道な手段ではありますが応用の効く方法ではないかなと思います。

尚、360度カメラの撮影像も 光学的特性から実際には正確な円筒座標ではありませんので
校正データを作成して業務に使用しています
校正データの作成方法や使用法の概要も以前記事にしましたので参考にしてください
https://qiita.com/yukimituki11/items/c357b40021ce456d8a36

何かの参考になれば幸いです

39
34
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
39
34