A few weeks ago I wrote a post on the concept of using JSON for creating 3-D models (You can read the first JSON 3D post here). I have created a proof of concept based on MooCanvas to allow for IE support. This proof of concept is also based on the 3D cube demo for MooCanvas with some modifications.

For this proof of concept the important function is Load3D which loads and translates the JSON 3D object.
function Load3D(obj, translateX, translateY, translateZ){ scene.shapes[(obj.type + ObjectCounter + "")] = new Shape(); var p = scene.shapes[(obj.type + ObjectCounter + "")].points; // for convenience for(var a=0; a<obj.vrt.length; a++){ p[a] = new Point(((obj.vrt[a][0])+translateX), ((obj.vrt[a][1])+translateY), ((obj.vrt[a][2])+translateZ)); } // Create Shape From Points for(var a=0; a<obj.fac.length; a++){ scene.shapes[(obj.type + ObjectCounter + "")].polygons.push(new Polygon( [ p[obj.fac[a][0]], p[obj.fac[a][1]], p[obj.fac[a][2]], p[obj.fac[a][3]] ], new Point(obj.nrm[a][0], obj.nrm[a][1], obj.nrm[a][2]), true /* double-sided */, Polygon.SOLID, [obj.mat[a][0], obj.mat[a][1], obj.mat[a][2]] )); } ObjectCounter+=1; }
For the JSON 3D object you would pass it into the Load3D function. While in this example I have put the JSON 3D object in the HTML, you would load the JSON 3D using Ajax (or a script tag) in the real world.
var ThreeDobj = { "vrt":[[-10,-10,-10],[10,-10,-10],[10,10,-10],[-10,10,-10],[-10,-10,10],[10,-10,10],[10,10,10],[-10,10,10]], "fac":[[0,1,2,3],[4,5,6,7],[2,3,7,6],[2,3,7,6],[0,4,7,3],[1,5,6,2]], "nrm":[[0,0,-1],[0,0,1],[0,1,0],[0,1,0],[-1,0,0],[1,0,0]], "mat":[[70,70,70],[80,80,80],[80,80,80],[75,75,75],[70,70,70],[70,70,70]], "type":"cube"} Load3D(ThreeDobj, 0, 0, 0);
You can see the proof of concept here.
The proof of concept has been tested on Google Chrome, FireFox 3 and IE 7. It may work on other browsers (it should work on Safari and Opera), but has not been tested.
Delicious
Digg
StumbleUpon
Propeller
Reddit
Magnoliacom
Newsvine
Furl
Facebook
Google
Yahoo
Technorati
Icerocket
Post new comment