Blender2.8でベイクしたら真っ黒、もしくは反映されない時



# 別にメタリックいじってる訳じゃない
　自分がこの真っ黒という壁にぶち当たったのは、インターネットから拾って来た葉のpng画像一枚をテクスチャとして使い、ノードを使って色付く葉や落ち葉を作ろうとしていた時でした。
　数種類の葉模様が出来上がったので、「とりあえずベイクって機能あるらしいから使ってみるか！」と軽い気持ちでネットの通りにベイクしてみたら...なんと！出来上がった画像が真っ黒ではありませんか！

　早速、検索エンジンで”Blender ベイク　真っ黒”と検索。しかし多くの記事で書かれていた内容は `メタリックの値を0にしていないから` とありました。
　メタリック？？
　自分が作ろうとしているのは**葉っぱ**。**メタリックの値なんて上げるはずがありません**。
　では一体何が原因...？

# ベイク先の画像を先に選択していなかった
　とても簡単な話でした。見つけた情報をもとに自分で検証してみた結果ですが、どうやらベイクは、ベイクした情報を `予め選択した**画像テクスチャノード**` に保存しているみたいで、つまり、**ベイクを行う前に「シェーダーエディター」で「画像テクスチャ」を先に選択する必要があった**んです！

　ん〜、書いてあったかなそんなこと...。

# 詳しい手順
　肝は**画像テクスチャ**！！
## まず事前にやること
　画面を最低二つに分割しておき、それぞれ `3Dビューポート` の**オブジェクトモード**と、 `シェーダーエディター` を表示させておく。
　そうしたら、3Dビューポートの方でベイク対象のオブジェクトを選択しておいてください。
　オブジェクトに黄色いアウトラインがかかります。
　複数選択したい場合、順序は大して関係ありません黄色か青のアウトラインが出ますが、どちらでも大丈夫です。

![事前画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/714568/eddbecc9-8559-bae7-0f0f-a7d971ce1743.png)

## 手順

#### 1. 画像テクスチャを生成
シェーダーエディターの空いてるところに、**Shift + A → テクスチャ → "画像テクスチャ"**でベイク用のノードを生成します。
![Shift＋A.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/714568/194adbfd-25e8-5260-bb8a-b38fe2a17368.png)

#### 2. ベイク先画像を生成
生成したノードの**新規**をクリックしてベイク先の画像を生成します。ここで作成した画像にベイク情報が焼き付けられる感じですね。
#### 3. "画像テクスチャ"を選択する
生成した"画像テクスチャ"をクリックして選択状態に。ここが1番重要！
![選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/714568/2dfea1ab-eaed-dd31-a521-f3e75d1da04c.png)

この時、**"マテリアル出力"ノードにベイクしたいノード情報がきちんと繋がれている事を確認**してください。
#### 4. レンダーエンジンをCyclesに
 `レンダープロパティ` に移行し、レンダーエンジンを**Cycles**に変更しましょう。
レンダーエンジンがデフォルトではEeveeになってるかと思いますが、残念ながらBlender2.8の時点ではEeveeにベイク機能はありません。

（ `余談　EeveeとCyclesの違いについて` 
　EeveeとCyclesの違いについてですが、Eeveeは**動作がとても軽快**で描画のむれが全く全くないのに対し、CyclesはEeveeよりも一段と細かくレンダリングされ、**よりリアルかつ美しく**描画してくれます。ただし、描画し終えるまでには数秒〜十数秒の時間がかかることが多いので、ビューを回転したり、移動させて見た目を確認する際にはCyclesにしたままだとめちゃくちゃ使いづらいです...

　なので、普段の作業中はEeveeに、仕上がりを確認するときやベイクしたい時はCyclesにする、という風に使い分けるのがベストなんじゃないかなと思います！
勿論、使っていればわかりますが、Eeveeでも見た目は十分に綺麗！なのであんまり気にしなくて良いのかもしれません。
今後のアップデートでEeveeにもベイク機能が備わると良いですね！）

 レンダリングをしているとCyclesで描画が遅いのが気になることが出てくると思いますが、その際には、予め**確認したい（ベイクしたい）オブジェクトをオブジェクトモードで選択 → Cmd + Iで選択を反転 → Hで他のオブジェクトを非表示**にしておけば、描画の対象が少なくなり、秒速でレンダリングが完了しちゃいます！
写真のようにオブジェクトを設定して、
![オブジェクト選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/714568/d8059a27-8dc1-dae3-b5fa-5c832088f8a1.png)

Cmd+Iで"選択を反転"。
![選択反転.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/714568/ce1a30bb-18d8-b3f0-d97b-9c379853146f.png)

Hを押すと選択されているオブジェクトが非表示になります。
![H1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/714568/0bb3bb9f-6ace-be83-09a4-500d56e19d76.png)

