Where to stand

Facing the reader is not being reachable

A face turns toward the eye or it does not, and that is a dot product any reader can compute. Whether the eye’s rays actually land on it is a different question with a different answer — on a seating rake, three faces of ten that face the reader receive nothing, and they are 27 per cent of the facing area. On a corner the same test loses nothing at all, which is what makes the gap occlusion rather than arithmetic.

Worth reading first: Anamorphosis is only a viewpoint · When the picture surface is not flat.

What an eye can paint counts the faces of an object a design reaches and finds that every folded object withholds some of itself. It does not say why a face is withheld, and there are two quite different reasons.

A face may be turned away — its outward normal pointing off into the room, so that no ray from the eye could arrive on its front no matter how the design were arranged. Or it may be turned toward the eye and hidden behind something else.

The first is a dot product. The second needs the whole object, and it is the one worth measuring.

Facing the reader is not the same as being reachableA cluster of blocks from beside the design eye. The faces filled are the ones the design actually reaches; the faces hatched turn toward the eye and receive nothing, because a nearer block took the ray first. 4 of the 12 facing faces are in that state, 3.24 square metres of surface that a facing test would have called paintable.horizonfaces the eye, gets nothingfaces the eye, gets nothingcorrect from 21 cm, at 160 mm wide4 facing faces unreached · 3.24 m²
Fig. 1 A cluster of blocks: the filled faces receive design, the hatched ones turn toward the eye and receive nothing.

Two tests, one of which is cheap

A reader working by hand does the cheap one. For each face, take its outward normal and the direction to the eye; if the two agree, the face is turned toward the reader and is a candidate for paint.

That test is local, needs nothing but the face, and is what every back-face cull in every renderer computes. It is also what a person standing in front of an object does by eye, since a face turned away is invisible and a face turned toward is not.

The honest test is not local. A face is reached if some ray from the eye, through the intended picture, lands on it first — before any other face of the object gets in the way. That requires the whole object at once, and it is what the anamorph construction actually does.

Between the two lies occlusion, and the size of the gap is this essay.

The gap, measured as an area

Counting faces is the wrong unit and it is worth saying why before quoting any number. An object’s faces are not the same size: a corridor’s end wall and a stair’s tread differ by a factor of ten in area, and a count treats them as one thing each.

So the measurement is area: of the surface that faces the eye, how much does the design never reach?

From an eye 1.7 metres up:

A flat floor: nothing. One face, facing, reached.

A corner: nothing. Two faces, both facing, both reached.

A cluster of blocks: four faces of the twelve that face the eye receive nothing — 8 per cent of the facing area, 3.2 square metres.

A seating rake: three of ten, and 27 per cent of the facing area, because the faces hidden are large ones.

An ascending flight: three of eighteen, 21 per cent.

A descending flight: two of nine, 22 per cent.

The two controls are what make the rest a measurement. A plane and a corner lose nothing, so the test is not systematically pessimistic; the objects with things in front of other things lose between a twelfth and a quarter of what a facing test would have promised.

Which faces are lost, and why

On the cluster the four lost faces are named, and their names are the mechanism.

Two of them belong to a block standing behind a taller one: its top and its near face both turn toward the eye and both are in the taller block’s shadow. One is that block’s right side, hidden for the same reason. And one is the top of a third block that the design’s own rays clear entirely — a face that faces the eye and is outside the cone of the picture, which is a fourth category the essay should not confuse with occlusion.

That fourth category is worth separating explicitly, because it is not occlusion and it is not a fold. A design is a bounded rectangle of rays, so faces outside that cone are missed however visible they are. Enlarging the design would reach them; nothing enlarges a design onto a face hidden behind another.

So there are three reasons a face goes unpainted, and only the middle one is new here: turned away, hidden behind something, or outside the design’s own cone.

Facing the reader is not the same as being reachableA cluster of blocks from beside the design eye. The faces filled are the ones the design actually reaches; the faces hatched turn toward the eye and receive nothing, because a nearer block took the ray first. 4 of the 11 facing faces are in that state, 2.82 square metres of surface that a facing test would have called paintable.horizonfaces the eye, gets nothingfaces the eye, gets nothingcorrect from 21 cm, at 160 mm wide4 facing faces unreached · 2.82 m²
Fig. 2 From a lower eye, where more of the cluster hides behind itself.

