implementation of x3d specification with cl-opengl (using opengles 2.0 API)
Common Lisp
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
XMLisp @ d948af5
examples
test
.gitmodules
LICENSE.txt
NOTICE.txt
README.org
cad-geometry.lisp
cl-3d.asd
compile.lisp
concepts.lisp
core.lisp
cube-map-environmental-texturing.lisp
devices.lisp
distributed-interactive-simulation.lisp
environment-sensor.lisp
environmental-effects.lisp
event-utilities.lisp
follower.lisp
geometry-2d.lisp
geometry-3d.lisp
geospatial.lisp
graphics.lisp
grouping.lisp
humanoid-animation.lisp
interpolation.lisp
key-device-sensor.lisp
layering.lisp
layout.lisp
lighting.lisp
main.lisp
navigation.lisp
networking.lisp
notes.org
nurbs.lisp
opengl.lisp
package.lisp
particle-systems.lisp
picking-sensor.lisp
pointing-device-sensor.lisp
programmable-shaders.lisp
rendering.lisp
ridgid-body-physics.lisp
run.lisp
scene.lisp
scripting.lisp
shape.lisp
sound.lisp
text.lisp
texturing-3d.lisp
texturing.lisp
time.lisp
types.lisp
util.lisp
window.lisp

README.org

cl-3d (Rendering X3D in Common Lisp)

  • This work is ongoing and not yet ready for production. My goal is to develop a scenegraph in common-lisp based on the X3D specification. Currently I autogenerate an X3D (XML) parser from one of my other projects called cl-3d-creator.
  • The autogenerator simply reads X3D’s schema definitions and generates a parser based on XMlisp to read XML directly into lisp objects. The idea is to autogenerate as much as the boiler plate code as possible and fill in the rest of the stuff manually.
  • Ideally I would like to keep the manual code as minimal and as organized as possible in order to enable me to make sweeping designing changes if needed. However the first priority is to get things working and worry about organization at a later stage.
  • My plan for now is to execute the project in two phases i.e create first optimize second. Phase II (optimization) starts midway of Phase I (creation) and we will slowly and smoothly transistion to more optimized implementation.

Phase I (Create)

All boiler plate code should be generated. Use opengl 1.1 or whatever is fastest to just make things work. This from a user perspective should be reasonably complete with basic rendering and interaction facilities working (non optimized).

This will be test driven development and the goal will be make the tests work. Our tests are basically X3D scripts taken from the following site.

http://x3dgraphics.com/examples/X3dForWebAuthors/

[*] 1. Basic

[x] make XMLisp accessable with asdf

[x] Parse X3d using xmlisp

[x] Implement run method and basic windowing

[x] Implement GLUT windowing mechanism as scene

[x] Add NOTICE.txt

[x] Implement NavigationInfo

[_] Try using the x3dForWebAuthors examples as-is

  • The examples are in X3D.
  • Figure out a way to directly load XML files.
  • This will bring down the development time since we will have all the examples already present and will help getting rid of the boilerplate code in examples.

[*] 2. GeometricPrimitives

[x] Box.lisp example

[x] Cone.lisp

[x] Cylinder.lisp

[x] GeometryPrimitiveNodes.lisp

[x] GeometryPrimitiveNodesWhiteBackground.lisp

[x] Sphere.lisp

[x] Text.lisp

[_] TextLengthMaxExtent.lisp

[_] TextSpecialCharacters.lisp

[_] 3. Grouping

[_] 4. Viewing Navigation

[_] 5. Appearence Material Textures

[_] 6. Geometry Points Lines and Polygons

[_] 7. Event Animation Interpolation

[_] 8. Interactivity

[_] 9. Event Utilities Scripting

[_] 10. Geometry 2D

[_] 11. Lighting Environment Effects

[_] 12. Environment Sensor Sound

[_] 13. Geometry Triangles Quadrilaterals.

[_] 14. Prototypes

[_] 15. MetaData

Phase II (Optimize)

General notes and ideas