3D生成のいま — NeRFからGaussian Splattingまで
3Dは「彫る」ものから「最適化で合わせる」ものになりました。メッシュからNeRF、Gaussian Splattingへの表現の変遷と、2D拡散モデルを審査員に仕立てるSDS蒸留の仕組みを前提知識ゼロから解説。ゲーム・映像の制作現場に持ち込むときの落とし穴まで。
NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
一次資料 — この記事の根拠
この解説の公開 2026-08-27
NeRF: Representing Scenes as Neural Radiance Fields for View SynthesisarXiv:2003.08934論文ページ·PDF3D Gaussian Splatting for Real-Time Radiance Field RenderingarXiv:2308.04079論文ページ·PDF
DreamFusion: Text-to-3D using 2D DiffusionarXiv:2209.14988論文ページ·PDF
Magic3D: High-Resolution Text-to-3D Content CreationarXiv:2211.10440論文ページ·PDF
ProlificDreamer: High-Fidelity and Diverse Text-to-3D Generation with Variational Score DistillationarXiv:2305.16213論文ページ·PDF
Instant Neural Graphics Primitives with a Multiresolution Hash EncodingarXiv:2201.05989論文ページ·PDF
彫るのではなく、写真に合わせる
3Dモデルを作る、と聞いて思い浮かぶのはBlenderの画面でしょう。頂点をつまんで引っぱり、三角形を貼り、UVを展開してテクスチャを描く。30年ほとんど変わっていない作り方です。
ここ数年で現れたのは発想の違うやり方でした。空間そのものを、色と濃さを持った霧だと考える。被写体を何十枚か撮った写真があれば、「この霧をどう置けばその全部が説明できるか」を最適化で解ける。彫るのではなく、写真に合うまで濃さを調整する。2020年のNeRF(Neural Radiance Fields、ニューラル放射輝度場)が示した道です。
次に、写真すら要らなくする手が来ます。テキストから画像を作る拡散モデルはもう十分に賢いのだから、それを審査員として使う。適当な3Dをでっち上げてランダムな角度から絵にし、「『赤い革張りの椅子』らしく見えるか」を採点させ、その不満を3D側へ押し戻す。これがScore Distillation Sampling(SDS)です。
何を「3Dデータ」と呼ぶか
- メッシュ: 頂点と三角形。ゲームエンジンもDCCツールもこれ前提で動く
- ボクセル: 空間を格子に切る。単純だがメモリが辺の3乗で増える
- 点群: 位置と色を持つ点の集まり。面がないので穴が開く
- SDF(符号付き距離場): 表面までの距離を返す関数。滑らかだが色を持たない
生成AIの視点だと、メッシュには困った性質があります。微分が流れない。三角形の数も、どの頂点をつなぐかも、連続的には動かせない離散構造です。「もう少し丸くしたいので頂点を1個増やす」を勾配では書けない。少し動かして良くなった方へ進む、という学習の作法に乗らないのです。
NeRFの答えは、形を持つのをやめることでした。シーンを関数として持つ。座標 と視線方向 を入れると、その点の色 と密度 (どれだけ物が詰まっているか)が返るMLPです。中身は重みなので、全部なめらかに動かせます。
NeRF: 光線を積分して1画素を作る
その関数から画像を作る手順はこうです。1画素ごとに光線を1本飛ばし、線に沿って関数を何十回か呼び、返ってきた色を手前から順に混ぜる。
は光線上の点、 と は積分の打ち切り位置、 は密度、 は色、 は透過率で「ここまで光が遮られずに届いた割合」です。要するに「光線上の各点の色を、そこまで生き残った光の割合と、その点の詰まり具合で重み付けして足す」。手前に濃い物があれば が小さくなり、奥は寄与しない。物陰が見えないという当たり前が、この掛け算1つで出てきます。実装では積分をサンプル点の和にしますが、そうすると中身は普通のアルファ合成です。この形は後でもう一度出てきます。
学習は、手持ちの写真と同じカメラ位置からレンダリングして実写との二乗誤差を減らすだけ。汎化を目指していないのがポイントで、1シーンにわざと過剰適合させます。原論文の報告では学習にGPU 1枚で1〜2日、1枚の描画に数十秒。これを秒〜分に縮めたのが多重解像度ハッシュ符号化(Instant-NGP)です。
ここで前提をひとつ補っておきます。この最適化はカメラの位置と向きが分かっていることを出発点にします。写真の束を渡されても「どこから撮ったか」が分からなければ、光線をどの向きに飛ばせばいいのかが決まらないからです。実際には、まず写真集合からSfM(Structure from Motion、写真同士の特徴点の対応関係から撮影位置を逆算する古典的な手法)でカメラ姿勢を推定し、それを固定したうえで色と密度だけを学習します。つまりNeRF以降の3D再構成は、姿勢推定という別系統の技術の上に乗っているわけです。
この依存関係は軽くありません。推定した姿勢が数センチ・数度ずれると、同じ面が別の場所にあると教えられることになり、モデルはその矛盾を「薄くぼやけた霧を宙に置く」ことで辻褄合わせします。再構成でよく見るfloaters(浮遊物)の正体の多くはこれです。後の節で撮影の作法にこだわるのも、レンダリング側をいくら調整しても、姿勢が崩れていれば取り返せないからです。
コメント
コメントにはログインが必要です