Raising the eye clears it, exactly

Occlusion is the reason a higher eye reaches more, and the clearing can be watched.

On the cluster of blocks, the facing area that goes unreached falls from 7.5 per cent at 1.2 metres, through 8.3 at 1.7 and 4.9 at 2.1, to zero at 4.4 metres. Above that height every face that turns toward the eye is reached: the eye is over the top of the front block and nothing is behind anything any more.

That is a clean shape and it is the reason the previous rung’s sweeps are monotone. What a higher eye buys is not a better view of the faces it already had — it is the faces occlusion was withholding, and once they are all released there is nothing further to buy.

The number to carry is that occlusion is a property of the arrangement and has an end. It is not an asymptotic penalty that a designer trades against something else; there is a height above which it is exactly zero, and it is computable in advance from the objects’ own heights and spacings.

The clearing height, written down

“Computable in advance” is worth carrying out, because the expression says which arrangements clear easily and which never clear at all.

Take a face at distance d2d_2 whose top is at height H2H_2, hidden behind an occluder at d1d_1 whose top is at H1H_1. The sight line grazing the occluder passes, at d2d_2, through height h(hH1)d2/d1h - (h - H_1)\,d_2/d_1, and the face is released when that drops to H2H_2:

hclear  =  H1d2H2d1d2d1.h_{\text{clear}} \;=\; \frac{H_1 d_2 - H_2 d_1}{d_2 - d_1}.

The object’s clearing height is the largest of these over every occluding pair, and nothing about the design enters — not its size, not its position, not the picture. Occlusion is a property of the object and the reader, and the design has no say in it, which is what separates it from the third category above.

Two readings. A stepped object clears when the eye rises above its own pitch line. For a flight or a rake the occluder is the nosing in front and the hidden face is the tread behind, so the condition reduces to the eye’s depression exceeding arctan(s/g)\arctan(s/g) — 0.567 for a stair and 0.500 for a rake — and the eye has to sit above the plane of the nosings produced back to where the reader stands. That is the sightline condition an auditorium is designed to, arrived at from the other end.

And two things close together are never cleared. As d2d1d_2 \to d_1 the denominator vanishes and hclearh_{\text{clear}} runs to infinity, so a low face immediately behind a taller one is hidden from every eye at any height. The cluster’s 4.4 metres is finite only because its blocks are well spaced; pack them tighter and the sweep would flatten out above zero instead of reaching it.

Facing the reader is not the same as being reachableA cluster of blocks from beside the design eye. The faces filled are the ones the design actually reaches; the faces hatched turn toward the eye and receive nothing, because a nearer block took the ray first. 0 of the 12 facing faces are in that state, 0.00 square metres of surface that a facing test would have called paintable.horizoncorrect from 21 cm, at 160 mm wide0 facing faces unreached · 0.00 m²
Fig. 3 The height at which the last hidden face is released, and the facing test and the ray test agree exactly.

The rake is the worst case and the reason is its shape

Twenty-seven per cent is the largest loss in the table and it belongs to the seating rake, which is not the object with the most faces or the most complicated arrangement.

It is the object whose hidden faces are large. A rake’s treads are 0.9 metres deep and its risers 0.45, so a tread is twice the area of a riser; and from a standing eye at the foot of it, the treads high up the rake are hidden behind the risers in front of them. Three large faces lost is a quarter of the facing area, where three of a flight’s small ones is a fifth.

A face count would have reported the rake as losing three of ten and the ascending flight as losing three of eighteen, and would have called the flight the better-behaved object. By area the two are within six points of each other, and the rake is worse.

This is the general reason the area is the right unit, and it is the same reason the stair’s own headline is stated as a share of the picture on a share of the surface rather than as a count of faces.

a seating rake, and the 7 of its 13 faces the design reachesa seating rake seen from beside the design eye, which is 1.70 m up and 2.4 m in front of the picture. Each dot is where one ray from that eye through the intended picture lands, drawn for every second ray in each direction; the colour is the kind of face it landed on. 7 of the 13 faces receive anything at all, 52% of the surface by area, and 100% of the design finds the object. The faces drawn faint are the ones no ray reaches.horizoncorrect from 21 cm, at 160 mm wide7/13 faces · 52% of the surface
Fig. 4 The rake from a standing eye, with the large faces high up the slope receiving nothing.

