Non-local blending of boundary models

Non-local blending of boundary models

Computer-Aided PII: soolo-4485(96)ooo38-3 Design, Vol. 29, No. 2, pp. 89-100. 1997 Copyright 0 1996 Elsevier Science Ltd Printed in Great Britain. A...

1MB Sizes 3 Downloads 35 Views

Computer-Aided

PII: soolo-4485(96)ooo38-3

Design, Vol. 29, No. 2, pp. 89-100. 1997 Copyright 0 1996 Elsevier Science Ltd Printed in Great Britain. All rights reserved 001~4485/97/$17.00+0.00

ELSEVIER

Non-local models

blending

of boundary

I C Braid

four edges and a vertex are to be blended. This example will serve to introduce some terminology. One edge will be chamfered, two edges given a constant radius round, and the third a variable radius round. When setting the blend on the vertex, we have asked that the join between the vertex blend face and the blend face made for each of the blended edges be set back from the vertex by a given distance (the setback). In the first stage of blending, an attribute containing blend details such as the radius of a constant round is attached to each blended edge and vertex to note implicitly the existence of the blends. We thus define a network of blended edges and vertices to indicate where the blends are intended to appear. The second stage makes the new faces needed for the blended body, modelling them as a sheet body (a sheet body comprises a set of faces connected in pairs at common edges, where the faces do not usually constitute a closed surface in E3). Examining the straight edge that has been given a constant radius round, we see that the surfaces of the two faces of the edge, the lateral faces, together with the blend radius determine the blend surface and the two spring curves in which the blend surface meets the lateral faces of the edge. The term ‘spring’ follows architectural usage as in the spring point of an arch. (Some use the term ‘rail’ curve instead of ‘spring’ curve.) Since the edge is straight and its two faces are planar, two straight spring curves and a cylindrical blend surface will constitute the blend geometry. The spring curves are labelled ‘left’ and ‘right’ with respect to the direct blended edge. For this straight blended edge, we shall build a four-sided blend face, two edges of which lie on spring curves and two on cross curves. The shape of a cross curve is given in this case by the curve in which a plane normal to the blended edge cuts the blend surface; other shapes are also used (see below). Each blended entity gives rise to a sheet face bounded by a sequence of alternate spring and cross edges. The sheet faces join at cross edges. The third and fourth stages are performed by a Boolean operation that finds where the blended body and sheet body intersect or touch and records the details of the resulting intersection graph as a wire body (a body made up of a graph of edges joined at common vertices), and then takes the body, blend sheet and intersection graph and produces the final blended body.

The paper describes varieties of blending in kernel boundary modellers emphasizing topology, algorithms and program structure rather than geometry and using examples drawn from the ACIS modeller. It illustrates some of the many configurations that can occur when blends spread on to faces distant from the original implicitly blended edges and vertices. From a systems standpoint, a staged evaluation of blends is shown to have advantages in the use of existing Boolean code to perform much of the work. Lastly the paper explains how object-oriented methods can ease the addition of new categories of blend by applications built on a kernel modeller. Copyright 0 1996 Elsevier Science Ltd Keywords: blending, boundary modelling

INTRODUCTION As any carpenter familiar with a spokeshave or moulding knows, the smoothing off of sharp edges is a common step in model making. Edges are chamfered or rounded or given more complex cross-sectional forms in a process here termed blending. Similarly vertices where blended edges meet are themselves blended to produce smooth n-sided regions that join the surfaces made for the blended edges. Blending poses geometrical and topological problems that have been widely studied. For example, Woodwark3 and Vida et al2 offer comprehensive surveys. A recent paper by Plowman and Charrot’ describes the geometry underlying the n-sided blends illustrated below. The purpose of this paper, however, is twofold: to explore the topological consequences in a boundary modeller of allowing blends to become nonlocal, and to describe system aspects of blending in a kernel modeller. Blending is a complex process that offers an apparently limitless number of different configurations and problems. The author hopes that by exhibiting a selection of these, others will be encouraged to improve on what he has done and to develop a systematic, perhaps even exhaustive, account of the subject.

plane

