3D CAD as a JS app
I’ve had the idea of writing an open-source, online 3D CAD app for a long time. Recently, I’ve started working out the implementation details of what such an app might look like. It would be in JavaScript using the html canvas feature, and optimized (or at least targeted at) google chrome, since their JS rendering engine, V8, compiles the javascript down to bytecode and thus makes it a lot faster.
Fortunately, there has already been some work done on rendering a 3D environment in html canvas using JavaScript. I am aware of four such efforts:
- http://www.nihilogic.dk/labs/canvas3dtexture_0.2/
- http://lbi.lostboys.nl/blog/artikelen/canvas-in-full-3d/
- http://www.tapper-ware.net/canvas3d/
- http://gyu.que.jp/jscloth/touch.html
- edit: Mik mentioned https://wiki.mozilla.org/Canvas:3D , a FF plugin in the works, for hardware accelerated 3D rendering on html canvas
To reduce complexity, my thought was to make the app as simple as possible without making it hard to use. With that in mind, I thought I’d focus this app only on 2D/3D object creation. This means that there would only be one type of rendering (solid, not wireframe or realistic rendering), no shadows, etc. Those can be their own apps (see below for details).
This is the mockup that I came up with:

Note that I didn’t bother with adding icons to the various commands; so imagine them there in addition to the links.
Here is the mockup of the various commands and the categories the fall under:

I have the UI depicted as a horizontal tab/ribbon interface, but it could just as well be a vertical accordion interface. It doesn’t matter at this point.
The other related apps could be
- animation/rendering
- import/export
- formal print templating
- version control (via git or something similar)
- etc.
Unfortunately, I don’t have enough coding experience to pull off something like this (for the time being). I’d be thrilled if a JS hacker would be interested in working on this project with me. If you’re interested, let me know in the comments. Also, if you’ve used CAD programs, please comment on the commands that are missing/ones that are extraneous.
The mockups are available for editing/forking on github.