Method and system for efficiently drawing subdivision surfaces for 3D graphics
First Claim
1. In a computer system having a processor and a display, a computer implemented method for computing a subdivision surface by incrementally processing and outputting the subdivision surface to a final subdivision level to more accurately render a 3 dimensional (3D) surface, the method comprising the computer implemented steps of:
- a) pulling polygons from a polygon mesh of a 3D surface;
b) storing the polygons into a 2 dimensional array such that the vertices of the polygons occupy nodes of the 2 dimensional array;
c1) subdividing the polygons stored in a first portion of the 2 dimensional array into resulting polygons;
c2) outputting the resulting polygons stored in the first portion to the graphics pipeline such that memory previously storing the first portion can be reused, wherein the resulting polygons stored in the first portion have been subdivided by at least three levels;
c3) subdividing the polygons stored in a second portion of the 2 dimensional array into resulting polygons;
c4) outputting the resulting polygons stored in the second portion to the graphics pipeline; and
d) outputting the resulting polygons into a graphics pipeline wherein the graphics pipeline renders the resulting polygons into a 3D image on a computer display.
3 Assignments
0 Petitions
Accused Products
Abstract
A process for efficiently drawing subdivision surfaces. The present invention operates within a computer system for visually displaying 3 dimensional (3D) surfaces on a display. The present invention pulls polygons from a polygon mesh of a 3D surface. The polygons are stored into a 2 dimensional array such that the vertices of the polygons occupy nodes of the 2 dimensional array and are readily accessed. The polygons are subsequently divided into a plurality of resulting polygons. The resulting polygons are then sent to a graphics pipeline, wherein the graphics pipeline renders the resulting polygons into a 3D image on the computer display.
138 Citations
31 Claims
-
1. In a computer system having a processor and a display, a computer implemented method for computing a subdivision surface by incrementally processing and outputting the subdivision surface to a final subdivision level to more accurately render a 3 dimensional (3D) surface, the method comprising the computer implemented steps of:
-
a) pulling polygons from a polygon mesh of a 3D surface; b) storing the polygons into a 2 dimensional array such that the vertices of the polygons occupy nodes of the 2 dimensional array; c1) subdividing the polygons stored in a first portion of the 2 dimensional array into resulting polygons; c2) outputting the resulting polygons stored in the first portion to the graphics pipeline such that memory previously storing the first portion can be reused, wherein the resulting polygons stored in the first portion have been subdivided by at least three levels; c3) subdividing the polygons stored in a second portion of the 2 dimensional array into resulting polygons; c4) outputting the resulting polygons stored in the second portion to the graphics pipeline; and d) outputting the resulting polygons into a graphics pipeline wherein the graphics pipeline renders the resulting polygons into a 3D image on a computer display. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. In a computer system having a processor and a display for visually displaying 3 dimensional (3D) surfaces, a computer implemented method for computing a subdivision surface by incrementally processing and outputting the subdivision surface to a final subdivision level, the surface modeled by a polygon mesh built with triangle polygons (triangles), the method comprising the computer implemented steps of:
-
a) pulling a plurality of triangles from a triangle mesh in a plurality of triangle pairs; b) storing the plurality of triangle pairs into a 2 dimensional array such that the vertices of the plurality of triangle pairs occupy nodes of the 2 dimensional array; c1) subdividing the triangles stored in a first portion of the 2 dimensional array into resulting triangles; c2) outputting the resulting triangles stored in the first portion such that memory previously storing the first portion can be reused, wherein the resulting polygons stored in the first portion have been subdivided by at least three levels; c3) subdividing the triangles stored in a second portion of the 2 dimensional array into resulting triangles; c4) outputting the resulting triangles stored in the second portion; and d) outputting the plurality of resulting triangles. - View Dependent Claims (10, 11, 12, 13, 14)
-
-
15. A computer system having a processor coupled to a bus and a memory coupled to the bus, the memory for containing a set of instructions that when executed by the processor causes the computer system to implement a method of computing a subdivision surface by incrementally processing and outputting the subdivision surface to a final subdivision level to more accurately render a 3 dimensional (3D) surface, the method comprising the computer system performing the steps of:
-
a) pulling polygons from a polygon mesh of a 3D surface; b) storing the polygons into a 2 dimensional array such that the vertices of the polygons occupy nodes of the 2 dimensional array; c1) subdividing the polygons stored in a first portion of the 2 dimensional array into resulting polygons; c2) outputting the resulting polygons stored in the first portion to the graphics pipeline such that memory previously storing the first portion can be reused, wherein the resulting polygons stored in the first portion have been subdivided by at least three levels; c3) subdividing the polygons stored in a second portion of the 2 dimensional array into resulting polygons; c4) outputting the resulting polygons stored in the second portion to the graphics pipeline; and d) outputting the resulting polygons into a graphics pipeline wherein the graphics pipeline renders the resulting polygons into a 3D image on a computer display. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22)
-
-
23. In a graphics computer system for rendering 3D images, a computer implemented method for efficiently computing a subdivision surface of a 3D object by incrementally processing and outputting the subdivision surface to a final subdivision level, the method comprising the computer implemented steps of:
-
pulling polygons from a polygon mesh representative of a 3D surface; storing the polygons into a 2 dimensional array such that the vertices of the polygons occupy nodes of the 2 dimensional array, the 2 dimensional array realized in a computer readable memory; incrementally processing the 2 dimensional array to a final subdivision level using a sliding window process comprising the steps of; a) storing an initial portion of the 2 dimensional array into intermediate storage to initialize a window of the 2 dimensional array for processing; b) incrementally calculating subdivision vertex coordinates for each row of the initial portion; c) upon subdividing one row of the initial portion to a final subdivision level, wherein the one row has been subdivided by at least three levels, transferring the one row from intermediate storage to a graphics pipeline for rendering; d) replacing the one row in the initial portion with a subsequent row of the 2 dimensional array to reuse memory previously occupied by the one row; and e) repeating steps b) through d) until the 2 dimensional array is processed to a final subdivision level, such that the window for processing the 2 dimensional array slides from the initial portion through the entirety of the 2 dimensional array. - View Dependent Claims (24, 25, 26, 27)
-
-
28. In a graphics computer system for rendering 3D images, a computer implemented method for efficiently computing a subdivision surface of a 3D object by incrementally processing and outputting the subdivision surface to a final subdivision level, the method comprising the computer implemented steps of:
-
pulling polygons from a polygon mesh representative of a 3D surface; storing the polygons into a 2 dimensional array such that the vertices of the polygons occupy nodes of the 2 dimensional array, the 2 dimensional array realized in a computer readable memory; incrementally processing the 2 dimensional array to a final subdivision level using a sliding window process comprising the steps of; a) storing an initial 3 rows of the 2 dimensional array into intermediate storage to initialize a window of the 2 dimensional array for processing, wherein the initial 3 rows are at a subdivision level J; b) spliting the diagonal and vertical edges between the first and second row vertices of the initial 3 rows to obtain a first row support vertices at subdivision level J+1; c) splitting the horizontal edges and updating the vertices between the first and second row vertices of the initial 3 rows to obtain a second row of support vertices at a subdivision level J+1; d) splitting the vertical and diagonal edges connecting the second and third rows of the initial 3 rows to obtain a second row of support vertices at the subdivision level J+1; e) storing a next row of vertices from the 2 dimensional array as a subsequent row of the initial portion such that the edges of the next row at level j provide neighbors needed for splitting the horizontal edges and updating the vertex coordinates in the middle rows, and such that resulting new and updated vertices become a new lowest row at level j+1; f) repeating steps b-e until the first row is at a final subsivision level J+i, wherein the first row has been subdivided by at least three levels, and outputting the first row to a graphics pipeline for rendering and replacing the first row with a new row from the 2 dimensional array to reuse memory previously occupied by the first row; and g) repeating steps b) through f) until the entire 2 dimensional array has been processed and rendered at the final subdivision level J+i such that the window for processing the 2 dimensional array slides from the initial three rows through the entirety of the 2 dimensional array. - View Dependent Claims (29)
-
-
30. In a graphics computer system for rendering 3D images, a computer implemented method for efficiently computing a subdivision surface of a 3D object by incrementally processing and outputting the subdivision surface to a final subdivision level, the method comprising the computer implemented steps of:
-
pulling triangle polygons from a polygon mesh representative of a 3D surface, wherein the triangle polygons are pulled from the polygon mesh using a pairing algorithm, wherein the triangle polygons are pulled from the polygon mesh in unique pairs without breaking the polygon mesh into discontiguous portions; storing the unique pairs of triangle polygons into a 2 dimensional array such that the vertices of the triangle polygons occupy nodes of the 2 dimensional array, the 2 dimensional array realized in a computer readable memory; incrementally processing the 2 dimensional array to a final subdivision level using a sliding window process comprising the steps of; a) storing an initial portion of the 2 dimensional array into intermediate storage to initialize a window of the 2 dimensional array for processing; b) incrementally calculating subdivision vertex coordinates for each row of the initial portion; c) upon subdividing one row of the initial portion to a final subdivision level, wherein the one row has been subdivided by at least three levels, and transferring the one row from intermediate storage to a graphics pipeline for rendering; d) replacing the one row in the initial portion with a subsequent row of the 2 dimensional array to reuse memory previously occupied by the one row; and e) repeating steps b) through d) until the 2 dimensional array is processed to a final subdivision level, such that the window for processing the 2 dimensional array slides from the initial portion through the entirety of the 2 dimensional array. - View Dependent Claims (31)
-
Specification