Certain computer graphics applications allow a user to apply a two-dimensional texture onto the surface of a three-dimensional model. For example, a graphics package may allow a user to cover the surface of a sphere or a cylinder with a two-dimensional checkerboard pattern.
A two-dimensional texture must generally be distorted to some extent in order to cover the surface of a three-dimensional model. Prior texture mapping techniques often introduce an unacceptable amount of distortion, particularly where the three-dimensional model has a complex geometry.
Prior texture mapping methods use projection techniques to map a two-dimensional texture onto the surface of a three-dimensional model. For example, a spherical projection technique may be used to map a texture onto the surface of a spherical object. However, spherical projection introduces unacceptable distortion of the mapped texture if the object is non-spherical or has non-spherical portions. Similarly, planar projection and cylindrical projection methods do not work well for mapping texture onto three-dimensional models having non-planar or non-cylindrical portions.
Many realistic objects—for example, shoes—do not match well to any of the available projection methods. As a result, the application of a two-dimensional texture to the surface of such objects results in significant, unavoidable distortion of the two-dimensional texture.
Moreover, prior texture mapping methods are not sufficiently robust. For example, a prior texture mapping method may require mapping a texture onto the surface of an entire model, not just a portion of the model.
Furthermore, prior texture mapping methods are difficult for a user to apply because they require the user to provide input in a non-intuitive, multi-step manner. For example, where a given two-dimensional texture is a repeating, tiled image, prior texture mapping methods require the user to pre-align the texture in order to avoid discontinuities upon mapping the texture onto the three-dimensional model. The texture cannot be adjusted after mapping. Consequently, the process of positioning, scaling, and rotating the texture into its desired configuration is often difficult and time-consuming.
Therefore, there exists a need for a method of mapping a two-dimensional texture onto the surface of a three-dimensional virtual object with minimal distortion. This is of particular importance where the virtual object has a complex shape. Additionally, there is a need for a texture mapping method that is not limited to mapping the entire surface of a virtual object. Furthermore, there is a need for a versatile, interactive method for adjusting a texture after it has been mapped onto the surface of a three-dimensional virtual object.