トップ > 知っておきたい機能 > テクスチャ >
UV展開方式(マッピング方式)について(その2)

  

UV展開してみよう(続き)

前の記事の『UV展開方式(マッピング方式)について』からの続きです。 この記事では、Smart UV ProjectとLightmap Packを紹介します。

Smart UV Project

Smart UV Projectは、機械などの人工物のメッシュの展開に向いています。 というのも、Smart UV Projectは、隣接する両面の角度の差が大きい辺に自動的にシームを入れてUV展開します

機械のように複数の部品で構成されているものは、部品の境目の角度が急であることが多いためシームが入りやすいのです。 もちろん、利用者が入れたシームでも切り分けてくれます

では、前の記事で作成したテスト用ドキュメントを元に解説します。 トップバーのプルダウンメニューの"File" -> "Open"を実行してテスト用ドキュメントのファイルを開きます。

  
テスト用ドキュメントは、知っておきたい機能 > テクスチャ > UV展開方式(マッピング方式)についてで作成しました。 まだ作成していない場合は、そちらの記事を参考にして作成してください。
  
開いたテスト用ドキュメントを上書き保存しないよう注意しましょう。 Windows上(またはLinux上)でファイルをコピーしたものを開くのがいいかもしれません。

まず、UV展開の情報をリセットします。 エディットモードで全選択し、キーボードのUを押します。

1. Resetを実行
1. Resetを実行

上図のように"UV Mapping"というタイトルのメニューが表示されますので、"Reset"を実行します。

では、UV展開しましょう。 キーボードのU押してください。

2. Smart UV Projectを実行
2. Smart UV Projectを実行

上図のように"UV Mapping"というタイトルのメニューが表示されますので、"Smart UV Project"を実行します。

3. Smart UV Projectパネル
3. Smart UV Projectパネル

上図のようにSmart UV Projectパネルがさらに表示されますので、[OK]ボタンを押します。

4. UV展開の結果
4. UV展開の結果

上図のようにUV展開されます。 猿のメッシュだとわかっているので猿に見えなくもないですが、知らなければ展開元が何なのかは理解できないUV展開図になりました。

原因は、自動シーム(角度による自動的なシーム入れ)が強く作用し過ぎたためです。 Angle Limitが初期値の 66 だったため、隣接面の角度が66度よりも鋭くなっている辺に自動的にシームが入れられました。

これでは分割され過ぎですので、もう少しAngle Limitを緩くしましょう。 Angle Limitには、1 から 89 までの角度を設定できますので、最大値の 89 を設定しましょう。

5. Angle Limitを 89 に
5. Angle Limitを 89 に

上図のようにAngle Limitを 89 に調整します。

6. UV展開の結果
6. UV展開の結果

上図のようにUV展開されます。 先ほどよりもわかりやすいUV展開図になりました。

UV展開後に調整可能な、他の設定項目の意味を以下に掲載します。

設定項目 意味 詳細
Margin Method
※Blender 3.4以降
調査中 調査中
Island Margin アイランド間の余白 UV展開図のアイランドとアイランドの間の余白を調整する
Area Weight 調査中 調査中
Correct Aspect 縦横比の補正 イメージの縦横比を考慮してUV展開する
Scale to Bounds 枠に合わせて拡大縮小 イメージの大きさに収まるよう拡大縮小する

Lightmap Pack

Lightmap Packは、文字通りライトマップ用のUV展開方式です。 実際にUV展開してみるとわかるのですが、全ての面がバラバラに分解されて隙間なく詰め込まれます。 もちろん、人間が見てメッシュの面との対応が理解できる代物ではありません。

しかし、それでも問題はないのです。 そもそもライトマップというのは、人間が見てメッシュの面との対応を理解する必要はありません

まずは、ライトマップが何かということから説明します。 ライトマップというのは、光源からの影響による陰影を持たせたテクスチャ画像です。 つまり、陰影付きのテクスチャ画像です。 主に、アニメーション3DCGや3Dゲームで利用されます。

通常、陰影計算というのはレンダリング時に行われます。 しかし、移動しない光源と、同じく移動しない物体の組み合わせであれば、陰影をリアルタイムで計算する必要はありません。 あらかじめ、光源からの影響による陰影を計算し、それをテクスチャに描き込んでおけば、レンダリング時に陰影計算をしなくて済みます。

