(Outdated) Overview of the Castle Game Engine and VRML 1.0
Copyright © 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2022 Michalis Kamburelis
You can redistribute and/or modify this document under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
Table of Contents
- Goals
- 1. Overview of VRML
- 2. Scene Manager
- 3. Reading, writing, processing VRML scene graph
- 4. Octrees
- 5. Ray-tracer rendering
- 6. OpenGL rendering
- 7. Animation
- 8. Shadow Volumes
- 9. Links
List of Figures
- 1.1. VRML 1.0 sphere example
- 1.2. VRML 2.0 sphere example
- 1.3. Cylinder example, rendered in wireframe mode (because it's unlit, non-wireframe rendering would look confusing)
- 1.4. VRML points example: yellow point at the bottom, blue point at the top
- 1.5. A cube and a sphere in VRML 1.0
- 1.6. An unlit box and a sphere in VRML 2.0
- 1.7. A box and a translated sphere
- 1.8. A box, a translated sphere, and a translated and scaled sphere
- 1.9. Two cones with different materials
- 1.10. A box and a translated sphere using the same texture
- 1.11. Three columns of three spheres
- 1.12. Faces, lines and point sets rendered using
the same
Coordinate
node - 1.13. Spheres with various material in VRML 1.0
- 1.14. An example how properties “leak out” from various grouping nodes in VRML 1.0
- 1.15. Our earlier example of reusing cone inlined a couple of times, each time with a slight translation and rotation
- 1.16. Textured cube with various texture transformations
- 1.17. Viewpoint defined for our previous example with multiplied cones
- 1.18. Three towers with various
creaseAngle
settings - 2.1. Three 3D objects are rendered here: precalculated dinosaur animation, scripted (could be interactive) fountain animation, and static tower.
- 2.2. Simple scene, viewed from various viewports simultaneously.
- 2.3. Interactive scene, with shadows and mirors, viewed from various viewports.
- 4.1. A sample octree constructed for a scene with two boxes and a sphere
- 4.2. A nasty case when a box is considered to be colliding with a frustum, but in fact it's outside of the frustum
- 5.1. lets_take_a_walk scene, side view
- 5.2. lets_take_a_walk scene, top view
- 5.3. Generated ground texture
- 5.4. lets_take_a_walk scene, with ground texture. Side view
- 5.5. lets_take_a_walk scene, with ground texture. Top view.
- 6.1. All the trees visible on this screenshot are actually the same tree model, only moved and rotated differently.
- 6.2. The correct rendering of the trees with volumetric fog
- 6.3. The wrong rendering of the trees with volumetric fog, if we would use the same arrays/VBO (containing fog coordinate for each vertex) for both trees.
- 6.4. Rendering without the fog (camera frustum culling is used)
- 6.5. Rendering with the fog (only objects within the fog visibility range need to be rendered)
- 6.6. The ghost creature on this screenshot is actually very close to the player. But it's transparent and is rendered incorrectly: gets covered by the ground and trees.
- 6.7. The transparent ghost rendered correctly: you can see that it's floating right before the player.
- 6.8. Material transparency with random stipples
- 6.9. Material transparency with regular stipples
- 8.1. Fountain level, no shadows
- 8.2. Fountain level, shadows turned on
- 8.3. Fountain level, edges marked
- 8.4. Fountain level, only edges
- 8.5. Ghost shadows
- 8.6. Lack of shadows, problem analogous to ghost shadows
- 8.7. A cylinder capped at the top, open at the bottom
- 8.8. Cylinder open at the bottom with shadow quads
- 8.9. Cylinder open at the bottom with shadow edges
- 8.10. Good shadow from a single triangle
- 8.11. Good shadow from a single triangle, with shadow volumes drawn
- 8.12. Bad shadow from a single triangle