Dit artikel beschrijft een technisch project waarbij 3D-topologische oppervlakken worden gerenderd als handgetekende illustraties. De methode maakt gebruik van strokes in plaats van pixels, waarbij silhouetten en contouren worden bepaald via geometrische berekeningen op het mesh.
Belangrijke technische kenmerken zijn:
- Styling: Er wordt gebruikgemaakt van een 'hand wobble'-effect, taps toelopende lijnen en gesimuleerde inbloeding in papiernerf om een authentieke handgetekende look te creëren.
- Zichtbaarheid: Een hidden-line pass op de GPU zorgt ervoor dat occludeerde delen als stippellijnen worden weergegeven.
- Arcering: De schaduwwerking wordt gerealiseerd via stroomlijnen van het hoofdkrommingsveld (principal-curvature line field) in verschillende dichtheden.
- Wiskundige basis: Het project leunt op uitgebreide literatuur over non-photorealistic rendering (NPR) en topologie, en biedt specifieke functies voor het genereren van complexe vormen zoals het oppervlak van Boy en de torus-knoop.
Een Topologisch Beeldboek, Gerenderd
Bronnen en methode
De tekening is opgebouwd uit lijnen (strokes) in plaats van pixels. Silhouetten worden bepaald door de nulverzameling van $n \cdot v$ op het mesh (gevonden met geïnterpoleerde normalen, waardoor ze vloeiende curven vormen). Grenzen en de dubbele curve van een immersie worden toegevoegd als verdere ketens. Al deze elementen worden getekend als taps toelopende linten met een breed-nib penmodel, waarbij het gewicht toeneemt aan de schaduwzijde en richting de kijker, aangevuld met een coherente 'handtrilling' (hand wobble).
De zichtbaarheid wordt bepaald op de GPU: een hidden-line pass tekent de occludeerde delen met stippellijnen, en een eenzijdige papierhalo onder elke nabije contour snijdt de lijnen erachter weg.
Arcering bestaat uit een set stroomlijnen van het hoofdkrommingsveld (principal-curvature line field), die tijdens het opbouwen in drie geneste dichtheden worden getraceerd (de tweede langs de andere hoofdirichting voor kruisarcering). De toon bepaalt welke familie wordt geïnkt en waar elke lijn uitloopt. Hooglichten blijven als onbewerkt papier leeg. De hoofdrichtingen zijn geordend naar getekende kromming, niet naar grootte, zodat de twee families continu blijven over de loci waar $\kappa1 = -\kappa2$.
Contourketens worden licht gladgestreken vóór het inkten. Lijnen steken een beetje buiten hun eindpunten, in de stijl van schetsmatige lijnering. Het inkleuren van de startpunten en de grillige inbloeding in de papiernerf zijn handmatig afgestelde effecten van deze pagina (een verbreed lint waarvan de rand wordt gestuurd door een vezelachtige ruis), en zijn niet direct overgenomen van echt papier. Labels zijn handgeschreven, vastgepind aan punten op het oppervlak met een leiderlijn, en worden gedimd wanneer hun referentiepunt verborgen is.
Referenties
- G. K. Francis, A Topological Picture Book, Springer, 1987 – Het stijldoel: contourtekeningen met cusps, dubbele curven, verborgen lijnen en spaarzame gearceerde banden.
- P. Bénard, A. Hertzmann, “Line Drawings from 3D Models: A Tutorial,” Foundations and Trends in Computer Graphics and Vision 11(1–2), 2019 – De contour-pipeline: vloeiende silhouetten als $n \cdot v = 0$, chaining, zichtbaarheid en stylisatie.
- A. Hertzmann, “Introduction to 3D Non-Photorealistic Rendering: Silhouettes and Outlines,” SIGGRAPH 99 Course Notes – Silhouetten vanuit geïnterpoleerde vertex-normalen (marching-triangles op $n \cdot v$).
- A. Hertzmann, D. Zorin, “Illustrating Smooth Surfaces,” SIGGRAPH 2000, pp. 517–526 – Arcering langs hoofdrichtingen van de kromming, kruisarcering uitsluitend in donkere regio's, blanco hooglichten en ondercuts.
- B. Jobard, W. Lefer, “Creating Evenly-Spaced Streamlines of Arbitrary Density,” Visualization in Scientific Computing, 1997 – De regel voor scheidingsafstand die wordt gebruikt om de arcering-stroomlijnen te traceren.
- A. Appel, F. J. Rohlf, A. J. Stein, “The Haloed Line Effect for Hidden Line Elimination,” SIGGRAPH 1979 – De papierhalo's bij lijnkruisingen.
- J. D. Northrup, L. Markosian, “Artistic Silhouettes: A Hybrid Approach,” NPAR 2000 – Het ketenen van silhouetsegmenten en het renderen daarvan als gestileerde lijnen met tapering en breedtevariatie.
- 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) – Schetsmatige lijnering: lijnen die over hun eindpunten heen schieten en wiebelen, getekend met een penmodel waarvan de breedte varieert langs de lijn.
- M. P. Salisbury, S. E. Anderson, R. Barzel, D. H. Salesin, “Interactive Pen-and-Ink Illustration,” SIGGRAPH 1994, pp. 101–108 – Lijntexturen en de plaatsing van handmatige lijnen om een bepaalde toon te bereiken.
- E. Praun, H. Hoppe, M. Webb, A. Finkelstein, “Real-Time Hatching,” SIGGRAPH 2001 – Geneste toonlevels van arcering; hier gerealiseerd met object-space lijnen zodat de arcering niet 'meebeweegt' (swimming).
- G. Winkenbach, D. H. Salesin, “Computer-Generated Pen-and-Ink Illustration,” SIGGRAPH 1994, pp. 91–100 – Toon door lijndichtheid en dikte; lijntexturen.
- G. Elber, “Line Art Rendering via a Coverage of Isoparametric Curves,” IEEE TVCG 1(3), 1995 – Arcering langs isoparametrische curven (de modus voor parameterlijnen).
- T. Saito, T. Takahashi, “Comprehensible Rendering of 3-D Shapes,” SIGGRAPH 1990, pp. 197–206 – Extractie van randen uit normal- en depth-buffers (het optionele Sobel-randfilter).
- 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 – De impliciete oppervlakken worden gepolygoniseerd via de tetraëdrische variant.
- T. Möller, B. Trumbore, “Fast, Minimum Storage Ray-Triangle Intersection,” J. Graphics Tools 2(1), 1997 – De segment-driehoek test achter de berekening van de dubbele curve.
- R. Kusner, “Conformal Geometry and Complete Minimal Surfaces,” Bull. Amer. Math. Soc. 17(2), 1987 – Bron van de Bryant–Kusner parametrisering gebruikt voor het oppervlak van Boy. De algemene p-vorm gebruikt door
kusner() heeft de noemer $w^{2p} + \kappap w^p - 1$ met $\kappap = 2\sqrt{(2p-1)/(p-1)}$ en voorkoefficient $p/(p-1)$. Zie ook F. Apéry, Models of the Real Projective Plane, Vieweg, 1987.
Aanvullende literatuur:
- D. DeCarlo et al., “Suggestive Contours for Conveying Shape,” SIGGRAPH 2003.
- R. Kalnins et al., “WYSIWYG NPR,” SIGGRAPH 2002.
Notatie
Formules worden weergegeven als JavaScript-expressies; ^ wordt geaccepteerd voor machten.
Beschikbare functies: 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).
Bereikvakken accepteren eveneens expressies (bijv. 2*pi).
Hulpfuncties:
boy(u,v): Geeft de Bryant–Kusner immersie van $\mathbb{RP}^2$ terug als [x,y,z] (waarbij $u$ de straal is in $[0,1]$ en $v$ de hoek).
torusknot(u,v,p,q,R,r,a): Geeft de buis met straal $a$ rond de $(p,q)$ torus-knoop op de torus met stralen $R$ en $r$ (standaardwaarden: 2, 3, 2.2, 1, 0.42). $u$ loopt één keer langs de knoop, $v$ rond de buis.
apery(u,v,n,k): Is de Cartesiaanse familie van Apéry met $u \in [-\pi/2, \pi/2]$.
- $n = 2, k = 1$ is het oppervlak van Morin ($v \in [0, 2\pi]$).
- $n = 3, k = 1$ is het oppervlak van Boy ($v \in [0, \pi]$).
kusner(u,v,p,d): Is de Kusner–Bryant familie, $w = \tan(\pi u/4) e^{iv}$.
- $u \in [0, 2]$ is de volledige sfeer ($p = 2$ is het oppervlak van Morin).
- $u \in [0, 1]$ bestrijkt $\mathbb{RP}^2$ één keer voor oneven $p$ ($p = 3$ is Boy).
- $d$ verschuift het centrum van inversie (standaard $-1/2$).
Een Topologisch Beeldboek, Gerenderd
Bronnen en methode
De tekening is opgebouwd uit lijnen (strokes) in plaats van pixels. Silhouetten worden bepaald door de nulverzameling van $n \cdot v$ op het mesh (gevonden met geïnterpoleerde normalen, waardoor ze vloeiende curven vormen). Grenzen en de dubbele curve van een immersie worden toegevoegd als verdere ketens. Al deze elementen worden getekend als taps toelopende linten met een breed-nib penmodel, waarbij het gewicht toeneemt aan de schaduwzijde en richting de kijker, aangevuld met een coherente 'handtrilling' (hand wobble).
De zichtbaarheid wordt bepaald op de GPU: een hidden-line pass tekent de occludeerde delen met stippellijnen, en een eenzijdige papierhalo onder elke nabije contour snijdt de lijnen erachter weg.
Arcering bestaat uit een set stroomlijnen van het hoofdkrommingsveld (principal-curvature line field), die tijdens het opbouwen in drie geneste dichtheden worden getraceerd (de tweede langs de andere hoofdirichting voor kruisarcering). De toon bepaalt welke familie wordt geïnkt en waar elke lijn uitloopt. Hooglichten blijven als onbewerkt papier leeg. De hoofdrichtingen zijn geordend naar getekende kromming, niet naar grootte, zodat de twee families continu blijven over de loci waar $\kappa1 = -\kappa2$.
Contourketens worden licht gladgestreken vóór het inkten. Lijnen steken een beetje buiten hun eindpunten, in de stijl van schetsmatige lijnering. Het inkleuren van de startpunten en de grillige inbloeding in de papiernerf zijn handmatig afgestelde effecten van deze pagina (een verbreed lint waarvan de rand wordt gestuurd door een vezelachtige ruis), en zijn niet direct overgenomen van echt papier. Labels zijn handgeschreven, vastgepind aan punten op het oppervlak met een leiderlijn, en worden gedimd wanneer hun referentiepunt verborgen is.
Referenties
- G. K. Francis, A Topological Picture Book, Springer, 1987 – Het stijldoel: contourtekeningen met cusps, dubbele curven, verborgen lijnen en spaarzame gearceerde banden.
- P. Bénard, A. Hertzmann, “Line Drawings from 3D Models: A Tutorial,” Foundations and Trends in Computer Graphics and Vision 11(1–2), 2019 – De contour-pipeline: vloeiende silhouetten als $n \cdot v = 0$, chaining, zichtbaarheid en stylisatie.
- A. Hertzmann, “Introduction to 3D Non-Photorealistic Rendering: Silhouettes and Outlines,” SIGGRAPH 99 Course Notes – Silhouetten vanuit geïnterpoleerde vertex-normalen (marching-triangles op $n \cdot v$).
- A. Hertzmann, D. Zorin, “Illustrating Smooth Surfaces,” SIGGRAPH 2000, pp. 517–526 – Arcering langs hoofdrichtingen van de kromming, kruisarcering uitsluitend in donkere regio's, blanco hooglichten en ondercuts.
- B. Jobard, W. Lefer, “Creating Evenly-Spaced Streamlines of Arbitrary Density,” Visualization in Scientific Computing, 1997 – De regel voor scheidingsafstand die wordt gebruikt om de arcering-stroomlijnen te traceren.
- A. Appel, F. J. Rohlf, A. J. Stein, “The Haloed Line Effect for Hidden Line Elimination,” SIGGRAPH 1979 – De papierhalo's bij lijnkruisingen.
- J. D. Northrup, L. Markosian, “Artistic Silhouettes: A Hybrid Approach,” NPAR 2000 – Het ketenen van silhouetsegmenten en het renderen daarvan als gestileerde lijnen met tapering en breedtevariatie.
- 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) – Schetsmatige lijnering: lijnen die over hun eindpunten heen schieten en wiebelen, getekend met een penmodel waarvan de breedte varieert langs de lijn.
- M. P. Salisbury, S. E. Anderson, R. Barzel, D. H. Salesin, “Interactive Pen-and-Ink Illustration,” SIGGRAPH 1994, pp. 101–108 – Lijntexturen en de plaatsing van handmatige lijnen om een bepaalde toon te bereiken.
- E. Praun, H. Hoppe, M. Webb, A. Finkelstein, “Real-Time Hatching,” SIGGRAPH 2001 – Geneste toonlevels van arcering; hier gerealiseerd met object-space lijnen zodat de arcering niet 'meebeweegt' (swimming).
- G. Winkenbach, D. H. Salesin, “Computer-Generated Pen-and-Ink Illustration,” SIGGRAPH 1994, pp. 91–100 – Toon door lijndichtheid en dikte; lijntexturen.
- G. Elber, “Line Art Rendering via a Coverage of Isoparametric Curves,” IEEE TVCG 1(3), 1995 – Arcering langs isoparametrische curven (de modus voor parameterlijnen).
- T. Saito, T. Takahashi, “Comprehensible Rendering of 3-D Shapes,” SIGGRAPH 1990, pp. 197–206 – Extractie van randen uit normal- en depth-buffers (het optionele Sobel-randfilter).
- 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 – De impliciete oppervlakken worden gepolygoniseerd via de tetraëdrische variant.
- T. Möller, B. Trumbore, “Fast, Minimum Storage Ray-Triangle Intersection,” J. Graphics Tools 2(1), 1997 – De segment-driehoek test achter de berekening van de dubbele curve.
- R. Kusner, “Conformal Geometry and Complete Minimal Surfaces,” Bull. Amer. Math. Soc. 17(2), 1987 – Bron van de Bryant–Kusner parametrisering gebruikt voor het oppervlak van Boy. De algemene p-vorm gebruikt door
kusner() heeft de noemer $w^{2p} + \kappap w^p - 1$ met $\kappap = 2\sqrt{(2p-1)/(p-1)}$ en voorkoefficient $p/(p-1)$. Zie ook F. Apéry, Models of the Real Projective Plane, Vieweg, 1987.
Aanvullende literatuur:
- D. DeCarlo et al., “Suggestive Contours for Conveying Shape,” SIGGRAPH 2003.
- R. Kalnins et al., “WYSIWYG NPR,” SIGGRAPH 2002.
Notatie
Formules worden weergegeven als JavaScript-expressies; ^ wordt geaccepteerd voor machten.
Beschikbare functies: 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).
Bereikvakken accepteren eveneens expressies (bijv. 2*pi).
Hulpfuncties:
boy(u,v): Geeft de Bryant–Kusner immersie van $\mathbb{RP}^2$ terug als [x,y,z] (waarbij $u$ de straal is in $[0,1]$ en $v$ de hoek).
torusknot(u,v,p,q,R,r,a): Geeft de buis met straal $a$ rond de $(p,q)$ torus-knoop op de torus met stralen $R$ en $r$ (standaardwaarden: 2, 3, 2.2, 1, 0.42). $u$ loopt één keer langs de knoop, $v$ rond de buis.
apery(u,v,n,k): Is de Cartesiaanse familie van Apéry met $u \in [-\pi/2, \pi/2]$.
- $n = 2, k = 1$ is het oppervlak van Morin ($v \in [0, 2\pi]$).
- $n = 3, k = 1$ is het oppervlak van Boy ($v \in [0, \pi]$).
kusner(u,v,p,d): Is de Kusner–Bryant familie, $w = \tan(\pi u/4) e^{iv}$.
- $u \in [0, 2]$ is de volledige sfeer ($p = 2$ is het oppervlak van Morin).
- $u \in [0, 1]$ bestrijkt $\mathbb{RP}^2$ één keer voor oneven $p$ ($p = 3$ is Boy).
- $d$ verschuift het centrum van inversie (standaard $-1/2$).