
PyTorchだけで微分可能レンダラーを実装し、その仕組みを解説した技術記事
本記事は、微分可能レンダリングの仕組みを理解するために、PyTorchだけで小さな微分可能レンダラーを実装し、その過程を解説した技術記事である。PyTorch3Dやnvdiffrastなどの既存のライブラリは使わず、200行以下のコードで実装した。
レンダラーは、3D空間に置いた三角形をカメラで透視投影して画像を描く。そして、描いた画像が目標の画像に近づくように、カメラの向きを勾配降下法で最適化する。三角形の内側か外側かを判定する処理はそのままでは微分できないため、記事ではこの判定をシグモイド関数で滑らかに近似し、微分できるようにした。
記事はZennで公開している(PyTorchで微分可能レンダリングをフルスクラッチで書いてみた)。