Forked from: mash's sandy 3d engine sample diff:92 Hello Sandy 3D :) makc3d forked:3favorite:2lines:74license : see code comments modified : 2009-03-05 17:22:12 Embed Tweet package { import flash.display.*; import flash.filters.*; import flash.geom.*; import sandy.core.data.*; import sandy.core.scenegraph.*; import sandy.core.*; import sandy.extrusion.data.*; import sandy.extrusion.*; import sandy.materials.*; import sandy.materials.attributes.*; import sandy.primitive.*; import sandy.*; [SWF(width="465", height="465", backgroundColor="#000000", frameRate="20")] public class FlashTest extends Sprite { private var red:BitmapMaterial; private var scene:Scene3D; private var stuff:TransformGroup; public function FlashTest () { scene = new Scene3D ("scene", this, new Camera3D (465, 465), new Group ("root")); scene.camera.z = -1000; stuff = new TransformGroup ("stuff"); scene.root.addChild (stuff); // get the logo var logo:Bitmap = Logo.GetBitmap (); logo.y = 465 - 19; addChild (logo); // make materials red = new BitmapMaterial (makeSeamlessTextureFromLogo (logo), new MaterialAttributes (new VertexNormalAttributes (50, 5, 0x007F00))); var ph:PhongAttributes = new PhongAttributes (true); ph.specular = 2; ph.gloss = 5; ph.onlySpecular = true; var yel:ColorMaterial = new ColorMaterial (0xFFFFAF, 1, new MaterialAttributes (ph)); yel.lightingEnable = true; // glowing sphere var radius:Number = 100; var sphere:Sphere = new Sphere ("sphere", radius); sphere.appearance = new Appearance (yel); sphere.container.filters = [ new GlowFilter (0xFFFFAF, 1, 160, 160, 1) ]; stuff.addChild (sphere); // make... emm... things var profile:Polygon2D = new Polygon2D ( [new Point (-10, -5), new Point (+10, -5), new Point (0, +10)]); for (var i:int = 0; i < 6; i++) { var thing:Curve3D = new Curve3D; var up:Point3D = new Point3D (0, 1, 0); var t:Point3D = new Point3D (r(), r(), r()); var len:Number = 0.5 * (1 + Math.random ()); for (var j:int = 0; j < 4; j++) { // randomize direction var k:Number = 0.1 * (1.5 * j + 1); t.x += k * r(); t.y += k * r(); t.z += k * r(); t.normalize (); thing.t.push (t.clone ()); // progressive position var v:Point3D = t.clone (); v.scale (radius * (0.9 + len * j)); thing.v.push (v); // select any normal vector var n:Point3D = up.cross (t); n.normalize (); thing.n.push (n); // scale thing.s.push (3 - j); } var ext:Extrusion = new Extrusion ("thing" + i, profile, thing.toSections (), false, false); ext.appearance = new Appearance (red); stuff.addChild (ext); } // spin it addEventListener ("enterFrame", loop); } private var tw:Number = 1, th:Number = 3, tu:Number = 0, tv:Number = 0; private function loop (e:*):void { tv -= 0.05; if (tv < -1) tv += 1; red.setTiling (tw, th, tu, tv); stuff.rotateY += 2; scene.render(); } private function makeSeamlessTextureFromLogo (logo:Bitmap):BitmapData { var pattern:BitmapData = new BitmapData (22, 19 * 2 - 1, false, 0); pattern.draw (logo.bitmapData, new Matrix (+1, 0, 0, +1, -100)); pattern.draw (logo.bitmapData, new Matrix (-1, 0, 0, -1, +363.5, 19 * 2 - 1)); return pattern; } private function r ():Number { var v:Number = 0; while (v == 0) v = Math.random () - Math.random (); return v; } } } Code Fullscreen Preview Fullscreen kiroukou : 3dssandy,3D Tree mash : 100lines3dsandy 100lines 3d 3ds sandy sandy, Point3D Curve3D Polygon2D BitmapMaterial ColorMaterial scene MaterialAttributes PhongAttributes Appearance clone cross gloss rotateY specular VertexNormalAttributes lightingEnable setTiling up appearance toSections sort new page view favorite forked pv142 forked from: Hello Sandy 3D :).. georgepcrawford forked:0 favorite:0lines:74 (diff:2) pv420 forked from: Hello Sandy 3D :).. ddura forked:0 favorite:0lines:74 (diff:2) pv685 forked from: Hello Sandy 3D :).. petit forked:2 favorite:0lines:74 (diff:1)