The same distinction, elsewhere in the collection

Occlusion is not new to this site; what is new is measuring the gap between the cheap test and the honest one. Three other rungs have the same structure and are worth linking together.

A shadow’s edge is drawn on the object rather than on the floor. The contour generator is exactly the boundary between the lit and unlit parts of a caster, and it is decided by the same first-hit rule as this one — which is why a lamp and a design eye are two names for one construction.

A silhouette cannot reach a concavity. What a silhouette cannot reach measures a part of an object that no view’s outline ever touches, however many views are taken. That is occlusion by the object’s own shape, and it is permanent rather than a function of one eye.

And a visual hull is what survives it. The set of points consistent with every silhouette is larger than the object, and the difference is exactly what occlusion hid.

The family resemblance is that in each case a local test — is this face turned toward the light, is this point on the outline, is this face visible — is being asked to stand in for a global one, and the difference is measurable.

Every outline this object has, from 8 directionsA cross-section with a bite taken out of it, and the region every one of 8 outlines admits. Each view contributes a pair of supporting lines — an outline is a pair of numbers per direction and nothing more — and the visual hull is what is left when all of them have cut. It has area 3.1098 against the object's 2.9193. Adding views shaves the corners between the tangents, and no number of them touches the notch: the convex hull, at 3.0749, is the floor. The bite is 5.3% of the object and it is invisible to outlines from every direction at once.hull 3.1098 · object 2.9193 · floor 3.07498 outlinesthe notch survives all of them
Fig. 5 The permanent version of the same loss: a concavity no view’s outline reaches, whatever the eye does.

The object had to be rebuilt to measure this

The cluster of blocks in these figures is the second one, and the first is worth recording because its failure is the essay’s own subject.

The first arrangement was three blocks standing side by side on the floor at different heights — a perfectly reasonable “cluster”, chosen to look like something. Measured, it lost 3.6 per cent of its facing area, and the loss was a single face grazing the edge of the design’s cone.

That is a number, and it is a number about nothing: three objects arranged in a row do not hide each other, so the arrangement had no occlusion in it to measure. A gate asserting that a cluster loses facing area would have been asserting that one face was nearly edge-on.

So the cluster was rebuilt with one block standing behind another and shorter than it, which is the arrangement occlusion actually happens in, and the loss went to 8 per cent with four faces in it and a clean dependence on the eye’s height.

The general lesson is one this collection keeps writing down in different words: a control has to contain the thing being measured. An object chosen for its appearance measures the appearance. It is the same error as measuring conformality along the one tangent basis where it cannot fail and as computing a sensitivity in a variable nobody perturbs — a test evaluated at the input where it has nothing to say.

Facing the reader is not the same as being reachableA cluster of blocks from beside the design eye. The faces filled are the ones the design actually reaches; the faces hatched turn toward the eye and receive nothing, because a nearer block took the ray first. 4 of the 12 facing faces are in that state, 3.24 square metres of surface that a facing test would have called paintable.horizonfaces the eye, gets nothingfaces the eye, gets nothingcorrect from 21 cm, at 160 mm wide4 facing faces unreached · 3.24 m²
Fig. 6 The rebuilt cluster, where one block stands behind another and the hidden faces are real.

What the numbers depend on

The percentages above are facts about five particular objects, and a reader should know which of their properties the numbers track.

The ratio of heights, not the heights. A block hides another when it is taller than the sightline over it, so the whole measurement is scale-free: doubling every dimension and every distance leaves every share unchanged. That is the same scale-freedom a pinhole gives everywhere, and it means the figures here can be read as being about a model on a table or a plaza.

The eye’s height relative to the object’s, which is what the sweep varies and is the only quantity with an end to it.

And the design’s own size, which decides how much of the object is inside the cone at all — a separate effect that a measurement of occlusion has to keep separate, and which is the reason the fourth category above is named rather than folded in.

What the numbers do not depend on is the design’s content, the surface’s material, or anything about paint. The whole calculation is rays and first hits.

What a designer should do about it

Three practical consequences, in the order they would come up.

Do not plan a design from a facing test. The faces a facing test promises include some that are hidden, and on a rake a quarter of the promised area is not there.

Raise the eye if the object is a stack, and consider whether the object could carry a second picture for a second eye instead of a larger one for the first. Occlusion is the whole of what a higher eye buys, and it ends: on the cluster it is gone by 4.4 metres, and above that there is nothing further to gain.

