US20190295217A1 - Digital image transformation environment using spline handles - Google Patents
Digital image transformation environment using spline handles Download PDFInfo
- Publication number
- US20190295217A1 US20190295217A1 US15/936,299 US201815936299A US2019295217A1 US 20190295217 A1 US20190295217 A1 US 20190295217A1 US 201815936299 A US201815936299 A US 201815936299A US 2019295217 A1 US2019295217 A1 US 2019295217A1
- Authority
- US
- United States
- Prior art keywords
- segment
- handle
- computing device
- spline
- transformation
- 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
- 230000009466 transformation Effects 0.000 title claims abstract description 102
- 230000004044 response Effects 0.000 claims abstract description 9
- 238000000034 method Methods 0.000 claims description 56
- 239000013598 vector Substances 0.000 claims description 16
- 238000013519 translation Methods 0.000 claims description 11
- 230000001172 regenerating effect Effects 0.000 claims description 7
- 230000008859 change Effects 0.000 claims description 6
- 238000006073 displacement reaction Methods 0.000 claims 2
- 230000003993 interaction Effects 0.000 description 27
- 238000012545 processing Methods 0.000 description 16
- 238000000844 transformation Methods 0.000 description 14
- 239000011159 matrix material Substances 0.000 description 11
- 238000007796 conventional method Methods 0.000 description 9
- 239000000203 mixture Substances 0.000 description 7
- 210000000988 bone and bone Anatomy 0.000 description 6
- 230000007423 decrease Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- HPNSNYBUADCFDR-UHFFFAOYSA-N chromafenozide Chemical compound CC1=CC(C)=CC(C(=O)N(NC(=O)C=2C(=C3CCCOC3=CC=2)C)C(C)(C)C)=C1 HPNSNYBUADCFDR-UHFFFAOYSA-N 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000005070 sampling Methods 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
- 238000012546 transfer Methods 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
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/18—Image warping, e.g. rearranging pixels individually
-
- G06T3/0093—
-
- G06T3/0068—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/14—Transformations for image registration, e.g. adjusting or mapping for alignment of images
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/24—Indexing scheme for image data processing or generation, in general involving graphical user interfaces [GUIs]
Definitions
- Linear blend skinning techniques are used by computing devices to transform digital images. For example, an animator may create an initial digital image through interaction with a computing device. Linear blend skinning techniques are then used to makes changes to that initial image to form different variations of the initial image to form frames of the animation. To do so, different handle types may be specified in relation to the digital image as part of the linear blend skinning to deform artwork in the digital image in order to make the changes.
- a digital image transformation environment is described to transform a digital image using a spline handle.
- the spline handle supports user interactions with a computing device that are not possible using conventional techniques, thereby improving user interaction and operational efficiency of the computing device.
- a user may enter a series of points, sketch a freeform line, or use any other technique to draw a segment (e.g., a curved or straight line) in relation to artwork in a digital image.
- a spline handle generation module generates a spline handle having control points (i e, handles) that include end points and tangent handles that specify a direction of the segment.
- a user may then interact with a user interface to “grab” any point of the spline handle along the segment.
- the computing device uses changes to the spline handle to control transformations made to artwork associated with that segment, e.g., underlying.
- the computing device may detect movement of an internal point along the segment of the spline handle as a result of user interaction with a user interface.
- the computing device refits the segment of the spline automatically and without user intervention in real time as the internal point is moved.
- the computing device uses an initial and final (e.g., current) position of the internal point to adjust a tangent handle used to define a direction of a curve of the segment. This is used by the computing device to regenerate the segment of the curve to include the internal point at the final (e.g., current) position in the user interface.
- the adjustment to the tangent handle is then used as a basis to transform the artwork.
- the computing device uses the initial and final position of the internal point to compute a transformation to be applied to the artwork, e.g., a translation, rotation, or scaling transformation. This may be performed in a variety of ways, such as to compute a transformation matrix. Further, increased operational efficiency supported by the spline handle supports output of the transformation in real time, even using computing device having limited processing resources, e.g., mobile devices.
- FIG. 1 is an illustration of an environment in an example implementation that is operable to employ digital image transformation techniques using spline handles as described herein.
- FIG. 2 depicts a system in an example implementation showing operation of a digital image transformation system of FIG. 1 in greater detail.
- FIG. 3 depicts an example implementation of user interaction with a user interface to construct a spline handle.
- FIGS. 4 and 5 depict examples of use of spline handles as a controlling structure to generate transformations to artwork.
- FIG. 6 depicts an example of adjusting curvature of a segment of a spline handle to transform artwork.
- FIG. 7 depicts another example of movement of an internal point on a segment of a spline handle.
- FIG. 8 depicts another example implementation in which localized scaling is performed through interaction with a spine handle.
- FIG. 9 depicts an implementation of how boundary conditions are set along a spline handle.
- FIG. 10 depicts an example implementation of a spline handle configured as a cubic Bezier curve.
- FIG. 11 is a flow diagram depicting a procedure in an example implementation in which in which a transformation is generated that may include translation, rotation, and/or scaling based on user interaction with a spline handle.
- FIG. 12 is a flow diagram depicting a procedure in an example implementation in which in which a transformation is generated that includes localized scaling based on user interaction with a spline handle.
- FIG. 13 illustrates an example system including various components of an example device that can be implemented as any type of computing device as described and/or utilize with reference to FIGS. 1-12 to implement embodiments of the techniques described herein.
- a digital image environment is described using techniques and systems to transform a digital image using a spline handle.
- the spline handle supports user interactions with a computing device that are not possible using conventional techniques, thereby improving user interaction and operational efficiency of the computing device.
- the spline handle is defined by the computing device using a curve, such as a cubic Bezier curve.
- a curve such as a cubic Bezier curve.
- a series of points maybe input via user interaction with a user interface to define a curve in a segment.
- the segment may be drawn to follow the curve of the tail in this example.
- a user may draw a freeform line in a user interface to define a segment as also following artwork in a digital image.
- a curve is then fit to this segment by the computing device, which may be performed using a cubic Bezier curve or other curve. Regardless of how input, the curve is used to generate a spline handle.
- the spline handle may also be configured to support user interaction along both of the endpoints as well as at any internal point along the segment of the spline handle between the endpoints.
- a user for instance, may interact with a user interface to “grab” any point of the spline handle along the segment.
- the computing device uses changes to the spline handle to control transformations made to underlying artwork under that segment.
- the spline handle acts in an intuitive manner as a controlling structure for transforming the artwork based on changes that are directly made to the segment of the spline handle. This may be used to support a variety of transformations, including translation, rotation, and scaling of the artwork.
- the spline handle supports intuitive user interactions with increased accuracy over conventional techniques.
- the computing device may detect movement of an internal point along the segment of the spline handle as a result of user interaction with a user interface. In response, the computing device refits the segment of the spline automatically and without user intervention in real time as the internal point is moved. To do so in one example, the computing device uses an initial and final (e.g., current) position of the internal point to adjust a tangent handle used to define a direction of a curve of the segment. This is used by the computing device to regenerate the segment of the curve to include the internal point at the final (e.g., current) position in the user interface.
- an initial and final (e.g., current) position of the internal point to adjust a tangent handle used to define a direction of a curve of the segment. This is used by the computing device to regenerate the segment of the curve to include the internal point at the final (e.g., current) position in the user interface.
- the adjustment to the tangent handle is then used as a basis to transform the artwork.
- the computing device uses the initial and final position of the internal point to compute a transformation to be applied to the artwork, e.g., a translation, rotation, or scaling transformation.
- the transformation is combined by the computing device with a weight that is handle specific. These weights are then combined and used to control an amount of the transformation that is to be applied to respective components of an artwork, e.g., vertices in a triangle mesh.
- the spline handle may also support relative scaling of components of an input geometry of artwork in a digital image, e.g., a vector graphic.
- An internal point of the spline handle for instance, may be moved in a user interface from any point along the length of the spline handle, thereby causing a change in a midpoint of the spline handle.
- This causes the computing device to change a relative scale to underlying components of the artwork in proportion to a length of the segment of the spline handle in relation to an amount the internal point is moved in the user interface.
- This is not possible using conventional handle types, which are previously described are inefficient, often required often tedious user inputs to generate a multitude of handles, and hindered operation of a computing device.
- Example procedures are then 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 a digital medium environment 100 in an example implementation that is operable to employ digital image transformation techniques using spline handles as described herein.
- the illustrated environment 100 includes a computing device 102 , which may be configured in a variety of ways.
- 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 as illustrated), and so forth.
- the computing device 102 may range from full resource devices 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).
- a single computing device 102 is shown, 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” as described in FIG. 13 .
- the computing device 102 is illustrated as including an image processing system 104 .
- the image processing system 104 is implemented at least partially in hardware of the computing device 102 to process and transform a digital image 106 , which is illustrated as maintained in storage 108 of the computing device 102 .
- Such processing includes creation of the digital image 106 , modification of the digital image 106 , and rendering of the digital image 106 in a user interface 110 for output, e.g., by a display device 112 .
- functionality of the image processing system 104 may also be implemented as whole or part via functionality available via the network 114 , such as part of a web service or “in the cloud.”
- Spline handles 118 may be used as part of linear blend skinning techniques that are used to deform a mesh of skeletal structures through use of different handle types.
- conventional handles types used for linear blend skinning such as point, bone, and cage handles, limit user interaction to predefined control points, such as at joints between segments for bone handles.
- conventional handle types are limited to drawing straight-line segments. Therefore, when used to follow the curve of a tail, for instance, a multitude of conventional handles are required, which could be inaccurate and hinder operation of the computing device.
- the spline handle 118 of the digital image transformation system 116 may assume any curvature or structure thereby increasing a user's ability to control transformations to artwork.
- a spline handle 122 is formed having first, second, third, fourth, and fifth segments 124 , 126 , 128 , 130 , 132 . This may be formed in a variety of ways, such as through a series of user clicks to define the points successively, by drawing a freeform line, and so forth.
- Each of the segments of the spline handle 122 define corresponding components of the artwork 134 that are to be transformed by the digital image transformation system 116 based on user interaction with the respective segments. In this way, a user may quickly and efficiently define which parts of the artwork 134 are to be transformed. Further, by supporting the use of curves, the spline handle 122 may be formed to follow a natural flow of the artwork 134 using a fewer number of handles in comparison with conventional handle types, thereby improving operation of the computing device 102 . Further discussion of these and other examples is included in the following section and shown in corresponding figures.
- FIG. 2 depicts a system 200 in an example implementation showing operation of the digital image transformation system 116 in greater detail.
- the digital image transformation system 116 includes a spline handle generation module 202 that is implemented at least partially in hardware of the computing device 102 to generate and regenerate spline handles.
- the spline handles 118 are used as a basis by a digital image transformation module 204 to generate a transformed digital image 206 . This transformation is based on user interaction with the spline handles 118 detected via user inputs 208 received via a user interface 110 .
- FIG. 3 depicts an example implementation 300 of user interaction with a user interface 110 to construct a spline handle 122 .
- This example implementation is illustrated using first, second, third, and fourth stages 302 , 304 , 306 , 308 .
- a user input is received by the computing device indicating a first endpoint 310 , e.g., via a tap of a touchscreen, click of a cursor control device, and so forth.
- a second endpoint 312 e.g., another tap, click, and so forth.
- This connection may be performed in a variety of ways.
- the spline handle generation module 202 may include options to connect these endpoints using a straight line as illustrated at the second stage 304 or via a curve (e.g., using a modifier key) as shown at the third stage 306 .
- This process may continue to add segments 322 , 324 to the spline handle 316 .
- This may be performed sequentially by specifying points successively one after another or by adding segments within existing segments to sub-divide a segment into multiple segments.
- the spline handle 316 may be defined completely within the artwork 134 , partially within the artwork 134 , and even completely outside the artwork 134 . Other examples are also contemplated, such as by drawing a freeform line by a user.
- the spline handle generation module 202 may then fit curves (e.g., cubic Bezier curves) automatically and without user intervention to the freeform line to form segments as part of the spline handle 316 .
- FIGS. 4 and 5 depict examples 400 , 500 of use of spline handles as a controlling structure to generate transformations to artwork.
- FIGS. 4 and 5 are illustrated using respective first stages 402 , 502 and respective second stages 404 , 504 .
- a segment of a spline handle 118 is illustrated that includes control points that are used to define a length and direction of a curve.
- the control points are configured to support a cubic Bezier curve as having first and second endpoints 406 , 408 and first and second tangent handles 412 , 414 .
- the tangent handles 412 , 414 are used to define a direction of the segment, i.e., a degree to which the segment exhibits curvature.
- the tangent handles 412 , 414 are not displayed in the user interface 110 .
- the segment as defined as a cubic Bezier curve starts at the first endpoint 406 (p0), continues in the direction of the first tangent handle 412 (p 1 ) and arrives at the second endpoint 408 (p3) coming from the direction of the second tangent handle 414 (p2).
- the segment does not pass through the first and second tangent handles 412 , 414 .
- An example of this is shown for the second stage 504 of FIG. 5 .
- the distance between the first and second tangent handles 412 , 414 determines how far and how fast the curve moves towards the first tangent handle 412 (p1) before turning back toward the second tangent handle 414 (p2).
- the spline handle 118 is used as the control structure to generate transformations that are applied to artwork in the digital image.
- a user input 208 may be received that selects any point on the segment of the spline handle 118 , including any internal point lying on the segment between the first and second endpoints 406 , 408 .
- the user input may include a “click-and-drag” as selecting an internal point at a first location and moving the internal point to a second location in the user interface 110 .
- This is used by the spline handle generation module 202 to transform the segment, which is then used as a basis to transform the artwork. This may also be performed for multiple segments of a same or different spline handle, simultaneously.
- an internal point 416 in a straight line segment is selected and moved along the length of the segment. This causes a midpoint of the segment of the spline handle 118 to change, in which case local scaling is applied to respective components of the artwork. Further discussion of this example may be found in relation to FIG. 8 .
- an internal point 506 of the segment is also selected and moved away from the segment. This causes the spline handle generation module 202 to adjust the first and second tangent handles 412 , 414 such that the segment also passes through the internal point at it's new location. Additionally, the spline handle generation module 202 may adjust the tangent handles such that the internal point remains “the same” in relation to a length of the segment of the spline handle 118 (i.e., at the same parametric value) as further described below.
- an internal point in the spline handle 118 is moved without moving the first and second endpoints 406 , 408 . This is not possible using conventional handle types, such as bone handles that were limited to movement of endpoints at “joints” between respective segments.
- pseudo handles may be defined by the digital image transformation system 116 as part of respective segments of the spline handles 118 .
- the pseudo handles are defined at a specific location relative to a segment of the spline handle.
- parametric values may be used to indicate locations along the segment in relation to a length of the segment.
- a parametric value “t,” for instance, may be defined using values between zero and one, with zero corresponding to a first endpoint 406 and one corresponding to the second endpoint 408 . Values between zero and one then indicate “where” internal points along the length of the segment are located in relation to the segment, e.g., a value of “0.5” indicates a midpoint of the segment.
- a new location of the pseudo handle is also recomputed for the segment using the same parametric value.
- This provides a new location of the pseudo handle as part of regenerating the segment of the spline handle 118 by the spline handle generation module 202 .
- This new location is then used to guide generation of the transformation by the digital image transformation module 204 .
- the user input indirectly modifies each of the pseudo handles that are included as part of that segment.
- a number of pseudo handles, and location of the pseudo handles is user selectable to provide a desired amount of precision during user interaction, e.g., a drag operation.
- FIG. 6 depicts an example 600 of adjusting curvature of a segment of a spline handle to transform artwork.
- This example 600 includes first and second stages 602 , 604 .
- first and second spline handles 606 , 608 are illustrated as disposed over artwork 610 of a dove.
- a user input is received via user interaction with the user interface 110 to select an internal point 612 and move that internal point 612 to a new location in the user interface as shown at the second stage 604 .
- This causes the digital image transformation system 116 to regenerate the segment, and based on the regenerated segment, apply a transformation to artwork associated with the segment of the spline handle 606 .
- FIG. 7 depicts another example 700 of movement of an internal point on a segment of a spline handle.
- the example is depicted using first and second stages 702 , 704 in which a user selection of an internal point on a segment of a spline handle is used to transform text. As illustrated, a user may select from any point along the segment to transform artwork in an intuitive manner.
- FIG. 8 depicts another example implementation 800 in which localized scaling is performed through interaction with a spine handle. This example is also illustrated using first and second stages 802 , 804 .
- a spline handle 806 includes a segment 808 disposed over underlying artwork 810 .
- the spline handle 806 includes first and second endpoints 812 , 814 .
- a user input is also received via a cursor control device (e.g., mouse) that selects and moves an internal point from a first location 816 to a second location 818 on the segment 808 , e.g., as a “click and drag.”
- a cursor control device e.g., mouse
- the spline handle 806 remains the same, a straight line in this example.
- a position of a pseudo handle changes as shown in FIG. 4 , which causes local scaling to be applied to the underlying artwork.
- This is illustrated at the second stage 804 in which a right leg of a raptor gets smaller while the head gets larger, which acts to change a user's perspective in viewing the artwork 806 .
- This is not possible using conventional handle types as part of linear blend skinning. Further discussion of these and other examples is included in the following section.
- the spline handle generation module 202 begins by forming a triangle mesh of nodes and edges that describes the artwork in the digital image and that also includes the spline handle.
- the triangle mesh may be defined as part of the artwork originally (e.g., a vector graphic) or formed from the artwork by the computing device 102 automatically and without user intervention using vector points.
- the triangle mesh is used to compute bi-harmonic weights that specify corresponding amounts of transformations that are to be applied to corresponding locations in the artwork.
- each segment of each spline handle 118 is flattened by the spline handle generation module 202 to form a polyline using adaptive sampling.
- the samples are added as Steiner points, with connected polylines used as edges in conjunction with an outline of the artwork to create the triangle mesh with conforming Delaunay Triangulation.
- the resulting mesh, and the location of the spline handles 118 on the mesh, is then used to compute bounded bi-harmonic weights to be used to generate the transformation by the digital image transformation module 204 .
- Each of the endpoints for each segment along with its pseudo handle is represented by a weight by the spline handle generation module 202 .
- the weight of each endpoint and/or pseudo-handle is set to “1” at its location and decreases to zero as a gradient (e.g., linearly) that follows the segment (i.e., edge in the mesh) which connects it to the next handle/point, and is set as “0” everywhere else on the mesh.
- FIG. 9 depicts an implementation 900 of how boundary conditions are set along a spline handle.
- a spline handle 904 is disposed over artwork 906 .
- the spline handle includes first and second endpoints 908 , 910 that define a respective segment of the spline handle 904 .
- the weight is set as 1′′ and linearly decreases to zero along a length of the segment as approaching the next handle, i.e., the second endpoint 910 .
- “W 1 ” is zero at the location of the first endpoint 908 and linearly increases along the segment and is “1” at the location of the second endpoint 910 .
- boundary conditions are also set using a pseudo handle 922 .
- a single pseudo handle 922 is included within a segment defined by the first and second endpoints 908 , 910 .
- pseudo handles are not created explicitly by the user in some instance, but are automatically created by the spline handle generation module 202 by subdividing the segment (e.g., a cubic Bezier curve) based on a parametric value “t.”
- the spline handle generation module 202 is configured to compute bounded bi-harmonic weights over an entirety of the triangle mesh for each handle. The weight of the handle, and it's transformation matrix are then used by the digital image transformation module 204 to generate a transformation based on user interaction with the spline handle 118 .
- FIG. 10 depicts an example implementation 1000 of a spline handle 118 configured as a cubic Bezier curve.
- the spline handle 118 includes control points, examples of which include a first endpoint 1002 “p0”, a first tangent handle 1004 “p1,” a second tangent handle 1006 “p2,” and a second endpoint 1008 “p3” that form a segment 1010 , which is a curve in this example.
- the spline handle generation module 202 refits the segment to pass through the second location by transforming its control points, i.e., the endpoints and/or the tangent handles. To do so, a value “delta” is calculated that represents a distance between the first location and the second location, e.g., “where the drag started” and a current cursor position in the user interface 110 .
- the spline handle generation module 202 regenerates the segment of the spline handle 118 to ensure it is at the same relative location with respect to a length of the segment (i.e., same parametric value “t”).
- the spline handle generation module 202 may refit the segment in a variety of ways, an example of which is expressed as follows:
- the values “p1 new ” and “p2 new ” are the new control points for the regenerated segment 1010 of the spline handle 118 .
- the tangent handles are adjusted in this example such that the curve includes the internal point at the second location as well as a same relative location with respect to a length of the segment, i.e., same parametric value.
- Co continuity between adjacent segments of a spline handle 118 is maintained such that adjacent segments are not smoothed.
- control points of a previous segment and/or next adjacent segment are not modified. This limits an image of the transformation to an area of an artwork, which leads to predictable behavior.
- the digital image transformation module 204 is then employed to generate a transformation based on the regenerated segment of the spline handle 118 . To do so, once the “new” second locations of the control points (e.g., tangent handles and/or endpoints) of the regenerated segment of the spline handle 118 are determined, these control points are used for computing components of a transformation. Transformations may include translation, rotation, and/or scaling.
- a transformation matrix may be formed as a 3 ⁇ 3 square matrix, an example of which follows:
- T 1 [ a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ]
- the values of a 13 and a 23 define translation in x and y directions
- the values a 11 , a 12 , a 21 , a 22 represent scale and rotation along x and y axes, respectively
- the values a 31 , a 32 , a 33 are added for homogeneity.
- Scale, rotation, and translation are concatenated in the order to apply transformations.
- “T” is initialized as an identity matric for each control point as follows:
- T 1 [ 1 0 0 0 1 0 0 0 1 ]
- the transformations are generated by the digital image transformation module 204 from an original base state of the artwork. Accordingly, in order to apply a subsequent transformation, the previous transformations that are applied to the artwork are inverted, before applying the new transformation again from the base state.
- the transformation may be generated by the digital image transformation module 204 as follows. For a given segment of a spline handle 118 , let P base and P cur represent corresponding original and current position of the handle and let T base and T baseNorm denote the tangent and normalized tangent vector of the tangent handle in the original segment and similarity let T cur and T curNorm denote a tangent and normalized tangent vector of the tangent handle in the regenerated segment of the spline handle 118 .
- the digital image transformation module 204 first translates the segment of the spline handle 118 back to its origin from a current segment, if not already at its origin. A rotation component is also removed by the module that may exist due to an initial position of tangents of the tangent handles. This may be performed such that the final transformation is correctly applied to avoid non-uniform scaling that may result in artwork getting skewed if it's rotated, or rotation that might not give correct results if not translated by to an original version, first.
- the rotation component in the transformation matrix above may be represented as follows:
- T 2 T 1 * [ 1 0 - P base ⁇ x 0 1 - P base ⁇ y 0 0 1 ] ⁇ invert ⁇ ⁇ translation ⁇ * [ T baseNorm ⁇ x T baseNorm ⁇ y 0 - T baseNorm ⁇ y T baseNorm ⁇ x 0 0 0 1 ] ⁇ invert ⁇ ⁇ rotation ⁇
- T 2 represents the matrix that inverts the rotation and translation component of a based state of the spline handle 118 .
- a transformation matrix is then computed to generate a current transformation.
- Scale factor is computed as a ratio of lengths of tangents of current and initial tangent handles, e.g., T cur /T base .
- This T represents a final transformation matrix corresponding to the control point.
- the digital image transformation module 204 generates transformation matrices for each of the handles of the segment, with a final transformation computed using a weighted combinations of the transformations.
- the digital image transformation system 116 overcomes the challenges and inefficiencies of conventional handle types when used as part of linear blend skinning techniques to support use of fewer handles that enables real time feedback, even on devices having limited processing power.
- the spline handles also support relative scaling to different components of artwork by “dragging points along the segment,” which is not possible using conventional techniques.
- FIG. 11 depicts a procedure 1100 in an example implementation in which a transformation is generated based on user interaction with a spline handle.
- a first user input is detected via a user interface as specifying a segment with respect to artwork in a digital image (block 1102 ).
- a user may enter a series of points that define a segment as shown in FIG. 3 , input a freeform line, and so forth using touchscreen functionality, a cursor control device, and so forth that is detected by the computing device 102 .
- a spline handle is generated by a spline handle generation module 202 of the computing device 102 based on the segment as including control points.
- the control points including first and second endpoints and a tangent handle that specifies directional information of the segment (block 1104 ), e.g., as part of a cubic Bezier curve.
- a second user input is then received as moving an internal point on the spline handle between the first and second endpoints from a first location to a second location in the user interface (block 1106 ). This may be performed “on” the segment to specify localized scaling as shown and described in relation to FIG. 8 , may be moved “off segment” to change a curvature and/or size of the segment as shown and described in relation to FIGS. 6 and 7 , and so forth.
- the spline handle generation module 202 regenerates the segment of the spline handle as including the internal point at the second location by adjusting the tangent handle (block 1108 ). In an implementation, this also causes the internal point to remain at the same relative location along a length of the segment, i.e., same parametric value “t.”
- a digital image transformation module 204 is employed to determine a transformation to be applied to the artwork based on the regenerated segment of the spline handle (block 1010 ). This may be performed in a variety of ways, such as through use of a transformation matrix as described above.
- the artwork of the digital image is then displayed (e.g., rendered on the display device 112 ) by the computing device in a user interface 110 as having the transformation. In an implementation, this is performed in real time in the user interface as the user input is received that moves the internal point.
- FIG. 12 depicts a procedure 1200 in an example implementation in which a transformation is generated that includes localized scaling based on user interaction with a spline handle.
- a spline handle 806 is displayed in a user interface 110 as specifying a segment with respect to artwork of a vector graphic (block 1202 ).
- the spline handle 806 may have been input by specifying the endpoints of a segment as shown and described in relation to FIG. 2 , as a freeform line, and so forth.
- a user input is detected by the spline handle generation module 202 as moving an internal point on the spline handle 118 along the segment in the user interface (block 1204 ), e.g., from a first location 816 to a second location 818 .
- a digital image transformation module 204 generates a transformation to be applied to the artwork by adjusting a scale of different components of the artwork of the digital image based on the movement of the internal point (block 1206 ).
- the artwork of the vector graphic is then displayed in the user interface 110 as having the generated transformation in real time responsive to the detecting of the user input (block 1208 ). In the illustrated example of FIG. 8 , for instance, this is used to increase a scale of a head by decrease the scale of the right foot by moving a midpoint of the segment of the spline handle, and thus the corresponding control points.
- FIG. 13 illustrates an example system generally at 1300 that includes an example computing device 1302 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 digital image transformation system 116 .
- the computing device 1302 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 1302 as illustrated includes a processing system 1304 , one or more computer-readable media 1306 , and one or more I/O interface 1308 that are communicatively coupled, one to another.
- the computing device 1302 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 1304 is representative of functionality to perform one or more operations using hardware. Accordingly, the processing system 1304 is illustrated as including hardware element 1310 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 1310 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 1306 is illustrated as including memory/storage 1312 .
- the memory/storage 1312 represents memory/storage capacity associated with one or more computer-readable media.
- the memory/storage component 1312 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 1312 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 1306 may be configured in a variety of other ways as further described below.
- Input/output interface(s) 1308 are representative of functionality to allow a user to enter commands and information to computing device 1302 , 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 1302 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 1302 .
- 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 1302 , 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 1310 and computer-readable media 1306 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 1310 .
- the computing device 1302 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 1302 as software may be achieved at least partially in hardware, e.g., through use of computer-readable storage media and/or hardware elements 1310 of the processing system 1304 .
- the instructions and/or functions may be executable/operable by one or more articles of manufacture (for example, one or more computing devices 1302 and/or processing systems 1304 ) to implement techniques, modules, and examples described herein.
- the techniques described herein may be supported by various configurations of the computing device 1302 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” 1314 via a platform 1316 as described below.
- the cloud 1314 includes and/or is representative of a platform 1316 for resources 1318 .
- the platform 1316 abstracts underlying functionality of hardware (e.g., servers) and software resources of the cloud 1314 .
- the resources 1318 may include applications and/or data that can be utilized while computer processing is executed on servers that are remote from the computing device 1302 .
- Resources 1318 can also include services provided over the Internet and/or through a subscriber network, such as a cellular or Wi-Fi network.
- the platform 1316 may abstract resources and functions to connect the computing device 1302 with other computing devices.
- the platform 1316 may also serve to abstract scaling of resources to provide a corresponding level of scale to encountered demand for the resources 1318 that are implemented via the platform 1316 .
- implementation of functionality described herein may be distributed throughout the system 1300 .
- the functionality may be implemented in part on the computing device 1302 as well as via the platform 1316 that abstracts the functionality of the cloud 1314 .
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
Description
- Conventional linear blend skinning techniques are used by computing devices to transform digital images. For example, an animator may create an initial digital image through interaction with a computing device. Linear blend skinning techniques are then used to makes changes to that initial image to form different variations of the initial image to form frames of the animation. To do so, different handle types may be specified in relation to the digital image as part of the linear blend skinning to deform artwork in the digital image in order to make the changes.
- Although these conventional types of handles may work well for workflows like animation, these conventional types of handles may fail when confronted with other types of artwork, like vector graphics. For example, conventional bone handles are limited to pivoting around a joint, and thus a deformation based on this bone handle follows real-world physics that is useful in animation. Other examples of conventional handles, such as point and cage handles, are also limited to user interaction at discreet points in their geometry.
- Thus, other types of artwork like vector graphics that support a wider range of workflows involving a greater degree of artistic freedom are limited by these conventional techniques. For instance, conventional techniques may require users to plot a multitude of these conventional handles manually through interaction with the computing device in order to obtain a fine level of control, especially to follow curves, which is tedious and adversely affects operation of the computing device. This may even prevent these conventional techniques from functioning on computing devices having limited resources, e.g., mobile devices, and limited these conventional techniques from doing so in real time.
- A digital image transformation environment is described to transform a digital image using a spline handle. The spline handle supports user interactions with a computing device that are not possible using conventional techniques, thereby improving user interaction and operational efficiency of the computing device. A user, for instance, may enter a series of points, sketch a freeform line, or use any other technique to draw a segment (e.g., a curved or straight line) in relation to artwork in a digital image. In response, a spline handle generation module generates a spline handle having control points (i e, handles) that include end points and tangent handles that specify a direction of the segment.
- A user may then interact with a user interface to “grab” any point of the spline handle along the segment. The computing device then uses changes to the spline handle to control transformations made to artwork associated with that segment, e.g., underlying. The computing device, for instance, may detect movement of an internal point along the segment of the spline handle as a result of user interaction with a user interface. In response, the computing device refits the segment of the spline automatically and without user intervention in real time as the internal point is moved. To do so in one example, the computing device uses an initial and final (e.g., current) position of the internal point to adjust a tangent handle used to define a direction of a curve of the segment. This is used by the computing device to regenerate the segment of the curve to include the internal point at the final (e.g., current) position in the user interface.
- The adjustment to the tangent handle is then used as a basis to transform the artwork. The computing device, for instance, uses the initial and final position of the internal point to compute a transformation to be applied to the artwork, e.g., a translation, rotation, or scaling transformation. This may be performed in a variety of ways, such as to compute a transformation matrix. Further, increased operational efficiency supported by the spline handle supports output of the transformation in real time, even using computing device having limited processing resources, e.g., mobile devices.
- 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 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 image transformation techniques using spline handles as described herein. -
FIG. 2 depicts a system in an example implementation showing operation of a digital image transformation system ofFIG. 1 in greater detail. -
FIG. 3 depicts an example implementation of user interaction with a user interface to construct a spline handle. -
FIGS. 4 and 5 depict examples of use of spline handles as a controlling structure to generate transformations to artwork. -
FIG. 6 depicts an example of adjusting curvature of a segment of a spline handle to transform artwork. -
FIG. 7 depicts another example of movement of an internal point on a segment of a spline handle. -
FIG. 8 depicts another example implementation in which localized scaling is performed through interaction with a spine handle. -
FIG. 9 depicts an implementation of how boundary conditions are set along a spline handle. -
FIG. 10 depicts an example implementation of a spline handle configured as a cubic Bezier curve. -
FIG. 11 is a flow diagram depicting a procedure in an example implementation in which in which a transformation is generated that may include translation, rotation, and/or scaling based on user interaction with a spline handle. -
FIG. 12 is a flow diagram depicting a procedure in an example implementation in which in which a transformation is generated that includes localized scaling based on user interaction with a spline handle. -
FIG. 13 illustrates an example system including various components of an example device that can be implemented as any type of computing device as described and/or utilize with reference toFIGS. 1-12 to implement embodiments of the techniques described herein. - Overview
- A digital image environment is described using techniques and systems to transform a digital image using a spline handle. The spline handle supports user interactions with a computing device that are not possible using conventional techniques, thereby improving user interaction and operational efficiency of the computing device.
- In one example, the spline handle is defined by the computing device using a curve, such as a cubic Bezier curve. For instance, a series of points maybe input via user interaction with a user interface to define a curve in a segment. In this way, the segment may be drawn to follow the curve of the tail in this example. In another instance, a user may draw a freeform line in a user interface to define a segment as also following artwork in a digital image. A curve is then fit to this segment by the computing device, which may be performed using a cubic Bezier curve or other curve. Regardless of how input, the curve is used to generate a spline handle. This overcomes the challenges of conventional techniques that require use of a multitude of individual handles to form a series of straight segments to follow the curve, e.g., bone handles. As a result, accuracy and operational efficiency of the computing device is improved through use of a fewer number of handles.
- The spline handle may also be configured to support user interaction along both of the endpoints as well as at any internal point along the segment of the spline handle between the endpoints. A user, for instance, may interact with a user interface to “grab” any point of the spline handle along the segment. The computing device then uses changes to the spline handle to control transformations made to underlying artwork under that segment. In this way, the spline handle acts in an intuitive manner as a controlling structure for transforming the artwork based on changes that are directly made to the segment of the spline handle. This may be used to support a variety of transformations, including translation, rotation, and scaling of the artwork. As a result, the spline handle supports intuitive user interactions with increased accuracy over conventional techniques.
- The computing device, for instance, may detect movement of an internal point along the segment of the spline handle as a result of user interaction with a user interface. In response, the computing device refits the segment of the spline automatically and without user intervention in real time as the internal point is moved. To do so in one example, the computing device uses an initial and final (e.g., current) position of the internal point to adjust a tangent handle used to define a direction of a curve of the segment. This is used by the computing device to regenerate the segment of the curve to include the internal point at the final (e.g., current) position in the user interface.
- The adjustment to the tangent handle is then used as a basis to transform the artwork. The computing device, for instance, uses the initial and final position of the internal point to compute a transformation to be applied to the artwork, e.g., a translation, rotation, or scaling transformation. The transformation is combined by the computing device with a weight that is handle specific. These weights are then combined and used to control an amount of the transformation that is to be applied to respective components of an artwork, e.g., vertices in a triangle mesh.
- The spline handle may also support relative scaling of components of an input geometry of artwork in a digital image, e.g., a vector graphic. An internal point of the spline handle, for instance, may be moved in a user interface from any point along the length of the spline handle, thereby causing a change in a midpoint of the spline handle. This causes the computing device to change a relative scale to underlying components of the artwork in proportion to a length of the segment of the spline handle in relation to an amount the internal point is moved in the user interface. This is not possible using conventional handle types, which are previously described are inefficient, often required often tedious user inputs to generate a multitude of handles, and hindered operation of a computing device.
- In the following discussion, an example environment is first described that may employ the techniques described herein. Example procedures are then 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 a digitalmedium environment 100 in an example implementation that is operable to employ digital image transformation techniques using spline handles as described herein. The illustratedenvironment 100 includes acomputing device 102, which may be configured in a variety of ways. - The
computing device 102, for instance, 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 as illustrated), and so forth. Thus, thecomputing device 102 may range from full resource devices 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, although asingle computing device 102 is shown, 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” as described inFIG. 13 . - The
computing device 102 is illustrated as including animage processing system 104. Theimage processing system 104 is implemented at least partially in hardware of thecomputing device 102 to process and transform adigital image 106, which is illustrated as maintained instorage 108 of thecomputing device 102. Such processing includes creation of thedigital image 106, modification of thedigital image 106, and rendering of thedigital image 106 in auser interface 110 for output, e.g., by adisplay device 112. Although illustrated as implemented locally at thecomputing device 102, functionality of theimage processing system 104 may also be implemented as whole or part via functionality available via thenetwork 114, such as part of a web service or “in the cloud.” - An example of functionality incorporated by the
image processing system 104 to process theimage 106 is illustrated as a digitalimage transformation system 116 that is configured to support application of transformations to thedigital image 106 using spline handles 118. Spline handles 118 may be used as part of linear blend skinning techniques that are used to deform a mesh of skeletal structures through use of different handle types. As previously described, conventional handles types used for linear blend skinning, such as point, bone, and cage handles, limit user interaction to predefined control points, such as at joints between segments for bone handles. Further, conventional handle types are limited to drawing straight-line segments. Therefore, when used to follow the curve of a tail, for instance, a multitude of conventional handles are required, which could be inaccurate and hinder operation of the computing device. - The spline handle 118 of the digital
image transformation system 116, on the other hand, may assume any curvature or structure thereby increasing a user's ability to control transformations to artwork. As illustrated for thedigital image 120 rendered in theuser interface 110 of thedisplay device 112, aspline handle 122 is formed having first, second, third, fourth, andfifth segments - Each of the segments of the spline handle 122 define corresponding components of the
artwork 134 that are to be transformed by the digitalimage transformation system 116 based on user interaction with the respective segments. In this way, a user may quickly and efficiently define which parts of theartwork 134 are to be transformed. Further, by supporting the use of curves, the spline handle 122 may be formed to follow a natural flow of theartwork 134 using a fewer number of handles in comparison with conventional handle types, thereby improving operation of thecomputing device 102. Further discussion of these and other examples is included in the following section and shown in corresponding figures. - 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.
- Digital Image Transformation System
-
FIG. 2 depicts asystem 200 in an example implementation showing operation of the digitalimage transformation system 116 in greater detail. The digitalimage transformation system 116 includes a splinehandle generation module 202 that is implemented at least partially in hardware of thecomputing device 102 to generate and regenerate spline handles. - The spline handles 118 are used as a basis by a digital
image transformation module 204 to generate a transformeddigital image 206. This transformation is based on user interaction with the spline handles 118 detected via user inputs 208 received via auser interface 110. -
FIG. 3 depicts anexample implementation 300 of user interaction with auser interface 110 to construct aspline handle 122. This example implementation is illustrated using first, second, third, andfourth stages first stage 302, a user input is received by the computing device indicating afirst endpoint 310, e.g., via a tap of a touchscreen, click of a cursor control device, and so forth. - At the
second stage 304, another user input is received indicating asecond endpoint 312, e.g., another tap, click, and so forth. This causes the splinehandle generation module 202 to connect these points using asegment 314 as part of generating aspline handle 316. This connection may be performed in a variety of ways. The splinehandle generation module 202, for instance, may include options to connect these endpoints using a straight line as illustrated at thesecond stage 304 or via a curve (e.g., using a modifier key) as shown at thethird stage 306. - This process may continue to add
segments spline handle 316. This may be performed sequentially by specifying points successively one after another or by adding segments within existing segments to sub-divide a segment into multiple segments. The spline handle 316 may be defined completely within theartwork 134, partially within theartwork 134, and even completely outside theartwork 134. Other examples are also contemplated, such as by drawing a freeform line by a user. The splinehandle generation module 202 may then fit curves (e.g., cubic Bezier curves) automatically and without user intervention to the freeform line to form segments as part of thespline handle 316. -
FIGS. 4 and 5 depict examples 400, 500 of use of spline handles as a controlling structure to generate transformations to artwork.FIGS. 4 and 5 are illustrated using respectivefirst stages second stages - A segment of a
spline handle 118 is illustrated that includes control points that are used to define a length and direction of a curve. To do so in this example, the control points are configured to support a cubic Bezier curve as having first andsecond endpoints user interface 110. - Thus, the segment, as defined as a cubic Bezier curve starts at the first endpoint 406 (p0), continues in the direction of the first tangent handle 412 (p 1) and arrives at the second endpoint 408 (p3) coming from the direction of the second tangent handle 414 (p2). Unless configured as a straight line as shown the
first stages second stage 504 ofFIG. 5 . The distance between the first and second tangent handles 412, 414 determines how far and how fast the curve moves towards the first tangent handle 412 (p1) before turning back toward the second tangent handle 414 (p2). - The spline handle 118 is used as the control structure to generate transformations that are applied to artwork in the digital image. To do so, a user input 208 may be received that selects any point on the segment of the
spline handle 118, including any internal point lying on the segment between the first andsecond endpoints user interface 110. This is used by the splinehandle generation module 202 to transform the segment, which is then used as a basis to transform the artwork. This may also be performed for multiple segments of a same or different spline handle, simultaneously. - In the example 400 of
FIG. 4 , aninternal point 416 in a straight line segment is selected and moved along the length of the segment. This causes a midpoint of the segment of the spline handle 118 to change, in which case local scaling is applied to respective components of the artwork. Further discussion of this example may be found in relation toFIG. 8 . - In the example 500 of
FIG. 5 , aninternal point 506 of the segment is also selected and moved away from the segment. This causes the splinehandle generation module 202 to adjust the first and second tangent handles 412, 414 such that the segment also passes through the internal point at it's new location. Additionally, the splinehandle generation module 202 may adjust the tangent handles such that the internal point remains “the same” in relation to a length of the segment of the spline handle 118 (i.e., at the same parametric value) as further described below. - In each of these examples, an internal point in the
spline handle 118 is moved without moving the first andsecond endpoints - To support this functionality, pseudo handles may be defined by the digital
image transformation system 116 as part of respective segments of the spline handles 118. The pseudo handles are defined at a specific location relative to a segment of the spline handle. For example, parametric values may be used to indicate locations along the segment in relation to a length of the segment. A parametric value “t,” for instance, may be defined using values between zero and one, with zero corresponding to afirst endpoint 406 and one corresponding to thesecond endpoint 408. Values between zero and one then indicate “where” internal points along the length of the segment are located in relation to the segment, e.g., a value of “0.5” indicates a midpoint of the segment. - Accordingly, when an internal point of a segment is moved, a new location of the pseudo handle is also recomputed for the segment using the same parametric value. This provides a new location of the pseudo handle as part of regenerating the segment of the spline handle 118 by the spline
handle generation module 202. This new location is then used to guide generation of the transformation by the digitalimage transformation module 204. Thus, each time a user input is received to move a segment of the curve, the user input indirectly modifies each of the pseudo handles that are included as part of that segment. In an implementation, a number of pseudo handles, and location of the pseudo handles, is user selectable to provide a desired amount of precision during user interaction, e.g., a drag operation. -
FIG. 6 depicts an example 600 of adjusting curvature of a segment of a spline handle to transform artwork. This example 600 includes first andsecond stages first stage 602, first and second spline handles 606, 608 are illustrated as disposed overartwork 610 of a dove. A user input is received via user interaction with theuser interface 110 to select aninternal point 612 and move thatinternal point 612 to a new location in the user interface as shown at thesecond stage 604. This causes the digitalimage transformation system 116 to regenerate the segment, and based on the regenerated segment, apply a transformation to artwork associated with the segment of thespline handle 606. -
FIG. 7 depicts another example 700 of movement of an internal point on a segment of a spline handle. The example is depicted using first andsecond stages -
FIG. 8 depicts anotherexample implementation 800 in which localized scaling is performed through interaction with a spine handle. This example is also illustrated using first andsecond stages first stage 802, aspline handle 806 includes asegment 808 disposed overunderlying artwork 810. The spline handle 806 includes first andsecond endpoints first location 816 to asecond location 818 on thesegment 808, e.g., as a “click and drag.” - Visually in this example, the spline handle 806 remains the same, a straight line in this example. However, a position of a pseudo handle changes as shown in
FIG. 4 , which causes local scaling to be applied to the underlying artwork. This is illustrated at thesecond stage 804 in which a right leg of a raptor gets smaller while the head gets larger, which acts to change a user's perspective in viewing theartwork 806. This is not possible using conventional handle types as part of linear blend skinning. Further discussion of these and other examples is included in the following section. - Return will now be made back to
FIG. 2 , in which the digitalimage transformation system 116 receives adigital image 106 that is to be transformed. The splinehandle generation module 202 begins by forming a triangle mesh of nodes and edges that describes the artwork in the digital image and that also includes the spline handle. The triangle mesh, for instance, may be defined as part of the artwork originally (e.g., a vector graphic) or formed from the artwork by thecomputing device 102 automatically and without user intervention using vector points. - The triangle mesh is used to compute bi-harmonic weights that specify corresponding amounts of transformations that are to be applied to corresponding locations in the artwork. To from the triangle mesh, each segment of each spline handle 118 is flattened by the spline
handle generation module 202 to form a polyline using adaptive sampling. The samples are added as Steiner points, with connected polylines used as edges in conjunction with an outline of the artwork to create the triangle mesh with conforming Delaunay Triangulation. - The resulting mesh, and the location of the spline handles 118 on the mesh, is then used to compute bounded bi-harmonic weights to be used to generate the transformation by the digital
image transformation module 204. Each of the endpoints for each segment along with its pseudo handle is represented by a weight by the splinehandle generation module 202. In one example, the weight of each endpoint and/or pseudo-handle is set to “1” at its location and decreases to zero as a gradient (e.g., linearly) that follows the segment (i.e., edge in the mesh) which connects it to the next handle/point, and is set as “0” everywhere else on the mesh. -
FIG. 9 depicts animplementation 900 of how boundary conditions are set along a spline handle. In a first example 902, aspline handle 904 is disposed over artwork 906. The spline handle includes first andsecond endpoints spline handle 904. Let the weight of thefirst endpoint 908 be represented by “W0” and the weight of the second handle be represented by “W1.” At the location of thefirst endpoint 908, the weight is set as 1″ and linearly decreases to zero along a length of the segment as approaching the next handle, i.e., thesecond endpoint 910. Similarly, “W1” is zero at the location of thefirst endpoint 908 and linearly increases along the segment and is “1” at the location of thesecond endpoint 910. - In a second example 920, boundary conditions are also set using a
pseudo handle 922. In this example, a singlepseudo handle 922 is included within a segment defined by the first andsecond endpoints handle generation module 202 by subdividing the segment (e.g., a cubic Bezier curve) based on a parametric value “t.” - Once the boundary conditions have been set, the spline
handle generation module 202 is configured to compute bounded bi-harmonic weights over an entirety of the triangle mesh for each handle. The weight of the handle, and it's transformation matrix are then used by the digitalimage transformation module 204 to generate a transformation based on user interaction with thespline handle 118. -
FIG. 10 depicts anexample implementation 1000 of aspline handle 118 configured as a cubic Bezier curve. The spline handle 118 includes control points, examples of which include afirst endpoint 1002 “p0”, a firsttangent handle 1004 “p1,” a secondtangent handle 1006 “p2,” and asecond endpoint 1008 “p3” that form asegment 1010, which is a curve in this example. - When a user input 208 is received to move an internal point between the first and
second endpoints handle generation module 202 refits the segment to pass through the second location by transforming its control points, i.e., the endpoints and/or the tangent handles. To do so, a value “delta” is calculated that represents a distance between the first location and the second location, e.g., “where the drag started” and a current cursor position in theuser interface 110. The splinehandle generation module 202 regenerates the segment of the spline handle 118 to ensure it is at the same relative location with respect to a length of the segment (i.e., same parametric value “t”). For example, if the internal point correspond to “t=0.3,” the internal point, as disposed at the second location remains at “t=0.3” with respect to a length of the segment. The splinehandle generation module 202 may refit the segment in a variety of ways, an example of which is expressed as follows: -
- Let denom=3*(1−t)*(1−t)*(1−t)*t+3*(1−t)*t*t*t;
- p1new=p1+delta*(1−t)/denom; and
- p2new=p2+delta*(1−t)/denom; and
- The values “p1new” and “p2new” are the new control points for the regenerated
segment 1010 of thespline handle 118. Thus, the tangent handles are adjusted in this example such that the curve includes the internal point at the second location as well as a same relative location with respect to a length of the segment, i.e., same parametric value. In one example, Co continuity between adjacent segments of aspline handle 118 is maintained such that adjacent segments are not smoothed. As a result, control points of a previous segment and/or next adjacent segment are not modified. This limits an image of the transformation to an area of an artwork, which leads to predictable behavior. - The digital
image transformation module 204 is then employed to generate a transformation based on the regenerated segment of thespline handle 118. To do so, once the “new” second locations of the control points (e.g., tangent handles and/or endpoints) of the regenerated segment of the spline handle 118 are determined, these control points are used for computing components of a transformation. Transformations may include translation, rotation, and/or scaling. - For a given
spline handle 118, a transformation matrix may be formed as a 3×3 square matrix, an example of which follows: -
- In the above matrix, the values of a13 and a23 define translation in x and y directions, the values a11, a12, a21, a22 represent scale and rotation along x and y axes, respectively, and the values a31, a32, a33 are added for homogeneity. Scale, rotation, and translation are concatenated in the order to apply transformations. “T” is initialized as an identity matric for each control point as follows:
-
- In order to address repeated (e.g., incremental) operations in real time, the transformations are generated by the digital
image transformation module 204 from an original base state of the artwork. Accordingly, in order to apply a subsequent transformation, the previous transformations that are applied to the artwork are inverted, before applying the new transformation again from the base state. - Using the originally generated segment of the
spline handle 118 and the regenerated segment of thespline handle 118, the transformation may be generated by the digitalimage transformation module 204 as follows. For a given segment of aspline handle 118, let Pbase and Pcur represent corresponding original and current position of the handle and let Tbase and TbaseNorm denote the tangent and normalized tangent vector of the tangent handle in the original segment and similarity let Tcur and TcurNorm denote a tangent and normalized tangent vector of the tangent handle in the regenerated segment of thespline handle 118. - The digital
image transformation module 204 first translates the segment of the spline handle 118 back to its origin from a current segment, if not already at its origin. A rotation component is also removed by the module that may exist due to an initial position of tangents of the tangent handles. This may be performed such that the final transformation is correctly applied to avoid non-uniform scaling that may result in artwork getting skewed if it's rotated, or rotation that might not give correct results if not translated by to an original version, first. - The rotation component in the transformation matrix above may be represented as follows:
-
- a11=cos θ;
- a12=−sin θ;
- a21=sin θ; and
- a22=cos θ.
The value “θ” (Theta) is a rotation angle. Because normalized vectors are used, these values may be directly computed by the digitalimage transformation module 204 by taking x and y components of the vector.
- To compute the inverse of an initial spline position rotation, a rotation matrix is computed with a −Tbase vector. Accordingly, the transformation becomes:
-
- In the above expression, T2 represents the matrix that inverts the rotation and translation component of a based state of the
spline handle 118. A transformation matrix is then computed to generate a current transformation. Scale factor is computed as a ratio of lengths of tangents of current and initial tangent handles, e.g., Tcur/Tbase. This T represents a final transformation matrix corresponding to the control point. In a similar fashion, the digitalimage transformation module 204 generates transformation matrices for each of the handles of the segment, with a final transformation computed using a weighted combinations of the transformations. - In this way, the digital
image transformation system 116 overcomes the challenges and inefficiencies of conventional handle types when used as part of linear blend skinning techniques to support use of fewer handles that enables real time feedback, even on devices having limited processing power. The spline handles also support relative scaling to different components of artwork by “dragging points along the segment,” which is not possible using conventional techniques. - 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
FIGS. 1-10 . -
FIG. 11 depicts aprocedure 1100 in an example implementation in which a transformation is generated based on user interaction with a spline handle. A first user input is detected via a user interface as specifying a segment with respect to artwork in a digital image (block 1102). A user, for instance, may enter a series of points that define a segment as shown inFIG. 3 , input a freeform line, and so forth using touchscreen functionality, a cursor control device, and so forth that is detected by thecomputing device 102. - In response, a spline handle is generated by a spline
handle generation module 202 of thecomputing device 102 based on the segment as including control points. The control points including first and second endpoints and a tangent handle that specifies directional information of the segment (block 1104), e.g., as part of a cubic Bezier curve. - A second user input is then received as moving an internal point on the spline handle between the first and second endpoints from a first location to a second location in the user interface (block 1106). This may be performed “on” the segment to specify localized scaling as shown and described in relation to
FIG. 8 , may be moved “off segment” to change a curvature and/or size of the segment as shown and described in relation toFIGS. 6 and 7 , and so forth. - In response, the spline
handle generation module 202 regenerates the segment of the spline handle as including the internal point at the second location by adjusting the tangent handle (block 1108). In an implementation, this also causes the internal point to remain at the same relative location along a length of the segment, i.e., same parametric value “t.” - Next, a digital
image transformation module 204 is employed to determine a transformation to be applied to the artwork based on the regenerated segment of the spline handle (block 1010). This may be performed in a variety of ways, such as through use of a transformation matrix as described above. The artwork of the digital image is then displayed (e.g., rendered on the display device 112) by the computing device in auser interface 110 as having the transformation. In an implementation, this is performed in real time in the user interface as the user input is received that moves the internal point. -
FIG. 12 depicts aprocedure 1200 in an example implementation in which a transformation is generated that includes localized scaling based on user interaction with a spline handle. Aspline handle 806 is displayed in auser interface 110 as specifying a segment with respect to artwork of a vector graphic (block 1202). Thespline handle 806, for instance, may have been input by specifying the endpoints of a segment as shown and described in relation toFIG. 2 , as a freeform line, and so forth. - A user input is detected by the spline
handle generation module 202 as moving an internal point on the spline handle 118 along the segment in the user interface (block 1204), e.g., from afirst location 816 to asecond location 818. - In response, a digital
image transformation module 204 generates a transformation to be applied to the artwork by adjusting a scale of different components of the artwork of the digital image based on the movement of the internal point (block 1206). The artwork of the vector graphic is then displayed in theuser interface 110 as having the generated transformation in real time responsive to the detecting of the user input (block 1208). In the illustrated example ofFIG. 8 , for instance, this is used to increase a scale of a head by decrease the scale of the right foot by moving a midpoint of the segment of the spline handle, and thus the corresponding control points. -
FIG. 13 illustrates an example system generally at 1300 that includes anexample computing device 1302 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 digitalimage transformation system 116. Thecomputing device 1302 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 1302 as illustrated includes aprocessing system 1304, one or more computer-readable media 1306, and one or more I/O interface 1308 that are communicatively coupled, one to another. Although not shown, thecomputing device 1302 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 1304 is representative of functionality to perform one or more operations using hardware. Accordingly, theprocessing system 1304 is illustrated as including hardware element 1310 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 1310 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 1306 is illustrated as including memory/storage 1312. The memory/storage 1312 represents memory/storage capacity associated with one or more computer-readable media. The memory/storage component 1312 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 1312 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 1306 may be configured in a variety of other ways as further described below. - Input/output interface(s) 1308 are representative of functionality to allow a user to enter commands and information to
computing device 1302, 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 1302 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 1302. 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 1302, 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 1310 and computer-
readable media 1306 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 1310. The
computing device 1302 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 1302 as software may be achieved at least partially in hardware, e.g., through use of computer-readable storage media and/or hardware elements 1310 of theprocessing system 1304. The instructions and/or functions may be executable/operable by one or more articles of manufacture (for example, one ormore computing devices 1302 and/or processing systems 1304) to implement techniques, modules, and examples described herein. - The techniques described herein may be supported by various configurations of the
computing device 1302 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” 1314 via aplatform 1316 as described below. - The
cloud 1314 includes and/or is representative of aplatform 1316 forresources 1318. Theplatform 1316 abstracts underlying functionality of hardware (e.g., servers) and software resources of thecloud 1314. Theresources 1318 may include applications and/or data that can be utilized while computer processing is executed on servers that are remote from thecomputing device 1302.Resources 1318 can also include services provided over the Internet and/or through a subscriber network, such as a cellular or Wi-Fi network. - The
platform 1316 may abstract resources and functions to connect thecomputing device 1302 with other computing devices. Theplatform 1316 may also serve to abstract scaling of resources to provide a corresponding level of scale to encountered demand for theresources 1318 that are implemented via theplatform 1316. Accordingly, in an interconnected device embodiment, implementation of functionality described herein may be distributed throughout thesystem 1300. For example, the functionality may be implemented in part on thecomputing device 1302 as well as via theplatform 1316 that abstracts the functionality of thecloud 1314. - Although the invention has been described in language specific to structural features and/or methodological acts, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features or acts described. Rather, the specific features and acts are disclosed as example forms of implementing the claimed invention.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/936,299 US10410317B1 (en) | 2018-03-26 | 2018-03-26 | Digital image transformation environment using spline handles |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/936,299 US10410317B1 (en) | 2018-03-26 | 2018-03-26 | Digital image transformation environment using spline handles |
Publications (2)
Publication Number | Publication Date |
---|---|
US10410317B1 US10410317B1 (en) | 2019-09-10 |
US20190295217A1 true US20190295217A1 (en) | 2019-09-26 |
Family
ID=67845088
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/936,299 Active US10410317B1 (en) | 2018-03-26 | 2018-03-26 | Digital image transformation environment using spline handles |
Country Status (1)
Country | Link |
---|---|
US (1) | US10410317B1 (en) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10510186B2 (en) | 2017-12-22 | 2019-12-17 | Adobe Inc. | Digital media environment for intuitive modifications of digital graphics |
US10832446B2 (en) | 2019-01-07 | 2020-11-10 | Adobe Inc. | Bone handle generation |
US10878604B2 (en) | 2018-01-04 | 2020-12-29 | Adobe Inc. | Generating a triangle mesh for an image represented by curves |
US10943375B2 (en) | 2019-04-17 | 2021-03-09 | Adobe Inc. | Multi-state vector graphics |
US20220254078A1 (en) * | 2021-02-09 | 2022-08-11 | Adobe Inc. | Editing digital images utilizing edge aware transformations based on vector splines and meshes for multiple image regions |
US11631207B2 (en) | 2021-09-09 | 2023-04-18 | Adobe Inc. | Vector object stylization from raster objects |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11488356B2 (en) * | 2021-03-08 | 2022-11-01 | Adobe Inc. | Deformation with meta-handles of 3D meshes |
US11631220B2 (en) * | 2021-03-16 | 2023-04-18 | Adobe Inc. | Digital object surface inflation |
US20230419567A1 (en) * | 2022-06-23 | 2023-12-28 | Adobe Inc. | Generating chain pull painting styles in digital applications |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06505817A (en) * | 1990-11-30 | 1994-06-30 | ケンブリッジ アニメーション システムズ リミテッド | Image synthesis and processing |
US5861889A (en) * | 1996-04-19 | 1999-01-19 | 3D-Eye, Inc. | Three dimensional computer graphics tool facilitating movement of displayed object |
US5894310A (en) * | 1996-04-19 | 1999-04-13 | Visionary Design Systems, Inc. | Intelligent shapes for authoring three-dimensional models |
US6154221A (en) * | 1997-04-04 | 2000-11-28 | Avid Technology, Inc. | Parametric function curve editing |
EP1116186A1 (en) * | 1998-09-24 | 2001-07-18 | Brigit Ananya | Computer curve construction system and method |
US6448964B1 (en) * | 1999-03-15 | 2002-09-10 | Computer Associates Think, Inc. | Graphic object manipulating tool |
US6781597B1 (en) * | 1999-10-25 | 2004-08-24 | Ironcad, Llc. | Edit modes for three dimensional modeling systems |
US6782306B2 (en) * | 1999-12-16 | 2004-08-24 | Siemens Energy & Automation | Motion control system and method utilizing spline interpolation |
US6919888B1 (en) * | 2001-07-03 | 2005-07-19 | Adobe Systems Incorporated | Computer drawing shape manipulation with envelope meshes |
US7218326B1 (en) * | 2003-06-11 | 2007-05-15 | Autodesk, Inc. | Spline manipulation tool |
US7302650B1 (en) * | 2003-10-31 | 2007-11-27 | Microsoft Corporation | Intuitive tools for manipulating objects in a display |
US7057616B2 (en) | 2004-04-23 | 2006-06-06 | Microsoft Corporation | Using constrained optimization in curve editing |
US8004539B2 (en) * | 2004-10-20 | 2011-08-23 | Siemens Aktiengesellschaft | Systems and methods for improved graphical parameter definition |
JP4613313B2 (en) | 2005-04-01 | 2011-01-19 | 国立大学法人 東京大学 | Image processing system and image processing program |
US7412362B2 (en) | 2005-05-18 | 2008-08-12 | Microsoft Corporation | River modeling |
US7496416B2 (en) * | 2005-08-01 | 2009-02-24 | Luxology, Llc | Input/output curve editor |
US7884834B2 (en) * | 2007-04-13 | 2011-02-08 | Apple Inc. | In-context paint stroke characteristic adjustment |
US8629871B2 (en) | 2007-12-06 | 2014-01-14 | Zynga Inc. | Systems and methods for rendering three-dimensional objects |
US8400472B2 (en) * | 2009-02-25 | 2013-03-19 | Technion Research & Development Foundation Limited | Method and system of geometric deformation |
US9053553B2 (en) | 2010-02-26 | 2015-06-09 | Adobe Systems Incorporated | Methods and apparatus for manipulating images and objects within images |
US8830226B2 (en) * | 2010-09-28 | 2014-09-09 | Apple Inc. | Systems, methods, and computer-readable media for integrating a three-dimensional asset with a three-dimensional model |
US20120154397A1 (en) | 2010-12-03 | 2012-06-21 | Old Dominion University Research Foundation | Method and system for generating mesh from images |
US9024938B2 (en) * | 2011-07-29 | 2015-05-05 | Adobe Systems Incorporated | Methods and apparatus for sweep-based freeform deformation of 3-D models |
US8994736B2 (en) * | 2011-09-23 | 2015-03-31 | Adobe Systems Incorporated | Methods and apparatus for freeform deformation of 3-D models |
US10424112B2 (en) | 2012-05-14 | 2019-09-24 | Autodesk, Inc. | Mesh boundary smoothing |
US9075933B2 (en) | 2012-10-11 | 2015-07-07 | Adobe Systems Incorporated | 3D transformation of objects using 2D controls projected in 3D space and contextual face selections of a three dimensional bounding box |
US10510186B2 (en) | 2017-12-22 | 2019-12-17 | Adobe Inc. | Digital media environment for intuitive modifications of digital graphics |
US10388045B2 (en) | 2018-01-04 | 2019-08-20 | Adobe Inc. | Generating a triangle mesh for an image represented by curves |
-
2018
- 2018-03-26 US US15/936,299 patent/US10410317B1/en active Active
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10510186B2 (en) | 2017-12-22 | 2019-12-17 | Adobe Inc. | Digital media environment for intuitive modifications of digital graphics |
US11037367B2 (en) | 2017-12-22 | 2021-06-15 | Adobe Inc. | Digital media environment for intuitive modifications of digital graphics |
US10878604B2 (en) | 2018-01-04 | 2020-12-29 | Adobe Inc. | Generating a triangle mesh for an image represented by curves |
US10832446B2 (en) | 2019-01-07 | 2020-11-10 | Adobe Inc. | Bone handle generation |
US10943375B2 (en) | 2019-04-17 | 2021-03-09 | Adobe Inc. | Multi-state vector graphics |
US20220254078A1 (en) * | 2021-02-09 | 2022-08-11 | Adobe Inc. | Editing digital images utilizing edge aware transformations based on vector splines and meshes for multiple image regions |
US11682149B2 (en) * | 2021-02-09 | 2023-06-20 | Adobe Inc. | Editing digital images utilizing edge aware transformations based on vector splines and meshes for multiple image regions |
US11631207B2 (en) | 2021-09-09 | 2023-04-18 | Adobe Inc. | Vector object stylization from raster objects |
Also Published As
Publication number | Publication date |
---|---|
US10410317B1 (en) | 2019-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10410317B1 (en) | Digital image transformation environment using spline handles | |
US11037367B2 (en) | Digital media environment for intuitive modifications of digital graphics | |
US11727636B2 (en) | Three-dimensional mesh segmentation | |
US10460483B2 (en) | Tool for creating and editing arcs | |
US10832446B2 (en) | Bone handle generation | |
US10943375B2 (en) | Multi-state vector graphics | |
US10318102B2 (en) | 3D model generation from 2D images | |
US20150062129A1 (en) | Fitting a Parametric Curve using Maximum Curvature | |
US9723204B2 (en) | Dynamic motion path blur kernel | |
US10922859B2 (en) | Vector art object deformation techniques | |
US9955065B2 (en) | Dynamic motion path blur user interface | |
GB2578947A (en) | Unified digital content selection system for vector and raster graphics | |
US9779484B2 (en) | Dynamic motion path blur techniques | |
US9977581B2 (en) | Selection refinement tool | |
US11023113B2 (en) | Visual manipulation of a digital object | |
US11651536B2 (en) | Directional pattern generation for digital images | |
CN111951348A (en) | Method and device for determining frame selection area and electronic equipment | |
US11049296B2 (en) | Dynamic path modification and extension | |
US11631220B2 (en) | Digital object surface inflation | |
AU2019213404B2 (en) | Unified selection model for vector and raster graphics | |
US10249067B2 (en) | Control of shape interaction in a user interface | |
US12002133B2 (en) | Vector object jitter application | |
US20230267696A1 (en) | Responsive Video Canvas Generation | |
US10558343B1 (en) | Interaction plane rotation for manipulation of three-dimensional objects | |
US20220254097A1 (en) | Digital Image Editing using a Depth-Aware System |
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 SYSTEMS INCORPORATED, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:PHOGAT, ANKIT;BATRA, VINEET;SIGNING DATES FROM 20180324 TO 20180325;REEL/FRAME:045593/0456 |
|
AS | Assignment |
Owner name: ADOBE INC., CALIFORNIA Free format text: CHANGE OF NAME;ASSIGNOR:ADOBE SYSTEMS INCORPORATED;REEL/FRAME:048103/0226 Effective date: 20181008 |
|
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 |