もちろん、1度しかレンダリングしない静止画の3DCGの場合にはメリットはほとんどありません。 しかし、アニメーション3DCGや3Dゲームのように何度もレンダリングする場合は、処理の負荷を下げることができます。

ライトマップとは、そのような目的のために使用する『陰影つきテクスチャ画像』です。 なお、元のテクスチャ画像は利用者が用意しますが、陰影をつけるのはBlenderがやってくれます。 あらかじめ1度だけBlenderがレンダリングを行い、陰影計算の結果を新たなテクスチャ画像に描き込むのです

ライトマップを言葉で説明するのは難しいので、実際にライトマップを利用してみましょう。

ここでも、作成済みのテスト用ドキュメントを元に解説します。 トップバーのプルダウンメニューの"File" -> "Open"を実行してテスト用ドキュメントのファイルを開きます。

  
テスト用ドキュメントは、知っておきたい機能 > テクスチャ > UV展開方式(マッピング方式)についてで作成しました。 まだ作成していない場合は、そちらの記事を参考にして作成してください。
  
開いたテスト用ドキュメントを上書き保存しないよう注意しましょう。 Windows上(またはLinux上)でファイルをコピーしたものを開くのがいいかもしれません。

まず、UV展開の情報をリセットします。 エディットモードで全選択し、キーボードのUを押します。

1. Resetを実行
1. Resetを実行

上図のように"UV Mapping"というタイトルのメニューが表示されますので、"Reset"を実行します。

続いて、UV展開します。 キーボードのUを押します。

2. Lightmap Packを実行
2. Lightmap Packを実行

上図のように"UV Mapping"というタイトルのメニューが表示されますので、"Lightmap Pack"を実行します。

3. Lightmap Packパネル
3. Lightmap Packパネル

上図のようにLightmap Packパネルがさらに表示されますので、[OK]ボタンを押します。

4. UV展開の結果
4. UV展開の結果

上図のようにUV展開されます。 見ての通り、全ての面がバラバラにされ詰め込まれています

次に、猿のメッシュに何らかのテクスチャを貼り付けます。 レンガ風でも木目調でもいいですので、何か画像ファイルを用意してください。 準備するのが面倒であれば、以下のファイルをダウンロードしてください。

  1. texture.zip

ダウンロードした "texture.zip" を展開すると "texture.png" というファイルが作成されます。

では、用意した画像ファイルをテクスチャとして猿のメッシュに貼り付けます。 Propertiesのタブをマテリアルのプロパティを編集するためのタブに切り替えます

5. Material Propertiesタブをクリック
5. Material Propertiesタブをクリック

上図のようにPropertiesのMaterial Propertiesタブをクリックします

次にマテリアルのBase Colorを固定色からテクスチャに変更します。

6. SurfaceパネルのBase Colorのコネクトボタンを押す
6. SurfaceパネルのBase Colorのコネクトボタンを押す

上図のようにSurfaceパネルのBase Colorのコネクトボタンを押します。 コネクトボタンというのは、●が描かれているボタンのことです。

7. Image Textureを選択する
7. Image Textureを選択する

上図のように一覧が表示されますので、Image Textureを選択します。

8. Base Color関連の項目が増える
8. Base Color関連の項目が増える

上図のようにBase Color関連の項目が増えています

次に、作成されたテクスチャと用意した画像を結びつけます。

9. Base Colorの[Open Image]ボタンを押す
9. Base Colorの[Open Image]ボタンを押す

上図のようにBase Color関連の項目として新たに増えた[Open Image]ボタンを押します。

新たにBlender File Viewウィンドウが開きますので、用意した画像を選択して、[Open Image]ボタンを押します。 ボタンを押すと、Blender File Viewウィンドウは自動的に閉じます。

ではここで、一度レンダリングしてみましょう。 キーボードのF12を押してください。 レンダリングウィンドウが開き、レンダリング処理が開始されます。

10. レンダリング結果
10. レンダリング結果

上図のようにレンダリング処理が終わるとレンダリング結果が表示されます。 用意したテクスチャが貼られていることを確認します

では、いよいよライトマップの作成を行います。 つまり、レンダリングし、陰影計算の結果をテクスチャに描き込みます

具体的には、ベイクを行います。 ベイクとは『焼き込み処理』、つまり、陰影計算の結果をテクスチャに描き込む処理のことです

  
ベイクは、レンダリング時と同じ陰影計算を行いその結果をテクスチャに描き込む機能です。

