Let me start with the results of our rendering technique that is displayed here. Our approach enables the clipping against a more general parameterization of a clipping plane. The major improvement here, is an additional height information represented by a so-called offset texture map. This parameterization produces the irregular cut-edges you can see in the animation. Further, our approach performs the automatic capping of the occurred gaps after clipping. [--CLICK--]
These Relief-Clipping Planes can be used to interactively create more realistic cut-away views. The advantages of our technique lays in the resulting non-regular silhouettes, and the cap-surface enables the possibility to convey more complex inner structure. The two main contributions I like to present today are the new clipping plane parameterization and our new capping approach. Our goals were the hardware accelerated implementation to achieve real-time frame rates for interactive configuration of the respective parameterizations. [--CLICK--]
At first let us start with the definition of a relief-clipping plane. The basic relief clipping plane parameterization consists of the following 5 parameters: the plane origin O, the direction vector U, V, distinguished to support anisotropic adjustments, a scaling factor S that can be used to adjust the texture coordinate generation for the Offset Map OM. RCP can be enhance with further attributes that define the appearance of the cap surface, such as normal or diffuse texture maps. Given a number of such relief clipping planes we can perform clipping as follows [--CLICK--]
A point P is clipping if this half-space test returns true [--CLICK--] To calculate the sampling coordinates T for the offset map OM, we project P onto the given plane [--CLICK--] And then compute the normalized and scaled texture coordinates for sampling [--CLICK--] The last step depends on the type of offset map used. That means it differs for 1D, 2D, or 3D texture representations. [--CLICK--]
This concept can be easily implemented on modern graphics hardware using shading languages. So simple that it fit onto a single slide, but it still can be optimized. Here you can see an exemplary OpenGL Shading language implementation of our clipping approach. It implements the previous mentioned steps: Compile the plane equation [--CLICK--] Project input point onto that plane [--CLICK--] Calculate texture coordinates and sample the offset texture map [--CLICK--] Perform the half-space test [--CLICK--] [--CLICK--]
Such function can be applied multiple time as you can see in this animation. Here we use three different offset maps which are applied within a single rendering pass. You can see also, that it is possible that relief clipping planes can be restricted in their area of influence. [--CLICK--]
After I present the clipping approach I’d like to focus on the second part of our contribution: the capping of occurred gaps. [--CLICK--] in this real-world example you see the surface where the crank is broken. To synthesis such picture in real-time is our goal. [--CLICK--]
It is important to convey and model the inner structure or material of the clipped mesh with maximal freedom for its appearance. A straight-forward solution is to derive a polygonal cap-surface a given relief-clipping plane. The rendering of such surface takes place after the clipping pass. Lets take a closer look on how such cap-surface can be created. [--CLICK--]
The cap-surface is generated by a 2 Phase process using dynamic mesh refinement on GPU in combination with displacement mapping and volumetric depth testing Phase A: A quad is constructed using the bounding box of clipping shape and clip-plane parameterization. The refined mesh is then displaced using the offset map and textured and shaded using specific styles. The generation of texture coordinate is similar as for the clipping approach. Phase B: Finally, the cap surface is clipped to the necessary parts. But, to apply this step we have to know where the gaps are, that have to be covered. The answer to that question is not a simple one. Lets take a closer look on our solution. [--CLICK--]
For standard clipping planes, capping is usually performed as a stencil technique using the back-face and front face polygon orientation information. A stencil mask of the visible back-face determine where to render the cap. Since the non-regularity of the clip-surface, this approach cannot be used for our clipping-approach. To answer the question which parts of the cap surface have to be clipped, we use an additional data structure displayed on the right. It enables a volumetric test if a point of the cap surface is inside or out-side this input mesh. The VDS is created during pre-processing. [--CLICK--]
Here you can see an example of an VDS created from a complex shape. The shape has a maximal depth complexity of 8 (along the z-axis). The VDS consists of eight depth maps representing layers of unique depth complexity. To use this data type we’ve made the following assumptions: The Clipped mesh has to be solid The Clipped mesh has to be static for optimal performance [--CLICK--]
So after such a representation is created we can perform volumetric tests on it. That means, we try to determine for a given point V if it is inside our outside the volume represented by an LDI. To model this property of being inside or outside, we use a Boolean parity which is assigned to V. That parity is determined in a two phase process. We first transform V into the 3D LDI texture space and then perform ray-marching through the depth maps. [--CLICK---]
Finally, let me draw some conclusions, I’ve presented a real-time rendering technique for relief-clipping planes that can be fully implemented on modern GPU. Our approach is applicable to arbitrary solid input meshes. The main drawbacks of our solution are the necessary additional data structure, that consumes additional GPU memory as well as the need for highly tessellate surfaces in order to avoid rendering artifacts For future work we‘re heading towards a generalized approach for clipping using surfaces as well as volumes. [--CLICK--]