Freeform Vector Graphics Properties

As a follow up of my previous post, I tried to check the behavior of the FVG approach with respect to closed curves. More precisely, I want to see if it would be possible for an author to edit a complex image by editing closed regions of the image. This would simplify the editing. The problem is that the closed regions have to be independent. One doesn’t want the outside of a region to change when tweaking the inside. This is valid for simple diffusion curves proposed by Orzan as they are solution to the Laplace equation and this property is actually used for culling and fast rendering of diffusion curves (see “Diffusion curve textures for resolution independent texture mapping”, by Sun et al.). How true is this for FVG curves, especially given that the solution is not the solution of a Laplace equation but to complex energy minimization?

Requirements

So I tried to look at the candidate curves which would exhibit a good behavior when closed, leaving aside tear curves for which the behavior is known. More precisely, I want to see if it is possible to create closed curves with the following requirements:

  • one or more colors are specified along the curve,
  • the color profile is continuous across the curve (as opposed to tear curves),
  • the color gradient is also continuous across the curve (as opposed to crease curves),
  • changing the inside of the curve does not modify the outside and vice-versa.

Simple curves

We need at least a value curve to specify the color value(s) along the curve. As can be seen below, obviously, the simple value curve (V) does not meet our requirements. Adding just one value point outside near the edge of the curve clearly modifies the interior.

Simple closed value curve
Value curve and value point
Color profile across the curve and the value point

The use of a Crease curve can be used to prevent the outer color changes to affect the inner region, but this introduces a gradient discontinuity, as shown below.

Closed compound Value-Crease curve with an additional value point outside
Hidden control points on the compound Crease-Value curve
Color profile of the Crease-Value curve

To obtain a smooth transition across the curve, which is not modified by changes outside or inside, we need to also constrain the gradient on both sides of the curve. The compound VS curve does the job as seen below, but by constraining the gradient to be null across the curve. The question is: is it possible to constraint the gradient to a value different from zero?

Closed compound Value-Slope curve with an outside value-point

In FVG, the only way to set a gradient value across a curve is to specify two color values at some distance from the curve, for instance using a compound curve using two value curves: “V1,N,V2”, “V1,C,V2”, “V1,S,V2”, “V1,I,V2”, “V1S,N,V2S”…. So I’ve made several attempts at using these compound curves.

V1,N,V2

The test with this type of curve shows that the inner region is modified by the addition of an outside value point. As can be seen on the images below, the inner region is more red after the red value point is added.

V1,N,V2
V1NV2-profile
V1,N,V2 with added value-point
Modified profile

It is even more obvious in this video: V,N,V.

V1S,N,V2S

Since the VS curve seems to fulfill our requirements, the use of a V1S,N,V2S where 2 different colors are used is probably a better candidate. The images below and this video show that it indeed works, even with different spacing between V1 and V2. The color profile within the square is unchanged by the motion of the value point.

A V1S,N,V2 square with a large distance between V1 and V2 and an additional value point
Color profile of the previous image (horizontal section through the value point)
Modified version of the previous image where the value point is closer to the compound curve
Color profile of the previous image

The problem with this approach is that the gradient in the direction normal to the curve has to be zero inside and somewhere outside the curve, at some distance. This can be seen on the color profile images.

So none of the core types (as identified in the FVG software) are truly satisfactory. Among the “Extended type”, the compound types allowing to use 2 different color values either introduce a discontinuity in the gradient (“V1TV1,N,V2TV2” or “V1C,N,V2C”) or provide a color profile where the color alternates between V2, V1 and back to V2 which is not what we are looking for.

Conclusion

From this experiment, it appears that none of the curve types proposed by the FVG software fulfill the requirements, i.e. can define a color along a closed curve, a gradient across the curve (without additional inflection point), maintain continuity in color and gradient and yet enable authors to edit the inside of the curve without modifying the outside. The model, however, of FVG could enable that, using a compound V2-∆,V2,V2+∆ curve where V2 is the wanted color and delta defines the gradient. Although locally around V2-∆ and V2+∆, the profile will depend on the colors outside the compound curve, the profile around V2 is constrained to be linear. This remains to be tested.

Leave a Reply

Your email address will not be published.