US20200273222A1 - Freeform Gradient Style Transfer - Google Patents
Freeform Gradient Style Transfer Download PDFInfo
- Publication number
- US20200273222A1 US20200273222A1 US16/281,551 US201916281551A US2020273222A1 US 20200273222 A1 US20200273222 A1 US 20200273222A1 US 201916281551 A US201916281551 A US 201916281551A US 2020273222 A1 US2020273222 A1 US 2020273222A1
- Authority
- US
- United States
- Prior art keywords
- mesh
- source
- geometry
- target
- handles
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000012546 transfer Methods 0.000 title claims abstract description 57
- 238000013507 mapping Methods 0.000 claims abstract description 53
- 238000000034 method Methods 0.000 claims description 54
- 238000005070 sampling Methods 0.000 claims description 3
- 238000009877 rendering Methods 0.000 claims 1
- 239000003086 colorant Substances 0.000 description 11
- 238000012545 processing Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 7
- 238000013461 design Methods 0.000 description 6
- 238000010422 painting Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000002156 mixing Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 241000251468 Actinopterygii Species 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/001—Texturing; Colouring; Generation of texture or colour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/60—Analysis of geometric attributes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/90—Determination of colour characteristics
Definitions
- a gradient is generally a blending of colors or shades of colors which is rendered in a user interface.
- Conventional systems can render gradients for use as colorful backgrounds, special effects, project themes, presentation styles, etc.
- Some types of gradients can be designed as a digital asset which may be used to apply the gradient, for example, to fill geometries of various digital objects.
- conventional systems enable a digital artist to design a gradient such as a by manipulation of color points which control the colors of the gradient, and then the gradient design can be applied to many other objects. This allows the digital artist to propagate the gradient design across multiple objects quickly and efficiently.
- Freeform gradients are a type of gradient that can be used to create a blend of colors within a geometry of an object in an ordered or random sequence such that the blending appears smooth and natural. These gradients are created by arranging color points on a mesh of an object. Each color point has an associated color value, and conventional systems use the color values to interpolate colors to generate the freeform gradients within the geometry of the object.
- freeform gradients are object specific and therefore cannot be applied to other objects as is the case with linear and radial gradients. This is frustrating to digital artists as they must attempt to recreate a freeform gradient of a source object in a target object to transfer a style of the freeform gradient from the source object to the target object. Accordingly, the inability to transfer freeform gradient styles among digital objects presents a technological problem in the field of digital drawing and painting.
- a computing device implements a style transfer system which receives a source geometry of an object having a freeform gradient and a target geometry of an additional object as inputs.
- the freeform gradient has a style defined by orientations of color point locations within the source geometry of the object.
- the system adds source mesh handles to a boundary of a source mesh of the object, and the system also adds target mesh handles to a target mesh of the additional object.
- the system also preserves the color point locations of the source mesh.
- the source mesh handles are mapped to the target mesh handles, and the system warps the source mesh to appear as the target geometry based on the mapping.
- the preserved color point locations of the source mesh are mapped to the warped source mesh and a freeform gradient having the style is generated based on this mapping.
- the system transfers the style of the freeform gradient of the source geometry of the object to the target geometry of the additional object.
- the described systems improve digital drawing and painting by technology by enabling freeform gradient style transfer from a source geometry to a target geometry even in cases where the source and target geometries have no features in common. Furthermore, the system is capable of implementing a style of a freeform gradient as a reusable digital asset which can be applied to any geometry of a digital object. This eliminates the tedious effort involved in recreating the style of the freeform gradient each time the style is applied to a geometry of an object, and the reusable digital asset can be modified to modify the style of freeform gradients applied to many geometries of objects automatically. Additionally, by facilitating freeform gradient style transfer, the described systems provide functionality that was previously not possible.
- FIG. 1 is an illustration of an environment in an example implementation that is operable to employ digital systems and techniques as described herein.
- FIG. 2 depicts a system in an example implementation showing operation of a style transfer module.
- FIG. 3 is a flow diagram depicting a procedure in an example implementation in which a style of a freeform gradient of a source geometry is transferred to a target geometry.
- FIGS. 4A, 4B, 4C, 4D, and 4E are illustrations depicting an example representation in which a style of a freeform gradient of a source geometry is transferred to a target geometry.
- FIG. 5 is an illustration depicting three example representations of freeform gradient style transfer.
- FIG. 6 illustrates an example system that includes an example computing device that is representative of one or more computing systems and/or devices that may implement the various techniques described herein.
- a gradient is a blending of colors or shades of colors which is rendered in a user interface on a display device.
- Conventional systems can render gradients for use as backgrounds, special effects, project themes, presentation styles, etc.
- Some types of gradients can be designed as a digital asset which may be used to apply the gradient, for example, to fill geometries of various digital objects.
- conventional systems enable a digital artist to design a gradient such as a by manipulation of color points which control the colors of the gradient, and then the gradient design can be applied to many other objects. This allows the digital artist to propagate the gradient design across multiple objects quickly and efficiently.
- Freeform gradients are a type of gradient that can be used to create a blend of colors within a geometry of an object in an ordered or random sequence such that the blending appears smooth and natural. These gradients are created by arranging color points on a mesh of an object. Each color point has an associated color value, and conventional systems use the color values to interpolate colors to generate the freeform gradients within the geometry of the object. In this manner, freeform gradients are object specific and therefore cannot be applied to other objects as is the case with other types of gradients such as linear and radial gradients. This is frustrating to digital artists as they must attempt to recreate a style of a freeform gradient of a source object in a target object to transfer the style of the freeform gradient to the target object. Accordingly, the inability to transfer freeform gradient styles among digital objects presents a technological problem in the field of digital drawing and painting.
- a computing device implements a style transfer system which receives a source geometry of an object having a freeform gradient and a target geometry of an additional object as inputs.
- the freeform gradient has a style defined by orientations of color point locations within the source geometry of the object.
- the style transfer system includes a meshing module, a mesh handle module, a mapping module, and a warping module.
- the meshing module is implemented to add anchor points to the source geometry and the target geometry, and then generate a source mesh of the object and a target mesh of the additional object.
- the addition of the anchor points causes both the source mesh and the target mesh to have more path segments which increases precision in mesh deformation.
- the meshing module adds the anchor points such that the source mesh and the target mesh have the same number of anchor points to ensure one-to-one correspondence between the meshes. Color point locations of the source mesh are also identified and the meshing module preserves mesh indices associated with the color point locations of the source mesh.
- the mesh handle module is implemented to sample points around a boundary of the source mesh and sample points around a boundary of the target mesh. Based on the sampled points, the mesh handle module adds mesh handles to the source mesh boundary and the target mesh boundary. These mesh handles are added to the meshes such that the source mesh and the target mesh have an equal number of mesh handles to facilitate a one-to-one mapping between mesh handles of the two meshes.
- the mapping module is implemented to map the mesh handles of the source mesh to the mesh handles of the target mesh. To accomplish this, the mapping module coincides a geometrical center of the source mesh and a geometrical center of the target mesh and maps an initial mesh handle of the source mesh to an initial mesh handle of the target mesh and the initial mesh handle of the source mesh is modified to have the position of the corresponding initial mesh handle of the target mesh. The mapping module continues mapping the source mesh handles to the target mesh handles in this way until each of the mesh handles of the source mesh have the position of the corresponding mesh handle of the target mesh.
- the warping module is implemented to warp the source mesh based on the mesh handle mapping so that the warped source mesh appears as the target geometry.
- the color point locations are mapped, e.g., by the mapping module, to the warped source mesh based on the preserved mesh indices and a freeform gradient is generated based on the mapped color point locations.
- the style transfer system transfers the freeform gradient style of the source geometry of the object to the target geometry of the additional object.
- the described systems improve digital drawing and painting by technology by enabling freeform gradient style transfer from a source geometry to a target geometry even in cases where the source and target geometries have no features in common. Furthermore, the system is capable of implementing a style of a freeform gradient as a reusable digital asset which can be applied to any geometry of a digital object. This eliminates the tedious effort involved in recreating the style of the freeform gradient each time the style is applied to a geometry of an object, and the reusable digital asset can be modified to modify the style of freeform gradients applied to many geometries of objects automatically. Additionally, by facilitating freeform gradient style transfer, the described systems provide functionality that was previously not possible.
- Example procedures are also described which may be performed in the example environment as well as other environments. Consequently, performance of the example procedures is not limited to the example environment and the example environment is not limited to performance of the example procedures.
- FIG. 1 is an illustration of an environment 100 in an example implementation that is operable to employ digital systems and techniques as described herein.
- the illustrated environment 100 includes a computing device 102 connected to a network 104 .
- the computing device 102 may be configured as a desktop computer, a laptop computer, a mobile device (e.g., assuming a handheld configuration such as a tablet or mobile phone), and so forth.
- the computing device 102 may range from a full resource device with substantial memory and processor resources (e.g., personal computers, game consoles) to a low-resource device with limited memory and/or processing resources (e.g., mobile devices).
- the computing device 102 may be representative of a plurality of different devices, such as multiple servers utilized by a business to perform operations “over the cloud.”
- the illustrated environment 100 also includes a display device 106 that is communicatively coupled to the computing device 102 via a wired or a wireless connection.
- a display device 106 that is communicatively coupled to the computing device 102 via a wired or a wireless connection.
- a variety of device configurations may be used to implement the computing device 102 and/or the display device 106 .
- the computing device 102 includes a storage device 108 and a style transfer module 110 .
- the storage device 108 is illustrated to include digital content 112 .
- An example of the digital content 112 is a freeform gradient applied to a geometry of an object 114 which is displayed in a user interface 116 on the display device 106 .
- This freeform gradient has a style defined by orientations of color points within the object's 114 geometry.
- the freeform gradient style of the object 114 is transferrable to another object which is illustrated as a freeform gradient having the style applied to a geometry of an additional object 118 that is also displayed in the user interface 116 .
- the geometry of the object 114 is different than the geometry of the additional object 118 .
- the freeform gradient style is applied to a square-shaped geometry of the object 114 , and the freeform gradient style is transferred to a dragon-shaped geometry of the additional object 118 .
- the style transfer module 110 is illustrated as having, receiving, and/or transmitting input data 120 .
- the computing device 102 may implement the style transfer module 110 to receive the input data 120 which can include the style of the freeform gradient applied to the geometry of the object 114 as well as the geometry of the additional object 118 , and the style transfer module 110 can process the input data 120 to transfer the style of the freeform gradient from the square-shaped geometry of the object 114 to the dragon-shaped geometry of the additional object 118 .
- the style of the freeform gradient applied to the geometry of the object 114 may be included within the system 100 as digital content 112 .
- the style of the freeform gradient can be a digital asset that is usable to apply the style of the freeform gradient to the geometry of the additional object 118 .
- the input data 120 may only include the geometry of the additional object 118 , and the style transfer module 110 is implemented to transfer the freeform gradient style of the object 114 to the additional object 118 by transferring the style from a reusable digital asset to the additional object 118 .
- FIG. 2 depicts a system 200 in an example implementation showing operation of a style transfer module 110 .
- the style transfer module 110 is illustrated to include a meshing module 202 , a mesh handle module 204 , a mapping module 206 , and a warping module 208 .
- the computing device 102 implements the style transfer module 110 to receive input data 120 , e.g., the style transfer module 110 may receive the input data 120 over the network 104 or based on user inputs received by the computing device 102 via the user interface 116 .
- the meshing module 202 may receive the input data 120 and the meshing module 202 may process the input data 120 as source mesh data 210 , target mesh data 212 , and color point location data 214 .
- the meshing module 202 may receive the freeform gradient applied to the geometry of the object 114 as part of receiving the input data 120 , and the meshing module 202 is implemented to generate a source mesh of the object 114 which is represented by the source mesh data 210 .
- the meshing module 202 is implemented to add anchor points to the source mesh of the object 114 because adding these anchor points will create more path segments of the source mesh. As a result the additional path segments, the source mesh may be warped with greater precision.
- the input data 120 may include the geometry of the additional object 118 .
- the meshing module 202 can receive the geometry of the additional object 118 as part of receiving the input data 120 , and the meshing module 202 is implemented to generate a target mesh of the additional object 118 which is represented by the target mesh data 212 .
- the meshing module 202 is implemented to add anchor points to the target mesh of the additional object 118 to increase warping precision.
- the meshing module 202 is implemented to add anchor points to the source mesh of the object 114 and target mesh of the additional object 118 such that the source mesh and the target mesh have the same fixed number of anchor points. In this manner, the meshing module 202 prepares the source mesh and the target mesh for processing by the mesh handle module 204 .
- the input data 120 may include locations of color points of the freeform gradient applied to the geometry of the object 114 .
- the meshing module 202 can receive the locations of the color points of the freeform gradient of the object 114 as part of receiving the input data 120 , and the meshing module 202 is implemented to preserve vertex indices for color points of the source mesh of the object 114 which is represented as the color point location data 214 .
- the mesh handle module 204 is illustrated as receiving the source mesh data 210 and the target mesh data 212 .
- the mesh handle module 204 receives the source mesh data 210 and the target mesh data 212 as inputs, and the mesh handle module 204 is implemented to process the inputs as source mesh handle data 216 and target mesh handle data 218 .
- the mesh handle module 204 is implemented to process the source mesh data 210 to add mesh handles to the source mesh which is represented as the source mesh handle data 216 .
- the source mesh data 210 describes the source mesh of the object 114 having the additional anchor points and the target mesh data 212 describes the target mesh of the additional object 118 also having the additional anchor points.
- the mesh handle module 204 may receive the source mesh data 210 , and the mesh handle module 204 is implemented to sample boundary points of the geometry of the object 114 .
- the mesh handle module 204 may receive the target mesh data 212 , and the mesh handle module 204 is implemented to sample boundary points of the geometry of the additional object 118 .
- the mesh handle module 204 is implemented to determine a starting segment as the first segment index to sample to get one-to-one correspondence between the source mesh and the target mesh. For example, the mesh handle module 204 is implemented to add mesh handles on the sampled boundary points of the geometry of the object 114 . In one example, the mesh handle module 204 can be implemented to determine mesh index positions of the color point locations of the freeform gradient of the geometry of the object 114 . In this example, the mesh handle module 204 is implemented to analyze each closed loop of segments of the source mesh of the object 114 .
- the source mesh of the object 114 may be a triangle mesh, so in this example, the mesh handle module 204 is implemented to analyze each triangle of the source mesh and return the triangle index if a color point is in the triangle or return the nearest triangle index from the color point position such as by calculating a distance of the color point from the triangle.
- the mesh handle module 204 is implemented to add mesh handles on the sampled boundary points of the geometry of the object 114 and the sampled boundary points of the geometry of the additional object 118 .
- the geometry of the additional object 118 with added mesh handles is represented as the target mesh handle data 218 .
- the mesh handle module 204 adds the mesh handles to the source mesh and the target mesh so that the meshes have the same number of mesh handles to facilitate a one-to-one mapping between the mesh handles of the source mesh and the mesh handles of the target mesh.
- the mesh handle module 204 is implemented to determine a mesh handle of the first segment index to start sampling as a starting mesh handle to perform the one-to-one mapping.
- the starting mesh handle to perform the one-to-one mapping is included as part of the source mesh handle data 216 .
- the mapping module 206 is illustrated as receiving the source mesh handle data 216 , the target mesh handle data 218 , and the color point location data 214 .
- the mapping module 206 receives the source mesh handle data 216 , the target mesh handle data 218 , and the color point location data 214 as inputs, and the mapping module 206 is implemented to process the inputs as handle mapping data 220 and color point mapping data 222 .
- the mapping module 206 may be configured to add the mesh handles to the target mesh of the additional object 118 .
- the mapping module 206 receives the source mesh handle data 216 and the target mesh handle data 218 , and the mapping module 206 is implemented to map the mesh handles of the source mesh of the object 114 to the mesh handles of the target mesh of the additional object 118 .
- the mapping module 206 is configured to coincide a geometric center of the geometry of the object 114 with a geometric center of the geometry of the additional object 118 , and then map the mesh handles of the source mesh to the mesh handles of the target mesh by a one-to-one mapping.
- the mapping module 206 translates the geometry of the object 114 to the geometry of the additional object 118 such that the mesh handles of the source mesh are modified to have a position of the corresponding mesh handles of the target mesh which is represented as the handle mapping data 220 .
- the mapping module 206 receives the color point location data 214 , and the mapping module 206 is implemented to map the color point locations based on the modified source mesh positions and the mesh index positions of the color point locations of the freeform gradient of the geometry of the object 114 .
- This color point location mapping is represented as the color point mapping data 222 .
- the color point mapping data 222 describes color point positions of the source mesh after the source mesh is warped based on the handle mapping data 220 .
- the warping module 208 is illustrated as receiving the handle mapping data 220 and the color point mapping data 222 as inputs, and the warping module 208 is implemented to process the inputs to warp the source mesh to the target mesh and map the color point positions to the warped source mesh to transfer the style of the freeform gradient of the object 114 to the additional object 118 as a freeform gradient having the style.
- the warping module 208 warps the geometry of the object 114 to appear as the geometry of the additional object 116 based on the handle mapping data 220 , and the warping module 208 maps the color point locations from the preserved indexes of the source mesh to corresponding indexes of the warped source mesh to transfer the style of the freeform gradient of the object 114 to the additional object 118 .
- the style transfer module 110 receives the input data 120 which can include the style of the freeform gradient applied to the geometry of the object 114 as well as the geometry of the additional object 118 , and the style transfer module 110 can process the input data 120 to transfer the style of the freeform gradient from the square-shaped geometry of the object 114 to the dragon-shaped geometry of the additional object 118 .
- FIG. 3 is a flow diagram depicting a procedure 300 in an example implementation in which a style of a freeform gradient of a source geometry is transferred to a target geometry.
- Source mesh handles are generated on a boundary of a source mesh of a source geometry, and the source mesh includes color point locations of a freeform gradient of the source geometry (block 302 ).
- Target mesh handles are generated on a boundary of a target mesh of a target geometry (block 304 ).
- the mesh handle module 204 generates the source mesh handles on the boundary of the source mesh, and the mesh handle module 204 also generates the target mesh handles on the boundary of the target mesh.
- the source mesh handles are mapped to the target mesh handles by coinciding a geometric center of the source geometry and a geometric center of the target geometry (block 306 ).
- the mapping module 206 maps the source mesh handles to the target mesh handles.
- the source mesh and the color point locations are warped based on the mapping to generate a freeform gradient of the target geometry having a style of the freeform gradient of the source geometry (block 308 ).
- the warping module 208 warps the source mesh and the color point locations to generate the freeform gradient of the target geometry having the style of the source geometry.
- the freeform gradient of the target geometry having the style is rendered in a user interface (block 310 ).
- the computing device 102 renders the freeform gradient of the target geometry in the user interface 116 on the display device 106 .
- FIGS. 4A, 4B, 4C, 4D, and 4E are illustrations depicting an example representation in which a style of a freeform gradient of a source geometry is transferred to a target geometry.
- FIG. 4A depicts an illustration of an example representation 400 of an object having a freeform gradient style of a source geometry to be transferred, and an additional object having a target geometry to receive the transferred style.
- FIG. 4B depicts an illustration of an example representation 402 of anchor points added to the source geometry and anchor points added to the target geometry.
- FIG. 4C depicts an illustration of an example representation 404 of source mesh handles added to a source mesh of the source geometry and target mesh handles added to a target mesh of the target geometry.
- FIG. 4A depicts an illustration of an example representation 400 of an object having a freeform gradient style of a source geometry to be transferred, and an additional object having a target geometry to receive the transferred style.
- FIG. 4B depicts an illustration of an example representation 402 of anchor points added to the source geometry and anchor points added to
- FIG. 4D depicts an illustration of an example representation 406 of a warped source mesh and mapped and/or warped color point positions.
- FIG. 4E illustrates an example representation 408 of a freeform gradient style transfer from the source geometry of the object to the target geometry of the additional object.
- Representation 400 is illustrated to include a freeform gradient of a source geometry of a source object 410 as well as a target geometry of an additional object 412 .
- the geometry of the source object 410 is generally square and the geometry of the additional object 412 is generally an ellipse.
- the freeform gradient of the source geometry has a distinct style which is defined by colors and orientations of color point locations within the source geometry. The techniques described herein can transfer the freeform gradient from the square geometry of the object 410 to the ellipse geometry of the additional object 412 while preserving the style of the freeform gradient of the object 410 .
- Representation 402 is also illustrated to include the freeform gradient of the source geometry of the source object 410 and the target geometry of the additional object 412 .
- a plurality of anchor points 414 are added to the source geometry and a plurality of anchor points 416 are added to the target geometry. Addition of anchor points 414 and 416 ensures a precise deformation of the source geometry because the additional anchor points will add additional segments to meshes as illustrated in FIG. 4C .
- the number of anchor points 414 of the source geometry is the same as the number of anchor points 416 of the target geometry to facilitate one-to-one correspondence between the meshes shown in FIG. 4C .
- Representation 404 is illustrated to include a source mesh 418 of the source geometry and a target mesh 420 of the target geometry. As shown in FIG. 4C , source mesh handles 422 have been added to the boundary of the source mesh 418 and target mesh handles 424 have been added to the boundary of the target mesh 420 . In one example, the number of source mesh handles 422 of the source mesh 418 is the same as the number of target mesh handles 424 of the target mesh 420 to facilitate one-to-one mapping of the source mesh handles 422 to the target mesh handles 424 .
- Representation 406 includes a warped source mesh 426 and mapped color point locations 428 .
- the warped mesh 426 is the source mesh 418 deformed based on mapping the source mesh handles 422 to the target mesh handles 424 .
- the warped mesh 426 is representative of the source geometry of the source object 410 warped to appear as the target geometry of the additional object 112 .
- the mapped color point locations 428 include color point locations 430 - 440 which have been mapped from the color point locations of the source mesh 418 to the warped source mesh 426 .
- the style of the freeform gradient of the source geometry of the object 410 is transferred to the target geometry of the additional object 412 .
- representation 408 which includes the freeform gradient of the source geometry of the source object 410 which has a freeform gradient style and a freeform gradient of the target geometry of the additional object 442 which also has the freeform gradient style.
- FIG. 5 is an illustration 500 depicting three example representations of freeform gradient style transfer.
- a first example 502 is illustrated to include a freeform gradient of a source geometry 504 having a first style and a target geometry 506 to receive a freeform gradient having the first style.
- the source geometry 504 is generally a square shape and the target geometry 506 resembles a shape of a sitting bird.
- the target geometry 507 receives a freeform gradient having the first style which is illustrated as freeform gradient style transfer 508 in example 502 .
- a second example 510 is also is illustrated to include a freeform gradient of a source geometry 512 having a second style and a target geometry 514 to receive a freeform gradient having the second style.
- the source geometry 512 resembles the shape of an apple and the target geometry 514 resembles the shape of a fish.
- the target geometry 514 receives a freeform gradient having the second style which is illustrated as freeform gradient style transfer 516 in example 510 .
- a third example 518 is also is illustrated to include a freeform gradient of a source geometry 520 having a third style and a target geometry 522 to receive a freeform gradient having the third style.
- the source geometry 520 resembles the shape of a cow and the target geometry 522 resembles the shape of a jockey riding a horse.
- the target geometry 522 receives a freeform gradient having the third style which is illustrated as freeform gradient style transfer 524 in example 518 .
- the described systems and techniques are further capable of applying a freeform gradient style from a reusable digital asset any target geometry.
- the described systems are capable of implementing a style of a freeform gradient as a reusable digital asset which can be applied to any geometry of a digital object. This eliminates the tedious effort involved in recreating the style of the freeform gradient each time the style is applied to a geometry of an object, and the reusable digital asset can be modified to modify the style of freeform gradients applied to many geometries of objects automatically.
- the freeform gradient of the source geometry 504 having a first style can be a reusable digital asset that is capable of applying the first style to the target geometry 514 or the target geometry 522 .
- the freeform gradient of the source geometry 512 having the second style can be saved as a digital asset which is usable to apply the second style to the target geometry 506 or the target geometry 522 .
- the freeform gradient of the source geometry 520 having the third style can be saved as a digital asset which is usable to apply the third style to the target geometry 506 or the target geometry 514 .
- FIG. 6 illustrates an example system 600 that includes an example computing device that is representative of one or more computing systems and/or devices that may implement the various techniques described herein. This is illustrated through inclusion of the style transfer module 110 .
- the computing device 602 may be, for example, a server of a service provider, a device associated with a client (e.g., a client device), an on-chip system, and/or any other suitable computing device or computing system.
- the example computing device 602 as illustrated includes a processing system 604 , one or more computer-readable media 606 , and one or more I/O interfaces 608 that are communicatively coupled, one to another.
- the computing device 602 may further include a system bus or other data and command transfer system that couples the various components, one to another.
- a system bus can include any one or combination of different bus structures, such as a memory bus or memory controller, a peripheral bus, a universal serial bus, and/or a processor or local bus that utilizes any of a variety of bus architectures.
- a variety of other examples are also contemplated, such as control and data lines.
- the processing system 604 is representative of functionality to perform one or more operations using hardware. Accordingly, the processing system 604 is illustrated as including hardware elements 610 that may be configured as processors, functional blocks, and so forth. This may include implementation in hardware as an application specific integrated circuit or other logic device formed using one or more semiconductors.
- the hardware elements 610 are not limited by the materials from which they are formed or the processing mechanisms employed therein.
- processors may be comprised of semiconductor(s) and/or transistors (e.g., electronic integrated circuits (ICs)).
- processor-executable instructions may be electronically-executable instructions.
- the computer-readable storage media 606 is illustrated as including memory/storage 612 .
- the memory/storage 612 represents memory/storage capacity associated with one or more computer-readable media.
- the memory/storage component 612 may include volatile media (such as random access memory (RAM)) and/or nonvolatile media (such as read only memory (ROM), Flash memory, optical disks, magnetic disks, and so forth).
- the memory/storage component 612 may include fixed media (e.g., RAM, ROM, a fixed hard drive, and so on) as well as removable media (e.g., Flash memory, a removable hard drive, an optical disc, and so forth).
- the computer-readable media 606 may be configured in a variety of other ways as further described below.
- Input/output interface(s) 608 are representative of functionality to allow a user to enter commands and information to computing device 602 , and also allow information to be presented to the user and/or other components or devices using various input/output devices.
- input devices include a keyboard, a cursor control device (e.g., a mouse), a microphone, a scanner, touch functionality (e.g., capacitive or other sensors that are configured to detect physical touch), a camera (e.g., which may employ visible or non-visible wavelengths such as infrared frequencies to recognize movement as gestures that do not involve touch), and so forth.
- Examples of output devices include a display device (e.g., a monitor or projector), speakers, a printer, a network card, tactile-response device, and so forth.
- the computing device 602 may be configured in a variety of ways as further described below to support user interaction.
- modules include routines, programs, objects, elements, components, data structures, and so forth that perform particular tasks or implement particular abstract data types.
- module generally represent software, firmware, hardware, or a combination thereof.
- the features of the techniques described herein are platform-independent, meaning that the techniques may be implemented on a variety of commercial computing platforms having a variety of processors.
- Computer-readable media may include a variety of media that may be accessed by the computing device 602 .
- computer-readable media may include “computer-readable storage media” and “computer-readable signal media.”
- Computer-readable storage media may refer to media and/or devices that enable persistent and/or non-transitory storage of information in contrast to mere signal transmission, carrier waves, or signals per se. Thus, computer-readable storage media refers to non-signal bearing media.
- the computer-readable storage media includes hardware such as volatile and non-volatile, removable and non-removable media and/or storage devices implemented in a method or technology suitable for storage of information such as computer readable instructions, data structures, program modules, logic elements/circuits, or other data.
- Examples of computer-readable storage media may include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, hard disks, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or other storage device, tangible media, or article of manufacture suitable to store the desired information and which may be accessed by a computer.
- Computer-readable signal media may refer to a signal-bearing medium that is configured to transmit instructions to the hardware of the computing device 602 , such as via a network.
- Signal media typically may embody computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as carrier waves, data signals, or other transport mechanism.
- Signal media also include any information delivery media.
- modulated data signal means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
- communication media include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media.
- hardware elements 610 and computer-readable media 606 are representative of modules, programmable device logic and/or fixed device logic implemented in a hardware form that may be employed in some embodiments to implement at least some aspects of the techniques described herein, such as to perform one or more instructions.
- Hardware may include components of an integrated circuit or on-chip system, an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a complex programmable logic device (CPLD), and other implementations in silicon or other hardware.
- ASIC application-specific integrated circuit
- FPGA field-programmable gate array
- CPLD complex programmable logic device
- hardware may operate as a processing device that performs program tasks defined by instructions and/or logic embodied by the hardware as well as a hardware utilized to store instructions for execution, e.g., the computer-readable storage media described previously.
- software, hardware, or executable modules may be implemented as one or more instructions and/or logic embodied on some form of computer-readable storage media and/or by one or more hardware elements 610 .
- the computing device 602 may be configured to implement particular instructions and/or functions corresponding to the software and/or hardware modules. Accordingly, implementation of a module that is executable by the computing device 602 as software may be achieved at least partially in hardware, e.g., through use of computer-readable storage media and/or hardware elements 610 of the processing system 604 .
- the instructions and/or functions may be executable/operable by one or more articles of manufacture (for example, one or more computing devices 602 and/or processing systems 604 ) to implement techniques, modules, and examples described herein.
- the techniques described herein may be supported by various configurations of the computing device 602 and are not limited to the specific examples of the techniques described herein. This functionality may also be implemented all or in part through use of a distributed system, such as over a “cloud” 614 as described below.
- the platform 616 may abstract resources 618 and functions to connect the computing device 602 with other computing devices.
- the platform may also serve to abstract scaling of resources to provide a corresponding level of scale to encountered demand for the resources that are implemented via the platform. Accordingly, in an interconnected device embodiment, implementation of functionality described herein may be distributed throughout the system 600 . For example, the functionality may be implemented in part on the computing device 602 as well as via the platform 616 that abstracts the functionality of the cloud 614 .
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Geometry (AREA)
- Processing Or Creating Images (AREA)
Abstract
Description
- In digital drawing and painting systems, a gradient is generally a blending of colors or shades of colors which is rendered in a user interface. Conventional systems can render gradients for use as colorful backgrounds, special effects, project themes, presentation styles, etc. Some types of gradients can be designed as a digital asset which may be used to apply the gradient, for example, to fill geometries of various digital objects. In this manner, conventional systems enable a digital artist to design a gradient such as a by manipulation of color points which control the colors of the gradient, and then the gradient design can be applied to many other objects. This allows the digital artist to propagate the gradient design across multiple objects quickly and efficiently.
- Freeform gradients are a type of gradient that can be used to create a blend of colors within a geometry of an object in an ordered or random sequence such that the blending appears smooth and natural. These gradients are created by arranging color points on a mesh of an object. Each color point has an associated color value, and conventional systems use the color values to interpolate colors to generate the freeform gradients within the geometry of the object. However, freeform gradients are object specific and therefore cannot be applied to other objects as is the case with linear and radial gradients. This is frustrating to digital artists as they must attempt to recreate a freeform gradient of a source object in a target object to transfer a style of the freeform gradient from the source object to the target object. Accordingly, the inability to transfer freeform gradient styles among digital objects presents a technological problem in the field of digital drawing and painting.
- Systems and techniques are described for freeform gradient style transfer. A computing device implements a style transfer system which receives a source geometry of an object having a freeform gradient and a target geometry of an additional object as inputs. The freeform gradient has a style defined by orientations of color point locations within the source geometry of the object. The system adds source mesh handles to a boundary of a source mesh of the object, and the system also adds target mesh handles to a target mesh of the additional object. The system also preserves the color point locations of the source mesh.
- The source mesh handles are mapped to the target mesh handles, and the system warps the source mesh to appear as the target geometry based on the mapping. The preserved color point locations of the source mesh are mapped to the warped source mesh and a freeform gradient having the style is generated based on this mapping. By warping the source mesh to appear as the target geometry and mapping the preserved color point locations to the warped source mesh, the system transfers the style of the freeform gradient of the source geometry of the object to the target geometry of the additional object.
- The described systems improve digital drawing and painting by technology by enabling freeform gradient style transfer from a source geometry to a target geometry even in cases where the source and target geometries have no features in common. Furthermore, the system is capable of implementing a style of a freeform gradient as a reusable digital asset which can be applied to any geometry of a digital object. This eliminates the tedious effort involved in recreating the style of the freeform gradient each time the style is applied to a geometry of an object, and the reusable digital asset can be modified to modify the style of freeform gradients applied to many geometries of objects automatically. Additionally, by facilitating freeform gradient style transfer, the described systems provide functionality that was previously not possible.
- This Summary introduces a selection of concepts in a simplified form that are further described below in the Detailed Description. As such, this Summary is not intended to identify essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
- The patent or application file contains at least one drawing executed in color. Copies of this patent or patent application publication with color drawing(s) will be provided by the Office upon request and payment of the necessary fee.
- The detailed description is described with reference to the accompanying figures. Entities represented in the figures may be indicative of one or more entities and thus reference may be made interchangeably to single or plural forms of the entities in the discussion.
-
FIG. 1 is an illustration of an environment in an example implementation that is operable to employ digital systems and techniques as described herein. -
FIG. 2 depicts a system in an example implementation showing operation of a style transfer module. -
FIG. 3 is a flow diagram depicting a procedure in an example implementation in which a style of a freeform gradient of a source geometry is transferred to a target geometry. -
FIGS. 4A, 4B, 4C, 4D, and 4E are illustrations depicting an example representation in which a style of a freeform gradient of a source geometry is transferred to a target geometry. -
FIG. 5 is an illustration depicting three example representations of freeform gradient style transfer. -
FIG. 6 illustrates an example system that includes an example computing device that is representative of one or more computing systems and/or devices that may implement the various techniques described herein. - Overview
- Broadly, a gradient is a blending of colors or shades of colors which is rendered in a user interface on a display device. Conventional systems can render gradients for use as backgrounds, special effects, project themes, presentation styles, etc. Some types of gradients can be designed as a digital asset which may be used to apply the gradient, for example, to fill geometries of various digital objects. In this manner, conventional systems enable a digital artist to design a gradient such as a by manipulation of color points which control the colors of the gradient, and then the gradient design can be applied to many other objects. This allows the digital artist to propagate the gradient design across multiple objects quickly and efficiently.
- Freeform gradients are a type of gradient that can be used to create a blend of colors within a geometry of an object in an ordered or random sequence such that the blending appears smooth and natural. These gradients are created by arranging color points on a mesh of an object. Each color point has an associated color value, and conventional systems use the color values to interpolate colors to generate the freeform gradients within the geometry of the object. In this manner, freeform gradients are object specific and therefore cannot be applied to other objects as is the case with other types of gradients such as linear and radial gradients. This is frustrating to digital artists as they must attempt to recreate a style of a freeform gradient of a source object in a target object to transfer the style of the freeform gradient to the target object. Accordingly, the inability to transfer freeform gradient styles among digital objects presents a technological problem in the field of digital drawing and painting.
- To overcome these problems, techniques are described that support freeform gradient style transfer within a digital medium environment. In accordance with the described techniques, a computing device implements a style transfer system which receives a source geometry of an object having a freeform gradient and a target geometry of an additional object as inputs. The freeform gradient has a style defined by orientations of color point locations within the source geometry of the object.
- The style transfer system includes a meshing module, a mesh handle module, a mapping module, and a warping module. The meshing module is implemented to add anchor points to the source geometry and the target geometry, and then generate a source mesh of the object and a target mesh of the additional object. The addition of the anchor points causes both the source mesh and the target mesh to have more path segments which increases precision in mesh deformation. The meshing module adds the anchor points such that the source mesh and the target mesh have the same number of anchor points to ensure one-to-one correspondence between the meshes. Color point locations of the source mesh are also identified and the meshing module preserves mesh indices associated with the color point locations of the source mesh.
- The mesh handle module is implemented to sample points around a boundary of the source mesh and sample points around a boundary of the target mesh. Based on the sampled points, the mesh handle module adds mesh handles to the source mesh boundary and the target mesh boundary. These mesh handles are added to the meshes such that the source mesh and the target mesh have an equal number of mesh handles to facilitate a one-to-one mapping between mesh handles of the two meshes.
- The mapping module is implemented to map the mesh handles of the source mesh to the mesh handles of the target mesh. To accomplish this, the mapping module coincides a geometrical center of the source mesh and a geometrical center of the target mesh and maps an initial mesh handle of the source mesh to an initial mesh handle of the target mesh and the initial mesh handle of the source mesh is modified to have the position of the corresponding initial mesh handle of the target mesh. The mapping module continues mapping the source mesh handles to the target mesh handles in this way until each of the mesh handles of the source mesh have the position of the corresponding mesh handle of the target mesh.
- The warping module is implemented to warp the source mesh based on the mesh handle mapping so that the warped source mesh appears as the target geometry. The color point locations are mapped, e.g., by the mapping module, to the warped source mesh based on the preserved mesh indices and a freeform gradient is generated based on the mapped color point locations. In this way, the style transfer system transfers the freeform gradient style of the source geometry of the object to the target geometry of the additional object.
- The described systems improve digital drawing and painting by technology by enabling freeform gradient style transfer from a source geometry to a target geometry even in cases where the source and target geometries have no features in common. Furthermore, the system is capable of implementing a style of a freeform gradient as a reusable digital asset which can be applied to any geometry of a digital object. This eliminates the tedious effort involved in recreating the style of the freeform gradient each time the style is applied to a geometry of an object, and the reusable digital asset can be modified to modify the style of freeform gradients applied to many geometries of objects automatically. Additionally, by facilitating freeform gradient style transfer, the described systems provide functionality that was previously not possible.
- In the following discussion, an example environment is first described that may employ the techniques described herein. Example procedures are also described which may be performed in the example environment as well as other environments. Consequently, performance of the example procedures is not limited to the example environment and the example environment is not limited to performance of the example procedures.
- Example Environment
-
FIG. 1 is an illustration of anenvironment 100 in an example implementation that is operable to employ digital systems and techniques as described herein. The illustratedenvironment 100 includes acomputing device 102 connected to anetwork 104. Thecomputing device 102 may be configured as a desktop computer, a laptop computer, a mobile device (e.g., assuming a handheld configuration such as a tablet or mobile phone), and so forth. Thus, thecomputing device 102 may range from a full resource device with substantial memory and processor resources (e.g., personal computers, game consoles) to a low-resource device with limited memory and/or processing resources (e.g., mobile devices). Additionally, thecomputing device 102 may be representative of a plurality of different devices, such as multiple servers utilized by a business to perform operations “over the cloud.” - The illustrated
environment 100 also includes adisplay device 106 that is communicatively coupled to thecomputing device 102 via a wired or a wireless connection. A variety of device configurations may be used to implement thecomputing device 102 and/or thedisplay device 106. Thecomputing device 102 includes astorage device 108 and astyle transfer module 110. Thestorage device 108 is illustrated to includedigital content 112. - An example of the
digital content 112 is a freeform gradient applied to a geometry of anobject 114 which is displayed in auser interface 116 on thedisplay device 106. This freeform gradient has a style defined by orientations of color points within the object's 114 geometry. In an example, the freeform gradient style of theobject 114 is transferrable to another object which is illustrated as a freeform gradient having the style applied to a geometry of anadditional object 118 that is also displayed in theuser interface 116. In particular, the geometry of theobject 114 is different than the geometry of theadditional object 118. In this example, the freeform gradient style is applied to a square-shaped geometry of theobject 114, and the freeform gradient style is transferred to a dragon-shaped geometry of theadditional object 118. - Aspects of the freeform gradient style as applied to the geometry of the
object 114 may be included ininput data 120. Thestyle transfer module 110 is illustrated as having, receiving, and/or transmittinginput data 120. For example, thecomputing device 102 may implement thestyle transfer module 110 to receive theinput data 120 which can include the style of the freeform gradient applied to the geometry of theobject 114 as well as the geometry of theadditional object 118, and thestyle transfer module 110 can process theinput data 120 to transfer the style of the freeform gradient from the square-shaped geometry of theobject 114 to the dragon-shaped geometry of theadditional object 118. - In one example, the style of the freeform gradient applied to the geometry of the
object 114 may be included within thesystem 100 asdigital content 112. In this manner, the style of the freeform gradient can be a digital asset that is usable to apply the style of the freeform gradient to the geometry of theadditional object 118. In this example, theinput data 120 may only include the geometry of theadditional object 118, and thestyle transfer module 110 is implemented to transfer the freeform gradient style of theobject 114 to theadditional object 118 by transferring the style from a reusable digital asset to theadditional object 118. -
FIG. 2 depicts asystem 200 in an example implementation showing operation of astyle transfer module 110. Thestyle transfer module 110 is illustrated to include ameshing module 202, amesh handle module 204, amapping module 206, and awarping module 208. Thecomputing device 102 implements thestyle transfer module 110 to receiveinput data 120, e.g., thestyle transfer module 110 may receive theinput data 120 over thenetwork 104 or based on user inputs received by thecomputing device 102 via theuser interface 116. In one or more implementations, themeshing module 202 may receive theinput data 120 and themeshing module 202 may process theinput data 120 assource mesh data 210,target mesh data 212, and colorpoint location data 214. For example, themeshing module 202 may receive the freeform gradient applied to the geometry of theobject 114 as part of receiving theinput data 120, and themeshing module 202 is implemented to generate a source mesh of theobject 114 which is represented by thesource mesh data 210. In an example, themeshing module 202 is implemented to add anchor points to the source mesh of theobject 114 because adding these anchor points will create more path segments of the source mesh. As a result the additional path segments, the source mesh may be warped with greater precision. - In one or more implementations, the
input data 120 may include the geometry of theadditional object 118. For example, themeshing module 202 can receive the geometry of theadditional object 118 as part of receiving theinput data 120, and themeshing module 202 is implemented to generate a target mesh of theadditional object 118 which is represented by thetarget mesh data 212. In one example, themeshing module 202 is implemented to add anchor points to the target mesh of theadditional object 118 to increase warping precision. In another example, themeshing module 202 is implemented to add anchor points to the source mesh of theobject 114 and target mesh of theadditional object 118 such that the source mesh and the target mesh have the same fixed number of anchor points. In this manner, themeshing module 202 prepares the source mesh and the target mesh for processing by themesh handle module 204. - In an example, the
input data 120 may include locations of color points of the freeform gradient applied to the geometry of theobject 114. Themeshing module 202 can receive the locations of the color points of the freeform gradient of theobject 114 as part of receiving theinput data 120, and themeshing module 202 is implemented to preserve vertex indices for color points of the source mesh of theobject 114 which is represented as the colorpoint location data 214. - The
mesh handle module 204 is illustrated as receiving thesource mesh data 210 and thetarget mesh data 212. In one or more implementations, themesh handle module 204 receives thesource mesh data 210 and thetarget mesh data 212 as inputs, and themesh handle module 204 is implemented to process the inputs as source mesh handledata 216 and targetmesh handle data 218. For example, themesh handle module 204 is implemented to process thesource mesh data 210 to add mesh handles to the source mesh which is represented as the sourcemesh handle data 216. Thesource mesh data 210 describes the source mesh of theobject 114 having the additional anchor points and thetarget mesh data 212 describes the target mesh of theadditional object 118 also having the additional anchor points. For example, themesh handle module 204 may receive thesource mesh data 210, and themesh handle module 204 is implemented to sample boundary points of the geometry of theobject 114. In an example, themesh handle module 204 may receive thetarget mesh data 212, and themesh handle module 204 is implemented to sample boundary points of the geometry of theadditional object 118. - In one or more implementations, the
mesh handle module 204 is implemented to determine a starting segment as the first segment index to sample to get one-to-one correspondence between the source mesh and the target mesh. For example, themesh handle module 204 is implemented to add mesh handles on the sampled boundary points of the geometry of theobject 114. In one example, themesh handle module 204 can be implemented to determine mesh index positions of the color point locations of the freeform gradient of the geometry of theobject 114. In this example, themesh handle module 204 is implemented to analyze each closed loop of segments of the source mesh of theobject 114. For example, the source mesh of theobject 114 may be a triangle mesh, so in this example, themesh handle module 204 is implemented to analyze each triangle of the source mesh and return the triangle index if a color point is in the triangle or return the nearest triangle index from the color point position such as by calculating a distance of the color point from the triangle. - In an example, the
mesh handle module 204 is implemented to add mesh handles on the sampled boundary points of the geometry of theobject 114 and the sampled boundary points of the geometry of theadditional object 118. In one example, the geometry of theadditional object 118 with added mesh handles is represented as the targetmesh handle data 218. In this manner, themesh handle module 204 adds the mesh handles to the source mesh and the target mesh so that the meshes have the same number of mesh handles to facilitate a one-to-one mapping between the mesh handles of the source mesh and the mesh handles of the target mesh. For example, themesh handle module 204 is implemented to determine a mesh handle of the first segment index to start sampling as a starting mesh handle to perform the one-to-one mapping. In one or more implementations, the starting mesh handle to perform the one-to-one mapping is included as part of the sourcemesh handle data 216. - The
mapping module 206 is illustrated as receiving the sourcemesh handle data 216, the targetmesh handle data 218, and the colorpoint location data 214. For example, themapping module 206 receives the sourcemesh handle data 216, the targetmesh handle data 218, and the colorpoint location data 214 as inputs, and themapping module 206 is implemented to process the inputs ashandle mapping data 220 and colorpoint mapping data 222. In an example, themapping module 206 may be configured to add the mesh handles to the target mesh of theadditional object 118. - In one or more implementations, the
mapping module 206 receives the source mesh handledata 216 and the targetmesh handle data 218, and themapping module 206 is implemented to map the mesh handles of the source mesh of theobject 114 to the mesh handles of the target mesh of theadditional object 118. In this way, themapping module 206 is configured to coincide a geometric center of the geometry of theobject 114 with a geometric center of the geometry of theadditional object 118, and then map the mesh handles of the source mesh to the mesh handles of the target mesh by a one-to-one mapping. As a result, themapping module 206 translates the geometry of theobject 114 to the geometry of theadditional object 118 such that the mesh handles of the source mesh are modified to have a position of the corresponding mesh handles of the target mesh which is represented as thehandle mapping data 220. - In an example, the
mapping module 206 receives the colorpoint location data 214, and themapping module 206 is implemented to map the color point locations based on the modified source mesh positions and the mesh index positions of the color point locations of the freeform gradient of the geometry of theobject 114. This color point location mapping is represented as the colorpoint mapping data 222. In one example, the colorpoint mapping data 222 describes color point positions of the source mesh after the source mesh is warped based on thehandle mapping data 220. - The
warping module 208 is illustrated as receiving thehandle mapping data 220 and the colorpoint mapping data 222 as inputs, and thewarping module 208 is implemented to process the inputs to warp the source mesh to the target mesh and map the color point positions to the warped source mesh to transfer the style of the freeform gradient of theobject 114 to theadditional object 118 as a freeform gradient having the style. In this way, thewarping module 208 warps the geometry of theobject 114 to appear as the geometry of theadditional object 116 based on thehandle mapping data 220, and thewarping module 208 maps the color point locations from the preserved indexes of the source mesh to corresponding indexes of the warped source mesh to transfer the style of the freeform gradient of theobject 114 to theadditional object 118. As a result, thestyle transfer module 110 receives theinput data 120 which can include the style of the freeform gradient applied to the geometry of theobject 114 as well as the geometry of theadditional object 118, and thestyle transfer module 110 can process theinput data 120 to transfer the style of the freeform gradient from the square-shaped geometry of theobject 114 to the dragon-shaped geometry of theadditional object 118. - In general, functionality, features, and concepts described in relation to the examples above and below may be employed in the context of the example procedures described in this section. Further, functionality, features, and concepts described in relation to different figures and examples in this document may be interchanged among one another and are not limited to implementation in the context of a particular figure or procedure. Moreover, blocks associated with different representative procedures and corresponding figures herein may be applied together and/or combined in different ways. Thus, individual functionality, features, and concepts described in relation to different example environments, devices, components, figures, and procedures herein may be used in any suitable combinations and are not limited to the particular combinations represented by the enumerated examples in this description.
- Example Procedures
- The following discussion describes techniques that may be implemented utilizing the previously described systems and devices. Aspects of each of the procedures may be implemented in hardware, firmware, software, or a combination thereof. The procedures are shown as a set of blocks that specify operations performed by one or more devices and are not necessarily limited to the orders shown for performing the operations by the respective blocks. In portions of the following discussion, reference will be made to
FIG. 1 andFIG. 2 . -
FIG. 3 is a flow diagram depicting aprocedure 300 in an example implementation in which a style of a freeform gradient of a source geometry is transferred to a target geometry. Source mesh handles are generated on a boundary of a source mesh of a source geometry, and the source mesh includes color point locations of a freeform gradient of the source geometry (block 302). Target mesh handles are generated on a boundary of a target mesh of a target geometry (block 304). For example, themesh handle module 204 generates the source mesh handles on the boundary of the source mesh, and themesh handle module 204 also generates the target mesh handles on the boundary of the target mesh. The source mesh handles are mapped to the target mesh handles by coinciding a geometric center of the source geometry and a geometric center of the target geometry (block 306). In an example, themapping module 206 maps the source mesh handles to the target mesh handles. The source mesh and the color point locations are warped based on the mapping to generate a freeform gradient of the target geometry having a style of the freeform gradient of the source geometry (block 308). In one example, thewarping module 208 warps the source mesh and the color point locations to generate the freeform gradient of the target geometry having the style of the source geometry. The freeform gradient of the target geometry having the style is rendered in a user interface (block 310). In one or more implementations, thecomputing device 102 renders the freeform gradient of the target geometry in theuser interface 116 on thedisplay device 106. - Freeform Gradient Style Transfer
-
FIGS. 4A, 4B, 4C, 4D, and 4E are illustrations depicting an example representation in which a style of a freeform gradient of a source geometry is transferred to a target geometry.FIG. 4A depicts an illustration of anexample representation 400 of an object having a freeform gradient style of a source geometry to be transferred, and an additional object having a target geometry to receive the transferred style.FIG. 4B depicts an illustration of anexample representation 402 of anchor points added to the source geometry and anchor points added to the target geometry.FIG. 4C depicts an illustration of anexample representation 404 of source mesh handles added to a source mesh of the source geometry and target mesh handles added to a target mesh of the target geometry.FIG. 4D depicts an illustration of anexample representation 406 of a warped source mesh and mapped and/or warped color point positions.FIG. 4E illustrates anexample representation 408 of a freeform gradient style transfer from the source geometry of the object to the target geometry of the additional object. -
Representation 400 is illustrated to include a freeform gradient of a source geometry of asource object 410 as well as a target geometry of anadditional object 412. As shown inFIG. 4A , the geometry of thesource object 410 is generally square and the geometry of theadditional object 412 is generally an ellipse. Additionally, the freeform gradient of the source geometry has a distinct style which is defined by colors and orientations of color point locations within the source geometry. The techniques described herein can transfer the freeform gradient from the square geometry of theobject 410 to the ellipse geometry of theadditional object 412 while preserving the style of the freeform gradient of theobject 410. -
Representation 402 is also illustrated to include the freeform gradient of the source geometry of thesource object 410 and the target geometry of theadditional object 412. As shown inFIG. 4B , a plurality of anchor points 414 are added to the source geometry and a plurality of anchor points 416 are added to the target geometry. Addition of anchor points 414 and 416 ensures a precise deformation of the source geometry because the additional anchor points will add additional segments to meshes as illustrated inFIG. 4C . In an example, the number of anchor points 414 of the source geometry is the same as the number of anchor points 416 of the target geometry to facilitate one-to-one correspondence between the meshes shown inFIG. 4C . -
Representation 404 is illustrated to include asource mesh 418 of the source geometry and atarget mesh 420 of the target geometry. As shown inFIG. 4C , source mesh handles 422 have been added to the boundary of thesource mesh 418 and target mesh handles 424 have been added to the boundary of thetarget mesh 420. In one example, the number of source mesh handles 422 of thesource mesh 418 is the same as the number of target mesh handles 424 of thetarget mesh 420 to facilitate one-to-one mapping of the source mesh handles 422 to the target mesh handles 424. -
Representation 406 includes awarped source mesh 426 and mappedcolor point locations 428. As shown inFIG. 4D , thewarped mesh 426 is thesource mesh 418 deformed based on mapping the source mesh handles 422 to the target mesh handles 424. In this way, thewarped mesh 426 is representative of the source geometry of thesource object 410 warped to appear as the target geometry of theadditional object 112. The mappedcolor point locations 428 include color point locations 430-440 which have been mapped from the color point locations of thesource mesh 418 to thewarped source mesh 426. By mapping the color point locations 228 to thewarped mesh 426 which resembles the target geometry of theadditional object 412, the style of the freeform gradient of the source geometry of theobject 410 is transferred to the target geometry of theadditional object 412. This is illustrated byrepresentation 408 which includes the freeform gradient of the source geometry of thesource object 410 which has a freeform gradient style and a freeform gradient of the target geometry of theadditional object 442 which also has the freeform gradient style. -
FIG. 5 is anillustration 500 depicting three example representations of freeform gradient style transfer. A first example 502 is illustrated to include a freeform gradient of asource geometry 504 having a first style and atarget geometry 506 to receive a freeform gradient having the first style. In this example, thesource geometry 504 is generally a square shape and thetarget geometry 506 resembles a shape of a sitting bird. As shown inFIG. 5 , the target geometry 507 receives a freeform gradient having the first style which is illustrated as freeformgradient style transfer 508 in example 502. - A second example 510 is also is illustrated to include a freeform gradient of a
source geometry 512 having a second style and atarget geometry 514 to receive a freeform gradient having the second style. In this second example, thesource geometry 512 resembles the shape of an apple and thetarget geometry 514 resembles the shape of a fish. As shown inFIG. 5 , thetarget geometry 514 receives a freeform gradient having the second style which is illustrated as freeformgradient style transfer 516 in example 510. - A third example 518 is also is illustrated to include a freeform gradient of a
source geometry 520 having a third style and atarget geometry 522 to receive a freeform gradient having the third style. In this third example, thesource geometry 520 resembles the shape of a cow and thetarget geometry 522 resembles the shape of a jockey riding a horse. As shown inFIG. 5 , thetarget geometry 522 receives a freeform gradient having the third style which is illustrated as freeformgradient style transfer 524 in example 518. - Although, these examples have been described in terms of freeform gradient style transfer from a source geometry to a target geometry, the described systems and techniques are further capable of applying a freeform gradient style from a reusable digital asset any target geometry. In this way, the described systems are capable of implementing a style of a freeform gradient as a reusable digital asset which can be applied to any geometry of a digital object. This eliminates the tedious effort involved in recreating the style of the freeform gradient each time the style is applied to a geometry of an object, and the reusable digital asset can be modified to modify the style of freeform gradients applied to many geometries of objects automatically. By way of example, the freeform gradient of the
source geometry 504 having a first style can be a reusable digital asset that is capable of applying the first style to thetarget geometry 514 or thetarget geometry 522. In this manner, the freeform gradient of thesource geometry 512 having the second style can be saved as a digital asset which is usable to apply the second style to thetarget geometry 506 or thetarget geometry 522. Similarly, the freeform gradient of thesource geometry 520 having the third style can be saved as a digital asset which is usable to apply the third style to thetarget geometry 506 or thetarget geometry 514. - Example System and Device
-
FIG. 6 illustrates anexample system 600 that includes an example computing device that is representative of one or more computing systems and/or devices that may implement the various techniques described herein. This is illustrated through inclusion of thestyle transfer module 110. Thecomputing device 602 may be, for example, a server of a service provider, a device associated with a client (e.g., a client device), an on-chip system, and/or any other suitable computing device or computing system. - The
example computing device 602 as illustrated includes aprocessing system 604, one or more computer-readable media 606, and one or more I/O interfaces 608 that are communicatively coupled, one to another. Although not shown, thecomputing device 602 may further include a system bus or other data and command transfer system that couples the various components, one to another. A system bus can include any one or combination of different bus structures, such as a memory bus or memory controller, a peripheral bus, a universal serial bus, and/or a processor or local bus that utilizes any of a variety of bus architectures. A variety of other examples are also contemplated, such as control and data lines. - The
processing system 604 is representative of functionality to perform one or more operations using hardware. Accordingly, theprocessing system 604 is illustrated as includinghardware elements 610 that may be configured as processors, functional blocks, and so forth. This may include implementation in hardware as an application specific integrated circuit or other logic device formed using one or more semiconductors. Thehardware elements 610 are not limited by the materials from which they are formed or the processing mechanisms employed therein. For example, processors may be comprised of semiconductor(s) and/or transistors (e.g., electronic integrated circuits (ICs)). In such a context, processor-executable instructions may be electronically-executable instructions. - The computer-
readable storage media 606 is illustrated as including memory/storage 612. The memory/storage 612 represents memory/storage capacity associated with one or more computer-readable media. The memory/storage component 612 may include volatile media (such as random access memory (RAM)) and/or nonvolatile media (such as read only memory (ROM), Flash memory, optical disks, magnetic disks, and so forth). The memory/storage component 612 may include fixed media (e.g., RAM, ROM, a fixed hard drive, and so on) as well as removable media (e.g., Flash memory, a removable hard drive, an optical disc, and so forth). The computer-readable media 606 may be configured in a variety of other ways as further described below. - Input/output interface(s) 608 are representative of functionality to allow a user to enter commands and information to
computing device 602, and also allow information to be presented to the user and/or other components or devices using various input/output devices. Examples of input devices include a keyboard, a cursor control device (e.g., a mouse), a microphone, a scanner, touch functionality (e.g., capacitive or other sensors that are configured to detect physical touch), a camera (e.g., which may employ visible or non-visible wavelengths such as infrared frequencies to recognize movement as gestures that do not involve touch), and so forth. Examples of output devices include a display device (e.g., a monitor or projector), speakers, a printer, a network card, tactile-response device, and so forth. Thus, thecomputing device 602 may be configured in a variety of ways as further described below to support user interaction. - Various techniques may be described herein in the general context of software, hardware elements, or program modules. Generally, such modules include routines, programs, objects, elements, components, data structures, and so forth that perform particular tasks or implement particular abstract data types. The terms “module,” “functionality,” and “component” as used herein generally represent software, firmware, hardware, or a combination thereof. The features of the techniques described herein are platform-independent, meaning that the techniques may be implemented on a variety of commercial computing platforms having a variety of processors.
- An implementation of the described modules and techniques may be stored on or transmitted across some form of computer-readable media. The computer-readable media may include a variety of media that may be accessed by the
computing device 602. By way of example, and not limitation, computer-readable media may include “computer-readable storage media” and “computer-readable signal media.” - “Computer-readable storage media” may refer to media and/or devices that enable persistent and/or non-transitory storage of information in contrast to mere signal transmission, carrier waves, or signals per se. Thus, computer-readable storage media refers to non-signal bearing media. The computer-readable storage media includes hardware such as volatile and non-volatile, removable and non-removable media and/or storage devices implemented in a method or technology suitable for storage of information such as computer readable instructions, data structures, program modules, logic elements/circuits, or other data. Examples of computer-readable storage media may include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, hard disks, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or other storage device, tangible media, or article of manufacture suitable to store the desired information and which may be accessed by a computer.
- “Computer-readable signal media” may refer to a signal-bearing medium that is configured to transmit instructions to the hardware of the
computing device 602, such as via a network. Signal media typically may embody computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as carrier waves, data signals, or other transport mechanism. Signal media also include any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. - As previously described,
hardware elements 610 and computer-readable media 606 are representative of modules, programmable device logic and/or fixed device logic implemented in a hardware form that may be employed in some embodiments to implement at least some aspects of the techniques described herein, such as to perform one or more instructions. Hardware may include components of an integrated circuit or on-chip system, an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a complex programmable logic device (CPLD), and other implementations in silicon or other hardware. In this context, hardware may operate as a processing device that performs program tasks defined by instructions and/or logic embodied by the hardware as well as a hardware utilized to store instructions for execution, e.g., the computer-readable storage media described previously. - Combinations of the foregoing may also be employed to implement various techniques described herein. Accordingly, software, hardware, or executable modules may be implemented as one or more instructions and/or logic embodied on some form of computer-readable storage media and/or by one or
more hardware elements 610. Thecomputing device 602 may be configured to implement particular instructions and/or functions corresponding to the software and/or hardware modules. Accordingly, implementation of a module that is executable by thecomputing device 602 as software may be achieved at least partially in hardware, e.g., through use of computer-readable storage media and/orhardware elements 610 of theprocessing system 604. The instructions and/or functions may be executable/operable by one or more articles of manufacture (for example, one ormore computing devices 602 and/or processing systems 604) to implement techniques, modules, and examples described herein. - The techniques described herein may be supported by various configurations of the
computing device 602 and are not limited to the specific examples of the techniques described herein. This functionality may also be implemented all or in part through use of a distributed system, such as over a “cloud” 614 as described below. - The
cloud 614 includes and/or is representative of aplatform 616 forresources 618. Theplatform 616 abstracts underlying functionality of hardware (e.g., servers) and software resources of thecloud 614. Theresources 618 may include applications and/or data that can be utilized while computer processing is executed on servers that are remote from thecomputing device 602.Resources 618 can also include services provided over the Internet and/or through a subscriber network, such as a cellular or Wi-Fi network. - The
platform 616 mayabstract resources 618 and functions to connect thecomputing device 602 with other computing devices. The platform may also serve to abstract scaling of resources to provide a corresponding level of scale to encountered demand for the resources that are implemented via the platform. Accordingly, in an interconnected device embodiment, implementation of functionality described herein may be distributed throughout thesystem 600. For example, the functionality may be implemented in part on thecomputing device 602 as well as via theplatform 616 that abstracts the functionality of thecloud 614. - Although the implementation of freeform gradient style transfer has been described in language specific to structural features and/or methods, it is to be understood that the appended claims are not necessarily limited to the specific features or methods described. Rather, the specific features and methods are disclosed as example implementations freeform gradient style transfer, and other equivalent features and methods are intended to be within the scope of the appended claims. Further, various different examples are described and it is to be appreciated that each described example can be implemented independently or in connection with one or more other described examples.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/281,551 US10740937B1 (en) | 2019-02-21 | 2019-02-21 | Freeform gradient style transfer |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/281,551 US10740937B1 (en) | 2019-02-21 | 2019-02-21 | Freeform gradient style transfer |
Publications (2)
Publication Number | Publication Date |
---|---|
US10740937B1 US10740937B1 (en) | 2020-08-11 |
US20200273222A1 true US20200273222A1 (en) | 2020-08-27 |
Family
ID=71994222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/281,551 Active 2039-02-27 US10740937B1 (en) | 2019-02-21 | 2019-02-21 | Freeform gradient style transfer |
Country Status (1)
Country | Link |
---|---|
US (1) | US10740937B1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230135694A1 (en) * | 2021-11-02 | 2023-05-04 | Adobe Inc. | Reconstructing freeform gradients from an input image |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6784896B1 (en) * | 2002-11-04 | 2004-08-31 | Virtual Mirror Corporation | Colorization of a gradient mesh |
US7868885B2 (en) * | 2007-06-22 | 2011-01-11 | Microsoft Corporation | Direct manipulation of subdivision surfaces using a graphics processing unit |
US8411080B1 (en) * | 2008-06-26 | 2013-04-02 | Disney Enterprises, Inc. | Apparatus and method for editing three dimensional objects |
US8514238B2 (en) * | 2008-11-21 | 2013-08-20 | Adobe Systems Incorporated | System and method for adding vector textures to vector graphics images |
US8532387B2 (en) * | 2009-09-04 | 2013-09-10 | Adobe Systems Incorporated | Methods and apparatus for procedural directional texture generation |
EP2963463A1 (en) * | 2014-07-02 | 2016-01-06 | Ecole Polytechnique Fédérale de Lausanne (EPFL) | Design of refractive surface |
US10304244B2 (en) * | 2016-07-08 | 2019-05-28 | Microsoft Technology Licensing, Llc | Motion capture and character synthesis |
US10242464B1 (en) * | 2017-09-18 | 2019-03-26 | Adobe Systems Incorporated | Diffusion coloring using weighted color points |
US10489946B1 (en) * | 2018-06-29 | 2019-11-26 | Adobe Inc. | Generalized primitives for smooth coloring of vector graphics artwork in constant time |
-
2019
- 2019-02-21 US US16/281,551 patent/US10740937B1/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230135694A1 (en) * | 2021-11-02 | 2023-05-04 | Adobe Inc. | Reconstructing freeform gradients from an input image |
US11699252B2 (en) * | 2021-11-02 | 2023-07-11 | Adobe Inc. | Reconstructing freeform gradients from an input image |
Also Published As
Publication number | Publication date |
---|---|
US10740937B1 (en) | 2020-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9678740B2 (en) | Migration mechanism | |
US10388045B2 (en) | Generating a triangle mesh for an image represented by curves | |
US10146671B2 (en) | Testing of software upgrade | |
US9244949B2 (en) | Determining mappings for application integration based on user contributions | |
US9900369B2 (en) | Device characteristics detection and emulation | |
US11455752B2 (en) | Graphical element color diffusion techniques | |
US11853749B2 (en) | Managing container images in groups | |
EP3895020A1 (en) | Automated testing for metadata-driven custom applications | |
US10169054B2 (en) | Undo and redo of content specific operations | |
US9977581B2 (en) | Selection refinement tool | |
US10275505B2 (en) | In-application conversion of file versions using cloud services | |
US10740937B1 (en) | Freeform gradient style transfer | |
Srinivasan et al. | Google Cloud Platform for Architects: Design and manage powerful cloud solutions | |
US11087505B2 (en) | Weighted color palette generation | |
US11423587B2 (en) | Freeform gradient style blending | |
US20170322910A1 (en) | Extension of Text on a Path | |
US11900514B2 (en) | Digital content editing using a procedural model | |
US10846328B2 (en) | Digital asset association with search query data | |
US10025838B2 (en) | Extract transform load input suggestion | |
GB2555521A (en) | Improved object painting through use of perspectives or transfers in a digital medium environment | |
Milovanovic et al. | Python Data Visualization Cookbook | |
KR20200058205A (en) | Automated symbolization of 1:25,000 map based on domestic geometric characteristic | |
US20240070944A1 (en) | Visual Reordering Of Partial Vector Objects | |
US11941232B2 (en) | Context-based copy-paste systems | |
US20240193843A1 (en) | Animated display characteristic control for digital images |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
AS | Assignment |
Owner name: ADOBE INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SHARMA, AVADHESH KUMAR;TANDON, TARUN;SIGNING DATES FROM 20190214 TO 20190215;REEL/FRAME:048744/0681 |
|
AS | Assignment |
Owner name: ADOBE INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BANSAL, NITIKA;REEL/FRAME:051513/0027 Effective date: 20200108 |
|
FEPP | Fee payment procedure |
Free format text: PETITION RELATED TO MAINTENANCE FEES GRANTED (ORIGINAL EVENT CODE: PTGR); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |