| Acknowledgments |
|
xi | |
| Introduction |
|
xiii | |
| Typeface Conventions |
|
xvii | |
| Suggestions for Further Reading |
|
xix | |
|
Introduction to 3D Graphics |
|
|
1 | (50) |
|
|
|
2 | (1) |
|
|
|
3 | (1) |
|
|
|
3 | (3) |
|
|
|
6 | (1) |
|
|
|
7 | (14) |
|
|
|
21 | (4) |
|
|
|
21 | (1) |
|
|
|
22 | (1) |
|
|
|
22 | (2) |
|
|
|
24 | (1) |
|
|
|
24 | (1) |
|
|
|
25 | (23) |
|
|
|
27 | (1) |
|
|
|
28 | (1) |
|
|
|
28 | (1) |
|
|
|
29 | (1) |
|
Using Matrices to Transform Vectors |
|
|
30 | (4) |
|
|
|
34 | (14) |
|
3D Graphics on the 2D Screen: Projection |
|
|
48 | (3) |
|
Introduction to Ray Tracing |
|
|
51 | (10) |
|
Overview of the Ray Tracing Process |
|
|
51 | (2) |
|
|
|
53 | (3) |
|
Intersection Calculations |
|
|
56 | (2) |
|
Objects, Inheritance, and Polymorphism |
|
|
58 | (3) |
|
|
|
61 | (16) |
|
|
|
62 | (1) |
|
A Note on Color Coefficients |
|
|
63 | (1) |
|
|
|
63 | (3) |
|
|
|
66 | (2) |
|
|
|
68 | (1) |
|
|
|
68 | (1) |
|
|
|
69 | (2) |
|
|
|
71 | (4) |
|
|
|
75 | (2) |
|
Different Types of Object |
|
|
77 | (70) |
|
|
|
77 | (10) |
|
|
|
78 | (1) |
|
|
|
79 | (1) |
|
|
|
80 | (1) |
|
|
|
80 | (1) |
|
|
|
81 | (1) |
|
Other Member Functions of Object3D |
|
|
81 | (6) |
|
|
|
87 | (7) |
|
|
|
94 | (2) |
|
|
|
96 | (6) |
|
|
|
102 | (3) |
|
|
|
105 | (19) |
|
|
|
124 | (15) |
|
|
|
139 | (5) |
|
|
|
144 | (3) |
|
|
|
147 | (20) |
|
Bounding Volumes and Hierarchies |
|
|
147 | (1) |
|
Automatic Bounding Volume Hierarchy Generation |
|
|
148 | (1) |
|
|
|
149 | (5) |
|
|
|
154 | (4) |
|
Kay-Kajiya Bounding Volume Hierarchy Traversal |
|
|
158 | (1) |
|
Techniques That Do Not Work Well |
|
|
158 | (3) |
|
|
|
159 | (1) |
|
|
|
160 | (1) |
|
|
|
161 | (4) |
|
|
|
161 | (1) |
|
|
|
162 | (1) |
|
|
|
163 | (1) |
|
|
|
163 | (1) |
|
|
|
163 | (1) |
|
|
|
164 | (1) |
|
|
|
165 | (2) |
|
|
|
167 | (30) |
|
|
|
167 | (1) |
|
|
|
168 | (1) |
|
|
|
169 | (1) |
|
Low-Level Support for Texture Mapping |
|
|
170 | (22) |
|
|
|
170 | (14) |
|
|
|
184 | (7) |
|
|
|
191 | (1) |
|
|
|
192 | (2) |
|
Texture Mapping and Transformations |
|
|
194 | (1) |
|
|
|
194 | (3) |
|
|
|
197 | (10) |
|
|
|
197 | (2) |
|
Adaptively Supersampling Primary Rays |
|
|
199 | (2) |
|
|
|
201 | (2) |
|
Distributing Reflected and Transmitted Rays |
|
|
203 | (1) |
|
|
|
204 | (1) |
|
|
|
205 | (2) |
|
|
|
207 | (56) |
|
Constructive Solid Geometry |
|
|
207 | (20) |
|
|
|
227 | (36) |
|
|
|
241 | (20) |
|
Finding Roots of a Polynomial |
|
|
261 | (2) |
| Appendix A Introduction to C++ |
|
263 | (20) |
|
|
|
263 | (1) |
|
|
|
264 | (4) |
|
A.3 Classes (Encapsulation) |
|
|
268 | (2) |
|
A.4 Scope Restriction (Data Hiding) |
|
|
270 | (1) |
|
|
|
271 | (1) |
|
|
|
272 | (2) |
|
|
|
274 | (2) |
|
A.8 Parameterized Data Types |
|
|
276 | (3) |
|
|
|
279 | (2) |
|
A.10 Conclusion and Further Reading |
|
|
281 | (2) |
| Appendix B The OORT Class Library and Utilities |
|
283 | (86) |
|
|
|
283 | (78) |
|
|
|
361 | (8) |
|
|
|
362 | (1) |
|
|
|
363 | (1) |
|
|
|
364 | (2) |
|
|
|
366 | (3) |
| Appendix C Glossary |
|
369 | (4) |
| Appendix D Bibliography |
|
373 | (6) |
|
|
|
373 | (1) |
|
|
|
374 | (5) |
| Appendix E Development |
|
379 | (16) |
|
|
|
379 | (5) |
|
E.2 The Application Template |
|
|
384 | (3) |
|
E.3 Splicing RAW Files Together |
|
|
387 | (4) |
|
E.4 Color Quantization: RAW2GIF |
|
|
391 | (1) |
|
|
|
392 | (1) |
|
|
|
392 | (3) |
| Appendix F Examples |
|
395 | (28) |
|
|
|
396 | (2) |
|
|
|
398 | (4) |
|
|
|
402 | (3) |
|
|
|
405 | (3) |
|
|
|
408 | (3) |
|
|
|
411 | (5) |
|
|
|
416 | (3) |
|
F.8 Sierpinski's Tetrahedron |
|
|
419 | (4) |
| Appendix G File Formats |
|
423 | (6) |
|
|
|
423 | (1) |
|
|
|
424 | (5) |
| Index |
|
429 | |