.:: Jasa Membuat Aplikasi Website,Desktop,Android Order Now..!! | | Order Now..!! Jasa Membuat Project Arduino,Robotic,Print 3D ::.

away3d shadow jiglib racing smoke demo

0 komentar


بِسْــــــــــــــــمِ اﷲِالرَّحْمَنِ اارَّحِيم
bismillaahirrahmaanirrahiim

السَّلاَمُ عَلَيْكُمْ وَرَحْمَةُ اللهِ وَبَرَكَاتُهُ
Assalamu'alaikum warahmatullahi wabarakatuh

away3d 4.1.1 shadow jiglib racing smoke

Video of jiglib and away3d demo. I made a test today with latest Away3D 4.1.1 Beta and jiglibflash using only a simple cube and plane.
If you want to drive, you can made a click on flash container and drive a car using arrow key and space key for handbrake.

package
{
import away3d.animators.*;import away3d.core.partition.*;
import away3d.events.*;import away3d.cameras.lenses.*;
import away3d.core.base.*;import away3d.core.math.*;
import away3d.library.assets.*;import away3d.debug.*;
import away3d.cameras.*;import away3d.containers.*;import away3d.entities.*;
import away3d.lights.*; import away3d.materials.*;
import away3d.materials.lightpickers.*;
import away3d.materials.methods.*; import away3d.primitives.*;
import away3d.textures.*;import away3d.filters.*;
import away3d.materials.utils.*;import away3d.primitives.data.*;

import flash.display.*; import flash.events.*; import flash.system.*;
import flash.ui.*; import flash.utils.*; import flash.sampler.*;
import flash.net.*; import flash.media.*; import flash.net.*;
import flash.external.*; import flash.text.*;
import flash.geom.*;

import jiglib.cof.*;
import jiglib.debug.*;
import jiglib.geometry.*;
import jiglib.math.*;
import jiglib.data.*;
import jiglib.physics.*;
import jiglib.plugin.away3d4.*;
import jiglib.plugin.*;
import jiglib.vehicles.JCar;

/**
* ...
* @author Lexcuk
*/
public class Away3DJiglibSmokeTesterDoc extends Sprite
{
private var container:ObjectContainer3D;
public var sprite:Sprite;
public var view:View3D;

private var containerArr:Array;

private var hrefTxt:TextField;
private var nArr:Array;

private var camScale:Number = 6;
private var containerScale:Number = 10;


private var sceneMousePosition:Vector3D = new Vector3D();

private var whiteSprite3dSmoke:Sprite3dSmoke;

private var smokeGoneTr:Boolean;

private var physics:Away3D4Physics;

private var blaMaterial:TextureMaterial;

private var carBody:JCar;

private var steerFL:*;
private var steerFR:*;
private var wheelFL:*;
private var wheelFR:*;
private var wheelBL:*;
private var wheelBR:*;

private var carContainer:ObjectContainer3D;
private var smokePosContainer:ObjectContainer3D;

private var lightPicker:StaticLightPicker;
private var shadowMapMethod:DitheredShadowMapMethod;

public function Away3DJiglibSmokeTesterDoc()
{
view = new View3D();
view.camera.lens.far = 50000;
view.camera.lens.near = 1;

//view.camera.moveTo( 0, 1000, 0);//camA
view.camera.moveTo( 1000*camScale, 500*camScale, 300*camScale);//camB
//view.camera.moveTo( 300, 500, 1000);//camC



view.camera.lookAt(new Vector3D(0, 0, 0))

sprite = new Sprite();
sprite.addChild(view);
sprite.addChild(new AwayStats(view));

addChild(sprite);

var perlinBitmap:BitmapData = getPerlinBmd();
container = new ObjectContainer3D();

view.scene.addChild(container);

var directonalLight:DirectionalLight = new DirectionalLight()//200, -500, 0);
directonalLight.color = 0xFFFF80;
directonalLight.ambientColor = 0x80FFFF;
//directonalLight.castsShadows = true;
directonalLight.ambient = 0.5;
directonalLight.diffuse = 1;
directonalLight.specular = 1;
//directonalLight.
//directonalLight.lookAt(new Vector3D());


container.addChild(directonalLight);

lightPicker = new StaticLightPicker([directonalLight]);

shadowMapMethod = new DitheredShadowMapMethod(directonalLight);

trace('hardShadowMapMethod.epsilon ' + shadowMapMethod.epsilon);//0.02
shadowMapMethod.epsilon = 0.003;
shadowMapMethod.alpha = 1;

container.scaleX = container.scaleY = container.scaleZ = containerScale;
//JConfig JConfig
//JConfig JConfig
//JConfig JConfig
var bgMaterial:TextureMaterial = new TextureMaterial(new BitmapTexture(perlinBitmap), false, true);
bgMaterial.shadowMethod = shadowMapMethod;
bgMaterial.lightPicker = lightPicker;
bgMaterial.gloss = 100;

blaMaterial = mekeBlaMaterial();
blaMaterial.lightPicker = lightPicker;
//JConfig.solverType="FAST";
physics = new Away3D4Physics(view, 6);

var rgBody:RigidBody = physics.createGround(bgMaterial,1000,1000,1,1,true);

createBox();
createCar();

var bgMesh:Mesh = physics.getMesh(rgBody);
bgMesh.scaleX = bgMesh.scaleZ = 2;

container.addChild(bgMesh);
sprite.addChild(hrefTxt = new TextField());
with (hrefTxt) { border = background = true; selectable = false;
x = 150; scaleX = scaleY = 1.4; backgroundColor = 0xFFFFFF; }
hrefTxt.autoSize = TextFieldAutoSize.LEFT;
var htmStr:String = '';
htmStr = addStrHref('camA') + addStrHref('camB')
+ addStrHref('camC');
//+addStrHref('delete') +addStrHref('add');

hrefTxt.htmlText = htmStr;
hrefTxt.addEventListener("link", txtNavHandler);

bgMesh.mouseEnabled = true;
bgMesh.addEventListener( MouseEvent3D.MOUSE_MOVE, onBgMeshMouseMove);

whiteSprite3dSmoke =
new Sprite3dSmoke(container,0xFF00FF, 0.7, 300, 20, 3, 2);


addEventListener(Event.ENTER_FRAME, enterFrameHandler);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
}

private function createCar() : void {
carContainer = new ObjectContainer3D();
container.addChild(carContainer);

carContainer.addChild(makeCube(40/2, 20/2, 90/2));
carContainer.addChild(smokePosContainer = new ObjectContainer3D());
smokePosContainer.position = new Vector3D(-0, -10, -50);


var oWheelFR:ObjectContainer3D = new ObjectContainer3D();
var oWheelFL:ObjectContainer3D = new ObjectContainer3D();

var oWheelFR_PIVOT:ObjectContainer3D = new ObjectContainer3D();
var oWheelFL_PIVOT:ObjectContainer3D = new ObjectContainer3D();

var oWheelBR:ObjectContainer3D = new ObjectContainer3D();
var oWheelBL:ObjectContainer3D = new ObjectContainer3D();

var oWheelBR_PIVOT:ObjectContainer3D = new ObjectContainer3D();
var oWheelBL_PIVOT:ObjectContainer3D = new ObjectContainer3D();

carContainer.addChild(oWheelFR);
oWheelFR.addChild(oWheelFR_PIVOT)
oWheelFR_PIVOT.addChild(setupWheel());

carContainer.addChild(oWheelFL);
oWheelFL.addChild(oWheelFL_PIVOT);
oWheelFL_PIVOT.addChild(setupWheel());

carContainer.addChild(oWheelBR);
oWheelBR.addChild(oWheelBR_PIVOT)
var w:Mesh;
oWheelBR_PIVOT.addChild(w = setupWheel());
w.rotationX = 90;
oWheelBR_PIVOT.rotationY = 90;
oWheelBR.rotationY = 90;

carContainer.addChild(oWheelBL);

oWheelBL.addChild(oWheelBL_PIVOT);
oWheelBL_PIVOT.addChild(w = setupWheel());
w.rotationX = 90;
oWheelBL_PIVOT.rotationY = 90;
oWheelBL.rotationY = 90;

oWheelFR.name = "WheelFR";
oWheelFR.position = new Vector3D(20, -10, 25);

oWheelFR_PIVOT.name = "WheelFR_PIVOT";

oWheelFL.name = "WheelFL";
oWheelFL.position = new Vector3D(-20, -10, 25);

oWheelFL_PIVOT.name = "WheelFL_PIVOT";
oWheelBR.name = "WheelBR";

oWheelBR.position = new Vector3D(20, -10, -25);
oWheelBR_PIVOT.name = "WheelBR_PIVOT";

oWheelBL.name = "WheelBL";
oWheelBL.position = new Vector3D(-20, -10, -25);
oWheelBL_PIVOT.name = "WheelBL_PIVOT";

carBody = new JCar(new Away3D4Object(carContainer));

carBody.setCar(40, 5, 500);
carBody.chassis.moveTo(new Vector3D(200, 0, 0));
carBody.chassis.rotationY = 90;
carBody.chassis.mass = 9;
carBody.chassis.sideLengths = new Vector3D(40, 20, 90);
physics.addBody(carBody.chassis);

carBody.setupWheel("WheelFL", new Vector3D(-20, -10, 25), 1.2, 1.5, 3, 8, 0.4, 0.5, 2);
carBody.setupWheel("WheelFR", new Vector3D(20, -10, 25), 1.2, 1.5, 3, 8, 0.4, 0.5, 2);
carBody.setupWheel("WheelBL", new Vector3D(-20, -10, -25), 1.2, 1.5, 3, 8, 0.4, 0.5, 2);
carBody.setupWheel("WheelBR", new Vector3D(20, -10, -25), 1.2, 1.5, 3, 8, 0.4, 0.5, 2);
steerFL = oGetChildByName(carContainer,"WheelFL");
steerFR = oGetChildByName(carContainer,"WheelFR");
wheelFL = oGetChildByName(carContainer,"WheelFL_PIVOT");
wheelFR = oGetChildByName(carContainer,"WheelFR_PIVOT");
wheelBL = oGetChildByName(carContainer,"WheelBL");
wheelBR = oGetChildByName(carContainer,"WheelBR");
}

private function keyDownHandler(event:KeyboardEvent) : void
{
switch(event.keyCode)
{
case Keyboard.UP:
case 87:
{

carBody.setAccelerate(1);
break;
}
case Keyboard.DOWN:
case 83:
{
carBody.setAccelerate(-1);
break;
}
case Keyboard.LEFT:
case 65:
{
carBody.setSteer(["WheelFL", "WheelFR"], -1);
break;
}
case Keyboard.RIGHT:
case 68:
{
carBody.setSteer(["WheelFL", "WheelFR"], 1);
break;
}
case Keyboard.SPACE:
{
carBody.setHBrake(1);
break;
}
default:
{
break;
}
}
}


private function keyUpHandler(event:KeyboardEvent) : void
{
trace(event.keyCode);
switch(event.keyCode)
{
case Keyboard.UP:
case 87:
{

carBody.setAccelerate(0);
break;
}
case Keyboard.DOWN:
case 83:
{
carBody.setAccelerate(0);
break;
}
case Keyboard.LEFT:
case 65:
{
carBody.setSteer(["WheelFL", "WheelFR"], 0);
break;
}
case Keyboard.RIGHT:
case 68:
{
carBody.setSteer(["WheelFL", "WheelFR"], 0);
break;
}
case Keyboard.SPACE:
{
carBody.setHBrake(0);
}
default:
{
break;
}
}
return;
}

private function updateWheelSkin() : void
{
steerFL.rotationY = carBody.wheels["WheelFL"].getSteerAngle();
steerFR.rotationY = carBody.wheels["WheelFR"].getSteerAngle();
wheelFL.pitch(carBody.wheels["WheelFL"].getRollAngle());
wheelFR.pitch(carBody.wheels["WheelFR"].getRollAngle());
wheelBL.roll(carBody.wheels["WheelBL"].getRollAngle());
wheelBR.roll(carBody.wheels["WheelBR"].getRollAngle());
steerFL.y = carBody.wheels["WheelFL"].getActualPos().y;
steerFR.y = carBody.wheels["WheelFR"].getActualPos().y;
wheelBL.y = carBody.wheels["WheelBL"].getActualPos().y;
wheelBR.y = carBody.wheels["WheelBR"].getActualPos().y;
}

private function oGetChildByName(o:ObjectContainer3D, name:String):*{
var o1:*;
var o2:*;
for (var i:int = 0; i < o.numChildren; i++) {
o1 = o.getChildAt(i);
if (o1.name == name) return o1;
for (var j:int = 0; j < o1.numChildren; j++) {
o2 = o1.getChildAt(j);
if (o2.name == name) return o2;
}
}
return null;
}

private function createBox() : void
{
var material:TextureMaterial = blaMaterial;// new TextureMaterial(new BitmapTexture(new BitmapData(2, 64, false, 0xFF8040)), false, true);
var i:int;
while (i < 4)
{
var rgB:RigidBody = physics.createCube(material, 100, 100, 100, 1, 1, 1);
reCube(rgB, 50, 50, 50);
rgB.y = 102 * (i+1);
i++;
}
}

public function reCube(rgB:RigidBody,sx:Number,sy:Number,sz:Number):void {
var mesh:Mesh = physics.getMesh(rgB);
mesh.parent.removeChild(mesh);
var mmesh:Mesh = makeCube(sx,sy,sz);
mesh.geometry = mmesh.geometry;
container.addChild(mesh);
}

public function onBgMeshMouseMove(e:MouseEvent3D):void {
sceneMousePosition = e.scenePosition.clone();
}

private function txtNavHandler(e:TextEvent):void {
if (e.text == 'camA') view.camera.moveTo( 0, 5000*camScale, 0);
if (e.text == 'camB') view.camera.moveTo( 1000*camScale, 500*camScale, 300*camScale);
if (e.text == 'camC') view.camera.moveTo( 300 * camScale, 500 * camScale, 1000 * camScale);
if (e.text == 'delete') smokeGoneTr = true;
if (e.text == 'add') smokeGoneTr = false;

view.camera.lookAt(new Vector3D(0, 0, 0));
}

private function addStrHref(str:String, delimStr:String = ' | '):String {
return "<a href='event:" + str + "'>" + str + "<u></u>"+delimStr;
}

private function enterFrameHandler(e:Event):void {
var carContainerPosition:Vector3D = carContainer.position;
physics.engine.integrate(0.12);
updateWheelSkin();

var pos:Vector3D = smokePosContainer.scenePosition.clone();
pos.scaleBy(1/containerScale);
//pos.y += 50;
if (smokeGoneTr == false) whiteSprite3dSmoke.update(pos,container);
if (smokeGoneTr == true) whiteSprite3dSmoke.updateAndDelete(pos);

if (carBody.chassis.getVelocity(carContainerPosition).length > 50) smokeGoneTr = false;
else smokeGoneTr = true;

view.render();
}

public function getPerlinBmd():BitmapData {
var s:Number = 512;
var bitmapData:BitmapData = new BitmapData(s, s, true);
var numOctaves:Number = 1;
bitmapData.perlinNoise(25, 52, 1, 1314, false, false, 10, false)
var sp:Sprite = new Sprite();
sp.graphics.beginFill(0xFFFFFF);
sp.graphics.drawRect(0, 0, s, s);
sp.addChild(new Bitmap(bitmapData));
var resBitmap:BitmapData = new BitmapData(s, s, true);
resBitmap.draw(sp);
return resBitmap;
}

public function makeCube(sx:Number = 100, sy:Number = 100, sz:Number = 100):Mesh {
var geometry:Geometry = new Geometry();
var subGeometry:SubGeometry = new SubGeometry();

var meVertices:Array = [1.00000,1.00000,-1.00000,1.00000,-1.00000,-1.00000,-1.00000,-1.00000,-1.00000,-1.00000,1.00000,-1.00000,1.00000,1.00000,1.00000,1.00000,-1.00000,1.00000,-1.00000,-1.00000,1.00000,-1.00000,1.00000,1.00000];
var meIndex:Array = [0,1,2,0,2,3,4,7,6,4,6,5,0,4,5,0,5,1,1,5,6,1,6,2,2,6,7,2,7,3,4,0,3,4,3,7];
var meUv:Array = [1, 0, 2 / 3, 0, 2 / 3, 0.5, 1, 0, 2 / 3, 0.5, 1, 0.5, 1 / 3, 0, 0, 0, 0, 0.5, 1 / 3,
0, 0, 0.5, 1 / 3, 0.5, 1 / 3, 0.5, 0, 0.5, 0, 1, 1 / 3, 0.5, 0, 1, 1 / 3, 1, 2 / 3, 0, 1 / 3, 0, 1 / 3, 0.5, 2 / 3,
0, 1 / 3, 0.5, 2 / 3, 0.5, 2 / 3, 0.5, 1 / 3, 0.5, 1 / 3, 1, 2 / 3, 0.5, 1 / 3, 1, 2 / 3, 1, 1, 0.5, 2 / 3, 0.5, 2 / 3, 1, 1, 0.5,
2/3,1,1,1];
var mv:Array = [];
var mUv:Array = [];
var i:int;
for (i = 0; i < meIndex.length; i++) {
mUv.push(meUv[meIndex[i] * 2 + 0], meUv[meIndex[i] * 2 + 1]);
mv.push(meVertices[meIndex[i] * 3 + 0], meVertices[meIndex[i] * 3 + 1], meVertices[meIndex[i] * 3 + 2]);
}

meVertices = mv;

for (i = 0; i < meVertices.length; i+=3) {
meVertices[i + 0] *= sx;
meVertices[i + 1] *= sy;
meVertices[i + 2] *= sz;
}

var indexData:Vector.<uint> = new Vector.<uint>();
for (i = 0; i < 36; i++) indexData.push(i);


subGeometry.updateVertexData(Vector.<Number>(mv));

subGeometry.updateUVData(Vector.<Number>(meUv));

subGeometry.updateIndexData(indexData);

subGeometry.autoDeriveVertexNormals = true;

subGeometry.autoDeriveVertexTangents = true;

geometry.subGeometries.push(subGeometry);


var cM:Mesh = new Mesh(geometry, blaMaterial);
return cM;
}

private function setupWheel() : Mesh
{
return makeCube(5,10,10);
}

public function mekeBlaMaterial():TextureMaterial {
var s:Sprite = new Sprite();
var sh:Shape = new Shape();
var b:Bitmap;
var e:Number = 128;
s.addChild(makeABitmap('A'));
s.addChild(b = makeABitmap('B'));
b.x = e;
s.addChild(b = makeABitmap('C'));
b.x = e * 2;
s.addChild(b = makeABitmap('D'));
b.y = e;
s.addChild(b = makeABitmap('E'));
b.x = e; b.y = e;
s.addChild(b = makeABitmap('F'));
b.x = e * 2; b.y = e;
s.addChild(sh);
sh.graphics.lineStyle(24, 0xFF8000);
for (var i:int; i < 6; i++) {
sh.graphics.drawRect(i % 3 * e, int(i / 3) * e, e, e);
}
var bmd:BitmapData = new BitmapData(256, 256);
var m:Matrix = new Matrix();
m.scale(1 / 1.5, 1);
bmd.draw(s, m);
//addChild(new Bitmap(bmd));////show my cube textures
return new TextureMaterial(new BitmapTexture(bmd), false, true);
}

public function makeABitmap(str:String = 'A'):Bitmap {
var txt:TextField = new TextField();
txt.htmlText = '<FONT FACE="courier" SIZE="12" COLOR="#000000" LETTERSPACING="0" KERNING="0"><b>'+str+'</b></FONT></P>';
var tbmd:BitmapData = new BitmapData(128, 128);
var m:Matrix = new Matrix();
m.ty = -4;
m.tx = -2;
m.scale(13, 13);
tbmd.draw(txt,m);
return new Bitmap(tbmd);
}

}

}