AN EXAMPLE To begin, consider the body shown in Figure I where

IMPLICIT BLEND STRUCTURES Three-Space Limited, 70 Castle Street, Cambridge CB3 OAJ, UK Paper accepted: 23 April 1996

Implicit 89

blends are recorded

using blend attributes

Non-local

blending

of boundary

models:

I C Braid

(W

Figure 1 Steps in making a simple blend; (a) implicit blends set. (b) blend sheet, (c) intersection constant round, vr-variable round, vb--vertex blend, s-spring edge, x- cross edge.]

attached to blended entities such as edges and vertices. The only task of the base blend attribute class is to record a list of sheet faces made of the blended entity. Derived from it are vertex blend attributes and entity-entity blends where the entities can be vertices, edges or faces. The entity-entity blends are further specialized to represent particular types of blend such as constant radius rolling ball blends, constant chamfers, and variable-radius rolling ball blends. The class structure is shown in Figure 2. Each attribute records its owner. usually an edge for an entity-entity blend or a vertex for a vertex blend.

Implicit entity-entity

blends

The entity-entity blends record the two entities being spanned by the blend, the setbacks and setbackdifferences (see below) at the start and end of the blend. They can record blend convexity and a local point and direction that are used to resolve ambiguities in cases where a rolling ball can adopt more than one position whilst being in contact with the spanned entities. Figure 3 shows possible blends between two tori where the designer must choose the wanted blend (1 + 2, 1 + 3, 1+4,2+3,2+4,3+4or1+2+3+4). Where an entity-entity blend spans two faces that are ‘distant’, that is they are not joined at a common blended edge, the entity-entity blend attribute should be attached to a body entity that owns both the faces. In ACIS this might be a shell, a lump or a body. If the two entities initially belong to different bodies, those bodies 90

graph,

(d) blended body [c-constant

chamfer,

r

must first be combined into a single body of two lumps (lumps allow a body to consist of several discrete pieces) and the attribute must then be attached to the body.

Implicit vertex blends A vertex blend must be able to join a set of three or more blended edges of uniform or mixed convexity. Generally the edge blends will each stop some distance short of the vertex. The corners of the sheet faces made for adjacent edge blends will be joined by spring curves constructed in the blend body face, i.e. the lateral face, on which the corners lie. The spring curves meet the spring curves of the adjacent edge blends tangentially. Thus each end of a spring curve has its position and tangent defined. At present the shape of the curve between its ends is made circular if possible, otherwise it can be a quadratic or cubic curve defined in real space or in the parameter space of the surface of the lateral face. In this way we construct a closed sequence of edges that forms a boundary for the vertex blend. The vertex blend face

AlTRIB_BLEND

I

I

I

ENTITY_ENTITY_BLEND I I CONSTANT_ROUND

Figure 2

I CONSTANT-CHAMFER

Blend attribute

classes

VERTEX-BLEND

VARIABLE-ROUND

Non-local

Figure 3

An ambiguous

face-face

blending

of boundary

models: I C Braid

blend Figure 4 Vertex blends (b) bulge = 0.5

will meet its boundary with positional or higher continuity depending on the continuity of the adjacent edge blends. The implicit vertex blend attribute can carry any other information supplied to control details of the vertex blend surface. Commonly there is some means of controlling the fullness of the blend by varying cross tangent magnitudes along the boundary (Figure 4). Further controls on the shape of spring curves chosen for the vertex blend boundary should be included. The setback, the distance by which an edge blend stops short of the blended vertex (see Figure 5), is most easily recorded in the implicit entity-entity blend for each edge at its start or end. A further refinement is to allow the setback cross curve to be angled, by giving separate left and right setbacks measured along the left and right spring curves. Another possibility is to allow left and right setback points to be found by intersecting the left and right spring curves with the spring curves of the adjacent blended edges at the blended vertex. Yet another is to choose one such intersection point, left or right, and force the other setback, right or left, to be equal. If each of a group of edges at a blended vertex is to have the same setback, it can be given when the implicit vertex blend is set. The modeller should offer some means of automatically determining setbacks and preferably also spring curve shapes according to the geometry local to the blended vertex. To develop reliable heuristics for this purpose is not easy though even simple rules can provide something that can be drawn and then modified until a satisfactory shape is obtained.

with varying

bulge factors;

(a) bulge = 1.0,

a

I’

, /’

/ )_-

