System and method of image generation and encoding using primitive reprojection
First Claim
1. A method, performed on an encoder including a first database of graphics primitives, of encoding graphics information for generating a computer generated image sequence to be displayed, the method comprising the steps of:
- a) determining graphics primitives that actually become newly visible for substantially each frame of the image sequence; and
b) adding encoded visibility event information describing the newly visible primitives to a second database for substantially each frame of the sequence.
5 Assignments
0 Petitions
Accused Products
Abstract
A computer-implemented method of image generation that makes efficient use of reprojective techniques to reduce the cost of image generation. The method employs a technique of primitive reprojection in which convex graphics primitives are the reprojected elements. The visibility of elements known to be visible in a previous frame is first determined by transformation and depth-comparison rasterization of these elements. Regions of the image that may contain newly visible elements are located by occlusion-exposure transitions in the depth buffer and from incremental view volume motion. In these regions a depth-prioritized, data-access method of visible surface determination, spatial-subdivision ray casting, is employed to identify newly visible primitives which are added to the list of previously visible primitives for rasterization. The method employs a system of classifying objects based on their dynamic occlusive properties to increase the accuracy, efficiency and versatility of the reprojective approach. Because the method employs a hybrid approach to visible surface determination in which newly visible primitives are identified for each frame it can be implemented as a graphics server employing an efficient on-demand, progressive geometry transmission protocol for client-server image generation. This client-server system employs a method of visibility event encoding in which data representing newly visible and newly invisible primitives for each frame are transmitted to a client unit which is a conventional graphics display system. The visibility event codec method can also be used to encode and store information representing a computer animation for later interactive playback.
-
Citations
114 Claims
-
1. A method, performed on an encoder including a first database of graphics primitives, of encoding graphics information for generating a computer generated image sequence to be displayed, the method comprising the steps of:
-
a) determining graphics primitives that actually become newly visible for substantially each frame of the image sequence; and b) adding encoded visibility event information describing the newly visible primitives to a second database for substantially each frame of the sequence. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 78)
-
-
48. In a computer-implemented method of encoding an image sequence by visibility event encoding, a method of separately encoding a synchronizing data stream, the method of separately encoding comprising the steps of:
-
determining substantially all primitives that form a complete set of visible primitives for substantially each frame of the sequence; and encoding a separate initiation data stream including the substantially all primitives determined in the determining step to form a complete set of visible primitives for substantially each frame of the sequence, wherein each packet of the separate initiation data stream corresponds to a frame packet of a visibility event encoding, whereby a decoding unit accessing the separate initiation stream does not need an extended time to receive a completely visible set of primitives during the initiation of decoding at an arbitrary frame. - View Dependent Claims (49)
-
-
50. A method, performed on a decoder, of maintaining a display list of graphics primitives to be displayed, the method comprising the steps of:
-
a) receiving information describing the primitives that become newly visible for substantially each frame of an image sequence; and b) adding information describing the newly visible primitives for a corresponding frame of said sequence to said display list, whereby said information comprises a visibility event encoding and said method of maintaining comprises a decoding of the encoded information. - View Dependent Claims (51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73)
-
-
74. A method, performed on a decoder, of maintaining a display list of graphics primitives, the method comprising the steps of:
-
a) receiving information describing the primitives that become potentially newly visible for substantially each frame of an image sequence; and b) adding information describing the potentially newly visible primitives for a corresponding frame of said sequence to said display list, whereby said information comprises a visibility event encoding representing primitives visible from a specified set of viewpoints and/or view volumes whereby the set of encoded primitives allows a predefined degree of viewpoint and/or view direction vector motion during decoding of the encoded information. - View Dependent Claims (75, 76, 77, 79, 80)
-
-
81. A computer apparatus for generating a computer generated image sequence, the computer apparatus comprising:
-
a transformer for transforming previously visible primitives, wherein said primitives are stored in a storage area for previously visible primitives; a classifier for classifying the previously visible primitives to a viewport; a rasterizer for rasterizing the previously visible primitives; an augmented depth buffer for storing both depth and primitive references for each of the previously visible primitives for a preceding frame and the current frame, and for determining in the current frame where invisible primitives may be newly exposed; and a visibility tracer for visibility tracing in the locations in the current frame where the invisible primitives may be newly exposed to find newly exposed visible primitives; wherein the rasterizer also rasterizes newly exposed primitives using depth-comparison rasterization; and wherein newly visible primitives are added to said storage device storing previously visible primitives.
-
-
82. A computer program product comprising:
a computer storage medium and a computer program code mechanism embedded in the computer storage medium for causing a computer to generate an image sequence, the computer program code mechanism comprising; a first computer code device configured to transform previously visible primitives wherein said primitives are stored in a storage area for previously visible primitives; a second computer code device configured to classify the previously visible primitives to a viewport; a third computer code device configured to rasterize the previously visible primitives; a fourth computer code device configured to store both depth and primitive references for each of the previously visible primitives for a preceding frame and the current frame in an augmented depth buffer; a fifth computer code device configured to determine, after storing by the fourth computer code device, and using the augmented depth buffer, locations in the current frame where invisible primitives may be newly exposed; a sixth computer code device configured to find newly exposed visible primitives by performing visibility tracing in the locations in the current frame where the invisible primitives may be newly exposed; a seventh computer code device configured to rasterize potentially newly exposed primitives using depth-comparison rasterization; and an eighth computer code device configured to add the newly exposed primitives to said storage area for visible primitives.
-
83. A computer-implemented method of generating an image sequence, the method comprising the steps of:
-
a) transforming graphics primitives visible in a previous frame; b) classifying the previously visible primitives to a viewport; c) rasterizing the previously visible primitives for a current frame; d) storing, in a first augmented depth buffer for a current frame, depth values and primitive references produced by rasterizing the previously visible primitives for the current frame; e) retaining, in a second augmented depth buffer for the previous frame, the depth values and primitive references produced by rasterizing said previously visible primitives for the previous frame; f) comparing pixels of the first augmented depth buffer to corresponding pixels of the second augmented depth buffer to identify a location in the current frame that may contain a newly exposed primitive; g) searching in said location to find a newly visible primitive in the current frame using an image-order, front-to-back visibility tracing method of visible surface determination; h) adding the newly exposed primitive to a list of visible primitives; and i) rasterizing the newly visible primitive using depth-comparison rasterization to complete the current frame. - View Dependent Claims (84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112)
-
-
113. A computer-implemented method of generating an image sequence, the method comprising the steps of:
-
a) transforming graphics primitives visible in a previous frame; b) classifying the previously visible primitives to a viewport; c) rasterizing the previously visible primitives for a current frame; d) storing, in a first augmented depth buffer for the current frame, depth values and primitive references produced by rasterizing said previously visible primitives for the current frame; e) retaining, in a second augmented depth buffer for the previous frame, the depth values and primitive references produced by rasterizing said previously visible primitives for the previous frame; f) determining, using the first augmented depth buffer, a location in the current frame which potentially contains a primitive that has newly penetrated the view frustum, the step f) of determining comprising the sub-steps of; f1) subtracting a previous view frustum from a current view frustum to produce a difference frustum, f2) projecting the difference frustum onto the viewport for the current frame, and f3) identifying locations in the first augmented depth buffer that correspond to the projection of the difference frustum; g) searching in said location to find a newly visible primitive in the current frame using an image-order, front-to-back, visibility tracing method of visible surface determination; h) adding the newly exposed primitives to a list of visible primitives; and i) rasterizing the newly visible primitive using depth-comparison rasterization to complete the current frame. - View Dependent Claims (114)
-
Specification