ColaboratoryでBlenderレンダリング

#はじめに
![0001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/499004/3cda1bef-46a9-f25b-9bfe-b29ab9e3d9a5.png)

この記事では、blenderでのレンダリングを、Google Colaboratoryを用いて実行する方法についてまとめています。

## Colaboratoryとは？
Googleが提供している、**無料**で**GPU**が使えるPython実行環境です。
もう一度言います、**無料**で**GPU**が使えます。

## こんなひと向け

- ノートブックしか持ってないけどレンダリング短縮したい！
- 自分のマシンで作業して裏でレンダリングしたい！
- 寝てるときファンがうるさいからリモートでレンダリングしたい！

## 環境

- blender 2.91.0

2.8以降が対応しています。


# blendファイルの準備
##blendファイル
今回は、[公式デモ](https://www.blender.org/download/demo-files/)で配布されている`Class room`を使用しました。

## レンダリング設定の変更(デノイズの有効化)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/499004/d7b89e4f-9647-86a6-4798-358f447cd05b.png)
ダウンロード後、`classroom.blend`を一度開き、`レンダープロパティ>サンプリング>デノイズ>レンダー`を有効化し、上書き保存しました。


##Googleドライブへのアップロード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/499004/4382829c-e897-3eb2-1d9c-4b7e07065bb7.png)

今回はマイドライブ内に`blender`フォルダを作成し、その中に`classroom`をアップロードしました。
また、レンダリング結果の保存用のフォルダとして、`classroom`内に`output`フォルダを新規作成しました。




# Colaboratoryの準備
## ノートブックのコピー
[donmahallem/colab_blender](https://github.com/donmahallem/colab_blender)を利用します。
[<img src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/499004/e5ca060e-9d72-b849-d7d9-96349dd410ae.png">](https://colab.research.google.com/github/donmahallem/colab_blender/blob/master/runblender.ipynb)
`Open in Colab`をクリックしてください。ノートブックが開くので、上部のドライブにコピーを選択してください。

![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/499004/f28fe121-a54a-2b80-ab31-c2d2f0b43c3d.png)


コピーされたノートブックはGoogleドライブのマイドライブ、`Colab Notebooks`内に保存されます。

## Setupの記述
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/499004/929333f8-694b-969d-6515-991e1360e678.png)


- blender_version
blenderのバージョンを指定します。今回は2.90.1を選択しました。

- path_to_blend
blendファイルのパスを入力します。
今回は`blender/classroom/classroom.blend`となりました。

- output_path
出力先のフォルダを入力します。`blender/classroom/output/`を指定しました。
レンダリング結果は[(フレーム番号).png]の形式で保存されます。

- gpu_enabled
Trueのままにします。

- cpu_enabled
今回はTrueにしました。レンダリングが上手く行かない場合はFalseにしてください。

## レンダリングするフレームの指定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/499004/01b32d71-4ea9-d936-0576-911768e48af9.png)
ノートブック末尾の2つのコードのいずれかを編集します。
### すべてのフレームを出力する場合
特別な操作は必要ありません。次のセクションで最後から2つ目のコードをそのまま実行してください。

### 一部のフレームを出力する場合
最後から2つ目のコードを編集します。末尾の`-a`の前に`-s [開始フレーム] -e [終了フレーム] `を追記します。
**Ex.) 10から30フレームを出力する。**

```
!sudo ./$blender_version/blender -P './setgpu.py'  -b '/gdrive/My Drive/{path_to_blend}' -E CYCLES -o '/gdrive/My Drive/{output_path}' -s 10 -e 30 -a
```

**末尾の`-a`の前に**`-s 10 -e 30 `を追記します。

### 任意の1フレームを出力する場合
最後のコードの`-f`のあとの数字を出力したいフレーム番号に変更します。
**Ex.) 30フレーム目を出力する。**

```
!sudo ./$blender_version/blender -P 'setgpu.py' -b '/gdrive/My Drive/{path_to_blend}' -P 'setgpu.py' -o '/gdrive/My Drive/{output_path}' -f 30
```

# レンダリングする
## Googleドライブ認証まで
上から順番に各コードを実行するだけです。
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/499004/38493b52-c8ee-d51a-d677-2de6c124d482.png)
各セルの左上の実行ボタンをクリックしてください。実行が終了次第、次のセルを順番に実行してください。

## Googleドライブ認証
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/499004/1b4d066d-a21f-0b2e-a223-ffa261d8bbee.png)
このセルでは、Googleドライブの認証が行われます。リンクを押すとGoogleドライブの認証画面が開きます。
![無題.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/499004/eaaf3686-4f89-d051-3fa9-58993fde9600.png)
許可を押すとトークンが表示されるので、コピーして先ほどを枠内に貼り付けてEnterを入力してください。

## レンダリング実行
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/499004/01b32d71-4ea9-d936-0576-911768e48af9.png)
最後の2つのセルは、いずれか一方を実行してください。

## 2回目以降のレンダリング
レンダリング2回目以降は、1つ目のセルの`Setup`と最後のレンダリング実行のセルを実行するだけで大丈夫です。
セッションが切れた場合は同じ手順で実行してください。

# トラブルシューティング
### レンダリング途中で止まってしまった
Colaboratoryは90分間操作がないと終了します。また、1つのセッションは12時間が上限です。
90分切れの対策は以下の記事が参考になります。
[Google Colaboratoryの90分セッション切れ対策【自動接続】](https://qiita.com/enmaru/items/2770df602dd7778d4ce6)




### めちゃくちゃ遅い
たまにデノイズが働かなかったりレンダリングがめちゃくちゃ遅いときがあります。セッションを終了して、もう一度最初からすると、うまくいく気がします。

#まとめ
これが無料でできるのはすごいですね！寝ながらレンダリングが捗ります。
![0001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/499004/efdbdea8-9ffe-60c2-25a0-dbfeae63627a.png)