Method and apparatus for surface approximation without cracks
First Claim
1. In a computer system, a method comprising:
- splitting a surface into a first region and a second region, said first region and said second region having a common edge;
obtaining a data structure associated with said common edge;
tessellating said first region, comprising writing adjacency information associated with said common edge to said data structure; and
tessellating said second region independently of said first region, comprising reading said adjacency information from said data structure to form a tessellation without cracks along said common edge;
wherein writing adjacency information comprises writing vertex locations along said common edge into said data structure;
wherein tessellating said second region comprises;
obtaining said vertex locations from said data structure;
determining one or more selected vertex locations along said common edge, said selected vertex locations comprising said vertex locations obtained from said data structure;
wherein determining one or more selected vertex locations further comprises interpolating one or more vertex locations based on said vertex locations obtained from said data structure;
wherein interpolating one or more vertex locations forms an overlap of said second region over said first region at said one or more vertex locations;
wherein interpolating one or more vertex locations comprises;
interpolating a double precision vertex location;
determining a vector pointing away from a neighboring vertex in said second region;
obtaining a single precision vertex location by rounding said double precision location in direction of said vector.
1 Assignment
0 Petitions
Accused Products
Abstract
A method and apparatus for surface approximation without cracks. In one or more embodiments, a surface to be rendered is split into multiple adjacent regions (e.g., subdivision surfaces or patches). A data structure is associated with each boundary edge between two regions for storage of adjacency information in the form of a sequence of tessellation vertices. Adjacency information for a given edge is written into the data structure when an adjacent region is first tessellated. When the remaining adjacent region is tessellated, the adjacency information is read from the data structure and used to achieve tessellation without cracks. In one embodiment, visible cracks due to T-vertices are prevented by forming an overlap of adjacent regions at the location of each T-vertex. This technique allows regions to be tessellated and rendered without any advance knowledge of how the adjacent regions will be split. The regions may be tessellated and rendered separately and in any order, reducing time and memory requirments for rendering.
105 Citations
18 Claims
-
1. In a computer system, a method comprising:
-
splitting a surface into a first region and a second region, said first region and said second region having a common edge;
obtaining a data structure associated with said common edge;
tessellating said first region, comprising writing adjacency information associated with said common edge to said data structure; and
tessellating said second region independently of said first region, comprising reading said adjacency information from said data structure to form a tessellation without cracks along said common edge;
wherein writing adjacency information comprises writing vertex locations along said common edge into said data structure;
wherein tessellating said second region comprises;
obtaining said vertex locations from said data structure;
determining one or more selected vertex locations along said common edge, said selected vertex locations comprising said vertex locations obtained from said data structure;
wherein determining one or more selected vertex locations further comprises interpolating one or more vertex locations based on said vertex locations obtained from said data structure;
wherein interpolating one or more vertex locations forms an overlap of said second region over said first region at said one or more vertex locations;
wherein interpolating one or more vertex locations comprises;
interpolating a double precision vertex location;
determining a vector pointing away from a neighboring vertex in said second region;
obtaining a single precision vertex location by rounding said double precision location in direction of said vector. - View Dependent Claims (2, 3, 4)
identifying one or more initial locations on said common edge;
for said one or more initial locations along said common edge, selecting a closest vertex location from said vertex locations obtained from said data structure.
-
-
3. The method of claim 1, wherein tessellating said second region further comprises:
-
determining an initial grid of vertex locations in said second region, wherein a fill region exists between a grid edge of said initial grid and said common edge; and
tessellating said fill region using vertex locations of said grid edge and said one or more selected vertex locations.
-
-
4. The method of claim 1, wherein tessellating said second region further comprises freeing said data structure.
-
5. In a computer system, a method comprising:
-
splitting a surface into a first region and a second region, said first region and said second region having a common edge;
obtaining a data structure associated with said common edge;
tessellating said first region, comprising writing adjacency information associated with said common edge to said data structure; and
tessellating said second region independently of said first region, comprising reading said adjacency information from said data structure to form a tessellation without cracks along said common edge;
wherein writing adjacency information comprises writing vertex locations along said common edge into said data structure;
wherein tessellating said second region comprises;
obtaining said vertex locations from said data structure;
determining one or more selected vertex locations along said common edge, said selected vertex locations comprising said vertex locations obtained from said data structure;
wherein determining one or more selected vertex locations further comprises interpolating one or more vertex locations based on said vertex locations obtained from said data structure;
wherein interpolating one or more vertex locations forms an overlap of said second region over said first region at said one or more vertex locations;
wherein interpolating one or more vertex locations comprises;
interpolating an initial vertex location;
determining an upper bound on roundoff error;
determining a desired direction of rounding; and
adjusting said initial vertex location by said upper bound in said desired direction. - View Dependent Claims (6, 7, 8, 9)
identifying one or more initial locations on said common edge;
for said one or more initial locations along said common edge, selecting a closest vertex location from said vertex locations obtained from said data structure.
-
-
8. The method of claim 5, wherein tessellating said second region further comprises:
-
determining an initial grid of vertex locations in said second region, wherein a fill region exists between a grid edge of said initial grid and said common edge; and
tessellating said fill region using vertex locations of said grid edge and said one or more selected vertex locations.
-
-
9. The method of claim 5, wherein tessellating said second region further comprises freeing said data structure.
-
10. A computer program product comprising:
-
a computer readable medium having computer program code embodied therein for rendering surfaces, the computer readable medium comprising computer program code configured to cause a computer to;
split a surface into a first region and a second region, said first region and said second region having a common edge;
obtain a data structure associated with said common edge;
tessellate said first region;
write adjacency information of said first region to said data structure, wherein said adjacency information is associated with said common edge; and
tessellate said second region independently of said first region, said tessellation of said second region comprising reading said adjacency information from said data structure to form a tessellation without cracks along said common edge;
wherein writing adjacency information comprises writing vertex locations along said common edge into said data structure;
wherein tessellating said second region comprises;
obtaining said vertex locations from said data structure;
determining one or more selected vertex locations along said common edge, said selected vertex locations comprising said vertex locations obtained from said data structure;
wherein determining one or more selected vertex locations further comprises interpolating one or more vertex locations based on said vertex locations obtained from said data structure;
wherein interpolating one or more vertex locations forms an overlap of said second region over said first region at said one or more vertex locations;
wherein interpolating one or more vertex locations comprises;
interpolating a double precision vertex location;
determining a vector pointing away from a neighboring vertex in said second region;
obtaining a single precision vertex location by rounding said double precision location in direction of said vector. - View Dependent Claims (11, 12, 13)
identifying one or more initial locations on said common edge;
for said one or more initial locations along said common edge, selecting a closest vertex location from said vertex locations obtained from said data structure.
-
-
12. The computer program product of claim 10, wherein tessellating said second region further comprises:
-
determining an initial grid of vertex locations in said second region, wherein a fill region exists between a grid edge of said initial grid and said common edge; and
tessellating said fill region using vertex locations of said grid edge and said one or more selected vertex locations.
-
-
13. The computer program product of claim 10, wherein tessellating said second region further comprises freeing said data structure.
-
14. A computer program product comprising:
-
a computer readable medium having computer program code embodied therein for rendering surfaces, the computer readable medium comprising computer program code configured to cause a computer to;
split a surface into a first region and a second region, said first region and said second region having a common edge;
obtain a data structure associated with said common edge;
tessellate said first region;
write adjacency information of said first region to said data structure, wherein said adjacency information is associated with said common edge; and
tessellate said second region independently of said first region, said tessellation of said second region comprising reading said adjacency information from said data structure to form a tessellation without cracks along said common edge;
wherein writing adjacency information comprises writing vertex locations along said common edge into said data structure;
wherein tessellating said second region comprises;
obtaining said vertex locations from said data structure;
determining one or more selected vertex locations along said common edge, said selected vertex locations comprising said vertex locations obtained from said data structure;
wherein determining one or more selected vertex locations further comprises interpolating one or more vertex locations based on said vertex locations obtained from said data structure;
wherein interpolating one or more vertex locations forms an overlap of said second region over said first region at said one or more vertex locations;
wherein interpolating one or more vertex locations comprises;
interpolating an initial vertex location;
determining an upper bound on roundoff error;
determining a desired direction of rounding; and
adjusting said initial vertex location by said upper bound in said desired direction. - View Dependent Claims (15, 16, 17, 18)
identifying one or more initial locations on said common edge;
for said one or more initial locations along said common edge, selecting a closest vertex location from said vertex locations obtained from said data structure.
-
-
17. The computer program product of claim 14, wherein tessellating said second region further comprises:
-
determining an initial grid of vertex locations in said second region, wherein a fill region exists between a grid edge of said initial grid and said common edge; and
tessellating said fill region using vertex locations of said grid edge and said one or more selected vertex locations.
-
-
18. The computer program product of claim 14, wherein tessellating said second region further comprises freeing said data structure.
Specification