1. Introduction
Welcome to the 3dhtml project site. Here you'll find the information you need to create 3D applications using DHTML. See Appendix 7 # Copyright for open source licensing information.

1.1 What is 3dhtml?
3dhtml is a DHTML toolkit that supports the development of 3D applications.

The toolkit makes it easy for DHTML programmers to build their own animated three dimensional graphical applications with models, materials, transformations, modifiers, etc.

It gives developers high-level constructs for creating and manipulating 3D geometry and for constructing the structures used in rendering that geometry. In order to do so, it provides JavaScript libraries, documentation and a bunch of pretty examples.

The object-oriented libraries are written to work in cross-browser environments and offer a simple (but multiplatform and plugin-less) 3D framework using JavaScript.

In 2001, we participated in the 5k Web Contest 2001 with our submission Heart3D, a DHTML 3D spinning heart, hovering over a horizon, its own reflection underneath. This was a small 3D engine within 5k. Though we didn't score too high in the end results, the idea had come up that we should turn this into a proper tool. And so we did.

1.2 How to use 3dhtml (and how to learn it)
This toolkit is basically bundling a few JavaScript libraries that provide an Application Programming Interface (API) that allows the user to create and manipulate 3D objects in major DHTML-capable browsers. Detailed information can be found in the 5. API Reference.

To create 3D stuff with 3dhtml, you should have good knowledge of JavaScript and and it will be easier if you've already programmed object-oriented. If not it is no problem but you will probably need a bit more time.

You can skip the 3D Math Basics, but the Technical Background section is important to understand the special approaches 3dhtml is using.

Step through the tutorials and review the examples carefully (there's some more in the examples folder). Code yourself - inspecting and tweaking the examples might be a good idea.