では、ベイクを行いましょう。 ベイクを行うには、レンダリングエンジンをCyclesに切り替える必要があります。 標準のレンダリングエンジンであるEeveeではベイクは行なえません。

では、Propertiesをレンダリング用のタブに切り替えましょう。

11. Render Propertiesタブをクリック
11. Render Propertiesタブをクリック

上図のようにPropertiesのRender Propertiesタブをクリックします

12. Render EngineをCyclesに切り替える
12. Render EngineをCyclesに切り替える

上図のようにレンダリング関連の項目群が表示されますので、Render EngineをCyclesに変更します

続けて、Bakeパネルからベイクを実行します。

13. ベイク
13. ベイク

上図のようにBakeパネルの[Bake]ボタンを押してベイクを開始します。

14. 進捗
14. 進捗

上図のようにステータスバーに進捗が表示されますので、終了するまで待ちます。

15. テクスチャに陰影がつく
15. テクスチャに陰影がつく

上図のようにテクスチャのイメージに陰影がつきます。 これは、Blenderによって陰影計算の結果が描き込まれたためです

枠が邪魔ですので、枠を消しましょう。 3D Viewportの編集モードをオブジェクトモードに切り替えてください。

16. ライトマップ
16. ライトマップ

上図のようにライトマップが見やすくなりました。 陰影計算の結果が描かれているのがわかります。

では、作成したライトマップを使ってみましょう。 光源であるライト(ポイントライト)を削除した状態で、このライトマップのテクスチャでレンダリングしてみましょう。 光源が存在しないにも関わらずレンダリング結果に陰影がつけば、ライトマップの実験は成功です。

では、ライトを削除します

17. ライト(ポイントライト)を削除する
17. ライト(ポイントライト)を削除する

上図のようにポイントライトを削除します。

ではここで、レンダリングエンジンをEeveeに戻しておきます

18. Render EngineをEeveeに戻す
18. Render EngineをEeveeに戻す

上図のようにRender EngineをEeveeに戻します

では、レンダリングしてみましょう。 キーボードのF12を押します。

19. レンダリング結果
19. レンダリング結果

上図のようにレンダリング結果が少し暗くなりました。 暗くなった理由は、光源であるポイントライト削除したためです

レンダリング結果に陰影がついていることを確認したいのですが、暗いためよくわかりません。 かといって、光源を追加してしまうと、テクスチャが陰影を持っているかどうかを確認できません。

そこで、ベイク前の画像でもレンダリングすることにします。 もちろん、光源のない今の状態でです。 ベイク前のテクスチャでレンダリングした結果とベイク後のテクスチャでレンダリングした結果を比較すれば、陰影がテクスチャに書き込まれたかどうかがわかるはずです。

では、画像をベイク前の状態に戻しましょう。

20. Image -> Reloadを実行
20. Image -> Reloadを実行

上図のようにUV Editorのプルダウンメニューの"Image" -> "Reload"を実行します(またはキーボードのALT + Rを押します)。

21. テクスチャのイメージがベイク前に戻る
21. テクスチャのイメージがベイク前に戻る

上図のようにテクスチャのイメージがベイク前の状態に戻ります。

では、再度レンダリングします。 キーボードのF12を押してください。

22. レンダリング結果
22. レンダリング結果

上図のように陰影がなくなったように見えます。 よくわからないので、ベイク前のレンダリング結果とベイク後のレンダリング結果を並べて比較してみましょう。

23. ベイク前のテクスチャとベイク後のテクスチャでのレンダリング結果の比較
23. ベイク前のテクスチャとベイク後のテクスチャでのレンダリング結果の比較

上図のようにベイク後のレンダリング結果には陰影がついていることがわかります。 これで、ライトマップにより陰影が描かれていることがわかります。

ライトマップの実験は成功です。 光源がないにも関わらず陰影をつけることができました

  
Lightmap Pack方式ではUV展開後に事後調整することはできません。

次の記事へ

では、そろそろ一区切りします。 解説の続きは次の記事を参照してください

  
  

まとめ

機械のメッシュであれば、Smart UV ProjectでUV展開しましょう。 角度の変化の大きい箇所で自動的に切り分けてくれます。 思い通りに切り分けられない場合は、手動でシームを入れて調整します。

Lightmap Packはライトマップ用です。 事前に陰影を計算し、結果をテクスチャに描き込む『ベイク』と呼ばれる手法のためのものです。

 
メニュー