Blender ウォッチング
無料の「Blender」で凹凸の少ないレリーフをリアルな立体に変えるテクニック
2024年2月19日 16:40
本連載では、無料の高機能3Dモデリングツール「Blender」の使い方や関連情報を幅広くお伝えします。
今回も引き続き、「Marigold Depth Estimation」を使用した、画像からの深度生成を活用してみます。
深度画像を調整できるようにしたい!
前々回の記事で、Marigold Depth Estimation サイトから3Dモデルを色々出力した時に気づいたのですが、生成された深度の変化が近景と遠景で違いがあります。
例えば以前に例としてあげたバラのモデルですが、下から覗くと葉の部分は厚みがある一方、近景の花びら部分はあまり立体的ではなく、圧縮されたようになっています。
そのため、今回は「Marigold」のページからではなく、「Blender」で深度情報から同様の3Dモデルを作成し、深度を調整できるようにしてみたいと思います。
準備
前々回の記事を参考に深度画像を作成し、「16ビットの白黒PNG形式」(~_depth_16bit.png)をダウンロードしておきます。解像度はデフォルトの[Recommended]を推奨します(「棘」が発生するため。詳しくは次回にて)。
実際に試してみたい方は、以下の画像をダウンロードしてください。
「Blender」を立ち上げておきます。ちなみに今回、デフォルト立方体はそのままでOKなので、今まで心を痛めていた方も安心!
ジオメトリノードによるディスプレイスメント
「ディスプレイスメント」とは、「移動」や「変位」を意味する単語ですが、3DCGでは主にテクスチャ画像でモデルの「頂点」を移動して変形する機能を指します。
「Blender」にはこれを行う方法がいくつかありますが、今回は調整と応用のしやすさから、「ジオメトリノード」機能を使用することにします。
変形するグリッドの作成
細分化した平面を深度情報で変形するため、前々回Webページから出力された3Dデータのように、「Blender」でも最初に深度画像と比率を合わせた「グリッド」を作成します。
- [追加]-[メッシュ]-[プリミティブ]-[グリッド]メニューで[グリッド]ノードを追加します。
- 最初にある[グループ入力]ノードと[グループ出力]ノードの間の線上に移動します。
- [グリッド]ノードの[サイズX][サイズY]に元画像の横と縦の比率を、[頂点X]、[頂点Y]に横と縦の各比率に「+1」した値を設定します。
[グループ入力]ノードとの線が切れますが、以降はこのノードを使いませんので気にしないでください。
変形用ノードの追加
変形するグリッドができたので、次は深度画像で変形できるようにします。
位置設定ノードの追加
変形は頂点の移動によって行うため、[位置設定]ノードを使用します。
- [追加]-[ジオメトリ]-[書込]-[位置設定]メニューを実行します。
- [メッシュ細分化]ノードと[グループ出力]ノードの間の線上に割り込ませます。
深度画像([画像テクスチャ]ノード)の追加
次に[画像テクスチャ]ノードを追加し、深度情報を[位置設定]ノードに渡すようにします。
テクスチャとグリッドとの関連付けには「UV座標」を利用します。
- [追加]-[テクスチャ]-[画像テクスチャ]メニューで[画像テクスチャ]ノードを追加し、[メッシュ細分化]ノードの下に移動しておきます。
- 中の「フォルダーアイコン」をクリックし、深度画像を指定します。
- [画像テクスチャ]ノードの[ベクトル]ソケットを[グリッド]ノードの[UVマップ]ソケットに、[カラー]ソケットを[位置設定]ノードノードの[オフセット]ソケットにそれぞれつなげます。
- 「リピート」と表示されている項(端の処理)を「延長」に変更します。
終わりに
とりあえず深度画像で変形できましたが、まだ形状が反転していますね。
次回はこれを直して調整できるようにし、さらにマテリアルも設定します。
ではまた。