And check the design’s own cone separately — a face outside it is missed rather than hidden, and the region an eye may occupy is a different constraint again. A face may be missed because the design does not extend that far, which is a different problem with a different fix — enlarge the design, or move the eye back — and a face count that lumps the two together will send a designer to solve the wrong one.

The faces that turn toward the reader and receive nothingA face **faces** the eye if its outward normal has the eye on its own side, which is the test a reader would do by hand. It is **reached** if some ray from the eye through the design lands on it first. The bar is the share of the facing area that is never reached, from an eye 3.20 m up: a corner loses 0% and a cluster of blocks 3%, because something nearer took the ray. The counts beside the bars are faces rather than area, and they tell a different story for the same reason a corridor's end wall and a stair's tread are not one thing each.facing the reader, and never reacheda corner0%of the facing area · 0 of 2 facesa cluster of blocks3%of the facing area · 2 of 12 facesa seating rake19%of the facing area · 2 of 13 facesa corridor with a doorway0%of the facing area · 0 of 7 facesan ascending flight7%of the facing area · 1 of 18 faceseye at 3.20 m, 2.4 m in front of the picturearea, not face count
Fig. 7 The same table from a higher eye, where most of the occlusion has cleared and the remaining losses are of the other two kinds.

One number that is not a share

All of the above is stated as a fraction, and there is one absolute quantity worth pulling out of it because it is the one a painter would be given.

On the cluster of blocks from a standing eye, the surface that faces the reader and receives nothing is 3.2 square metres — roughly a door. That is not a rounding error in a design; it is a face and a half of usable wall that a plan drawn from a facing test would have allocated picture to, and which would have been found empty on the day.

The rake’s loss is 7.9 square metres, which is most of a small room’s floor.

Quoting the absolute figure alongside the share matters because the two answer different questions. The share says how much of the facing test’s promise is wrong, which is a fact about the method. The area says how much wall is involved, which is a fact about the job.

The renderer’s version of the same test

The cheap test in this essay is the one every graphics pipeline runs, and it is worth saying exactly how a renderer avoids the error this rung measures — because it does avoid it, by a completely different route.

A renderer culls back faces with the dot product above and then resolves what remains with a depth buffer: every face is drawn, and each pixel keeps whichever fragment is nearest. So the facing test is used as an optimisation and the first-hit question is answered separately, per pixel, by the machinery the pipeline field measures.

That is the right architecture and it is not available to a designer with a stencil and a brush, which is the practical difference this rung is about. A painter has to know in advance which faces will receive picture, because the answer decides where the scaffolding goes and how much paint to buy — so the question a renderer answers lazily, one pixel at a time, is one an anamorph’s designer has to answer eagerly, for the whole object, before starting.

The measurement here is that eager answer, and its cost is a ray cast per design point against every face. That is exactly the calculation a renderer would call slow and a painter would call cheap, since it takes a second and the alternative is a week of scaffolding in the wrong place.

The short version

A face turns toward the eye or it does not, which is a dot product; whether the design reaches it needs the whole object.

The gap between the two is occlusion, and measured as an area it is between a twelfth and a quarter of the facing surface on every object with anything standing in front of anything — 27 per cent on a seating rake, whose hidden faces are its largest. A plane and a corner lose nothing, which is what makes the gap a fact about arrangement.

Raising the eye clears it entirely, at a computable height, and buys nothing after that.

Facing the reader is not the same as being reachableA cluster of blocks from beside the design eye. The faces filled are the ones the design actually reaches; the faces hatched turn toward the eye and receive nothing, because a nearer block took the ray first. 3 of the 12 facing faces are in that state, 1.92 square metres of surface that a facing test would have called paintable.horizonfaces the eye, gets nothingfaces the eye, gets nothingcorrect from 21 cm, at 160 mm wide3 facing faces unreached · 1.92 m²
Fig. 8 Halfway up, with the near block’s shadow shortening and two faces released.

What links here

Computed from the collection, not written here: the essays that point at this one.

Shares its objects with

Essays that name at least two of the same things, and that neither author linked.

Named objects

A flat tag is an object no other essay names yet.

AnamorphosisContour generatorIdentifiabilityOcclusionOutlinePicture surfacePiecewise mapReceiving surfaceViewing positionVisual hull