Showing posts with label Away3D. Show all posts
Showing posts with label Away3D. Show all posts

Flash builder & Away3d setting 3d scene

Flash builder module: get your rss

// ActionScript file
//http://www.flash-3d.net/2010/11/loading-complex-models-with-away3d/
//http://www.mail-archive.com/away3d-dev@googlegroups.com/msg21922.html
//http://gestureworks.com/flash-tutorials/multitouch-away3d-application/
//http://www.brighthub.com/hubfolio/matthew-casperson/blog/archive/2009/08/23/tutorial-index.aspx
//http://www.allforthecode.co.uk/aftc/forum/user/modules/forum/article.php?index=4&subindex=0&aid=278
//http://www.flashmagazine.com/tutorials/detail/away3d_basics_the_cameras/
//http://www.youtube.com/watch?v=oCltyflJdIM

import away3d.arcane;
import away3d.cameras.Camera3D;
import away3d.cameras.HoverCamera3D;
import away3d.containers.*;
import away3d.core.base.*;
import away3d.core.math.*;
import away3d.materials.ColorMaterial;
import away3d.primitives.Cube;
import away3d.primitives.Plane;
import away3d.primitives.Trident;

import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
import flash.system.System;
import flash.ui.Keyboard;

import mx.core.mx_internal;
import mx.effects.Zoom;
import mx.managers.SystemManager;

private var scene:Scene3D;
//private var camera_c:Camera3D;
private var view:View3D;
private var camera_c:HoverCamera3D;
private var cube:Cube;
private var cPlane:Plane;
private var axis:Trident;
private var toggle:Boolean = false;

private var lastPanAngle:Number;
private var lastTiltAngle:Number;
private var lastMouseX:Number;
private var lastMouseY:Number;
private var moveMouse:Boolean = false;

private var lastKey:uint;
private var keyIsDown:Boolean = false;

private function init():void
{ initEngine();
loadModel();
Rendering();
}

private function initEngine():void
{
camera_c = new HoverCamera3D({z:-500});
//camera_c = new Camera3D({z:-500});
view = new View3D({camera:camera_c});
//view.height = modelcontainer.height;
//view.width = modelcontainer.width;
view.x = modelcontainer.width/2;
view.y = modelcontainer.height/2;
chome.addChild(view);

}
protected function camera_clickHandler(event:MouseEvent = null):void
{ if(toggle){
toggle = false;
msg.text = "disable camera view";
} else {
toggle = true;
msg.text = "enable camera view";
}
}

protected function loadModel():void
{ var material:ColorMaterial = new ColorMaterial(0xff0000);
cube = new Cube(material);

view.scene.addChild(cube);
//axis = new Trident(200, true);
//view.scene.addChild(axis);
cPlane = new Plane({width:500,height:500,bothsides:true,z:0,ownCanvas:true});
cPlane.rotationX = 90;
//cPlane.rotationY = 180;
cPlane.y = -45;
view.scene.addChild(cPlane);

}
protected function Rendering():void
{ chome.addEventListener(MouseEvent.MOUSE_DOWN, MouseDown);
chome.addEventListener(MouseEvent.MOUSE_UP, MouseUp);
chome.addEventListener(Event.ENTER_FRAME, renderScene);
this.stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDown);
this.stage.addEventListener(KeyboardEvent.KEY_UP,keyUp);
}
private function renderScene(event:Event):void
{
if(keyIsDown){
// if the key is still pressed, just keep on moving
switch(lastKey){
case 87 : camera_c.moveUp(10); break;
case 83 : camera_c.moveDown(10); break;
case 65 : camera_c.moveLeft(10); break;
case 68 : camera_c.moveRight(10); break;
case Keyboard.UP : camera_c.moveForward(10); break;
case Keyboard.DOWN : camera_c.moveBackward(10); break;
}
}
var cameraSpeed:Number = 0.3;// Approximately same speed as mouse movement.
if (moveMouse)
{
camera_c.panAngle = cameraSpeed*(stage.mouseX - lastMouseX) + lastPanAngle;
camera_c.tiltAngle = cameraSpeed*(stage.mouseY - lastMouseY) + lastTiltAngle;
}
if(toggle){
cube.rotationY += 2;
camera_c.hover(true);
} else {
camera_c.hover(false);
cube.rotationY = 0;
}

view.render();
}

