科学・技術
トポロジカル絵本のレンダリング
A Topological Picture Book, Rendered (e-infinity.space)
要約
この記事は、インタラクティブな3Dトポロジカル図形描画ツール「A Topological Picture Book」について解説しています。このツールは、数式で定義された曲面を、手描きの線画のようなスタイルでインタラクティブに表示します。描画には、パラメトリック陰関数、マーチングテトラヘドラによる三角化、主曲率線に沿ったハッチング、輪郭線、隠線処理などの高度なコンピュータグラフィックス技術が用いられています。
全文翻訳
プレートI. トーラス。
トポロジカル絵本
フランシス、アペリー、ヒルベルト=コーン=フォッセンの中世紀風に手描きされた表面。
モデルを自由に回転させるためにドラッグ(シフトキーを押しながらドラッグで回転)、近づくためにスクロール。
表面パラメトリック陰関数
x(u,v) y(u,v) z(u,v)
u の範囲 / から / まで
v の範囲 / から / まで
u セグメント
v セグメント
二重曲線(自己交差)をトレースする
f(x,y,z) = 0
ボックス半幅
グリッド解像度
ゼロ集合はマーチングテトラヘドラによって三角化されます。法線は ∇f から取得されます。
再描画
保存
彫刻(PNG)
ペンとハッチング
主曲率線に沿ったハッチング
パラメータ線に沿った縞模様(u,v)
空間の断面からの縞模様
画像平面(スクリーン)の縞模様
間隔
ペンの幅(px)
手の揺れ
太字のペン先
インクの濃さ
エッジフィルター(Sobel)
クロスハッチング
影
細かいレンダリング(2倍スーパーサンプリング)
ストロークの間隔は、スライダーを離すとハッチングを再トレースします。
輪郭線
シルエット、折り目、境界線を描画
輪郭線の太さ(px)
隠線
破線
かすかな
省略
線が交差する場所のハロー
インクとレタリング
端でのオーバーシュート
インクの溜まり
紙に滲む
輪郭線のスムージング
配置
ラベルは手書きで、表面にピン留めされ、移動するためにドラッグでき、ダブルクリックで削除できます。ポイントが隠されているときは暗くなります。
光とトーン
光の照射
光の高さ
コントラスト
環境光
シルエットシェーディング
インク
紙
ソースと方法
描画はピクセルではなく、ストロークで作られています。シルエットはメッシュ上の n・v のゼロ集合です(補間された法線で見つけられ、滑らかな曲線に連鎖します)。境界線とイマージョンの二重曲線は、さらなる連鎖として追加され、それらはすべて、太字のペンモデル、影の側やビューアに向かうにつれて太くなる幅、そして一貫した手の揺れを持つテーパー付きリボンとして描画されます。可視性はGPUで設定されます。隠線パスはオクルージョンされた部分を破線で描画し、各近くの輪郭線の下にある片面紙のハローがその背後の線をカットします。ハッチングは、主曲率線場の一連のストリームラインであり、3つのネストされた密度で構築時にトレースされます(2番目はクロスハッチングのために、もう一方の主方向沿い)。トーンは、どのファミリーがインク付けされ、各ストロークがどこでフェザーアウトするかを選択します。ハイライトはベアペーパーのままです。主方向は大きさではなく符号付き曲率によって順序付けられるため、2つのファミリーは κ₁ = −κ₂ となる場所で連続性を保ちます。輪郭線チェーンは、インク付けの前に軽くスムージングされます。
ストロークは、スケッチ風の線画の様式で、端をわずかにオーバーシュートします。ストロークの開始点でのインクの溜まりと、紙の目に滲むギザギザは、このページの手作り効果(フリンジが繊維状のノイズによってゲートされる拡張されたリボン)であり、紙から取られたものではありません。ラベルは手書きで、表面上の点にリーダー線でピン留めされ、ポイントが隠されているときは暗くなります。
G. K. Francis, A Topological Picture Book, Springer, 1987 — スタイルターゲット:カスプ、二重曲線、隠線、そして控えめなハッチングバンドを持つ輪郭線描画。
P. Bénard, A. Hertzmann, “Line Drawings from 3D Models: A Tutorial,” Foundations and Trends in Computer Graphics and Vision 11(1–2), 2019 — 輪郭線パイプライン:n・v = 0 としての滑らかなシルエット、連鎖、可視性、様式化。
A. Hertzmann, “Introduction to 3D Non-Photorealistic Rendering: Silhouettes and Outlines,” SIGGRAPH 99 Course Notes — 補間された頂点法線からのシルエット(n・v のマーチングトライアングル)。
A. Hertzmann, D. Zorin, “Illustrating Smooth Surfaces,” SIGGRAPH 2000, pp. 517–526 — 主曲率方向沿いのハッチング、暗い領域のみのクロスハッチング、空白のハイライト、アンダーカット。
B. Jobard, W. Lefer, “Creating Evenly-Spaced Streamlines of Arbitrary Density,” Visualization in Scientific Computing, 1997 — ハッチストリームラインをトレースするために使用される分離距離ルール。
A. Appel, F. J. Rohlf, A. J. Stein, “The Haloed Line Effect for Hidden Line Elimination,” SIGGRAPH 1979 — 線交差でのペーパーハロー効果。
J. D. Northrup, L. Markosian, “Artistic Silhouettes: A Hybrid Approach,” NPAR 2000 — シルエットセグメントの連鎖と、テーパーと幅のバリエーションを持つ様式化されたストロークとしてのレンダリング。
T. Strothotte, B. Preim, A. Raab, J. Schumann, D. R. Forsey, “How to Render Frames and Influence People,” Computer Graphics Forum 13(3) (Eurographics 1994) — スケッチ風線画:端点をオーバーシュートし、揺れる線。幅がストロークに沿って変化するペンモデルで描画。
M. P. Salisbury, S. E. Anderson, R. Barzel, D. H. Salesin, “Interactive Pen-and-Ink Illustration,” SIGGRAPH 1994, pp. 101–108 — ストロークテクスチャと、ターゲットトーンに到達するための手書き風ストロークの配置。
E. Praun, H. Hoppe, M. Webb, A. Finkelstein, “Real-Time Hatching,” SIGGRAPH 2001 — ネストされたハッチングのトーンレベル。ここではオブジェクト空間ストロークで実現されているため、ハッチングが泳ぐことはありません。
G. Winkenbach, D. H. Salesin, “Computer-Generated Pen-and-Ink Illustration,” SIGGRAPH 1994, pp. 91–100 — ストローク密度と太さによるトーン。ストロークテクスチャ。
G. Elber, “Line Art Rendering via a Coverage of Isoparametric Curves,” IEEE TVCG 1(3), 1995 — 等パラメトリック曲線に沿ったハッチング(パラメータ線ストライプモード)。
T. Saito, T. Takahashi, “Comprehensible Rendering of 3-D Shapes,” SIGGRAPH 1990, pp. 197–206 — 法線と深度バッファからのエッジ抽出(オプションのSobelエッジフィルター)。
W. E. Lorensen, H. E. Cline, “Marching Cubes,” SIGGRAPH 1987; A. Doi, A. Koide, “An Efficient Method of Triangulating Equi-Valued Surfaces by Using Tetrahedral Cells,” IEICE Trans. E74(1), 1991 — 陰関数曲面は、四面体バリアントによってポリゴン化されます。
T. Möller, B. Trumbore, “Fast, Minimum Storage Ray-Triangle Intersection,” J. Graphics Tools 2(1), 1997 — 二重曲線計算の背後にあるセグメント-三角形テスト。
R. Kusner, “Conformal Geometry and Complete Minimal Surfaces,” Bull. Amer. Math. Soc. 17(2), 1987 — ボイの曲面(ここで数値的にチェック済み:反対称境界の貼り合わせと3重対称性は機械精度まで保持)に使用されるブラヤント=クスナーパラメータ化のソース。kusner()によって使用される一般p形式は、分母w2p + κpwp − 1を持ち、κp = 2√(2p−1)/(p−1)で、係数は数値的にチェックして、反転前の表面が最小であることを確認しました(√3の代わりに2√3を持つ循環p = 2バージョンはそうではありません)。
F. Apéry, Models of the Real Projective Plane, Vieweg, 1987 も参照してください。そのデカルト族(R. Ferréol の mathcurve.com、「Morin surface」に表形式で掲載)は、Morinプリセットを与え、n = 3 ではボイの曲面の別のモデルを与えます。
関連文献:D. DeCarlo et al., “Suggestive Contours for Conveying Shape,” SIGGRAPH 2003; R. Kalnins et al., “WYSIWYG NPR,” SIGGRAPH 2002。
表記
数式はJavaScript式です。^ はべき乗として受け入れられます。
利用可能な関数:sin cos tan asin acos atan atan2 sinh cosh tanh exp log sqrt cbrt abs sign pow min max floor hypot pi tau e sq(x)。
範囲ボックスも式を受け入れます(例: 2*pi)。
ヘルパー boy(u,v) は、ℝℙ² のブラヤント=クスナーイマージョンを [x,y,z] として返します(u は [0,1] の半径、v は角度)。
torusknot(u,v,p,q,R,r,a) は、半径 R, r(デフォルト 2, 3, 2.2, 1, 0.42)のトーラス上の (p,q) トーラスノットの周りの半径 a のチューブを返します。u はノットに沿って1回、v はチューブの周りを走ります。
apery(u,v,n,k) は、u ∈ [−π/2, π/2] のアペリーのデカルト族です。n = 2, k = 1 はモリンの曲面(v ∈ [0, 2π])、n = 3, k = 1 はボイの曲面(v ∈ [0, π])です。
kusner(u,v,p,d) はクスナー=ブラヤント族で、w = tan(πu/4) eiv です。u ∈ [0, 2] は球全体(p = 2 はモリンの曲面)、u ∈ [0, 1] は奇数 p に対して ℝℙ² を1回カバーします(p = 3 はボイ)。d は反転の中心をシフトします(デフォルト −½)。