Blender ウォッチング

無料の「Blender」で1枚の写真から3Dモデルを作る方法 最終章

 本連載では、無料の高機能3Dモデリングツール「Blender」の使い方や関連情報を幅広くお伝えします。

TIPの項の「スムーズシェード設定」や深度画像のぼかしを行った画像

 今回も引き続き、「Marigold Depth Estimation」の深度生成画像によるディスプレイスメント用のジオメトリノードを生成していきます。

Floatカーブノードの追加

 これでとりあえず変形はしましたが、逆方向に移動してしまっています。調整もしたいので、調整用ノードを追加します。

  1. [追加][ユーティリティ]-[数式]メニューの[Floatカーブ]を実行します。
  2. [画像テクスチャ]ノードと[XYZ合成]ノードの間の線上にこのノードを移動して割り込ませます。
[追加]メニューから[ユーティリティ]-[数式]-[Floatカーブ]を実行し、[画像テクスチャ]ノードと[XYZ合成]ノードの間の線上に移動して割り込ませる

 ノードエディター内は中マウス(ホイール)ボタンドラッグで移動、ホイール回転でズームできます。ヘッダーなどのインターフェイスも移動が可能です。

 デフォルトではカーブが右肩上がりになっていますが、左右の端の「制御点」をそれぞれドラッグし、左肩上がりにします。

カーブの左右の端の「制御点」をドラッグし、左肩上がりにする

 これでとりあえずちゃんと変形されるようになりました。

マテリアルの追加と深度画像の色空間の設定

 調整に入る前に、このモデルに元画像を貼り付け、調整しやすくします。

 ジオメトリノードでモデルを生成している都合で、少し手間がかかります。

元画像と深度画像の画像テクスチャノードの追加

  1. 画面上部の[シェーディング]タブをクリックします。
  2. すでにマテリアルは設定されているので、元画像をシェーダーエディターにドラッグ&ドロップして[画像テクスチャ]ノードを追加します。
  3. このノードの[カラー]ソケットと、[プリンシプルBSDF]ノードの[ベースカラー]ソケットをつなぎます。
画面上部の[シェーディング]タブ(①)をクリックし、元画像をシェーダーエディターに[画像テクスチャ]ノードとして追加後(②)、[カラー]ソケットと、[プリンシプルBSDF]ノードの[ベースカラー]ソケットをつなぐ(③)

 そしてUV座標をジオメトリノードと受け渡しする(後述)ため、[属性]ノードを追加します。

  1. [追加]メニューから[入力]-[属性]を実行し、このノードの[ベクトル]と[画像テクスチャ]ノードの[ベクトル]をつなぎます。
  2. [属性]ノードの[名前]に「UV」と入力します。

 まだ3Dビューポートに変化は現れませんが、ジオメトリノード側で設定した後に表示されるようになります。

[追加]-[入力]メニュー(①)から[属性]を実行し、このノードの[ベクトル]と[画像テクスチャ]ノードの[ベクトル]をつないだ後(②)、[属性]ノードの[名前](③)に「UV」と入力

 さらに、[追加]-[テクスチャ]メニューから[画像テクスチャ]で[画像テクスチャ]ノードを追加し、中の「画像アイコン」(下図)をクリックして「深度画像」の名前を選択し、[色空間]を「非カラー」にします。

 なお、 このノードはどこにもつなげず適当な場所に配置 してください。これは執筆時点ではジオメトリノード内のメニュー(①)からノードでは色空間が変更できない「Blender」の制限があったためです。

[追加]-[テクスチャ]メニュー(①)から[画像テクスチャ]を実行、「画像アイコン」(②)をクリックして「深度画像」の名前を選択後、[色空間](③)を「非カラー」に設定、どこにもつながずおいておく

ジオメトリノードへのマテリアルの追加

 さらに、ジオメトリノードにマテリアルを設定します。これはジオメトリノード内でグリッド形状を生成しているためです。

  1. [ジオメトリノード]タブで[ジオメトリノード]ワークスペースに戻ります。
  2. [追加]-[マテリアル]メニューから[マテリアル設定]を実行します。
  3. [メッシュ細分化]ノードと[グループ出力]ノードの間に割り込ませます。
  4. [マテリアル設定]ノードの一番下の球型アイコンをクリックし、上で設定したマテリアルを選択します。
