Blender 実行環境構築とデモ
AnyTech 岩井1なぜCGを学習データに用いるのか?

現実の映像データを用いることの難所
1. 学習に適したデータが少ない
2. 手ブレ、不適切なライティング、カメラアングル
3. 速度ベクトル、粘度の真値がわからない
4. 流体部分のアノテーション作成が困難

CGデータを用いることのメリット
1. 撮影環境を自由に設定可能
2. 速度ベクトル、粘度は流体シミュレーションから取得可能
3. 流体部分のアノテーションが自動で完了

2

なぜCGを学習データに用いるのか?

現実の映像データを用いることの難所
1. 学習に適したデータが少ない
2. 手ブレ、不適切なライティング、カメラアングル
3. 速度ベクトル、粘度の真値がわからない
4. 流体部分のアノテーション作成が困難

CGデータを用いることのメリット
1. 撮影環境を自由に設定可能
2. 速度ベクトル、粘度は流体シミュレーションから取得可能
3. 流体部分のアノテーションが自動で完了

3使用するCG制作ソフト

Blenderとは
1. 無償の3DCG作成ソフト
2. 写実的な映像制作が可能
3. セットアップの簡便さ
https://www.blender.org/

Blenderのおすすめポイント- 物理シミュレーション- Ubuntuでも動作- 一部機能はCUIでも実行可能- Python APIが充実- 物体のセグメンテーション、速度ベクトル、深度が取得可能
4使用するCG制作ソフト

Blenderとは
1. 無償の3DCG作成ソフト
2. 写実的な映像制作が可能
3. セットアップの簡便さ
https://www.blender.org/

Blenderのおすすめポイント- 物理シミュレーション- Ubuntuでも動作- 一部機能はCUIでも実行可能- Python APIが充実- 物体のセグメンテーション、速度ベクトル、深度が取得可能
5

BlenderのCG作成フロー

1.
-

ローカルでの作成作業工程
CGモデリング
流体シミュレーションのパラメータ調整

2.
-

PC任せの工程（ABCI活用）
1フレームずつレンダリング
OpenCV等で動画化

6

BlenderのCG作成フロー

1.
-

ローカルでの作成作業工程
CGモデリング
流体シミュレーションのパラメータ調整

2.
-

PC任せの工程（ABCI活用）
1フレームずつレンダリング
OpenCV等で動画化

7

レンダリングの仕組みと問題点

・レイトレーシングによるレンダリング- 各ピクセルから複数の光線を飛ばして光の経路を計算し各ピクセルの色を決定する- 写実的な映像が作れる- GPUによる並列計算が可能

光線

CGの物体

出力画像

・レイトレーシングの問題点- 綺麗にするにはより多くの光線のサンプル（512や1024）が必要- 画像1枚に10~90秒かかる
30fps, 1分の動画だと5~45時間- 常にGPU使用率100%8レンダリングの仕組みと問題点

・レイトレーシングによるレンダリング- 各ピクセルから複数の光線を飛ばして光の経路を計算し各ピクセルの色を決定する- 写実的な映像が作れる- GPUによる並列計算が可能

光線

CGの物体

出力画像

・レイトレーシングの問題点- 綺麗にするにはより多くの光線のサンプル（512や1024）が必要- 画像1枚に10~90秒かかる
30fps, 1分の動画だと5~45時間- 常にGPU使用率100%9オンプレとABCIの比較

オンプレGPUサーバ

ABCI

マルチタスクレンダリング以外のタスク実行ができない

空き状況次第でマルチタスクが可能

時間あたりの動画数

長時間かけて 1つ並行して複数動画のレンダリングが可能

GPU数

1枚4枚

ランニングコスト

電気代が高いポイント消費レンダリング時間

12時間超えたくない

最大72時間10

ABCIでのレンダリング準備・実行概要

1.Blender実行環境の構築- UbuntuベースのDocker imageを作成- Docker imageをsingularityに変換

2. レンダリング実行- blender -b <***.blend> -P render.py

11

ABCI上でのBlender実行環境構築

Confidential

FROM nvidia/cuda :11.4.0-runtime-ubuntu20.04

1.GPUが使えるImageをベースに作成

RUN wgethttps://mirror.freedif.org/blender/release/Blender3.1/blender-3.1.2-linux-x64.tar.xz
RUN tar Jxfv blender-3.1.2-linux-x64.tar.xz && \mv blender-3.1.2-linux-x64 /opt/blender

ENV NVIDIA_VISIBLE_DEVICES all

2.Blender 3.0 or laterをダウンロード＆インストール

3.レンダリングにOptixを使う設定
これがないとオンプレ1GPUよりマルチGPUの方が大幅に遅くなる

ENV NVIDIA_DRIVER_CAPABILITIES compute,utility,graphics
12レンダリング用サンプルコード

Confidential

render.py
import bpy

1.BlenderのPythonライブラリ

bpy.context.scene.cycles.device = 'GPU'
prefs = bpy.context.preferences

2.レンダリングにOptixを使う設定

prefs.addons['cycles'].preferences.get_devices()
cprefs = prefs.addons['cycles'].preferences
cprefs.compute_device_type = 'OPTIX'

for device in cprefs.devices:
device.use = False

3.レンダリングにCPUを使わない設定

if device.type == cprefs.compute_device_type:device.use = True

bpy.ops.render.render(animation=True)

4.レンダリング開始

13

解像度と使用ポイント数

rt_F（4GPU, 1pt/時）

rt_G.small（1GPU, 0.3pt/時）

1280 x 720, 128サンプル

8.5 秒/枚
1分のCGで5pt

11 秒/枚
1分のCGで1.8pt

1280 x 720, 512サンプル

5.45 秒/枚
1分のCGで3pt

26.2 秒/枚
1分のCGで4.2pt

3840 x 2160, 512サンプル

29.7 秒/枚
1分のCGで15pt

108 秒/枚1分のCGで16.2pt【状況に応じて最適な計算資源タイプを選択】
・時間重視ならrt_F
・ポイント重視なら場合によりrt_G.small
14

制作動画紹介15

制作動画デモ１Confidential※ウェビナー中のみ再生可
16

制作動画デモ２

Confidential※ウェビナー中のみ再生可
17

ご視聴ありがとうございました18