Extending and Customising Xj3D

Xj3D is a very flexible toolkit. There are many things that you can do with the code - up to and including implmenting a completely different event model. One of the goals of the Xj3D project is to validate the work being done on the X3D specification before the words are set in stone by the ISO process. To do this, we needed to provide the ultimate in flexibility, so that we could change pieces at will. That turns out to be your bonus - you too can play with the same pieces we do and extend the code in ways never imagined.


Before delving into how to extend Xj3D, you need to understand just what you are going to get yourself into. To do this, we first point you to the architecture documents. The architecture documents will introduce you to the various parts of the codebase. From now on, we assume you have read and are familiar with the high-level architecture and also some of the detail.

Xj3D runs a very componentised architecture. Each piece of the process is placed in its separate box. Therefore, we put the parser in one box, the scene builder in another box, rendering code in another etc. Each of these pieces can be extended or replaced wholesale. However, we do have to maintain some semblence of normality so between each of these boxes, are a well-defined, fixed set of interfaces. Your job, as someone wanting to extend the functionality of Xj3D is to work within these interfaces, and not to change them outright.

You will find that, depending on what you want to change/extend, each will involve a different process. The process for adding parsers for a new file format is different to adding a new component or defining a new profile. Due to the variety of tasks you can perform, each is covered in a separate page.

[ Xj3D Homepage | Xj3D @ Web3d | Screenshots | Dev docs | Dev Releases | Conformance | Contributors | Getting Started ]
Last updated: $Date: 2004-04-30 04:50:26 $