It's previous version of sprite3dSmoke.
You can download a zip with away3d 4.1.1 shadow jiglib car and smoke.
How it demo will be on Alternativa3d.
Update Contact :
No Wa/Telepon (puat) : 085267792168
No Wa/Telepon (fajar) : 085369237896
Email : Fajarudinsidik@gmail.com
NB :: Bila Sobat tertarik Ingin membuat software, membeli software, membeli source code, membeli hardware elektronika untuk kepentingan Perusahaan maupun Tugas Akhir (TA/SKRIPSI), Insyaallah Saya siap membantu, untuk Respon Cepat dapat menghubungi kami, melalui :

No Wa/Telepon (puat) : 085267792168
No Wa/Telepon (fajar) : 085369237896
Email: Fajarudinsidik@gmail.com


atau Kirimkan Private messanger melalui email dengan klik tombol order dibawah ini :

ٱلْحَمْدُ لِلَّهِ رَبِّ ٱلْعَٰلَمِين
Alhamdulilah hirobil alamin

وَ السَّلاَمُ عَلَيْكُمْ وَرَحْمَةُ اللهِ وَبَرَكَاتُهُ
wassalamualaikum warahmatullahi wabarakatuh


Artikel away3d shadow jiglib racing smoke demo, Diterbitkan oleh scodeaplikasi pada Sabtu, 11 Mei 2013. Semoga artikel ini dapat menambah wawasan Anda. Website ini dipost dari beberapa sumber, bisa cek disini sumber, Sobat diperbolehkan mengcopy paste / menyebar luaskan artikel ini, karena segala yang dipost di public adalah milik public. Bila Sobat tertarik Ingin membuat software, membeli software, membeli source code ,Dengan Cara menghubungi saya Ke Email: Fajarudinsidik@gmail.com, atau No Hp/WA : (fajar) : 085369237896, (puat) : 085267792168.

Tawk.to