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

The clone wars

L’accĂ©lĂ©ration GPU que propose l’API molehill, c’est la promesse d’une gestion faramineuse de polygones,
des dĂ©mos impressionnantes affichant des centaines d’objet ou personnages ont dĂ©jĂ  Ă©tĂ© montrĂ©, mais n’avez-vous pas remarquĂ© qu’elles ne prĂ©sentaient gĂ©nĂ©ralement qu’un seul et mĂŞme objet dupliquĂ©?
S’il est possible d’obtenir ce resultat c’est grâce au clonage d’objet, ou plus prĂ©cisĂ©ment de buffer, car le clonage affecte quasiment en rien la mĂ©moire, certes le nombre de polygones que doit dessiner le GPU augmentera mais en gĂ©nĂ©ral il peut en dessiner des millions sans problème.

donc clonez, en utilisant cette technique vous économiserez la mémoire car il y aura toujours le même buffer utilisé pour chaque clone affiché à l’écran.
le gain de performance sera impressionnant !

Dans Away4, un objet 3D est composĂ© de vertices, uvs et d’indices de face.
Lors du clonage ces données sont partagées.
L’objet clonĂ© obtient une nouvelle matrice de transformation qui permettra de positionner toutes ces donnĂ©es Ă  l’Ă©cran de façon autonome.

Dans away4 on procède ainsi:

var sheep:Sheep=new Sheep(new ColorMaterial(0xFFFFFF));
view.scene.addChild(sheep);

var dolly:Mesh=sheep.clone();
view.scene.addChild(dolly);

Ce qui est génial c’est que même les objets 3D animés peuvent être clonés tout en gardant une animation indépendante !
En voilĂ  la preuve avec ma collection de canards ( vivants )

Les sources de cette dĂ©mo sont accessible via le svn d’Away3D 4 « AS3SkinExporterStressTest.as » :)
Le modèle 3D ainsi que ses animations on été exportés depuis 3ds max directement en classes AS3 compatible Away4 via l’exporter AS3SkinExporter.

George Cloné

Molehill API finally available on Adobe Labs

Announced at the moment at the « Flash Gaming Summit » by our friend Thibault Imbert
The beta of Flash Player 10.3, integrating the 3D API Molehill is now available on Adobe Labs \ o /

go ahead quickly to upgrade your Flash player, a wonderful 3D world awaits you …
… Or not.

It’s quite difficult to display any polygon with the API Molehill because it’s a low level API,
so you have to go through a 3D engine supports:

Alternativa8, Yugurt3D, sophie3D, Flare3D, Away4( open source ), Minko

I had the pleasure to test Molehill, Minko and help Away4,
I must say that the first thing that made me jump for joy is no longer having to worry about the polygon sorting, thanks to the z-buffer rendering of the GPU, a revolution!

Have fun!