private function keyDown(e:KeyboardEvent):void
{ lastKey = e.keyCode;
keyIsDown = true;
}
private function keyUp(e:KeyboardEvent):void
{
keyIsDown = false;
}
private function m_out(event:MouseEvent):void
{
camera_c.zoom = stage.stageHeight;
camera_c.focus = stage.stageWidth;
}
private function m_over(event:MouseEvent):void
{
camera_c.zoom = (stage.mouseY/stage.stageHeight) * 4+0.5;
camera_c.focus = (stage.mouseX/stage.stageWidth) * 600;
}
private function MouseDown(event:MouseEvent):void { lastPanAngle = camera_c.panAngle;
lastTiltAngle = camera_c.tiltAngle;
lastMouseX = stage.mouseX;
lastMouseY = stage.mouseY;
moveMouse = true;
}
private function MouseUp(event:MouseEvent):void
{ moveMouse = false;
}

Away3D Camera

import away3d.cameras.HoverCamera3D;
import away3d.containers.View3D;
import away3d.materials.ColorMaterial;
import away3d.primitives.Sphere;
import away3d.primitives.Trident;
import away3d.containers.View3D;
import away3d.materials.BitmapMaterial;
import away3d.core.base.Object3D;
import away3d.materials.*;
import away3d.containers.*;
import away3d.materials.BitmapMaterial;
import away3d.materials.EnviroBitmapMaterial;
import away3d.materials.EnviroColorMaterial;
import away3d.materials.PhongBitmapMaterial;
import away3d.materials.TransformBitmapMaterial;
import away3d.materials.utils.SimpleShadow;
import away3d.primitives.Plane;
import away3d.events.MouseEvent3D;
import away3d.materials.MovieMaterial;


import fl.transitions.Tween;
import fl.transitions.easing.*;
import com.greensock.*;
import com.greensock.TweenLite;
import com.greensock.easing.*;

import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.MovieClip;
import flash.text.TextFieldAutoSize;
import flashx.textLayout.formats.BackgroundColor;
import flash.text.TextField;
import flash.display.Sprite;


var GMcamera:HoverCamera3D;
var lastMouseX:Number;
var lastMouseY:Number;
var lastPanAngle:Number;
var lastTiltAngle:Number;
var move:Boolean = false;
var View:View3D;
var group:ObjectContainer3D;
var GMscene:Scene3D;
var labeltitle:TextField;
var pan:Sprite;


var material_01:BitmapFileMaterial;
var material_02:BitmapFileMaterial;
var material_03:BitmapFileMaterial;
var material_04:BitmapFileMaterial;
var material_05:BitmapFileMaterial;
//var ScreenMaterial_01:MovieMaterial;

var myPlane1:Plane;
var myPlane1a:Plane;
var ScreenPlane01:Plane;
var ScreenPlane01a:Plane;

var myPlane2:Plane;
var myPlane2a:Plane;

var Planetarget:Plane;

function GM():void
{

this.stage.scaleMode = StageScaleMode.NO_SCALE;
//this.stage.align = StageAlign.CENTER;

GMscene = new Scene3D();

GMcamera = new HoverCamera3D();
View = new View3D({camera:GMcamera,x:org.x,y:org.y});

addChild(View);
GMcamera.panAngle = 20;
GMcamera.tiltAngle = 10;
//GMcamera.minTiltAngle = -90;
GMcamera.hover(true);



group = new ObjectContainer3D();
View.scene.addChild(group);


// Show the axis
var axis:Trident = new Trident(180);
View.scene.addChild(axis);


addEventListener(Event.ENTER_FRAME, onEnterFrame);
this.stage.addEventListener(MouseEvent.MOUSE_DOWN, MouseDown);
this.stage.addEventListener(MouseEvent.MOUSE_UP, MouseUp);
//this.stage.addEventListener(MouseEvent.MOUSE_UP, MouseOver);

initObjects();
addText();
}


function MouseDown(event:MouseEvent):void
{
lastPanAngle = GMcamera.panAngle;
lastTiltAngle = GMcamera.tiltAngle;
lastMouseX = stage.mouseX;
lastMouseY = stage.mouseY;
move = true;
}

function MouseUp(event:MouseEvent):void
{
move = false;
}

function MouseOver(e:MouseEvent3D):void
{

TweenLite.to(GMcamera, 0.3, { panAngle:0, tiltAngle:0, zoom:10 });
//GMcamera.target = e.target as Object3D;

}

function MouseOut(e:MouseEvent3D):void
{

TweenLite.to(GMcamera, 1, { panAngle:20, tiltAngle:10 ,zoom:8 });
}


