This invention relates to trimming a parametric surface.
Trimming is the removal a portion of a surface when rendering an image of the surface. Trimming provides a visual sensation of absence, meaning the appearance of removing a portion of the image.
Like reference symbols in the various drawings indicate like elements.
The following embodiments render two-dimensional (2D) images from data for trimmed three-dimensional (3D) models. A trimmed 3D model is a 3D model that has a portion of the model's surface removed during the rendering process by one or more parametric 2D functions (referred to as ‘trimming curves’). The trimmed effect is achieved by applying a ‘trimming texture’ (that is, a texture map image representation of the trimming curve function or functions) to the surface of the 3D model.
A trimmed image 10 (
Surface 12 of image 10 is modeled using a 3D control point lattice 20 (
Control points 22a–p may be altered to change to the shape (and hence appearance) of image 10. For example, control points 22a–p may be altered to create a trampoline or a balloon effect, where the center portion of image 10 (controlled by 22m–p) rises and falls much like a flexing trampoline or an inflating and deflating balloon. The parametric surface 12 of image 10 may be modeled by one or more mathematical functions. For example, a vector-valued function S(u,v) that maps from a rectangular bounded region in, uv space (the “range” of S) to a bounded surface in XYZ space. U and v are orthogonal, and may be thought of as horizontal and vertical (though u and v may not map to horizontal and vertical in XYZ space). Additionally, there may be one or more trimming functions (trimming curves) that can be used to further reduce the range of S(u,v) and therefore further reduce the surface in XYZ space.
To control the overall appearance of surface 12 between control points 22a–p of control point lattice 20, a mesh 30 (
Process 40 obtains (401) a trimming texture 50 based on the trimming curves for surface 12. Trimming curves are defined as curves located in the uv space of mapping function S of a surface, for example surface 12, which restrict the drawing of (that is trims) a portion of the surface 12.
A trimming curve 60 (
Process 40 applies (403) trimming texture 50 to mesh 30. Process 40 typically applies trimming texture 50 to mesh 30 in a “run-time” process as a texture map (a run time process occurring at the time of actually rendering the image).
Once applied, process 40 renders (405) the image using trimming texture. Trimming texture 50 affects rendering of the image whenever trimming is desired (for example, by a user).
Specifically, process 40 limits the drawing of surface 12 to solid portion 14, corresponding to rendered section 52 of trimming texture 50. In other embodiments, trimming texture 50 prevents the drawing of pixels in trimmed section 16, corresponding to trimmed section 54. For example,
Furthermore, to render image 10 (
Process 100 also obtains a trimming curve (1003), or in other embodiments trimming curves, for surface 12. Trimming curves may be obtained (1003) based on vector-valued functions C1(t), C2(t) . . . , Cn(t) which generate trimming curves for surface 12 (in uv space).
Each trimming curve, C1(t), C2(t), Cn(t) obtained (1003) is mapped (1005) onto a trimming texture 50 for surface 12. The trimming texture 50 is typically obtained once up front in a pre-rendering process based on trimming curve 60 to generate a rendered section 52 and a trimmed section 54 for trimming texture 50.
Process 100 may also obtain (1007) a material texture for surface 12. Material texture 90 (
Process 100 obtain (1009) polygons (for example polygons 32) to generate mesh 30 to approximate surface 12. Process 100 may obtain polygons with a tessellation algorithm for approximating surface 12 of image 10 to a desired resolution (for example to support cartoon and/or photo realistic quality images). Typically, process 100 obtains mesh 30 at run-time.
Process 100 renders an image 10 (1011) of surface 12 by applying trimming texture 50 and material texture 90 to polygons 32 of mesh 30. Material texture 90 is drawn as indicated by rendered section 52 and is not drawn as indicated by trimmed section 54. An example of a pseudo-code to implement process 100 is shown in attached appendix.
Processes 40 and 100 may be used to create animation cels for cartooning. For example, a 3D model, such as image 10, may be generated and then positioned in a desired manner in a scene. Processes 40 and 100 may be executed on the model to produce a 2D image for that position. Then, the 3D model can be re-positioned (for example, rotated), and process 40 or 100 (or subparts of 40 and 100) executed on the re-positioned model to produce a 2D image for the new position. This process may be repeated to produce images for any number of positions. In this way, processes 40 and 100 can generate cels automatically.
Processes 40 and 100 may be performed in 3D space, meaning that they are performed using 3D data. By processing data in 3D space (as opposed to 2D space), processes 40 and 100 can be performed using a processor and rendering can be done using graphics accelerator cards of a computer.
Processes 40 and 100, however, are not limited to use with any particular hardware or software configuration; they may find applicability in any computing or processing environment. Processes 40 and 100 may be implemented in hardware, software, or a combination of the two. Processes 40 and 100 may be implemented in computer programs executing on programmable computers that each include a processor, a storage medium readable by the processor (including volatile and non-volatile memory and/or storage elements), at least one input device, and one or more output devices. Program code may be applied to data entered using an input device to perform processes 40 and 100 and to generate output information. The output information may be applied to one or more output devices, such as display screen 1192.
Each such program may be implemented in a high level procedural or object-oriented programming language to communicate with a computer system. However, the programs can be implemented in assembly or machine language. The language may be a compiled or an interpreted language.
Each computer program may be stored on a storage medium or device (e.g., CD-ROM, hard disk, or magnetic diskette) that is readable by a general or special purpose programmable computer for configuring and operating the computer when the storage medium or device is read by the computer to perform processes 40 and 100. Processes 40 and 100 may also be implemented as a computer-readable storage medium, configured with a computer program, where, upon execution, instructions in the computer program cause the computer to operate in accordance with processes 40 and 100.
A number of embodiments of the invention have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the invention. For example, trimmed portion 16 may change in shape, size and/or other qualities as desired (for example, as directed by a user or a program). Here, trimmed portion 16 is circular in shape.
Number | Name | Date | Kind |
---|---|---|---|
4600919 | Stern | Jul 1986 | A |
4747052 | Hishinuma et al. | May 1988 | A |
4835712 | Drebin et al. | May 1989 | A |
4855934 | Robinson | Aug 1989 | A |
4901064 | Deering | Feb 1990 | A |
5124914 | Grangeat | Jun 1992 | A |
5163126 | Einkauf et al. | Nov 1992 | A |
5299302 | Fiasconaro | Mar 1994 | A |
5363478 | Fiasconaro | Nov 1994 | A |
5371778 | Yanof et al. | Dec 1994 | A |
5377320 | Abi-Ezzi et al. | Dec 1994 | A |
5611030 | Stokes | Mar 1997 | A |
5701404 | Stevens et al. | Dec 1997 | A |
5731819 | Gagne et al. | Mar 1998 | A |
5757321 | Billyard | May 1998 | A |
5786822 | Sakaibara | Jul 1998 | A |
5805782 | Foran | Sep 1998 | A |
5809219 | Pearce et al. | Sep 1998 | A |
5812141 | Kamen et al. | Sep 1998 | A |
5847712 | Salesin et al. | Dec 1998 | A |
5894308 | Isaacs | Apr 1999 | A |
5929860 | Hoppe | Jul 1999 | A |
5933148 | Oka et al. | Aug 1999 | A |
5949969 | Suzuoki et al. | Sep 1999 | A |
5966133 | Hoppe | Oct 1999 | A |
5966134 | Arias | Oct 1999 | A |
5974423 | Margolin | Oct 1999 | A |
6054999 | Strandberg | Apr 2000 | A |
6057859 | Handelman et al. | May 2000 | A |
6078331 | Pulli et al. | Jun 2000 | A |
6115050 | Landau et al. | Sep 2000 | A |
6175655 | George et al. | Jan 2001 | B1 |
6191787 | Lu et al. | Feb 2001 | B1 |
6191796 | Tarr | Feb 2001 | B1 |
6198486 | Junkins et al. | Mar 2001 | B1 |
6201549 | Bronskill | Mar 2001 | B1 |
6208347 | Migdal et al. | Mar 2001 | B1 |
6219070 | Baker et al. | Apr 2001 | B1 |
6239808 | Kirk et al. | May 2001 | B1 |
6252608 | Snyder et al. | Jun 2001 | B1 |
6262737 | Li et al. | Jul 2001 | B1 |
6262739 | Migdal et al. | Jul 2001 | B1 |
6292192 | Moreton | Sep 2001 | B1 |
6317125 | Persson | Nov 2001 | B1 |
6337880 | Cornog et al. | Jan 2002 | B1 |
6388670 | Naka et al. | May 2002 | B2 |
6405071 | Analoui | Jun 2002 | B1 |
6437782 | Pieragostini et al. | Aug 2002 | B1 |
6478680 | Yoshioka et al. | Nov 2002 | B1 |
6559848 | O'Rourke | May 2003 | B2 |
6593924 | Lake et al. | Jul 2003 | B1 |
6593927 | Horowitz et al. | Jul 2003 | B2 |
6600485 | Yoshida et al. | Jul 2003 | B1 |
6608627 | Marshall et al. | Aug 2003 | B1 |
6608628 | Ross et al. | Aug 2003 | B1 |
20010026278 | Arai et al. | Oct 2001 | A1 |
20020101421 | Pallister | Aug 2002 | A1 |