Method for rendering high order rational surface patches
First Claim
1. A method for rendering a Bezier surface patch which describes a portion of an object, wherein said surface patch has an original set of control points, comprising:
- testing the surface patch for flatness; and
if the surface patch is not flat;
generating a second set of control points for a left subpatch from the original set of control points;
rendering the left subpatch;
generating a third set of control points for a right subpatch from the second set of control points;
rendering the right subpatch;
generating the original set of control points from the third set of control points; and
if the surface patch is flat;
converting the surface patch into triangles; and
presenting said triangles on a graphics display.
7 Assignments
0 Petitions
Accused Products
Abstract
A method for efficient, high quality rendering of a surface patch. The method tests a surface patch for flatness, and if the surface patch is not flat, the method divides the surface patch into a left surface patch and a right surface patch. Otherwise if the surface patch is flat, the method converts the surface patch into triangles. This method can be implemented to operate recursively, thereby ensuring that all portions of the patch are eventually converted into triangles when the portions become small enough to satisfy the flatness condition. A patch tests as flat only if all curves which form the patch do not deviate from straight lines by more than a predetermined tolerance. The division is efficiently performed by determining (i) left patch control points for a first portion of all curves along one axis of the surface patch, and (ii) right patch control points for a second portion of all curves along said axis of the surface patch. The axis of division preferably alternates, so that the dividing is done along a second axis if patch is not flat along the second axis and a preceding division occurred along a first axis. The method also includes tests for backfaced orientation of the patch and external location of the patch. The patch is discarded if it faces away from the viewpoint or does not appear inside the viewing region.
-
Citations
50 Claims
-
1. A method for rendering a Bezier surface patch which describes a portion of an object, wherein said surface patch has an original set of control points, comprising:
-
testing the surface patch for flatness; and if the surface patch is not flat; generating a second set of control points for a left subpatch from the original set of control points; rendering the left subpatch; generating a third set of control points for a right subpatch from the second set of control points; rendering the right subpatch; generating the original set of control points from the third set of control points; and if the surface patch is flat; converting the surface patch into triangles; and presenting said triangles on a graphics display. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21)
-
-
22. A device for converting a Bezier surface patch having an original set of control points to a plurality of triangles for display, comprising:
-
a floating point unit configured to receive said control points, wherein said floating point unit is also configured to apply a desired transformation to said control points; a patch tessellator coupled to receive said transformed control points and configured to responsively produce a set of triangles which approximate said patch; and a rasterizer coupled to receive said said triangles and responsively produce pixel data for an image of said patch; wherein said patch tessellator is configured to (a) test the surface patch for flatness; and if the surface patch is not flat; (b) generate a second set of control points for a left subpatch from the transformed control points to generate the left subpatch; (c) generate a third set of control points for a right subpatch from the second set of control points to generate the right subpatch; (d) generate the transformed control points from the third set of control points; and if the surface patch is flat; (e) convert the surface patch into triangles. - View Dependent Claims (23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35)
-
-
36. A method for rendering a Bezier surface patch which describes a portion of an object, wherein said Bezier surface patch includes Bezier curves which are to be tested for straightness, wherein said Bezier curves have end points and intermediate control points, and wherein said method comprises:
-
determining a horizontal distance between the end points; and determining a vertical distance between the end points; and comparing the horizontal distance to the vertical distance; and if the horizontal distance is greater than the vertical distance, comparing a vertical resolution to vertical deviations of the intermediate control points from a straight line between the end points; and determining that the curve is not straight if any of the vertical deviations exceeds the vertical resolution; and if the horizontal distance is less than the vertical distance, comparing a horizontal resolution to horizontal deviations of the intermediate control points from a straight line between the end points; and determining that the curve is not straight if any of the horizontal deviations exceeds the horizontal resolution. - View Dependent Claims (37)
-
-
38. A storage medium configured to provide instructions for patch tessellation to a graphics display system, wherein patches to be tessellated include Bezier curves which are to be tested for straightness, wherein said Bezier curves have end points and intermediate control points, and wherein said instructions comprise:
-
determining a horizontal distance between the end points; and determining a vertical distance between the end points; and comparing the horizontal distance to the vertical distance; and if the horizontal distance is greater than the vertical distance, comparing a vertical resolution to vertical deviations of the intermediate control points from a straight line between the end points; and determining that the curve is not straight if any of the vertical deviations exceeds the vertical resolution; and if the horizontal distance is less than the vertical distance, comparing a horizontal resolution to horizontal deviations of the intermediate control points from a straight line between the end points; and determining that the curve is not straight if any of the horizontal deviations exceeds the horizontal resolution.
-
-
39. A mehod for rendering a Bezier surface patch on a display having a horizontal resolution Tx and a vertical resolution Ty, wherein said Bezier surface patch describes a portion of an object, wherein said Bezier surface patch includes a Bezier curve which is to be tested for straightness, wherein said Bezier curve has end points (x0,y0), (xe,ye) and intermediate control points (xi,yi), 0<
- i<
e, and wherein said method comprises;determining a horizontal distance |xe -x0 |; and determining a vertical distance |ye -y0 |; and comparing the horizontal distance to the vertical distance; and if the horizontal distance is greater than the vertical distance, comparing deviation quantities |(yi -y0)(xe -x0)-(ye -y0)(xi -x0)|, 0<
i<
e, to a vertical resolution quantity Ty |(xe -x0)|; anddetermining that the curve is straight if none of the deviation quantities exceeds the vertical resolution quantity; and if the horizontal distance is less than the vertical distance, comparing deviation quantities |(yi -y0)(xe -x0)-(ye -y0)(xi -x0)|, 0<
i<
e, to a horizontal resolution quantity Tx |(ye -y0)|; anddetermining that the curve is straight if none of the deviation quantities exceeds the horizontal resolution quantity.
- i<
-
40. A method for rendering a Bezier surface patch on a display using a horizontal resolution Tx, a vertical resolution Ty, and a perpendicular resolution Tz, wherein said Bezier surface patch describes a portion of an object, wherein said Bezier surface patch includes a three-dimensional Bezier curve which is to be tested for straightness, wherein said Bezier curve has end points (x0,y0,z0), (xe,ye,ze) and intermediate control points (xi,yi,zi), 0<
- i<
e, and wherein said method comprises;determining a horizontal distance |xe -x0 |; and determining a vertical distance |ye -y0 |; and comparing the horizontal distance to the vertical distance; and if the horizontal distance is greater than the vertical distance, comparing deviation quantities |(yi -y0)(xe -x0)-(ye -y0)(xi -x0)|, 0<
i<
e, to a vertical resolution quantity Ty |(xe -x0)|; andcomparing first perpendicular deviation quantities |(zi -z0)(xe -x0)-(ze -z0)(xi -x0)|, 0<
i<
e, to a first perpendicular resolution quantity Tz |(xe -x0)|; anddetermining that the curve is straight if none of the deviation quantities exceeds the vertical resolution quantity and none of the first perpendicular deviation quantities exceeds the first perpendicular resolution quantity; and if the horizontal distance is less than the vertical distance, comparing deviation quantities |(yi -y0)(xe -x0)-(ye -y0)(xi -x0)|, 0<
i<
e, to a horizontal resolution quantity Tx |(ye -y0)|; andcomparing second perpendicular deviation quantities |(zi -z0)(ye -y0)-(ze -z0)(yi -y0)|, 0<
i<
e, to a second perpendicular resolution quantity Tz |(ye -y0)|; anddetermming that the curve is straight if none of the deviation quantities exceeds the horizontal resolution quantity and none of the first perpendicular deviation quantities exceeds the first perpendicular resolution quantity.
- i<
- 41. A method for rendering a color Bezier surface patch which describes a portion of an object, wherein said Bezier surface patch has an associated diffuse color Bezier patch, wherein said method comprises determining straightness of Bezier curves within the diffluse color Bezier patch.
-
45. A method for rendering a surface patch having an associated color patch, wherein said surface patch represents a portion of an object, said method comprising:
-
testing the surface patch for flatness; and if the surface patch is flat, testing the associated color patch for linearity of shading of the surface patch; and if the surface patch is linearly shaded, converting the surface patch into triangles; and if the surface patch is not flat or if the surface patch is not linearly shaded, dividing the surface patch and associated color patch into surface subpatches with associated color subpatches. - View Dependent Claims (46, 47, 48, 49, 50)
-
Specification