--__

-_

@

f!iz a

1 a

,’

/’

1-

--__

/’

---

/’

II

a A-_, , --__ ,

a

--_

6!3

Figure 5 edge.]

Setbacks

Figure 6

A blended

at a vertex

blend

[s-setback,

a-angled

cross

Zero-sided blends with a non-zero setback It is useful to allow edges to be ‘blended’ with blends having a radius of zero magnitude but non-zero setback (Figure 6). However, the vertex blend geometry must then be able to accommodate boundaries containing cusps and geometric intersections must be robust enough to cope with parametric surface singularities at the cusps. Cuspate vertex blends In mechanical components, it is not unusual to find two blended edges in a cusp at a common unblended vertex joined to zero, one or more smooth edges. Considering the case of two blended edges A and B, and one smooth edge, we find we can evaluate the blends sequentially A, B or B, A to obtain two different results. A third possibility, denoted by setting a blend on the cuspate

vertex meeting

an edge with zero blend

91

Non-local

blending

of boundary

models:

I C Braid

vertex, is to evaluate both blended edges simultaneously. 7 shows the three cases. The disadvantage of evaluating the blends sequentially is that the graph of implicitly-blended edges and vertices must be split at each cuspate vertex to obtain two disjoint graphs that can be evaluated sequentially. This requires unexpected action from the user and moreover is something that cannot always be done as the graph may join to itself elsewhere at other blended edges and vertices which offer no convenient place to make the split. In simultaneous evaluation, special action is taken to create a smooth cross edge in the vertex blend boundary. There are few constraints on the shape of the cross edge. Here we have chosen to position in on the curve (extended) of the smooth unblended edge. Figure

N-ary blends When two or more vertex blends are ‘close’, that is are less than the local blend ‘size’ apart, their vertex blends should coalesce. Figure 8 shows a blend intended for a four-edge vertex but where the body has been constructed so that there are in fact two three-edge vertices joined by a short edge. The blend attributes should be set on both vertices and on the short edge between them, but building of the blend sheet should discover the blended entities are close and create a single blend face. A small face could also define a set of edges for an n-ary blend. Equally when blended edges are close. n-ary blends may be needed between them.

Automatic selection of edge sequences and vertices for implicit blending A means

of automatic

selection

of sequences

that meet with tangent continuity is useful when setting implicit blends or when finding a graph of blended edges and vertices that can be evaluated together. We select open or closed linear sequences of edges, stopping whenever there is no single tangent-continuous edge leading from the edge of the last edge selected or discovered.

Updating implicit blends When bodies carrying implicit blends take part in other modelling operations, the entities owning those blends can be split or merged (or transformed or deleted). A split of an edge requires duplication of a constant blend attribute to the new edge and assignment of the setback at the original edge end to the end of the new edge. A split of an edge carrying a variable radius blend may involve finding new radius functions for each edge resulting from the split. Merging of two implicitlyblended edges into one obliges the system or user to decide what implicit blend should be placed on the resulting edge. Clearly if the two edges carry equal blends, the same blend can be attached to the surviving edge. In other cases, only the application or the user can decide. An advantage of using an object-oriented language such as c++ is that the application can define the rules to be applied by supplying the split and merge virtual functions of the particular blend attribute class. Another kind of update can occur when one of three blended edges joined at a blended vertex is evaluated as a single blended entity. The blended vertex expands into an edge. In the special case when the two unevaluated blended edges have the same constant blend, we can place the same implicit blend on the new edge (Figure 9).

of edges

Checking and displaying implicit blends \

r----l

F-----A

When an implicit blend is set on an edge or on a pair of remote faces, it is feasible to compute the blend geometry immediately and check that the blend does contact the given faces. If not, a message such as ‘blend too big’ can be displayed. Conceivably a search might be made for nearby faces which the blend does contact. Another form of feedback could be given at this stage by displaying the spring lines on the contact faces so that the user can judge the extent of the blend. Comprehensive checks require work equal to full evaluation of the blend but this may not be possible if adjacent blends have not yet been specified.

EVALUATION

Figure 7 Blends at a cuspate vertex; (a) body before blending. (b) blend curved then straight edge, (c) blend straight then curved edge, (d) blend straight edge, curved edge and cuspate vertex simultaneously

92

OF IMPLICIT

Having

set up the implicit

Figure 8

N-ary blends

blends,

BLENDS the next step is to

Non-local

blending

of boundary

models: I C Braid

of the rolling ball may travel on to faces remote from the implicitly blended entities. The number of blend faces made can be greater or fewer than the number of implicitly blended entities. The larger the blend, the more remote will be the faces visited and the less precise will be the blend graph. The user must set the implicit blends, evaluate them and see what results, and then if necessary, modify the implicit description and re-evaluate until the blends obtained are satisfactory. Figure 9

A blended

vertex changes

to a blended

edge

Making the blend sheet body evaluate or ‘fix’ the blends, that is, to make them explicit

as new faces.

Finding the network of blended entities We can locate networks of compatibility blended edges and vertices, given a blended edge or vertex as a starting point. The network will have blended edges as it links and, as its nodes, either blended vertices or unblended vertices joined to one or more blended edges (Figure IO). Where blended edges meet incompatibly or without tangent continuity at an unblended vertex, the blend surfaces will have to be intersected and trimmed to one another (and to local faces) in a process termed ‘mitring’. Figure Ila shows an example of a case where mitring is necessary. Mitring is only performed for blended edges of the same convexity. However, mitres can be made between different kinds of blend, such as a round and a chamfer (Figure llb). A vertex only one of whose edges is blended is a terminal node of the network (see Figure 12), i.e. an ‘open’ end of the blend graph, and requires special processing (described below). Although it will often be satisfactory to blend a whole network automatically discovered, the user may want to remove blended entities from those found or may prefer to identify blended entities explicitly, possibly choosing a single edge. Blends between remote faces will have to be entered manually. However found, the network can be returned as a list of blended entities since details of connectivity can always be deduced from the boundary model. The network is merely indicative of the blends wanted rather than a precise description. During evaluation of rounds, for example, the contact points

64 Figure 10 A network (b) after evaluation

of blended edges and vertices; (a) implicit blends,

At the highest level, sheet construction proceeds by taking each blended entity in the list, constructing one or more sheet faces and where possible joining them to sheet faces already made. If the blend should lie on a lateral face remote from the blended entity, attempts to construct blend geometry from the faces of the blended edge will fail and so prevent building of the sheet face(s). The blended entity is then moved to the end of the list to be considered again later when sheet faces should exist for one or other neighbouring blended entity and so disclose the unknown lateral face. Construction of sheet faces for blended edges differs markedly from that for blended vertices so we consider them separately.

Making sheet faces for a blended edge Typically a blended edge gives rise to one or more rectangular sheet faces joined end to end, with the possible addition of extra faces, not necessarily foursided, at open ends. The rectangular sheet faces can become three- or two-sided when one or two (opposite) sides shrink to zero length. The side edges of each face lie on spring curves while the end edges lie on cross curves. For constant radius rounds, cross curves will be circular arcs except where a blended edge ends at a blended vertex and a non-zero setback difference is given to indicate an angled cross curve. In this case the cross curve will be represented typically as a straight line in the parameter space of the blend surface of the blended edge. Given a blended edge, the first step is to see if an edge connected at its ends is blended, is in the list of blended entities being evaluated (the blend list), and has already been evaluated. If so, its blend attribute will refer to the sheet face already made. One or other (or both) near corners of the sheet face will carry an attribute referring to a smooth blend body edge on which the corner lies. The corner corresponds to a point at which the rolling ball rolls on to a new face of the blended body. The other corner, if not also lying on a smooth blend body edge, will lie within a blend body face, again indicated by an attribute of the sheet face corner. In this way we find, for the blend being evaluated, the lateral faces-those faces to be joined by the new blend face. These are not necessarily the faces of the blended edge since the blend may have spread across smooth edges on to faces distant from that edge (see Figure 13). For constant rounds, the lateral surfaces are offset and intersected to get the blend spine (the curve traced out by the centre of the blend ball). The blend spine is projected to each lateral surface to get the spring curves. For variable blends, the blend geometry must be found at 93

Non-local

blending

of boundary

models:

I C Braid

_/-\ \ @F3

ffl-jg@

(4

Figure 11

Mitring;

(a) mitring

necessary,

Figure 12

Open ends of uniform

(b) a chamfer

and mixed convexity

mitred to a round

[m-mixed

convexity,

cross-sections and the blend surface interpolated between them. Once the blend geometry is found, each spring curve can be imprinted on its lateral face using a routine already provided for Boolean and other modelling operations, to obtain a list of segments, portions of the spring curve that lie within (or on) the boundary of the lateral face. Next we map the spring curve segments on to the blend spine to obtain intervals on the spine curve for each segment on the left and right lateral facesThese intervals allow us to find the regions where segments made for the left lateral face overlap those for the right. Each region determines a sheet face. Note that the sheet faces made do not necessarily abut one another. Where the blend has representative

Figure 13

94

Blends on distant

faces

u-

uniform

convexity.]

rolled on to distant faces, new lateral faces will be encountered and further sheet faces must be made using the process just described until a connected set of sheet faces is obtained.

Making sheet faces for a bi-blend vertex When two blended edges meet smoothly, that is, with tangent continuity, they do so at a bi-blend vertex. One or more smooth unblended edges will be attached to a biblend vertex and other smooth edges may approach close enough to the bi-blend vertex to affect the blend (see Figure 14). These give rise to a sequence of sheet faces built in a manner analogous to the making of sheet faces

Non-local

for the interior of a blended edge. Each bi-blend vertex is given a blend attribute that is placed at the end of the list of blended entities being processed. The attribute notes the left and right lateral faces found when processing the edge blends adjacent to the bi-blend vertex, these faces being usually but not necessarily incident on the bi-blend vertex.

Making the sheet face for a blended vertex At a blended vertex first the boundary of the sheet face is identified and then the blend surface is made to meet that boundary. The boundary consists of alternate cross edges and spring curves. Sometimes a spring curve or cross curve may shrink to zero size. If the sheet face for a blended edge ending in the blended vertex has already been made, the cross edge will exist and need only be referenced. Otherwise the geometry of the cross edge, a cross curve, must be determined from the geometry of the blended edge and the details of setback at its start or end at the blended vertex. When two cross edges or curves have been found for blended edges adjacent at the blended vertex, their nearer ends can be examined: if they coincide, there is nothing more to do; otherwise a spring curve must be made. There is considerable freedom in determining the spring curve. The adjacent cross curves and their spring curves define the positions and slopes at the ends of the spring curve, and the blend body face common to the two blended edges meeting in the blended vertex, the lateral face, gives the surface on which the

Figure 14

blending

of boundary

models:

I C Braid

spring curve must lie. In general one can fit a cubic curve defined in the parameter space of the lateral surface, but if that surface is planar or some other simple form, it is often convenient to use a straight line or circular arc where such a curve satisfies the end conditions. Once the boundary is complete, we test it to see if a simple surface such as a plane, cone, sphere or torus will satisfy the boundary and if none does, we construct a general vertex blend surface taking account of any fullness factor recorded in the vertex blend attribute (see Figure 15).

Processing open ends When a blended edge is the only blended edge joined to an unblended vertex, the blended edge is said to be open at that end. The closing off of blends at open ends introduces a topic of disproportionate complexity as the user probably wants nothing more than that the open end should be completed tidily so that other modelling operations on the blended body continue to work. For open ends at vertices of uniform convexity (where all the edges at the vertex have the same convexity), it is enough to intersect the blend surface with the faces at the open end and so obtain a sequence of cross edges that complete the open end of the sheet face. Boolean procedures can be used for this task (see Figure 26). At an open end of mixed convexity where the blended edge has the same convexity as one of the unblended

Sheet faces made for a bi-blend vertex

95

Non-local

blending

of boundary

models:

I C Braid

I

\

I

I

b

‘1 \

(a) \\ Figure 15 Making a vertex blend; (a) implicit blends set, (b) blends completed cross edge, so--zero-length spring edge, xa-- angled cross edge.]

edges, it will be necessary to grow the unblended edge and at least one of its adjacent faces so as to provide a surface that extends far enough to cap the open end. Several problems can arise. It may be that the surface will never extend far enough to close the gap in the boundary. Parametric surfaces have the additional and well-known difficulty that they are only defined for a limited region hence their extension requires strategies such as the generation of new defining points. More complex cases of mixed convexity open ends may need the extension of several faces. These faces can intersect with one another as well as with the blend surface and it seems that only a backtracking algorithm will ensure that if a solution exists, it is found. Figure 17 shows an example where one end of the blend is capped by two faces, one three-sided, the other five-sided, and each lying on extensions of existing surfaces while the other end is capped by a face lying on a newly-invented surface. Away from mixed convexity open ends, blending is a variation-diminishing process and so its effects are bounded. Can variation-diminishing capping methods be found? One solution is to let the ball roll on at a mixed-on convexity vertex, tracing out edge-face blends where it is in contact with an unblended edge and face.

[s2

quadratic

spring edge, s3 -~cubic spring edge. xo-

zero-length

Processing mitres When two blended edges end in an unblended vertex together with one or more unblended edges, the capping faces must be formed from the two blend surfaces and the adjacent body faces extended if necessary. A common example is the mitre where two similar blend surfaces intersect in a planar curve, the plane being that which bisects the angle formed by the (straight) edges being blended with equal blends. Mitres are essential in cases like the blending of half of a figure-of-eight curve where the single blended edge meets itself nonsmoothly at a vertex which forms its start and end. There seems no reason why mitring should not be extended to cover the intersection of arbitrary numbers of blended edges meeting at an unblended vertex (see Figure 18).

Mending gaps When a lateral face contact the rolling ball, unless action is taken. through a blend with various ways. Deciding kind of mend remains

does not extend far enough to a gap will appear in the boundary Figure 19 shows a cross-section a gap that has been mended in how the user should control the a practical difficulty.

Completing blends

(4

(c)

Figure 16 Making a sheet face for an open end of uniform (a) implicit blend set, (b) sheet made, (c) blend completed

96

convexity:

Having made the blend sheet, we have only to imprint its free edges on the body being blended, to discard body faces to one side of the imprinted edges and to connect the blend sheet in their place. The Boolean operations in a modeller, if suitably organized, can carry out this step.

Non-local

/

/

/

/

/

blending

of boundary

models:

I C Braid

--__

Figure 17 Making a sheet face for an open end of mixed convexity; (a) body with implicit edge blend, (b) sheet made (with capping superimposed on body, (d) blended body (capping faces merged into body)

They can also resolve intersections of blend sheets with (topologically) distant parts of the blended body (see Figure 16).

The first requirement is to make sure that known intersections (and known non-intersections) of the sheet with the blend body are noted. For instance, each spring edge should record the lateral face on which it lies so as to avoid attempting slow and ill-conditioned tangent intersections between the surfaces of the sheet and blend body faces-an unnecessary task since the blend sheet has been constructed to meet the blend body tangentially at its free edges. Unless a blend sheet for a blended edge shrinks to zero width (where the faces of the blended

faces), (c) sheet

edge meet in an angle of x), we can also assume that a blended edge will never intersect the blend surface made for it. The decision of which body faces to keep or discard, something that in Booleans is made on the basis of tests of face normals (or higher derivatives) and type of Boolean (union or intersection), can be based on knowledge of the blend and its convexity so that geometric tests are avoided. Many more intersections between the sheet and body can be noted and this, together with boxing, can reduce the time devoted to face-face intersections in blending, the only purpose of which is to find intersections of the sheet with remote parts of the blend body. 97

Non-local

Figure 18

blending

Example

of boundary

of blended

models: I C Braid

edges mitred together

APPLICATION-SPECIFIC

BLENDS

The staged method of blending described above coupled with the flexibility offered by an object-oriented programming language gives opportunities for modifying blending. There are several levels at which an application could define its own blends. The most radical would be for the application to take full responsibility for building the blend sheet. This would be necessary if blend sheets were to be more complex topologically than single strips of four-sided faces meeting at n-sided faces. For example, if the application wished to make general moulding as might be found on the architrave of a door or on a picture frame, several adjacent strips of four-sided faces would have to be made. A less radical scheme would allow the application to build sheet faces for certain blends while using the standard blending for others.

In either case, the application would define new blend attributes and supply the member function that builds one or more sheet faces for each occurrence of an attribute. The application would also have to supply member functions for joining or mitring application-specific blends to one another or to standard blends. Less ambitious would be for the application to substitute its own blend geometry or change the existing blend geometry by providing new cross-sections for blends. In this way one might add parabolic or elliptical sections or curvature-continuous blends. To do this, the application would have to define new blend attributes and supply their member functions that compute blend surfaces and cross curves. At a still lower level, the application could use existing geometry functions for finding spring curves but add its own functions for constructing blend surfaces that pass through those curves and for finding the corresponding curves, this time supplying just the member function to compute the blend surface.

i:ll?

DISCUSSION

I

I

Geometrical complexity

W

Figure 19 Mending a gap beside a blend; (a) gap appears, (b) change to edge-face blend, (c) extended adjacent face, (d) change to edge -face blend and enlarge ball

98

Rolling-ball or sliding-disc surfaces contain singularities when the ball slides along an edge (even sliding repeatedly up and down the edge) in an edge-face blend or moves whilst in contact with a vertex. Blends of zero radius also introduce inconvenient singular points. All surface interrogations and intersections must be made proof against these singularities. Like general curves of intersection, blend surfaces cannot be represented exactly but must be recorded implicitly or approximately (or both). In Boolean operations, curves and surfaces of the given bodies may

Non-local

be trimmed but are never extended. However, in common with other local operations such as feature removal, blending requires extension of curves and surfaces and moreover extension on demand (since the amount of blend surface needed can only be discovered as the blend surface as first made is compared with faces of the blended body). The necessity to cover gaps that can appear between the blend surface and body faces is another point of similarity with other local operations. As blending offers a variety of means of closing gaps, the question arises of how to give the user a convenient means of specifying which one of several methods should be used for closing a particular (and probably unexpected) gap. It seems likely that some combination of user-set defaults and special attributes attached to entities at which the gaps appear will give sufficient control.

How local is local? Blending began as a ‘local’ operation in which each implicitly blended edge or vertex was replaced by a small face. We could term this ‘strictly local’ blending if it gives a one-to-one correspondence between implicit blends declared and sheet faces made. Users, however, would soon chafe if confined to such restricted blends and in any case would not be able to predict whether a blend of a particular size would turn out to be strictly local or not. Allowing larger blends is certainly very useful but it increases greatly the number of possible configurations and complicates the blend algorithms. There can now be more or fewer blend faces than implicit blend attributes and we must be constantly on the alert for unexpected joining of separately made sheet faces and for unexpected gaps between sheet faces made for adjacent implicit blends. Once the blend size equals or exceeds the size of local detail in the blended body, we are in a position perhaps akin to that experienced by Booleans when the size of local details is comparable to the length tolerance in force. Unfortunately we arrive at this point very much sooner in blending than in Booleans and users are far less ready to accept restrictions imposed by the modeller. In Booleans there have been some glimmers of hope that comprehensive and reliable algorithms might be developed. Can we expect that something similar could be done for blending?

blending

of boundary

models: I C Braid

problem of how to specify the properties of the vertex blend since the vertex will have been replaced by the faces and edges of the mitre. On the other hand, if the vertex is blended before its edges, those edges will be shortened by the vertex blend and their subsequent blending will require blending of the unshortened edges and changes to the existing vertex blend at the end of the edge.

Editing of explicit blends As the shape and extent of a blend are impossible to predict accurately in advance, there will often be times when blends must be changed. At one extreme, an undo operation allows alteration of a blend just made, while at the other, some kind of high-level record of a design sequence permits the design to be altered and replayed provided the alterations are not so great as to invalidate the remainder of the stored sequence. But there remains the need for general editing of blends after they have been made explicit. For instance the designer might make a blend, evaluate it, divide the blend in two by a Boolean operation, and then want to change one of the pieces of the original blend. This brings us back to local operations such as ‘tweaking’. Small changes to blend geometry that leave the arrangement of faces and edges unchanged are not difficult to provide. Where the topology does change but not too much, other local operations can help. For example, if the new face created for a blend can be marked as a feature and pulled off, the original unblended edge may reappear. But where a blend has travelled on to remote faces and has swallowed up multiple faces of the unblended body, too much information may have been lost for the original faces to be restored. This may not matter provided the gap left by the depleted blend faces can be filled in some reasonable way, but that will not always be possible. Conceivably, cellular models could offer another solution whereby evaluation of a blend does not destroy the original blended entities but simply adds the blend sheet to the model as a new cellular dividing wall. It seems likely that in designs of practical complexity, the quantity of extra data retained would soon grow to an unmanageable size and inflict an unacceptable overhead on time and space consumed.

Implicit versus explicit blends Is the distinction made above between implicit and explicit blends necessary? Could the user simply indicate edges to be blended one at a time and see the blends appear immediately as each edge is picked? Such a scheme would be feasible and might sometimes make for a more convenient user interface. But it would be more difficult (for user and implementor) since a blend once built and incorporated into the model would have to change afterwards as its adjacent blends were specified. A blend of one edge, intended to continue along a second edge tangent to the first, would have to be temporarily closed off in some way, perhaps by a new surface as for a stopped chamfer (see Figure 20). Vertex blends, whose definition usually depends on the blends of the edges at the vertices, also present difficulties. If the edge blends are made first, the blend faces for the edges will have to be intersected (mitred) where they meet. There is then the

Figure 20

A sequence of immediately-evaluated

blends

99

Non-local

blending

of boundary

models: I C Braid

CONCLUSION The power and convenience of blending are great. Much industrial design can be done without recourse to detailed design of spline surfaces if instead we use Booleans to block out a shape, followed by local operations to adjust surfaces and blends to round off carefully the edges and corners. Developers will continue to be pressed to provide better quality blends, more finely controlled especially in the way that curvature changes at blends, since quality of blends is a large factor in giving an appearance of quality to a product. But like other local operations, blending is untidy. To define precisely what blends do in a particular system, if attempted at all, can take pages of a user manual. Fast, reliable and predictable blending supplemented with helpful error reporting remains a goal desired by many and it is to be hoped that researchers will continue to tackle the geometrical and typological challenges posed by blending.

ACKNOWLEDGEMENTS This paper draws on experience gained when developing blending in the ACIS geometric modeller. The author gratefully acknowledges the continuing part played in this work by his colleagues at Three-Space Ltd, D-Cubed Ltd, and Spatial Technology Inc. Although ACIS has

100

been used in preparing the illustrations, it should not be assumed that ACIS offers or will offer all the blending operations described. The opinions expressed are the author’s REFERENCES I.

2.

3.

Plowman, D. and Charrot, P., A practical implementation of vertex blends surfaces using an n-sided patch. In-Mathematics of Surfaces VI., ed. G. Mullineux. Clarendon Press, Oxford, 1996, pp. 61718. Vida. J., Martin, R. R. and Varady, T. A survey of blending methods that use parametric surfaces. Computer-Aided Design, 1994. X(5), 341-365. Woodwark, J. R. Blends in geometric modelling. In The Mathematics of Surfaces II, ed. R. R. Martin., 1987, pp. 225-297

Ian Braid has a BE in mechanical engineering from the University of Melbourne and PhD in computer science from the University of Cambridge. His doctoral dissertation ‘Designing with volumes’ (1972) described an early study of building up shapes using Boolean operations applied to primitive volumes. He was a founder of two Cambridge companies, Shape Data Ltd and Three-Space Ltd, that offer geometric modelling kernels. In recent years he has been mainly concerned with blending operations in the ACIS modeller. J