WOW-Engine 0.3 Preview : Sphere of spheres

Spheres+Constraints
Lire la suite

WOW-Engine 0.3 Preview : Your skin is so soft!

Hi there,
This little demo showing the brand new SoftBody class included in the new upcoming version of WOW-Engine (AS3 verlet physics engine)
it take advantage of Worker, shareable ByteArray and Mutex.
The stage3D rendering engine is Away3D.
To create a SoftBody, you jsut need a 3D Mesh with vertices using Vector.<Number>, the vertices can be unique or not.
Click to add impulse, and move your mouse to interact.

Lire la suite

WOW-Engine 0.3 Preview : Falling balls?

Hi there,
This little demo showing more than 300 ball using the new upcoming version of WOW-Engine (AS3 verlet physics engine)
it take advantage of Worker, shareable ByteArray and Mutex.
The stage3D rendering engine is Away3D.

Lire la suite

3D pathfinder

you need flash player incubator to see this demo

Grid map generator

Damn it, I worked too much on it, i can see the map turning when i look at this JPG
next post i’ll show you a 3D pathfinder on it.

you need flash player incubator to see this demo

Line experiment in Away3D 4

Hey,
i work on some class to show « line » in away3d 4
this is « line » with always the same tickness on the screen
the final purpose is to generate wireframe , grid, helper and of course cool shit

*update* i add a grid on the floor and axis helper

you need flash player 11 to see this demo

Code source:

package {
	import away3d.arcane;
	import away3d.cameras.lenses.PerspectiveLens;
	import away3d.containers.View3D;
	import away3d.debug.AwayStats;
	import away3d.entities.SegmentSet;
	import away3d.primitives.WireframeAxesGrid;
	import away3d.primitives.LineSegment;
	import away3d.materials.ColorMaterial;

	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.geom.Vector3D;

	use namespace arcane; 

	[SWF(width="700", height="700", frameRate="60")]

	public class MainLine extends Sprite {

		private var _count : Number = 0;
		private var view: View3D;
		private var grid : WireframeAxesGrid;
		private var lines : SegmentSet;

		private var distance : Number;
		private var lastVector : Vector3D;
		private var lastColor : Number;
		private var nextVector : Vector3D;
		private var newColor : Number;
		private var tempColor : Number;

		public function MainLine() {
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;

			setupView3D();

			lines=new SegmentSet();
			view.scene.addChild(lines);
			grid=new  WireframeAxesGrid(10,500,.25,0x666666,0x666666,0x666666);
			view.scene.addChild(grid);

			lastVector=new Vector3D(Math.sin(_count) *distance,Math.sin(_count * .54) * distance,Math.cos(_count) *distance);
			lastColor=0;

		}

		private function setupView3D() : void {
			view = new View3D();
			view.width=1000;
			view.height=700;
			view.antiAlias = 2;
			view.backgroundColor = 0x333333;
			view.camera.z = -1500;
			view.camera.y = 1000;
			view.camera.x = -1500;
			view.camera.lookAt(new Vector3D(0, 150, 0));
			view.camera.lens.near=.02;
			view.camera.lens.far=500000;
			(view.camera.lens as PerspectiveLens).fieldOfView=45;

			addChild(view);
			/*addChild(new AwayStats(view));
			var sign:SignAway=new SignAway();sign.y=700-280;
			addChild(sign);*/
			addEventListener(Event.ENTER_FRAME, _handleEnterFrame);

		}

		private function _handleEnterFrame(ev : Event) : void {

			_count += .1;
			if(_count<350){
				distance=500*Math.sin(_count/10)-250;
				tempColor=(Math.abs(distance)/250)/3*0xFF;
				nextVector=new Vector3D(Math.sin(_count)*distance,Math.sin(_count*.48 ) * distance,Math.cos(_count) *distance);
				newColor= tempColor << 16 | tempColor*.7 << 8 | 0;
				lines.addSegment(new LineSegment(lastVector, nextVector,lastColor,newColor,2+tempColor/100));
				lastVector=nextVector;
				lastColor=newColor;
			}
			view.camera.x = Math.sin(_count*.05) * 2000;
			view.camera.y = 900;
			view.camera.z = Math.cos(_count*.05 ) * 2000;
			view.camera.lookAt(new Vector3D(0, 0, 0));
			view.render();
		}
	}
}

red polygon + tank + cosinus + particles + unicorn

you need flash player incubator to see this demo

AS3SkinExporter stress test

you need flash player incubator to see this demo

L’API Molehill enfin sur le lab d’Adobe!

AnnoncĂ© Ă  l’instant lors du Flash Gaming Summit par notre amis Thibault Imbert
la beta du Flash player 10.3, integrant l’API de 3D Molehill, est disponible sur le Labs d’adobe \o/

Foncez vite mettre Ă  jour votre Flash player, un merveilleux monde en 3D s’offre Ă  vous…
…ou pas.

Car afficher le moindre polygone avec l’API Molehill n’est pas une mince affaire
il vous faudra donc passer par un moteur 3D compatible:

Alternativa8, Yugurt3D, sophie3D, Flare3D, Away4( open source ), Minko, j’en oublie …

J’ai eu le plaisir de tester Molehill, toucher du doigt Minko et de contribuer à Away4,
je dois dire que la première chose qui m’a fait bondir de joie, c’est de ne plus avoir Ă  se soucier
du tri des faces grâce au rendu z-buffer du gpu, une révolution !

have fun

How to use AS3GeomExporter for 3dsMax to generate Away3D classes

Oh! Hi!

in this script you can see the « Duck » class used like any other classic primitive
AS3GeomExporter is compatible with Away3D, Sandy3D and Papervision3D
download page : http://not-so-stupid.com/open-source/as3-geom-exporter-english/

package fr.nss.tornado {
    import away3dlite.cameras.*;
    import away3dlite.containers.*;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.geom.Vector3D;
    import flash.display.StageScaleMode;
    import flash.display.StageAlign;
    [SWF(backgroundColor="#FFFFFF", frameRate="30")]
    public class Main extends Sprite {
        private var scene : Scene3D;
        private var camera : Camera3D;
        private var view : View3D;

        private var duck : Duck;

        public function Main() {
            stage.scaleMode=StageScaleMode.NO_SCALE;
            stage.align=StageAlign.TOP_LEFT;
            scene = new Scene3D();
            camera = new Camera3D();
            camera.z = -2500;
            camera.y = -1000;
            camera.lookAt(new Vector3D());
            view = new View3D();
            view.scene = scene;
            view.camera = camera;
            addChild(view);

            duck=new Duck();
            scene.addChild(duck);

            addEventListener(Event.ENTER_FRAME, onEnterFrame);
            stage.addEventListener(Event.RESIZE, onResize);
            onResize();
        }

        private function onEnterFrame( e:Event ):void {

            duck.rotationY++;

            view.render();
        }
          private function onResize(event:Event = null):void{
            view.x = stage.stageWidth / 2;
            view.y = stage.stageHeight / 2;

        }
    }
}