メモ

3DCGで「輪郭線」を描くのがなぜ難しいのか


3DCGの技術は近年で急速に高まっており、さまざまなゲームやアニメーションなどで高クオリティの映像を作り上げています。しかし、3DCGには「輪郭線が安定しない」という問題があり、なぜそのような問題が起きてどのように解消するのかについて、Adobe Researchの筆頭研究者でありワシントン大学の准教授を務めるコンピューター科学者のアーロン・ハーツマン氏がブログで解説しています。

Occluding Contour Breakthroughs, Part 1: A Surprisingly Hard Problem | Aaron Hertzmann’s blog
https://aaronhertzmann.com/2023/07/31/occluding-contours-part-1.html


ConTesse: Accurate Occluding Contours for Subdivision Surfaces
https://dgp.toronto.edu/~hertzman/contesse/


How to Draw Pictures, Part 1: Contours | Aaron Hertzmann’s blog
https://aaronhertzmann.com/2020/09/12/how-to-draw-pictures-contours.html


ハーツマン氏はまず、3Dオブジェクトで線画を作成する手順について、以下のようなブタのオブジェクトを使って解説しています。このブタの3DCGは、カーネギー・メロン大学のデジタル幾何学研究者であるキーナン・クレーン氏が作成したもの。


このブタの3DCGについて、ピクセルの距離を計算した場合に、見ているこちらの側から近いピクセルを黒く、遠い位置にあるものを白くマークします。


距離の「深度」を白黒の濃淡で示した上で、異なる深度に隣接するピクセルを黒く塗り、それ以外を白くした場合、以下のような線画が完成します。


このような手順で作成される線画は「遮蔽(しゃへい)輪郭」と呼ばれ、リアルな線描画の基礎とされています。輪郭の線画を描くことができたら、アニメ調やブラシ風など、さまざまなレンダリングを適用して見た目を変えることができます。

しかし、遮蔽輪郭はアルゴリズムで予測できない失敗ケースが多くあり、ゲームやアニメーションで用いることは難しいとハーツマン氏は指摘しています。ハーツマン氏によると、遮蔽輪郭にエラーが起きる原因は長らく解明されなかったそうですが、2023年にブレイクスルーとなる研究が発表されたとのこと。

次にハーツマン氏は、遮蔽輪郭で起こる問題について解説しています。遮蔽輪郭は、視点からの深度を計算して塗り分けることで線画を作っているため、理屈としてはオブジェクトのパーツが重なって見えるところは「オブジェクトの深度に差ができている」ところになり、線によって区切られることで輪郭線となる、という仕組みになっています。この計算自体はあまり複雑なものではないそうです。


問題を難しくしているのは、輪郭線の計算ではなく、「目に見える点を計算すること」です。例えば、以下の画像で示しているような滑らかなオブジェクトの場合、輪郭線は単純な丸になっています。しかし、滑らかなオブジェクトには立体的な深度があり、その曲線には合理的な位相幾何学(トポロジー)が必要になります。


滑らかなオブジェクトを三角測量によってメッシュ化すると、細かい深度を理解することができます。しかし、単純な輪郭で描ける滑らかなオブジェクトは、三角メッシュで区切ると非常に複雑な部分がたくさん発生します。もともとは「前面と背面」の2つの区分しかなかったオブジェクトに、さまざまな領域が発生することで、輪郭は混乱する形になります。


ハーツマン氏はもう1つ、以下のような例を挙げています。人の顔を模した3DCGによる遮蔽輪郭は、一貫性を保つ為に何度も試行が行われているアルゴリズムであっても、角度によって線が表示されたり消えたりしていることがわかります。


この問題は非常に複雑で、ハーツマン氏らは2001年に滑らかな線画を補完して作成するアプローチを提案する論文を発表しましたが、その研究でも拡大したときに線画に隙間ができるという問題は解決できなかったそうです。また、遮蔽線画による問題は実際の3Dモデリングアプリケーションにも影響を与えており、オブジェクトの輪郭をレンダリングに後から載せることができるBlenderのFreestyleという機能では、3DCGと輪郭とのギャップに多くの苦情が寄せられています。

遮蔽輪郭の長年の問題について、ブリティッシュコロンビア大学のリュウ・チェンシー氏やボルドー大学のピエール・ベナール氏らとハーツマン氏が共同執筆した2023年の論文では、1つのブレイクスルーにたどり着きました。

輪郭が単一の曲線からなる滑らかなオブジェクトについて、滑らかな表面には正確な輪郭を計算することができないため、通常は複数の曲線などを組み合わせて出来た「ポリライン」を使用して輪郭の近似を出します。このポリラインが輪郭となるような三角形メッシュを定義するために、ハーツマン氏らの論文では「曲線が遮蔽輪郭となる部分が存在する場合にのみ、2Dイメージ内の輪郭曲線は有効」というアイデアを取り入れています。


遮蔽輪郭の根本的な問題には、滑らかな表面の輪郭アルゴリズムは、輪郭をポリラインに「離散化」する点があります。離散化すると連続した情報が非連続の値に分割されるため、無効なポリゴンが生成されてしまうことがよくあるそうです。この無効なポリゴンが影響して、既存のアルゴリズムは全て、無効な曲線による視覚的なエラーを生成することになります。

論文では、まずポリゴンメッシュを規則的に分割することで得られるサブディビジョンサーフェスという曲面から開始し、その輪郭上でサンプリングされた頂点を、ポリゴンメッシュにしています。次に、メッシュ化した輪郭が全て有効かどうか確認するプロセスに入ります。有効ではないものは新しい頂点を挿入して確認を繰り返し、全てのメッシュ輪郭が有効である形に収束したら、サブディビジョンサーフェスの輪郭とトポロジー的に等価な輪郭を持つ新しい3Dメッシュを再度生成します。これにより、「滑らかな輪郭の可視性の問題を解決することが保証される、初めての手順を示すことができました」とハーツマン氏は述べています。


ハーツマン氏は最後に、遮蔽輪郭の研究に関する難しさと課題について語っています。破綻しない遮蔽輪郭を作成する手順には、トポロジー的に有効な曲線を計算する必要がありすが、トポロジーのアルゴリズムを理解するのは難しく、実験的には可能でも自分のオブジェクトに適用するための作業は非常に複雑になっているという問題があります。また、研究用のアルゴリズムは、理論的にはどのような表面でも収束するものですが、複雑な操作の場合はかなり時間がかかってしまう可能性があります。

また、遮蔽輪郭はあくまで線画作成のための出発点にすぎず、線画の視認性を高めるためには、境界線や交差する線などいくつも課題が残っています。それでも、遮蔽輪郭のアルゴリズムが機能することで、従来の技術が改善し、関連するアニメーションやゲームのオブジェクトなどでさらに発展していくとハーツマン氏は展望を述べています。

この記事のタイトルとURLをコピーする

・関連記事
「スパイダーバース」が3DCGアニメーションをいかに進化させたか - GIGAZINE

ピクサーとディズニーの社長が1972年に作成した世界初の貴重な3Dレンダリングムービー - GIGAZINE

世界で初めてCGを導入した映画「トロン」のCGパートはどのようにして作られたのか? - GIGAZINE

ゲームや映画でより現実に忠実で美麗な3D映像をレンダリングできる「パストレーシング」についてNVIDIAが解説 - GIGAZINE

無料でピクサーアニメの作り方を本格的に学べる「Pixar in a Box」 - GIGAZINE

in メモ, Posted by log1e_dh

You can read the machine translated English article here.