2023/05/28(日) [n年前の日記]
#1 [blender] blenderのImportDepthMapアドオンの使い方が分かってきたのでメモ
blenderのアドオンとして、ImportDepthMapというものを見かけたのだけど、使い方が少し分かってきたのでメモ。環境は、Windows10 x64 22H2 + blender 3.3.7 x64 LTS。
どういうアドオンかと言うと、カラー画像とデプスマップ画像(深度マップ、z map)を読み込んで、2.5D的なモデルデータを作ってくれる。モデルデータと言っても、実体は一枚の平面(4角形ポリゴン)で、それをサブディビジョンサーフェイス、ディスプレイス等のモディファイアで立体物っぽく見せてる模様。
例えば、以下の2枚の静止画像から…。
_00027-2356436114_upscayl_4x_realesrgan-x4plus.jpg
_00027-2356436114.png
_00027-2356436114.depth.zoe.png
以下のような形状を作って…。
以下のような動画が作れたりする。
どういうアドオンかと言うと、カラー画像とデプスマップ画像(深度マップ、z map)を読み込んで、2.5D的なモデルデータを作ってくれる。モデルデータと言っても、実体は一枚の平面(4角形ポリゴン)で、それをサブディビジョンサーフェイス、ディスプレイス等のモディファイアで立体物っぽく見せてる模様。
例えば、以下の2枚の静止画像から…。
_00027-2356436114.png
以下のような形状を作って…。
以下のような動画が作れたりする。
◎ アドオンの入手先 :
以下から入手できる。
_Serpens-Bledner-Addons/Serpens3 at main - Ladypoly/Serpens-Bledner-Addons - GitHub
今回は importdepthmap_1.1.1.zip を入手。
_Serpens-Bledner-Addons/Serpens3 at main - Ladypoly/Serpens-Bledner-Addons - GitHub
今回は importdepthmap_1.1.1.zip を入手。
◎ インストール :
一般的なアドオンと同様の手順でインストールすればいい。一応メモしておくけど…。
編集 → プリファレンス、を選択。
アドオン → インストール、をクリック。
importdepthmap_1.1.1.zip を選択して、「アドオンをインストール」をクリック。
「Import-Export: ImportDepthMap」にチェックを入れて有効化。
編集 → プリファレンス、を選択。
アドオン → インストール、をクリック。
importdepthmap_1.1.1.zip を選択して、「アドオンをインストール」をクリック。
「Import-Export: ImportDepthMap」にチェックを入れて有効化。
◎ 使い方 :
ファイル → インポート → Import Depth Map、を選択。
続いて、カラー画像やデプスマップ画像を選択するのだけど、ここでちょっと注意。このアドオンは2つの方法で画像を読み込める。
今回は、Aの流れ、カラー画像とデプスマップ画像が別々になってるやり方で読み込む。
まずはカラー画像を選択して読み込む。その際、右上の、「Separate Depth Map」にチェックを入れて、カラー画像とデプスマップ画像を分けて読み込むように指定する。もし、該当項目が表示されてなかったら、右上の歯車っぽいアイコンをクリックすれば該当項目(オプション設定)が表示される。たぶん。
カラー画像を選択し終わると、次に、デプスマップ画像を選ぶためのファイル選択ダイアログが開く。デプスマップ画像を選んで、「Load Depth Image」をクリック。
これで、デプスマップが反映された形状が出現する。
この状態だと分かりづらいので、右上のアイコンをクリックして、レンダープレビューに切り替える。これでテクスチャが反映された状態で表示される。
一応、1枚の画像を読み込んで済ませる場合についても説明。要は、以下のような見た目の画像を用意すればいいらしい。こういう状態の画像であれば、ファイル選択時に1回の指定で済む。
_00027-2356436114.src_and_zoe.png
ただし、この状態の画像を読み込んだ場合、3Dビューのシェーディングモードの設定によっては、カラー画像部分とデプスマップ画像部分の両方がモデルに割り当てられた状態で表示されてしまうこともある。
個人的には、カラー画像とデプスマップ画像は別々にしておいたほうが問題が起きにくい気もした。別々の画像にしておけば、デプスマップだけを差し替えて様子を見てみたり、カラー画像だけを高解像度の画像で差し替えて、より奇麗な見た目にすることもできるので…。
尚、このアドオンを利用して用意した形状は、レンダーエンジンが Eevee でもそれらしくレンダリングされる模様。レンダーエンジンを Workbench に変更しなくてもいい。
続いて、カラー画像やデプスマップ画像を選択するのだけど、ここでちょっと注意。このアドオンは2つの方法で画像を読み込める。
- A: カラー画像を1枚、デプスマップ画像を1枚用意して、別々に読み込む。
- B: カラー画像の右隣りにデプスマップ画像をくっつけた状態の1枚の画像を用意して、1回で読み込む。
今回は、Aの流れ、カラー画像とデプスマップ画像が別々になってるやり方で読み込む。
まずはカラー画像を選択して読み込む。その際、右上の、「Separate Depth Map」にチェックを入れて、カラー画像とデプスマップ画像を分けて読み込むように指定する。もし、該当項目が表示されてなかったら、右上の歯車っぽいアイコンをクリックすれば該当項目(オプション設定)が表示される。たぶん。
カラー画像を選択し終わると、次に、デプスマップ画像を選ぶためのファイル選択ダイアログが開く。デプスマップ画像を選んで、「Load Depth Image」をクリック。
これで、デプスマップが反映された形状が出現する。
この状態だと分かりづらいので、右上のアイコンをクリックして、レンダープレビューに切り替える。これでテクスチャが反映された状態で表示される。
一応、1枚の画像を読み込んで済ませる場合についても説明。要は、以下のような見た目の画像を用意すればいいらしい。こういう状態の画像であれば、ファイル選択時に1回の指定で済む。
_00027-2356436114.src_and_zoe.png
ただし、この状態の画像を読み込んだ場合、3Dビューのシェーディングモードの設定によっては、カラー画像部分とデプスマップ画像部分の両方がモデルに割り当てられた状態で表示されてしまうこともある。
個人的には、カラー画像とデプスマップ画像は別々にしておいたほうが問題が起きにくい気もした。別々の画像にしておけば、デプスマップだけを差し替えて様子を見てみたり、カラー画像だけを高解像度の画像で差し替えて、より奇麗な見た目にすることもできるので…。
尚、このアドオンを利用して用意した形状は、レンダーエンジンが Eevee でもそれらしくレンダリングされる模様。レンダーエンジンを Workbench に変更しなくてもいい。
◎ 仕組みを少し調べた :
どういうモディファイアが適用されているのか眺めてみた。
まず、元になってるオブジェクトは平面一枚で、細分化はされていなかった。4つの頂点で構成された1枚のポリゴンだけが存在している。
適用されているモディファイアは、以下の4種類。
それぞれ、以下のような状態が指定されている。
おそらくだけど…。
NormalEditとやらは何の効果をかけているのか分らなかった。表示の有効無効を切り替えても見た目の変化がなかったので…。これをかけておかないと何か問題が出てきてしまう状況があるのかもしれない。
ちなみに。
まず、元になってるオブジェクトは平面一枚で、細分化はされていなかった。4つの頂点で構成された1枚のポリゴンだけが存在している。
適用されているモディファイアは、以下の4種類。
それぞれ、以下のような状態が指定されている。
おそらくだけど…。
- サブディビジョンサーフェイスの「シンプル」を使って、平面を細分化したものと同様の状態にして、
- ディスプレイスでデプスマップ画像に基づいて頂点の位置を変更、
- 最後にサブディビジョンサーフェイスをかけて全体の形状を滑らかに、
NormalEditとやらは何の効果をかけているのか分らなかった。表示の有効無効を切り替えても見た目の変化がなかったので…。これをかけておかないと何か問題が出てきてしまう状況があるのかもしれない。
ちなみに。
- カラー画像を変更したい → マテリアルプロパティで、カラー、及び、放射で指定されているテクスチャ画像を差し替える。
- デプスマップを変更したい → テクスチャプロパティで指定されているテクスチャ画像を差し替える。
◎ カラー画像とデプスマップが1つになってる画像について :
カラー画像とデプスマップ画像が繋がってる画像がどうして使われてるのかと疑問だったけど、以下で紹介されてる Stable Diffusion web UI の拡張機能が関係してそうな気がしてきた。
_Stable Diffusion WebUIを使ってDepth画像を作成して立体視を楽しむ|Alone1M
カラー画像とデプスマップ画像を自動で繋げて出力してくれる拡張機能が存在しているらしい。blender の ImportDepthMapアドオンは、その拡張機能を利用することが前提で作られていたのかもしれない。
_Stable Diffusion WebUIを使ってDepth画像を作成して立体視を楽しむ|Alone1M
カラー画像とデプスマップ画像を自動で繋げて出力してくれる拡張機能が存在しているらしい。blender の ImportDepthMapアドオンは、その拡張機能を利用することが前提で作られていたのかもしれない。
◎ 本来作られるべき形状 :
[ ツッコむ ]
#2 [cg_tools] MiDaSを動かしてみたいのだけどやり方がわからない
1枚の静止画像から奥行き情報を推測してデプスマップを作ってくれる MiDaS というアルゴリズム? AI? があって、画像生成AI Stable Diffusion web UI の ControlNet でも使えるのだけど。本家版には更に強力な学習データが存在しているようで、それを使うとどのくらい結果が違ってくるのか気になった。ちょっと試してみたいのだけど…ローカルでどうやって動かせばいいのか、そこがさっぱり分らない…。
_MiDaS | PyTorch
_GitHub - isl-org/MiDaS: Code for robust monocular depth estimation described in "Ranftl et. al., Towards Robust Monocular Depth Estimation: Mixing Datasets for Zero-shot Cross-dataset Transfer, TPAMI 2022"
PyTorch なるPythonモジュールが関係してるっぽいのだけど、他に何のモジュールをインストールすれば使えるようになるのか…。おそらくだけど、AI関係の研究をしてる人達にとって常識レベルの部分は、公式ドキュメント内でバッサリ説明が省かれている気がする…。そのへん分かんないヤツは手を出すな、みたいな感じなのかな…。
_単眼深度推定モデル MiDaS の解説と SageMaker へのデプロイ - Qiita
_画像から深度を推定するMiDaS - Qiita
_単眼カメラの撮影画像に、学習済みの深度推定器を使ってみた(MacOS CPU) - Qiita
_MiDaS Webcamを用いてリアルタイム単眼深度推定してみた - Qiita
動作環境に Windows10 の記述が見えるので、ローカルでも動くのは間違いないのだろうけど…。
_MiDaS | PyTorch
_GitHub - isl-org/MiDaS: Code for robust monocular depth estimation described in "Ranftl et. al., Towards Robust Monocular Depth Estimation: Mixing Datasets for Zero-shot Cross-dataset Transfer, TPAMI 2022"
PyTorch なるPythonモジュールが関係してるっぽいのだけど、他に何のモジュールをインストールすれば使えるようになるのか…。おそらくだけど、AI関係の研究をしてる人達にとって常識レベルの部分は、公式ドキュメント内でバッサリ説明が省かれている気がする…。そのへん分かんないヤツは手を出すな、みたいな感じなのかな…。
_単眼深度推定モデル MiDaS の解説と SageMaker へのデプロイ - Qiita
_画像から深度を推定するMiDaS - Qiita
_単眼カメラの撮影画像に、学習済みの深度推定器を使ってみた(MacOS CPU) - Qiita
_MiDaS Webcamを用いてリアルタイム単眼深度推定してみた - Qiita
動作環境に Windows10 の記述が見えるので、ローカルでも動くのは間違いないのだろうけど…。
[ ツッコむ ]
以上、1 日分です。