Blenderで月を作ろう

## はじめに

「Blenderに興味があるけど、しきいが高そう」という方向けに、なるべくわかりやすく月の作り方を紹介します。
Blenderの基本的な操作方法は、「[Blenderでサッカーボールを作ろう](https://qiita.com/SaitoTsutomu/items/e7e5114a5916843dd068)」に書いてあるので、先にそちらをやってみてください。

## 対象読者

- Blenderで何か作ってみたいけど、難しいと思っている人

## 完成物

モデルの質感に使用する画像を変えることで、見え方の詳細が代わります。たとえば、2k版と8k版であれば、下記のようになります。

|2k版|8k版|
|:--|:--|
|![moon_2k.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13955/b8605002-5b89-19c6-184a-4f36d1d27d55.jpeg)|![moon_8k.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13955/b38b10b3-288c-c831-df43-effcdaa5e42d.jpeg)|

※ 画像サイズは720 x 640にしています。

## 手順

最初に、2つの画像（ColorとDisplacement）を用意します。どちらも、下記のサイトからダウンロードできます。画像のライセンスについては、サイトをご確認ください。

- 画像のダウンロードサイト：[SVS: CGI Moon Kit - NASA](https://svs.gsfc.nasa.gov/4720)
  - Color画像のダウンロードは、「**Color**」のところの「Download Options」から下記を参考に選んでください。
  - Displacement画像のダウンロードは、「**Displacement**」のところの「Download Options」から下記を参考に選んでください。

**「Download Options」で選ぶもの**

|  | Color | Displacement |
|:--|:--|:--|
| 2k版 | 2048x1024 tif (3.2 MB)<br>ファイル名 lroc_color_poles_2k.tif | 1440x720 tif (4.0 MB) float, 4 ppd<br>ファイル名 ldem_4.tif |
| 8k版 | 8192x4096 tif (48.3 MB)<br>ファイル名 lroc_color_poles_8k.tif | 5760x2880 tif (31.7 MB)  uint, 16 ppd<br>ファイル名 ldem_16_uint.tif |

Blenderの操作方法は、日本語設定時の表記になっています。日本語設定の方法は、[こちら](https://vook.vc/n/3779#toc-2)を参考にしてください。
macOSでのキーを書いています。Windowsの場合は、`Option`を`Alt`に読み替えてください。
間違えたときは、`Ctrl + Z`で戻ります。それでもよくわからなくなったら、`Ctrl + N`の「新規ファイル」の「全般」で最初からやり直してみてください。

- 3Dビューポートの表示はシェーディングで変わります。起動時はソリッドモードになっています。色を確認できるように**マテリアルプレビューモード**に変えてください。`Z`を押すと下図のような表示になります。この表示をパイメニューといいます。パイメニューは、マウスカーソルを少し動かすと選択肢を切り替えられます。マウスカーソルを少し下のように動かし、図のように真ん中の丸の下を青くしてマウスをクリックしてください。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13955/76f6bae2-c23a-dc4d-f243-e8d5067a5c2d.jpeg" width="500">

- マテリアルプレビューモードになると、右上が下図のようになります。もし、下図のようになっていなかったら、下図の青いところをクリックしてもマテリアルプレビューモードに変更できます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13955/21755d1b-da6f-e581-8b9d-f6ef96655a78.jpeg" width="240">

- 右下のプロパティ画面で下図のように上から2つ目のアイコンをクリックして**レンダープロパティ**にしてください。「レンダーエンジン」を`Eevee`から`Cycles`に変えてください。また、その下の「機能セット」を`実験的`に変えてください。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13955/ae280f55-0fed-e458-b382-d72841a49884.png" width="300">

- 最初にある立方体は使わないので削除します。立方体を選択して`X`、`[Enter]`で削除できます。

- ミラーボールの元になるオブジェクトを作成しましょう。
  - `Shift + A`で追加メニューが開きます。下図のように「メッシュ」の「UV球」を選んでください。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13955/09ba7cca-2458-959c-6cc0-170e33840f02.png" width="360">

- UV球（以降ではSphereと呼びます）を選択したまま、右下のプロパティ画面で下図のように青いスパナのアイコンをクリックして**モディファイアープロパティ**にしてください。モディファイアーについては「はじめに」の紹介記事も参考にしてください。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13955/bfb8c718-058e-49a2-ecca-f3cb1f2617c0.png" width="260">

- 「モディファイアーを追加」から「サブディビジョンサーフェス」を選んでください。
  - 「適応サブディビジョン」をチェックします（下図）。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13955/4584bf28-ad85-0a04-baf6-d2884c5dd870.png" width="340">

モデル（月の形状）は、これで完了です。
次は、質感を設定します。今回の最重要部分です。

- Sphereを選んだまま、プロパティ画面の赤い丸っぽいアイコンをクリックして**マテリアルプロパティ**にしてください。
  - 「新規」を押してください。
  - 「サーフェス」の「v」をクリックして閉じてください。
  - 「設定」の「>」を押して開き、「ディスプレイスメント」を`バンプのみ`から`ディスプレイスメントとバンプ`にしてください（下図）。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13955/4594db86-fcba-2367-9a21-2adebeec89d2.png" width="400">

ここから難しくなりますが、頑張りましょう。
画面上部の「Shading」ワークスペースをクリックしてください（下図）。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13955/462e66b1-8d4c-1de1-a946-59895bd2c019.png" width="400">

- `Shift + A`で追加メニューが開きます。下図のように「テクスチャ」の「画像テクスチャ」を選んでください。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13955/3aa349ae-7e3e-46eb-8aa5-8cb8c2264856.png" width="400">

- 画像テクスチャノードをドラッグできるので、下図のように配置してください。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13955/f2eaaa81-e833-f679-7741-1b04092494a7.png" width="400">

- 画像テクスチャノードを選択したまま、`Shift + D`で複製してください。ドラッグできるので下に配置します。
- 上の画像テクスチャノードの「開く」を押して、ファイル`lroc_color_poles_2k.tif`を選択してください。
- 画像テクスチャノードのカラーから、プリンシプルBSDFノードのベースカラーにドラッグで線をつないでください。
- 画像テクスチャノードのカラーから、プリンシプルBSDFノードの放射にドラッグで線をつないでください。
- 放射の強さを0.1にしてください（下図）。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13955/8edccb9f-02f3-c2d6-ba61-0cda91a3e6dc.png" width="400">

- `Shift + A`で追加メニューが開きます。下図のように「ベクトル」の「ディスプレイスメント」を選んでください。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13955/ce4b19c0-e249-acb8-3370-0ccfbca9343f.png" width="300">

- 下の画像テクスチャノードの「開く」を押して、ファイル`ldem_4.tif`を選択してください。
- 画像テクスチャノードの色空間を非カラーにしてください。
- 画像テクスチャノードのカラーから、ディスプレイスメントノードの**高さ**にドラッグで線をつないでください。
- ディスプレイスメントノードのスケールを0.1にしてください。
- ディスプレイスメントノードのディスプレイスメントから、一番右のマテリアル出力ノードのディスプレイスメントにつないでください。
- `Shift + A`（追加）の「ベクトル」の「バンプ」を選んでください。
- 下の画像テクスチャノードのカラーから、バンプノードの**高さ**にドラッグで線をつないでください。
- バンプノードの強さを0.5にしてください。
- バンプノードのディスプレイスメントから、一番右のマテリアル出力ノードの**ノーマル**につないでください（下図）。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13955/4c0a5288-9bde-20b3-e083-7b184abfcac4.png" width="720">

あと一息。
- 画面上部の「Layout」ワークスペースをクリックして戻ります。
- `Z`を押してパイメニューを表示し、マウスをちょっと上に動かし、「レンダー」を選択してください。

カメラを設定します。カメラは、最後のレンダリングで必要になります。
- 右上のアウトライナーでカメラを選択します。
- 右下のオブジェクトプロパティ画面で下記のように設定します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13955/d6bb11ee-5115-cf9e-71ac-2e3be4d0bace.png" width="200">

次に、月の凸凹感がわかるようにライトを設定します。
- 右上のアウトライナーでカメラを選択します。
- 右下のオブジェクトプロパティ画面で下記のように回転を設定します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13955/ecb06348-15e7-9978-27cd-3ad6079ce7d0.png" width="200">

- また、右下のオブジェクトデータプロパティ画面で下記のように種類と強さを設定します。種類はサンにしてください。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13955/ed7c4de7-f432-44a0-392a-80b41f9ff276.png" width="200">

※ カラーを変える必要はありませんが、変えると印象が代わるので、試しても良いでしょう。

最後に、宇宙の感じを出すためにワールドを設定します。

- 右下のワールドプロパティ画面で下記のようにカラーを設定します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/13955/f82cbb81-9b64-2601-9994-cc46251a6c5f.png" width="200">

- 完成です！
- レンダーメニューの画像をレンダリングを選ぶと、完成モデルをレンダリングします。

## まとめ

本記事では、少ない手順で完成できるように心がけましたが、オブジェクトやマテリアルに名前をつけた方がわかりやすくなります。また、操作を迷わないように数値入力しましたが、マウス操作で調整することもできます。慣れてきたらマウス操作で調整してみましょう。
Blenderは、覚えることがたくさんあって使いこなすのが大変ですが、いろいろなことができて楽しいので、ぜひ体験してみてください。

参考：いろいろな「[Blenderで作ろう](https://qiita.com/tags/blenderで作ろう)」

## 補足

### 詳しく知りたい方のためのノーマルの補足

ノーマルは日本語で法線といいます。面の向きを意味し、光の反射する方向に関係します。
基本的には、モデルの形状で決まりますが、細かい調整を質感（マテリアル）で設定できます。
質感でのノーマルの設定方法は、ノーマルマップを使う方法と、今回指定したバンプを使う方法の2種類あります。
バンプノードの入力は、面に対する高さを表す1次元のデータ（画像の明暗）です。今回使用した、ldem_4_uint.tifに当たります。
ノーマルマップノードの入力は、ノーマルのXYZのベクトルをRGBで表した3次元データです。紫っぽい画像で、一般にはこちらの方が使われることが多い印象です。

### 詳しく知りたい方のためのディスプレイスメントの補足

ディスプレイスメントは、モデルの表面の高さを変更するしくみです。3DCGでは、でこぼこの質感を表現する方法として、ノーマル（光の反射する方向）とディスプレイスメント（表面の高さの変更）が使えます。また、ディスプレイスメントを指定する方法として、ディスプレイスモディファイアーを使う方法とマテリアルを使う方法の2種類あります。今回は、マテリアルを使ってディスプレイスメントを表現しています。通常、ディスプレイスメントでは、実際のメッシュの位置を変更するので、あらかじめメッシュを細かくする必要があります。今回紹介した方法は、Cyclesの実験的方法なので、メッシュを細かくしないままで、細かいでこぼこを表現できるという特徴があります。デメリットは、その表現を他の3DCGソフトウェアに反映できないことです。

以上