function onEnterFrame(e:Event):void
{
goFullScreen();
//TweenLite.to(GMcamera, 0.3, { panAngle:45, tiltAngle:20, scaleX:0.5, scaleY:0.5});
// re-render viewport
var cameraSpeed:Number = 0.3; // Approximately same speed as mouse movement.
if (move) {
GMcamera.panAngle = cameraSpeed*(stage.mouseX - lastMouseX) + lastPanAngle;
GMcamera.tiltAngle = cameraSpeed*(stage.mouseY - lastMouseY) + lastTiltAngle;
}
GMcamera.hover();
View.render();

//labeltitle.text = "Zoom: "+GMcamera.panAngle;
}


function initObjects():void
{

//Material
material_01 = new BitmapFileMaterial("./images/Screen1.jpg");
myPlane1 = new Plane({material:material_01,
x:50,y:50,z:0,
height:350,width:900,
rotationX:90,rotationY:180,
name:"Timepieces"});

myPlane1.bothsides=true;
group.addChild(myPlane1);
myPlane1.addEventListener(MouseEvent3D.MOUSE_OVER, MouseOver);
myPlane1.addEventListener(MouseEvent3D.MOUSE_OUT, MouseOut);
myPlane1a.addEventListener(MouseEvent3D.MOUSE_OVER, MouseOver);
myPlane1a.addEventListener(MouseEvent3D.MOUSE_OUT, MouseOut);



}

function addText():void
{

labeltitle = new TextField();
labeltitle.autoSize = TextFieldAutoSize.LEFT;
var myFont = new verdena();
var txtFormat:TextFormat = new TextFormat();
txtFormat.font = myFont.fontName;
txtFormat.color = 0xFFFFFF;
txtFormat.size = 14;
labeltitle.defaultTextFormat = txtFormat;
labeltitle.width = 85;
labeltitle.x = 5;
labeltitle.y = 5;

pan = new Sprite();
pan.graphics.beginFill(0x000000);
pan.graphics.drawRoundRect(0,0,100,100,10,10);
pan.graphics.endFill();
addChild(pan);

pan.x = 10;
pan.y = stage.width;
pan.addChild(labeltitle);

}

function Screen1():void
{


/* ScreenMaterial_01 = new BitmapFileMaterial("screen1.swf");
var mymovieclip:MovieClip = new MovieClip();
mymovieclip.graphics.beginFill(0xFF0000);
mymovieclip.graphics.drawRect(0, 0, 500, 500);
mymovieclip.graphics.endFill();
mymovieclip.x = 80;
mymovieclip.y = 60;
group.addChild(mymovieclip);

ScreenMaterial_01=new MovieMaterial(mymovieclip);
ScreenPlane01 = new Plane({material:ScreenMaterial_01,width:500,height:500,x:50,y:50,segmentsW:1,segmentsH:1,z:0,rotationX:90,rotationY:180,name:"Timepieces"});
ScreenPlane01a = new Plane({material:material_01,x:50,y:50,z:0,rotationX:90,name:"Timepieces"});
ScreenPlane01.bothsides=true;

group.addChild(ScreenPlane01);
group.addChild(ScreenPlane01a);

var materialMovie:MovieClip = new causticsMovie() as MovieClip;
var causticsMaterial:MovieMaterial = new MovieMaterial( materialMovie );
var sphere:Sphere = new Sphere({material:causticsMaterial});
view.scene.addChild(sphere);

var mc:MovieClip = new MovieClip();
mc.graphics.beginFill(0xFF0000);
mc.graphics.drawRect(0, 0, 100, 80);
mc.graphics.endFill();
mc.x = 80;
mc.y = 60;
group.addChild(mc);*/

}

GM();


//Full Screen
import flash.display.StageDisplayState;

function goFullScreen():void
{
if (stage.displayState == StageDisplayState.NORMAL) {
stage.displayState=StageDisplayState.FULL_SCREEN;
}/* else {
stage.displayState=StageDisplayState.NORMAL;
}*/
}



import flash.system.fscommand;
var exit_btn:close_btn = new close_btn();
exit_btn.x = 450;
exit_btn.y = 743;
exit_btn.buttonMode = true;
exit_btn.addEventListener(MouseEvent.MOUSE_DOWN, _handleClick)
addChild(exit_btn);

function _handleClick(event:MouseEvent):void
{
fscommand("quit");

}