[ジオメトリノード]タブ(①)で[ジオメトリノード]ワークスペースに戻り、[追加]-[マテリアル]メニュー(②)の[マテリアル設定]を実行、[位置設定]ノードと[グループ出力]ノードの間に割り込ませ(③)、[マテリアル設定]ノードの一番下のフィールド(④)をクリックし、上で設定したマテリアルを選択

UV座標の出力とマテリアルへの受け渡し

 前述のように、UV座標を受け渡しするため、「属性」として出力し、マテリアル内の[属性]ノードで受け取れるようにします。

  1. [ジオメトリノード]エディターの右端の[≺]をクリックして「サイドバー」を開きます。
  2. [インターフェイス]パネルの[+]ボタン-[出力]を実行します。
  3. パネル内の[タイプ]を「ベクトル」にします。
[ジオメトリノード]エディターの右端の[≺]をクリックし、「インターフェイスパネル」の[+]ボタンをクリックして[出力]にし、パネル内の[タイプ]を「ベクトル」に設定

 [グリッド]ノードの[UVマップ]ソケットを「グループ出力」の[ベクトル]ソケットにつなぎます

「ノード」の[UVマップ]ソケットを「グループ出力」の[ベクトル]ソケットにつなぐ

 右側の[プロパティ]エディターの[モディファイアー]プロパティ内のジオメトリノードモディファイアーのパネルの[出力属性]をクリックして開き、[Socket]に「UV」と入力します。

[プロパティ]エディターの[モディファイアー]プロパティ(①)内のジオメトリノードモディファイアーのパネルの[出力属性](②)をクリックして開き、[Socket]に「UV」と入力(③)

 上の3Dビューポートヘッダー右端の「マテリアルプレビュー」アイコンをクリックすると、テクスチャが貼られていると成功です。もしアイコンが見えない時は、ヘッダーをホイールボタンでドラッグしてみてください。

上の3Dビューポートヘッダー右端の「マテリアルプレビュー」アイコンをクリックし、テクスチャが貼られていると成功

凹凸の調整

 では最初の目的である「近景の変形」を調整しましょう。

 [ジオメトリノード]エディター内の[Floatカーブ]ノード内の線上のどこかをドラッグすると新しい制御点が追加されるので、2つ追加して下図のように調整します。

[ジオメトリノード]エディター内の[Floatカーブ]ノード内の線上のどこかをドラッグして「制御点」を2つ作り、図のように調整

TIPS

カクカクしている場合

 追加した形状はデフォルトでは「フラットシェーディング」になっていますが、ジオメトリノードを使用して作成した形状も同様で、[スムーズシェード設定]ノードを追加する必要があります。

 [追加]-[メッシュ]-[書込]メニューから[スムーズシェード設定]を実行し、[グリッド]ノードより右側の「緑の曲線」上のどこかに割り込ませます。

[追加]-[メッシュ]-[書込]メニューから[スムーズシェード設定]を実行し、[グリッド]ノードから延びる「緑の曲線」上のどこかに移動する

もっと細かくしたい場合

 画像によってはもっと細かくしないとディテールが消えるかもしれません。

 現在の[メッシュ細分化]ノードのレベルは最大ですので、「新たに」このノードを[追加]-[メッシュ]-[処理]メニューから[メッシュ細分化]で「新規追加」し、現在の[メッシュ細分化]ノードの後ろに割り込ませてください。

 コピーする場合は先に「レベル」を小さくしてから割り込ませないと地獄を見ます(経験者談)。

細かくしたい場合は、[追加]-[メッシュ]-[処理]メニューの[メッシュ細分化]で[メッシュ細分化]ノードを、現在の[メッシュ細分化]ノードの後ろにさらに「新規追加」する

 ……おや、なにやら棘が上部に出ていますね。

棘が発生する場合

 上図のような境界部分に棘が発生する場合、メッシュ細分化の「レベル」または深度画像の「ジャギー」が原因です。メッシュ細分化はノードで調整できるので、他の方法をご紹介します。

 [テクスチャペイント]ワークスペースに切り替え、棘が出ている部分に対応する深度画像の部分を[ぼかし]ブラシで滑らかにしてあげましょう。

[テクスチャペイント]ワークスペースに切り替え、棘のある部分に対応する深度画像を[ぼかし]ブラシで滑らかにする

 画像編集後は、左側の[画像]エディターの[画像]メニューから[保存]で、深度画像を保存しておくのをお忘れなく。

終わりに

 長くなってしまいましたが、「Marigold」サイトとその活用法についての記事は今回で終わりです。お疲れさまでした。

 皆さんも色々活用してみてくださいね。

 ではまた。