Setbacks
List of: Discussion Topic
Subjects: Blending
Contents: Blending

When a blended edge ends in a blended vertex, the blend face made for the edge meets the blend face made for the vertex in a "cross" edge. ACIS needs to find a position and inclination for this cross edge. In such cases, start and end setbacks may be applied to each end of the blended edge. A setback specifies the distance along an edge back from the vertex at which the blend stops.

The setback defines a plane which is normal to the edge through a point on the edge and set back from the edge end by the given distance. The intersection of the setback plane with the blend surface defines a curve that may be used to bound part of the face for the blended vertex at the end of the edge.

The setback can be defined in one of the following ways:

The setback can be specified at the time the implicit blend is put on each edge (it must be for the start or end of the edge, as appropriate).

For a constant round, the cross curve will then be a circular arc. The distance of the setback is approximately the distance of the cross curve from the vertex at the end of the edge. The cross edge will not be inclined (i.e., it will not be oblique).
Blend all the edges at the vertex, specifying blend size and shape, but no setbacks. Then, blend the vertex, at which time the setback is applied.

If the setback is to be applied on the vertex blend, it may be:

Specified explicitly
Calculated automatically (autosetback)
Not specified at all

Setback Specified Explicitly

Start and end setbacks may be specified explicitly when the blend is set by passing the values as arguments to various blend APIs (or test harness commands or Scheme extensions). Valid values for setback depend on the size and geometry of the edges at the vertex being blended.

If the user specifies a setback that is smaller than the smallest setback practical, that value will be overridden and the smallest practical value used instead (refer to section No Setback Specified for information about how this minimum value is determined).

Oblique Setbacks

If the setback is specified explicitly, it may be inclined (oblique). This is a further refinement that lets the setback on the left spring curve of a blended edge differ from the setback on the right spring curve. This gives further control over the boundary shape of the blend face made for a vertex blend.

Oblique setbacks can be selected in one of two ways:

In addition to the setback, the user can provide a signed value, which is the difference between the setbacks (left setback - right setback). This can be specified for the start and end of the blend.
Oblique setbacks can also be selected without explicitly specifying the setback difference. Flag arguments in the APIs indicate whether or not the difference is specified. (The "oblique" option is used in the test harness.)

If the difference is not specified, when the left and right spring curves of the blended edge are intersected with the spring curves of the adjacent blended edges at the blended vertex, and when two intersection points are obtained (one for each spring curve), the cross edge is inclined so that it passes through both the intersection points. This gives the smallest and topologically simplest vertex blend face.

For a blended vertex of uniform convexity (its n edges are all convex or are all concave), the vertex blend face made will have n sides. If the blended vertex is not of uniform convexity, the blend face will have more than n sides; i.e., in addition to n cross edges, its will have one or more spring edges (edges at which the vertex blend surface springs from surfaces of faces adjacent to the blend vertex).

When a vertex is of mixed convexity or the sizes of the blends on its edges differ greatly, the oblique option can lead to poor shapes for the vertex blend boundary (angles at vertices of the boundary must be less than pi). In that case it is probably best to compute setbacks automatically.

Automatic Setback Calculation (Autosetback)

The setback can be automatically calculated, which means ACIS finds and assigns setbacks at a blended vertex (provided the edges at the vertex already carry implicit blend attributes). Autosetback is applied to a vertex blend using the api_set_vblend_auto function.

Users may want to use autosetback to get a good starting point, and then adjust the setbacks manually for further refinement of the blend shape.

Autosetback finds an average blend size for the edges at the vertex. For each edge, it considers the edge adjacent on the clockwise side and finds a setback that allows a spring curve of radius close to the average blend size, and similarly for the counterclockwise side. It then chooses the greater of the two setbacks for the current edge. This method regards the vertex as polyhedral; i.e., it looks at normals and tangents at the vertex.

Autosetback never makes oblique setbacks. However, it is possible to introduce oblique setbacks by manually refining the setback to improve vertex blend shape after the automatic setback calculation.

Because autosetback uses the sizes of the blends and the angles in which the edges meet at the vertex to estimate the setbacks, it works reasonably well if all of the following conditions are true:

Blends on the edges are not too different in size (and not of zero size)
Edges meet in angles not too different at the vertex (and not zero or pi)
Edges are not too highly curved (calculations are made as if the edges were straight)

Note A variant of autosetback exists for historical reasons. It is called "autoblend" (api_set_vblend_autoblend) and differs from autosetback in that it will use simple surfaces (spheres, etc.) whenever possible (autosetback does not), otherwise, it uses the same setbacks as autosetback.

No Setback Specified

If no setback is specified, ACIS must still find the position of the cross edge. Given a blended edge with no setback specified, ACIS intersects the spring curves of the blend geometry found for the edge with the spring curves made for the adjacent blended edges at the vertex (i.e., the edges that are found by stepping to the next edge clockwise or counter-clockwise about the vertex).

Usually, two intersection points are found: one for the left and one for right spring curve. ACIS chooses the intersection point further from the blended vertex and positions the cross edge to pass through that point. If an adjacent edge meets the current edge in a reflex angle (greater than pi), no point will be found for that side, but a point must exist for the other side and that will be used to position the cross edge. In effect, this method finds the smallest setback practical for a non-oblique cross edge.

Some final adjustments are made in order to remove or improve any awkwardly-shaped curves, sometimes resulting in oblique cross curves.

As a rule of thumb, use no setbacks at all to obtain the smallest pleasing vertex blend surface, and use autosetback to obtain a larger extent for the blend surface. If no setbacks are specified, simple vertex blend surfaces will be made whenever possible (e.g., spheres, tori, etc.). Using autosetback precludes the creation of such simple surfaces, and an n-sided patch will always result.

Vertex Setback Example

Figure 1-8 illustrates a vertex blend with no setback, then the same blend with two different setbacks. The original block is 100 x 100 x 100. In the blend with no setback, oblique cross curves are used automatically to create a minimal blend. The first setback is 20, and the second setback is 40. With a setback of 40, the blend is larger. In this example, a setback of 200 is invalid, because it is larger than the length of the edges.


Figure 1-8. Vertex Setback
PDF/BLND/01CMP.PDF
HTM/DATA/BLND/BLND/01CMP/0011.HTM