ConTesse: Accurate Occluding Contours for Subdivision Surfaces
ConTesse: Accurate Occluding Contours for Subdivision Surfaces
ACM Transactions on Graphics, 2023, 42 (1), pp.16.
- 1 University of British Columbia
- 2 Univ. Bordeaux, CNRS, Bordeaux INP, Inria, LaBRI
- 3 Adobe Research
- 4 Adobe
Given (a) a smooth 3D surface and a camera viewpoint, our method produces (b) a triangle mesh where the occluding contour of the mesh accurately approximates the occluding contour of the smooth surface. Standard algorithms may then be used to extract (c) the view map of occluding contours, and to (d) stylize them. (Fertility courtesy UU from AIM@SHAPE-VISIONAIR Shape Repository).
Abstract
This paper proposes a method for computing the visible occluding contours of subdivision surfaces. The paper first introduces new theory for contour visibility of smooth surfaces. Necessary and sufficient conditions are introduced for when a sampled occluding contour is valid, that is, when it may be assigned consistent visibility. Previous methods do not guarantee these conditions, which helps explain why smooth contour visibility has been such a challenging problem in the past. The paper then proposes an algorithm that, given a subdivision surface, finds sampled contours satisfying these conditions, and then generates a new triangle mesh matching the given occluding contours. The contours of the output triangle mesh may then be rendered with standard non-photorealistic rendering algorithms, using the mesh for visibility computation. The method can be applied to any triangle mesh, by treating it as the base mesh of a subdivision surface.
Paper
Downloads
Code
Additional Results
(Public domain Pig, ogre, and Spot models by Keenan Crane, Killeroo © headus.com.au, Bigguy and Monster Frog © Bay Raitt, Walking Man © Ryan Dale)
Bibtex
@article{Liu:2023,
title = {ConTesse: Accurate Occluding Contours for Subdivision Surfaces},
author = {Liu, Chenxi and B\'{e}nard, Pierre and Hertzmann, Aaron and Hoshyari, Shayan},
year = {2023},
journal = {ACM Trans. Graph.},
month = feb,
volume = {42},
number = {1},
articleno = {5},
url = {https://doi.org/10.1145/3544778},
doi = {10.1145/3544778}
}