Blender は何を省略して絵を描くのか物理ベース CG の近似
Blender の画像は「物理ベース」と呼ばれます。でも、光の物理を厳密に計算しているわけではありません。人間の目に分からない所を上手に省いています。この記事では、どこを省いているのかを、実際のレンダーと触れる実験で確かめます。
- レンダリングは、光の積分を近似で解く計算
- 計算を落とす手口は4種類ある
- CG は物理に対してではなく、「人間の視覚」に対する近似の理論
コラム:Blender とは
Blender は、無料で使えるオープンソースの総合3DCGソフトです。形を作る(モデリング)、見た目を決める(材質・照明・レンダリング)、動かす(アニメーション・物理シミュレーション)、仕上げる(合成・動画編集)までを1本でこなします。ほぼすべての操作を Python で書けるので、AI にコードを書かせて動かすこともできます。04の点群も、Blender の Python で作りました。
レンダリングの方式は2つあります。光の道筋を追って計算する Cycles と、ゲームと同じ仕組みで速く描く EEVEE です。この記事で扱うのは主に Cycles です。
生い立ちも少し変わっています。オランダのアニメーション会社 NeoGeo の社内ツールとして、Ton Roosendaal が1994年1月2日に最初のソースファイルを書きました。NeoGeo の後継会社 NaN が2002年初めに閉じると、Roosendaal は同年5月に非営利の Blender 財団を作り、寄付キャンペーンで7週間に11万ユーロを集めて投資家から権利を買い戻しました。2002年10月13日に GNU GPL のオープンソースとして公開され、今も財団を中心に開発が続いています。
出典:blender.org「History」(2026年10月21日に確認)
記述の層:Blender は世界を何で書いているか
| 書く対象 | 使う数学 | ひとことで |
|---|---|---|
| 形 | 頂点のベクトルと、それをつないだ面(メッシュ) | 形は点の座標の表 |
| 姿勢 | 4×4の行列(回転にはクォータニオンも) | 平行移動も回転も、行列の掛け算1つにまとめる |
| 光 | レンダリング方程式(積分方程式) | ある点から出る光=自分で光る分+周りから来た光の反射 |
| 材質 | BRDF(反射の仕方を表す関数) | エネルギーを増やさない、入れ替えても同じ、という制約を守る |
| 動き | 微分方程式を時間で刻んで解く | 剛体・布・流体を、短い時間ごとに少しずつ進める |
レンダリング方程式を言葉で読む
画面の1画素の明るさは、「そこに写る点から、カメラの方向へ出ていく光」です。その光は、自分で光っている分と、周りのあらゆる方向から届いた光が、材質に従って反射した分の合計です。ところが「周りから届いた光」も、別の点から出た光なので、同じ式がまた中に現れます。光が何度も跳ね返るので、式が入れ子になり、紙と鉛筆では解けません。
数式で見る
L_o は点 x から方向 ω_o へ出る光、L_e は自己発光、f_r は材質(BRDF)、L_i は方向 ω_i から入る光、n は面の法線、Ω は面の上側の半球です。L_i が別の点の L_o なので、式が再帰的になります。この形で書いたのは Kajiya の論文「The Rendering Equation」(SIGGRAPH 1986)です。
Cycles は、この積分を乱数で近似します。画素ごとに光の道筋(パス)をランダムに何本も追いかけ、その平均を明るさとします。これをパストレーシングと呼び、追いかける本数をサンプル数と呼びます。
計算を落とす4つの手口
| 手口 | 例 | 捨てているもの |
|---|---|---|
| モデルを単純にする | 光をまっすぐな線として扱う。色を RGB の3つの数で表す | 回折や干渉(光の波の性質)、スペクトル(色の細かい成分) |
| 連続を飛び飛びにする(離散化) | 形をメッシュで、時間をステップで表す | なめらかさ。誤差や、計算の暴走(下の V02-3) |
| 乱数で見積もる(確率的推定) | パストレーシング=モンテカルロ積分 | 厳密な答え。ノイズは 1/√N でしか減らず、半分にするにはサンプルが4倍いる |
| 構造と知覚を利用する | BVH(当たり判定を速くする木構造)、重点サンプリング、AI によるノイズ除去 | 人間に見えない差 |
ノイズはなぜ 1/√N でしか減らないか
サンプルを増やすと、画像のざらつき(ノイズ)は減ります。ただし、減り方は遅く、サンプルを4倍にして、やっとノイズが半分です。これは、ランダムな見積もりの平均をとるときの一般的な性質です。まず実物で確かめましょう。
同じ場面を、サンプル数だけ変えてレンダーする