ライトも同時に消えてしまっていて見た目が悪くなるので、ライトを配置している方は右上のアウトライナーにある目のマークをクリックして、表示・非表示を切り替えましょう。
![目のマーク.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/714568/5e4a33cb-1002-ef5d-8abb-094a9c6b5515.png)
![H２.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/714568/648c605a-bb91-ceb4-75bf-7a2f1c4761ca.png)

ちゃんとライティングも施された状態になりました！

終わったら、全ての非表示を解除させましょう。**Alt + H**で全非表示を表示させることが出来ます。

**選択の反転**と**非表示・表示**の操作はめっちゃ便利なので是非とも覚えておいてください！

#### 5. あとはベイクを押すだけ
　同じくレンダープロパティで下から三番目の**ベイク**タブ → ベイクをクリックでしばらくするとベイクが完了します。
　この時、画面上のUIにほとんど変化がないのでベイクがちゃんと機能しているのか不安になりますが、ご安心ください。画面の最下部を見てみると、小さくベイク中を表すUIが表示されているはずです！
![ベイク中.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/714568/cec0b87c-d78c-5c63-afde-639b924eff26.png)

　Blenderのコンソールって結構見づらくないですか？自分はもう何度も見落としてます。
　まあとにかくベイクは正常に機能しているはずなので安心してください。

#### 6. 割と忘れがちな画像の保存
　”保存”、と言われるとつい押してしまいたくなるのがCmd + S。しかし、**この操作は.blendファイルを保存するためのものであり、jpgやpng画像を保存するには別の操作をしなければなりません！**。
　じゃあどうやって保存するの？
　
　まずは**UVエディター**か**画像エディター**を開いてください。問答無用です。面倒くさがりの皆さん、駄々こねずにちゃんと開いてくださいね。自分も中々の面倒くさがりですが...
　その後、ビュー左上に**画像**という項目が浮かんでいるので、その中の**保存**を押すと画像が保存されます！
また、ショートカットで、エディタービュー上でAlt + Sを押しても保存されます。例の見づらいコンソールに表示されるので確認してください（同時にShiftも押せば別名保存）

![AltS.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/714568/e2feaefa-8dec-1f78-55de-922b935bba2c.png)


## 真っ黒になっていた原因
　結論から言うと、真っ黒になってしまったのではなく、新規で作成した真っ黒画像から**何も変化していなかった**のではないかなと。なにせベイク先をどれにするのか選択してないんですからね。そりゃそうだって感じです...

　最初ブラウザでBlenderでのベイク方法を検索したとき、大体が**「UVエディター」**もしくは**「画像エディター」**で画像を新規作成 → **ベイクの対象オブジェクトを選択** → **レンダープロパティでベイクを選択**の流れで説明されていたんです。

なのでてっきり自分は**UVエディターや画像エディターでベイクする用の画像を作らないといけないんだ**だと認識してしまったんですが、全然そんなことはありませんでした。
画像テクスチャノードから新規作成すれば十分だったようです...いちいちエディターを行き来するのは面倒ですし、別エディターに行かなくて済むのであればそれに越したことはないですよね。

　画像を保存するときは例外ですが...

## アルファ値はベイク出来ない
　ベイクするオブジェクトに元々透過度が掛かっているpng画像をテクスチャとして設定していた場合、**ベイクしてもアルファ値は焼き付けされません。**
　アルファ値が１未満になっている箇所については黒塗りの処理が施されます。
　この場合は**ベイクした方ではない元画像をアルファマップとして再利用**する方法をとります。
そもそも元から透明である箇所って、当然のように色は塗れないじゃないですか。光の影響も一切受けません。透明ですからね。だから、ベイクをしたところでどこが透明なのかっていう情報は何も変わらないんですよ。何も変化がないのなら、元画像を使えば良いんじゃね？って話になってくるんです。

具体的にいうと、
1. ベースのテクスチャとは別で"画像テクスチャ"を追加する。
2. "開く"から元のテクスチャ画像を選択する。
3. ノードの**アルファ**ソケットを"プリンシプルBSDF"ノードの下から四番目にある"アルファ"ソケットに繋ぐ。
![アルファ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/714568/5f71a205-2b52-bff4-2f66-c251d61a4236.png)
これで手順は完了です。
また、"マッピング"ノードをいじっている方はしっかりとアルファマップの方にも"マッピング"と"テクスチャ座標"を繋ぎ、設定を同じにしましょう。でないと透過の場所がずれてしまうので、注意してください。

## 最後に
　Blenderをつい最近始めたばかりで、日々勉強に明け暮れている初心者です。「初心者の記事なのかよ」と思う方がいらっしゃるかと思いますが、今ぶち当たった壁を忘れぬうちに文章にし、世に残すべきだと思うんです。
　少しでも同じ壁に当たった人の役に立ちたい。立てれば良いなと思う。
　多くのCG先駆者の方々が上げてくださっているYoutubeチュートリアルや、ネットの記事などを日々の師として学ばせていただいています。いつもお世話になっておりますm(_ _)m。深く、深い感謝しかない...ありがとうございます。