What's it all about?For fairly obvious reasons, most data is used to represent things which are there. Empty space is transparent so there is no need to directly represent it. Thus, rendering algorithms are primarily concerned with correctly portraying solidity, not holes.
The problem is that there are a number of conceptual and procedural constructions (such as "put a window in that wall") which involve creating openings in something else which was already created.
So how do you put a window in a wall?The answer depends on the data type you are working with.
In a wireframe system you can safely ignore the question since the wall and opening are equally see-through. This is actually an attractive features for wire-frame models (or quick wire-frame renderings), you simply ignore any potential surface issues until later (you might use the wire-frame rendering as an underlay for a hand-drawn rendering, for example).
Boundary representation systems have the greatest difficulty with holes. On the one hand, every piece of data is assumed to be an opaque polygon, which is good for rendering. On the other hand, the data lacks the topological structure to property calculate true holes.
Some programs get around this with special data constructs for "windows" and include appropriate rendering modifications to make them transparent. While thus creating internal consistency, if you export their data to a more general system, the windows will not usually survive in a transparent state.
A trick which has been used in some other programs utilizes the fact that so much data is extruded from a simple 2D perimeter. A 2D "hole" is drawn within the 2D perimeter. By modifying the perimeter of the "parent" polygon (often using invisible edges) so that it includes the outline of the "hole" polygon, a hole can be added to the shape. This trick is limited in several ways:
- There can be only a single hole per extruded form,
- The hole must extend completely through the shape,
- The axis of the hole must be parallel to the axis of extrusion, and
- The hole must be contained within the parent polygon (i.e., its boundary cannot intersect the outer boundary)
These operations are called "Boolean operations" and are discussed further under Modeling.
Last updated: April, 2014