| サンプル数 | 誤差(RMSE) | 前の行との比 | レンダー時間 |
|---|---|---|---|
| 16 | 0.0956 | — | 3.9秒 |
| 64 | 0.0544 | 0.57 | 6.4秒 |
| 256 | 0.0278 | 0.51 | 39.2秒 |
| 1024 | 0.0148 | 0.53 | 67.1秒 |
| 16+ノイズ除去 | 0.0109 | — | 8.7秒 |
ノイズ除去(デノイズ)をかけた16サンプルの画像は、数字の上では1024サンプルより誤差が小さくなりました。ただし、ノイズ除去は細かい模様をぼかして「なめらかで、ありそうな画像」に寄せる処理です。誤差の数字が小さくても、細部が正しいとは限りません。4096サンプルの画像と拡大して見比べると、ノイズ除去版では壁のコンクリートのむら(場面に付けた模様)が消えて、のっぺりした壁になっていました。ノイズと細かい模様を区別できず、模様まで消してしまったのです。
なぜ 1/√N なのかを、もっと小さな場面で、計算の中身まで見えるようにしたのが次の実験です。
モンテカルロのノイズ:サンプルを積むと、誤差はどう減るか
数式で見る
N 回の独立なサンプルの平均は、ばらつき(標準偏差)が 1 / √N に比例して小さくなります。
だから両対数グラフでは、傾き −1/2 の直線になります。ノイズを半分にするには N を4倍、10分の1にするには100倍にする必要があります。重点サンプリングや層別サンプリングは、σ(1回あたりのばらつき)を小さくする工夫です。
RGB の3つの数で足りる理由
現実の光は、波長ごとに強さが違う、なめらかな分布(スペクトル)です。数字で書けば無限に多くの値が要ります。それなのに CG は、赤・緑・青の3つの数で色を表します。
これで足りるのは、人の目が色を感じる細胞(錐体)が3種類しかないからです。目は、届いた光を3つの数に縮めてから脳へ送っています。だから、スペクトルが違っても、3つの数が同じになる光は同じ色に見えます(条件等色)。CG はこの性質を使い、最初から3つの数で計算しています。
つまり CG の近似は、物理に対してではなく、「人間の視覚」というものさしに対して作られています。「物理ベース」と「物理的に厳密」は別物です。プリズムで光を分けるような場面や、虹色に光る薄膜のような現象は、3つの数では正しく描けません。
時間を刻むと何が起きるか
動きの計算(物理シミュレーション)では、時間を短いステップに区切って、少しずつ状態を進めます。区切り方の工夫を数値積分と呼びます。区切り方が素朴だと、本当は一定のはずのエネルギーが増え続け、ばねや布が「爆発」します。
同じばねを、3つの数値積分で動かす
数式で見る
陽的オイラー法では、1ステップごとにエネルギーがちょうど (1 + Δt²) 倍になります。残りの2つは、エネルギーが少し揺れますが、増え続けはしません。物理の法則がもつ構造(位相空間の体積を保つ)を、計算の順番で守っているからです。
用語集
- レンダリング
- 3Dの場面から画像を計算すること
- レンダリング方程式
- ある点から出る光を、自己発光と周りからの光の反射の和として書いた式
- BRDF
- 光がある方向から来たとき、別の方向へどれだけ反射するかを表す関数。材質の正体
- パストレーシング
- 光の道筋をランダムに何本も追い、その平均で明るさを決める方法
- サンプル数
- 1画素あたりに追う光の道筋の本数
- モンテカルロ法
- 乱数を使った試行の平均で、積分などの値を見積もる方法
- 重点サンプリング
- 答えに効く所を多めに試して、ばらつきを減らす工夫
- デノイズ
- ノイズの残った画像を、なめらかに整える処理。Blender では AI を使ったものがある
- 条件等色
- スペクトルが違うのに、人の目には同じ色に見えること
- 数値積分
- 時間を短いステップに区切り、状態を少しずつ進めて動きを計算すること
この記事の問い
- I-5空間と回転を表す最小の道具は何か?ベクトル・行列・群。4×4行列なら平行移動も掛け算にまとまる。オイラー角でジンバルロックが起きる理由を説明できれば合格
- I-6変化をどう書くか?微分方程式。「今の状態が次の瞬間を決める」という局所性の表現
- I-7光と物質の関係をどう書くか?レンダリング方程式と BRDF。何を捨てた式か(光の波の性質、偏光)まで問う
- I-8どんな制約を守れば「それらしく」なるか?エネルギー保存と相反性。制約こそが最強の圧縮
- I-9連続を離散にすると何を失うか?離散化誤差と数値の暴走。陽的オイラー法でばねが爆発し、シンプレクティック法で安定する(V02-3)
- I-10解けない積分をどう近似するか?モンテカルロ法(誤差は 1/√N)と重点サンプリング(V02-1・V02-2)
- I-11探索の手間をどう減らすか?BVH で、光線1本あたりの当たり判定を全部の面との比較から木をたどる比較へ。遠くは粗い形で描く(LOD)
- I-12何を捨てても人間は気づかないか?RGB 化、明るさの圧縮、ノイズ除去。最後の評価関数は人間の知覚