ࡱ> Root EntryRoot Entryp|YrRASHD@| Contents Page 1x Symbol 1   !"#$%&'()*+,-./01CPicPage CPicLayer CPicFrame?g Ebene 1OCPicPage CPicLayer CPicFrame CPicSprite dscene?#H sceneOO?Ja // Simple 3d Engine for FlashMXPro Forum //////////////////// // -------------- // // Object 3d DATA // // -------------- // //////////////////// box = { points: [ { x: -1 , y: -1 , z: -1 }, { x: -1 , y: -1 , z: 1 }, { x: 1 , y: -1 , z: 1 }, { x: 1 , y: -1 , z: -1 }, { x: -1 , y: 1 , z: -1 }, { x: -1 , y: 1 , z: 1 }, { x: 1 , y: 1 , z: 1 }, { x: 1 , y: 1 , z: -1 } ], faces: [ [ 0 , 3 , 2 , 1 ], // connected points... // [ 4 , 5 , 6 , 7 ], [ 1 , 5 , 4 , 0 ], [ 7 , 6 , 2 , 3 ], [ 0 , 4 , 7 , 3 ], [ 6 , 5 , 1 , 2 ] ] } //////////////////// // -------------- // // WORLD 3d CLASS // // -------------- // //////////////////// World3d = function ( obj ) { this.obj = obj; this.dim = 200; // scale factor for unitlength obj vectors // this.loc = scene; _global.rad = Math.PI / 180; } World3d.prototype.render = function ( xa , ya ) { // calculate rotate matrix // var cya = Math.cos( ya * rad ); var sya = Math.sin( ya * rad ); var cxa = Math.cos( xa * rad ); var sxa = Math.sin( xa * rad ); for ( var e in this.obj.points ) { var p = this.obj.points[e]; // rotate each point around axis // var tempz = ( p.z * cya ) - ( p.x * sya ); var tmpx = ( p.z * sya ) + ( p.x * cya ); var tmpz = ( p.y * sxa ) + ( tempz * cxa ); var tmpy = ( p.y * cxa ) - ( tempz * sxa ); // projection to screen // pers = 1 / ( 3 + tmpz ); p.sx = tmpx * pers * this.dim; p.sy = tmpy * pers * this.dim; } // draw faces // this.loc.clear (); for ( var e in this.obj.faces ) { var l = this.obj.faces[e]; var p = this.obj.points; var p0 = p[ l[0] ] , p1 = p[ l[1] ] , p2 = p[ l[2] ] , p3 = p[ l[3] ]; var z = (p1.sx - p0.sx) * (p2.sy - p0.sy) - (p1.sy - p0.sy) * (p2.sx - p0.sx); if ( z < 0 ) { // backface culling // this.loc.lineStyle ( 0 , 0x27D3DC ); this.loc.beginFill ( 0x444444 ); this.loc.moveTo ( p0.sx , p0.sy ); this.loc.lineTo ( p1.sx , p1.sy ); this.loc.lineTo ( p2.sx , p2.sy ); this.loc.lineTo ( p3.sx , p3.sy ); this.loc.lineTo ( p0.sx , p0.sy ); this.loc.endFill (); } } } // create instance // exprm = new World3d ( box ); // render scene depending on mouse position // this.onEnterFrame = function () { exprm.render ( a -= ( this._ymouse - 200 ) / 100 , b += ( this._xmouse - 200 ) / 100 ) };  codeO) CDocumentPagePage 1Szene 1n<3k=Symbol 1scene5<Symbol 15<@@hhhhh333K CColorDef3PfP0PHP`Px333(3f<03CH3F`3Hxf0f30ff(0f5Hf<`f@x3330333xf3d03]H3Z`3Xx3333303f3PPH33Px`33Px33Pf30f33PHff3(PHf3<x`f3Cxf3Ffff`f03f0ffx0fkHfd`f`x3f033fPH3ffxPH3fdx`3f]x3fZff0f3fPHfff`ffP0xffPxffPH3HfHxH̙n`hx3H33x`3fx`3xx`3̙kx3dfHf3x`ff0xfx0xf̙dxf]`3`f``x`px3`33x3fx3x3xx3nf`f3xffxfxfxxfkx3xfxxxxx3x333f333xfxf3fffffxxH3 HfH(H2`8x`3 `f`̙`(`0xx3xfxx x(xPx3H33x`f3x`3(x`35x3<3`33xf3 x̙3x3(x323x33f3 333(xfH3fx`ff0xf(0xf<xfCf`3fxffx̙fxf(xf5fx3ffff ff((xH3x`f0x̙PPP`3xfx̙P̙(P<x3f̙(xx`3xfxPxPd`3xfx̙PPx3f(xx3fxx3f̙xx3ff`zf*]Ch