blender

Google Coraboratoryを使ってクラウドでBlenderをレンダリングする方法

Google Coraboratoryを使ってクラウドでBlenderをレンダリングする方法

Coraboratory(以下Colab)を用いてクラウド上でBlenderのシーンをレンダリングしてみます。 Colabは主に機械学習のディープラーニングなどで使われていますが、今回はBlenderのレンダリングに使用してみようと思います。

Googleの数十万を超えるGPU、Tesla K80無料で使えるので処理が重いシーンで自宅のパソコンでレンダリングできない~ってときにおすすめです!

この記事はRedditの記事、コードを参考にしています。Thank you!
Reminder that there is Google Colab for your render needs.
GItHub
https://gist.github.com/donmahallem/a05100077ec1327268f28f0b2bd8da60

Google Coraboratoryの使い方

下記の記事がわかりやすいです。Googleのアカウントがあれば誰でもすぐに使えます。

https://qiita.com/shoji9x9/items/0ff0f6f603df18d631ab

ランタイムをGPUを変えるのを忘れずに!

コードを書く

では実際に書いてみましょう。GoogleドライブにBlenderファイルをアップしてその.blendファイルをレンダリングすることにします。

#@title Setup
#@markdown Please configure your setup
blender_version = 'blender2.81' #@param ["blender2.81", "blender2.80"] {allow-input: false}
path_to_blend = 'path/to/blend.blend'  #@param {type: "string"}
output_path = 'output/dir/in/drive/output####.png'  #@param {type: "string"}
gpu_enabled = True #@param {type:"boolean"}
cpu_enabled = False #@param {type:"boolean"}
#@markdown ---

このブロックでBlenderのバージョンや.blendファイルのパスを入力します。Blenderのバージョンについては2.81か2.80を選んでください。 gpu_enabled、cpu_enabledでGPUを使うかCPUを使うか選べます。

path_to_blendにレンダリングしたい.blendファイルのパスです。Googleドライブにアップした .blendファイルをレンダリングするのでドライブのパスになります。
例えばGoogleドライブにBlenderフォルダを作成してその中にSample.blendファイルがあるなら
「Blender/Sample.blend」を入力してください。
output_pathはレンダリングされた画像の保存場所です。GoogleドライブのBlenderフォルダの中のOutputフォルダにしたいなら
「Blender/Output/output####.png」です。

ColabでBlenderを使えるようにしていきます。下記のコードを実行していきましょう。

if blender_version == "blender2.80":
    download_path="https://ftp.halifax.rwth-aachen.de/blender/release/Blender2.80/blender-2.80-linux-glibc217-x86_64.tar.bz2"
elif blender_version == "blender2.81":
    download_path="https://ftp.halifax.rwth-aachen.de/blender/release/Blender2.81/blender-2.81-linux-glibc217-x86_64.tar.bz2"
!wget -O '{blender_version}.tar.bz2' -nc $download_path
!mkdir $blender_version
!tar -xf '{blender_version}.tar.bz2' -C ./$blender_version --strip-components=1
import os

os.environ["LD_PRELOAD"] = ""

!apt update
!apt remove libtcmalloc-minimal4
!apt install libtcmalloc-minimal4
os.environ["LD_PRELOAD"] = "/usr/lib/x86_64-linux-gnu/libtcmalloc_minimal.so.4.3.0"

!echo $LD_PRELOAD
!apt install libboost-all-dev
!apt install libgl1-mesa-dev
!apt install libglu1-mesa libsm-dev

BlenderでGPUを使うようにします。

data = "import re\n"+\
    "import bpy\n"+\
    "scene = bpy.context.scene\n"+\
    "scene.cycles.device = 'GPU'\n"+\
    "prefs = bpy.context.preferences\n"+\
    "prefs.addons['cycles'].preferences.get_devices()\n"+\
    "cprefs = prefs.addons['cycles'].preferences\n"+\
    "print(cprefs)\n"+\
    "# Attempt to set GPU device types if available\n"+\
    "for compute_device_type in ('CUDA', 'OPENCL', 'NONE'):\n"+\
    "    try:\n"+\
    "        cprefs.compute_device_type = compute_device_type\n"+\
    "        print('Device found',compute_device_type)\n"+\
    "        break\n"+\
    "    except TypeError:\n"+\
    "        pass\n"+\
    "#for scene in bpy.data.scenes:\n"+\
    "#    scene.render.tile_x = 64\n"+\
    "#    scene.render.tile_y = 64\n"+\
    "# Enable all CPU and GPU devices\n"+\
    "for device in cprefs.devices:\n"+\
    "    if not re.match('intel', device.name, re.I):\n"+\
    "        print('Activating',device)\n"+\
    "        device.use = "+str(gpu_enabled)+"\n"+\
    "    else:\n"+\
    "        device.use = "+str(cpu_enabled)+"\n"
with open('setgpu.py', 'w') as f:
    f.write(data)

ここまででBlenderをColabで使う準備ができました!あとはColab上でGoogle Driveを使えるようにマウントしましょう。

from google.colab import drive
drive.mount('/gdrive')

認証を求められるとおもうのでアクセスコードを入力してください。Colab上でGoogleドライブのファイルにアクセスできるようになります。

レンダリングしてみる

ではレンダリングしてみましょう。静止画の場合下記のコードを実行してください。

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

アニメーションをレンダリングしたい場合は下記のコードを実行してください。詳しくは Blender CLI Wiki を参照してください。

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

レンダリングが終了すればoutput_pathに設定したフォルダにレンダリングされた画像が保存されていると思います。
今回デモシーンとして配布されているBMWのシーンをレンダリングしてみました。確認してみます。

きれいにレンダリングできてますね。レンダリング時間は02:19.26でした

下記のサイトを見てみても十分高速なのではないでしょうか?それにColabは無料ですからね!

おわり

今回はGoogleの無料で使えるクラウドのGPUでBlenderをレンダリングしてみました!Cycleの重いシーンなどは自宅のPCでレンダリングするのが大変なこともあると思います。そんなときにColabを使えばクラウドなのでPCのスペックに関わらずレンダリングすることができます。

一度.blendファイルを置く場所とoutputフォルダを決めておけば、次からは気軽にレンダリングできるのでぜひ試してみてください!

-blender

Copyright© Harkerblog , 2020 All Rights Reserved Powered by AFFINGER5.