作品制作を通して分かったblenderの弱点

作品制作時blender2.81a使用


この動画制作は大変だった・・・
作品作りの過程でいくつかバグも発見したのですが、それらは報告済みなのでいずれ直るでしょう(もう直ってる?)
しかし、バグなのか仕様なのか判断つかないものもありました。
特殊な例だとは思いますが紹介します。

その前にこの作品の簡単なシーン構造ですがこんな感じです。

・・・手抜きですみません。
だってあのファイル開きたくないんですもの。
開くだけで20分位かかるし。
単純にCubeを上から落とすだけだと回転も何もしないので面白くありません。
なので箱状のものから転げ落ちる様にしました。
苦労話は後にも書きますが、25万個のCubeをそれなりの時間をかけて落とす調整が大変でした。
一瞬で落とすのは簡単です。
しかしある程度の時間落ち続けさせるには障害物の出口の大きさを調整する必要があり、何度も物理演算をしなおしました。1フレームの計算に数分かかるので2000フレーム越えの計算をするとなると・・・ね







シンプルなCubeでさえ10万個を一度に複製するのは多分無理
これはおそらくマシンの性能も関係ないと思います。
ちなみに私のマシンは2019年のiMac27inchの最上位モデルです。
それにメモリを48GBに増設しました。

2万個程度なら20分くらいした後複製できたのですが、10万個となると計算がいつまで経っても終わりません。単純計算なら5倍の100分程度できると思われるでしょうが、ある一線を超えると処理が終わらなくなります。寝る前に大量のオブジェクトを複製をして朝起きた後処理が終わってなかった事もありました。


シーンが重くなるとあらゆる動作がものすごく重くなる
25万個ものCubeがあると、ありとあらゆる動作が遅くなります。
オブジェクトを一つ削除するだけでも数分から10分超える事も。
オブジェクトの追加も同じです。
トランスフォームも動き出すまでにかなりの処理時間が掛かります。
それにオブジェクトの非レンダリングや非選択、ビューポート上での非表示も恐ろしく時間がかかります。
間違ってアイコンをクリックしちゃったらもうそこで作業がしばらく中断されます。
キーフレームを打つのにも時間がかかります。
25万個のCubeの物理演算をキーフレームにベイクするのは不可能に近いです。
一個のCubeに1フレーム分キーフレームにベイクするだけでも10分くらいかかりますから。








物理演算のベイクが始まらないことがある
物理演算をさせるにはベイクする必要があるわけですが、「全物理演算をベイク」をクリックしても一向に進まない事があります。この状態になるといつまでも待っても無駄です。普通ならこんな事は起こらないと思いますが重いとこういう症状も出てくるのです。ベイクのキャンセルはおそらくフレームが進んだ時にキャンセルされるのだと思いますが、フレームが進まないので強制終了させます。なのでベイクをする前には保存が必須なのです。そして保存にも10分以上かかるわけで・・・そしてまたファイルを開くにも時間が・・・
ベイクが成功するかは運なのです。

そしてもう一つ。リジッドボディにはキーフレームアニメーションの勢いを反映させて物理演算する機能があります。しかし、重いシーンではこの機能を使うとベイクが止まるか、劇的にベイクが遅くなります。
動画の最後にロゴがせり上がってきて落ちる場面があります。当初このアニメーションは前述の機能を使う予定でした。しかし物理演算に切り替わった瞬間から有り得ないほどベイク時間が伸びました。そのためこの機能を使わない方法を模索するしかなかったのです。また、大量に落ちてくるCubeにこの機能を使ったらベイクは完全に止まりました。


メモリが48GBもあったら目一杯物理演算に使えると思うじゃん?
普通ならそうなんですがね・・・
この場合だと25万個Cubeがあるシーンを開くだけでかなりのメモリを消費します。そして物理演算のキャッシュ、更にレンダリングにも大量のメモリを使います。なので実際キャッシュには20GBも使っていません。これでもメモリはほぼ使い切っていました。仮想メモリもあるのでちょっとオーバーしたくらいでは大丈夫だとは思いますが、SSDに多大な負荷がかかるので数十GB単位のスワップファイルの発生は避けたいです。


メモリを節約するためにグローバルUNDOをオフ。メモリ制限も最低に
操作するだけでドンドン消費していくメモリ。
それを防ぐためにUNDOのメモリ制限の設定を最低にしました。つまりやり直しが効かない。一発勝負です。


終了するときは強制終了
これおそらくblender2.8になってからblenderを閉じた時の状態を記録していると思います。
ファイルを保存しなくても最後のセッションを開くとその状態になりますから。
普通なら良いんですが、10GBを超えるファイルで毎回それをやられるとお節介です。時間もかかりますし。
問題は設定で変えられないんですよね。
blender2.79には「セッションを保持」のオプションがあったのですが、2.8には見当たらないです。







重いシーンに弱いblender
愚痴も多少ありましたが、基本的に大量のオブジェクトを扱うとblenderは不安定になります。
これがオブジェクトの数の問題なのか、頂点や面の数の問題なのかは分かりませんが。
今までの話は普通のシーンなら問題はないんです。
重いとこうなるんです。
この辺は改善して欲しいですね。
堅牢性は大事ですよ。
多少最低スペックが上がっても安定して動作して欲しいところです。
動作が鈍くなるのは仕方ないです。
しかし完全にフリーズするのは困ります。