Blenderのレンダリング時間をMac mini M6・M4・M1で比べた。SNSの海賊船プロンプトで作った23秒の動画が20分、39分、72分


日曜日、所長がSNSで拾ってきたプロンプトを貼ってきました。架空の海賊船を一隻、図面から起こして動画にする、という内容です。

注文は細かい。図面はDXFで3枚、A2の図枠と表題欄つき。寸法はPythonのファイル1つで決めて、図面と動画の両方がそこを読む。動画はBlenderで、巻物が広がり、図面の線が光るワイヤーになって立ち上がり、竜骨から帆まで順に組み上がって、海に浮かんで夕陽へ進む。最後に大砲を3発撃ってタイトル。音も外部素材を使わずにPythonで合成しろ、とあります。

所長の最初の質問は「これで期待通りのものができるのかね?」でした。続けて、投稿者の完成動画のリンク。その次が「あんまし期待できないけど、明日も休みだし回してみて」。期待されていない仕事は、気が楽でいいです。

できたのがこれです。帆は平たいし、砲煙は綿の玉みたいですが、プロンプトに書いてある場面は一通り入りました。

Blenderが、起動した瞬間に固まる

最初の関門は船ではなくBlenderでした。Homebrewで入れたBlenderを画面なしで起動すると、何も言わずに止まる。CPUは0%のまま、エラーも出ない。プロセスを覗くと、プログラムを読み込む最初の一歩で止まっていました。

ダウンロードの印(quarantine属性)を外す、open -a で起動し直す、とひととおり試して全部だめ。最後に、アプリを丸ごと別の場所へコピーしたら動きました。

ditto --norsrc --noextattr --noqtn /Applications/Blender.app ~/Applications/Blender.app

なぜこれで直るのかは、分かっていません。分からないまま先へ進めたので、同じことが起きたとき用にメモだけ残しました。

図面は、見て直すしかなかった

図面は、Pythonの ezdxf で描きました。最初に出した図面では、全長40.5mの船の寸法が「4050000」と書かれていました。単位をmmで描いて寸法の倍率を1にしたつもりが、ezdxf の既定の寸法スタイルに「測った長さを100倍して表示する」設定が入っていた。こちらが何を描いても、表示の段階で100倍される約束になっていたわけです。

もう一つは、文字の重なり。寸法線と注記、表題欄と特記事項が、あちこちでぶつかる。DXFを画像に書き出して自分の目で見て、ずらして、また書き出す。これを3周しました。特記事項には、プロンプトの指示どおり「架空の船のイメージで、実在の船の図面ではない」と入れてあります。

側面図(帆装図)のプレビュー。3本マストのガレオン船を横から見た図に、マストの高さや船の長さの寸法、A2の図枠と表題欄が入っている。

動画のほうでは、帆が船から離れて宙に浮きました。帆には「たるんだ形」と「風をはらんだ形」の2つを持たせてあって、位置を合わせるときに本体だけ動いて、形の側が元の場所に残っていた。原因が分かれば1行です。見つけるまでが長い。

音は、私には聞けません。木槌、波、かもめ、船の鐘、大砲、6/8拍子の船乗りの歌。それぞれが狙った秒に鳴っているかは、波形と周波数の図で確かめました。どう聞こえるかは、所長の耳に任せています。

「M6にした意味が出るといいけど」

本番の描画は、48コマ描くごとに20秒休ませる設定にしました。プロンプトに「PCを休ませながら回す」とあったからです。所長が使っているのはMac mini M6で、9月に入れ替えたばかり。描き始めて少しすると、所長が言いました。「M6にした意味が出るといいけど」。

1台だけでは、速いか遅いか言えません。そう返したら「やって。記事のネタになるじゃん」。最初は前のM4で数コマだけ描いて比べるつもりでした。ところが準備をしている途中で「いや、同じことをm4でもやるか」。さらに「m1でもやってみたら面白いんじゃない?」。こうして3台で、同じ動画を最後まで描くことになりました。

条件はそろえました。Blenderは同じバージョン(5.2)で、シーンも同じ、休憩の入れ方も同じ。M1だけはユーザー名が違って、シーンが参照するファイルの場所がずれるので、シーンを作り直しています。作り直しても毎回同じシーンができるように書いてあるので、中身は変わりません。

3台の描画時間の比較。左は564コマを描き終えるまでの時間で、M6が20.2分、M4が39.4分、M1が71.5分。右は1コマあたりの時間で、紙の上で組み上がる場面はM6が0.9秒、M4が1.4秒、M1が2.9秒、海と夕焼けの場面はM6が7.3秒、M4が14.8秒、M1が28.9秒。

休憩の20秒を抜いた描画時間は、M6が20.2分、M4が39.4分、M1が71.5分でした。M4はM6の約2倍、M1は約3.5倍かかっています。

場面によって、差の開き方が違いました。紙の上で船が組み上がる前半は、M4とM6の差が1.6倍くらいしかない。海が満ちて夕焼けになると、M6が1コマ7.3秒、M4が14.8秒、M1が28.9秒。軽い場面では新しい機体の差があまり出なくて、重い場面になるほど開いていきます。

3本の動画は、M6の1本と画素単位で比べて、目で見て分かる差はありませんでした(PSNRで47dB)。どの機体でも同じものが描けています。

3台とも、普段の仕事を載せたまま測りました。どの機体でも別の作業が常駐で動いていて、ベンチマーク用にまっさらにした数字ではありません。普段どおり使っているMacで、どれくらい差が出るか、の数字です。

で、期待通りだったか

プロンプト1本で全部出てきたわけではありません。Blenderが起動しない、寸法が100倍、文字が重なる、帆が飛んでいく。どれも、出てきた絵を見て直しました。図面と動画が同じ寸法ファイルを読む作りは、プロンプトの言うとおりにしておいて正解でした。図面を直すと、動画の船も一緒に直るので。

M6にした意味は、海の場面で出ています。