|
|
|
|
Z-buffer use in drawing 2 1/2 D non-photorealistic shapes. |
|
|
|
|
|
Line drawings drawn differently for algorithmic ease. |
|
|
|
|
|
Achieving a specific rendering goal efficiently, several different methods. |
|
|
|
|
|
All techniques pretty familiar, but the application is novel. |
|
|
|
|
|
------- |
|
|
|
|
1 |
Rendering fillets |
Rendering fillets |
2 |
|
================= |
3 |
|
|
4 |
Fillets (Lukka, Kujala and Niemelä, Information Visualization'02 |
Fillets (Lukka, Kujala and Niemelä, Information Visualization'02 |
5 |
conference, reprint available on request) are graphical technique for |
conference, reprint available on request) are graphical technique for |
9 |
"Introduction to Implicit Surfaces", Morgan Kaufmann 1997), |
"Introduction to Implicit Surfaces", Morgan Kaufmann 1997), |
10 |
mean the fillings used for sharp crevices to avoid breaking of the finished |
mean the fillings used for sharp crevices to avoid breaking of the finished |
11 |
object at the sharp corners. Our use of fillets here is analogical: |
object at the sharp corners. Our use of fillets here is analogical: |
12 |
we use fillets to avoid the viewer's perception breaking the object and |
we use 2 1/2 D fillets to avoid the viewer's perception breaking the object and |
13 |
the line into separate pieces. |
the line into separate pieces. |
14 |
|
|
15 |
Drawing fillets is difficult |
We present two complementary approaches to rendering fillets: |
16 |
|
using pre-rendered textures for the shapes and minimizing the polygon |
17 |
|
use of the algorithm, and rendering the shape in full using polygons, |
18 |
|
giving maximum flexibility to the shapes. |
19 |
From the GPU perspective, the techniques presented |
|
20 |
|
For the polygonized algorithm, we show how edges of constant thickness |
21 |
|
(even textured along the edge dimension) can be rendered for |
22 |
|
2D shapes which are the union of simpler shapes using the Z-buffer. |
23 |
|
|
24 |
None of the techniques presented are particularly novel, but applying |
None of the techniques presented are particularly novel, but applying |
25 |
them to the novel problem (rendering fillets) allows a goal-oriented |
them to the novel problem (rendering fillets) allows a goal-oriented |
29 |
comprehensively; this proposal is more concerned on vertex processing |
comprehensively; this proposal is more concerned on vertex processing |
30 |
and the other on fragment processing. |
and the other on fragment processing. |
31 |
|
|
32 |
|
If we get our NV3X cards in time, we may also be able to implement |
33 |
|
and demonstrate a filleting algorithm based on fragment programs, |
34 |
|
in somewhat the same way as the torn viewport algorithm. |
35 |
|
|
36 |
|
Our current implementations are OpenGL1.3 with NV extensions but we |
37 |
|
can easily rewrite them using Cg. |
38 |
|
|
39 |
|
--- Figures |
40 |
|
|
41 |
|
Fig.1. The basic premise of fillets in graph visualization. |
42 |
|
a) An inherently ambiguous diagram, which can mean |
43 |
|
either the structure in b) or c). |
44 |
|
In d), the two conditions are shown by the conventional drawing |
45 |
|
method of erasing the edge that goes behind something, |
46 |
|
and in e) fillets are used. Fillets display the structure clearly. |
47 |
|
[ boxline-ambiguity, ink-erase, edgeless ] |
48 |
|
|
49 |
|
Fig.2. The way alpha compositing can be used to render fillets |
50 |
|
from pre-drawn images with minimal polygon budgets. |
51 |
|
[ alphaimgs ] |
52 |
|
|
53 |
|
Fig.3. How vertex programs can be used to bend the connection |
54 |
|
so that it both leaves and enters nodes at a certain location. |
55 |
|
This is important for some of our user interfaces. |
56 |
|
[ screenshot from fillets demo showing both wireframe and normal ] |
57 |
|
|
58 |
|
Fig.4. A more flexible algorithm for creating filleted shapes. |
59 |
|
This algorithm has to create the shape from polygons instead |
60 |
|
of prerendered textures. |
61 |
|
|
62 |
|
Fig.5. How edges of constant thickness and even of textures can be drawn |
63 |
|
for the general polygonized shape using the Z buffer. |
64 |
|
In this way, fillets starting from a node can be allowed to overlap. |
65 |
|
This is an adaptation of the old Voronoi diagram hack for GPUs. |
66 |
|
Note that because of the flexibility of GPUs, the actual appearance |
67 |
|
of the polygons drawn need not depend at all on the Z coordinate. |
68 |
|
|
69 |
|
Fig.6. A random, badly laid out graph rendered using the polygonized |
70 |
|
algorithm. To demonstrate the edge-drawing system, we have used a 1D |
71 |
|
texture on the edge, creating two thin lines on the edges. The shapes |
72 |
|
are unbroken. |
73 |
|
|
74 |
|
Fig.7. Of course, since we're bevelling inside, we *can*, if we want to, |
75 |
|
also show the bevels using light. However, the angles of the bevels |
76 |
|
seen in the image need not correspond at all to the actual angles |
77 |
|
in the Z-buffer. |
78 |
|
|
79 |
|
|
80 |
|
|
81 |
|
|
82 |
|
|