3D Animathion
Adobe support for native 3D only in cs4. There are lot of opensource flash 3d engines are there. I tried papervision3d and away3d. Both are quite well. There are lot more tutorials for both online for away3d tutorials click here , for papervision3d download this book. I got the source code of away3d from the google code http://code.google.com/p/away3d/ and for papervison3d svn http://code.google.com/p/papervision3d/. I generate swc using the command. The red5 says about away3d.
D:\sdk\Away3D> compc -include-sources ./src -source-path ./src -target-player 10 -output Away3d.swc
Initially i got this error when compile away3d "Error: Type was not found or was not a compile-time constant: Vector. in away3d"
Then i added the -target-player 10 in command line is fix that error. I think away3d is better than papervision3d. Here is my first animation here
I'm using away3d here...
Source Code:
package {
import away3d.cameras.Camera3D;
import away3d.cameras.HoverCamera3D;
import away3d.cameras.TargetCamera3D;
import away3d.containers.ObjectContainer3D;
import away3d.containers.Scene3D;
import away3d.containers.View3D;
import away3d.core.math.Number3D;
import away3d.materials.BitmapMaterial;
import away3d.materials.WireColorMaterial;
import away3d.primitives.Cube;
import away3d.core.render.Renderer;
import away3d.primitives.Sphere;
import away3d.primitives.WireSphere;
import away3d.core.utils.Cast;
import away3d.core.utils.CastError;
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.Point;
/**
*
* @author Arul
*/
public class FirstApplication extends Sprite {
public var viewer: View3D;
public var scene: Scene3D;
public var camera: Camera3D;
public var cube: Cube;
public var sphere: Sphere;
public var wiresphere: WireSphere;
public var group: ObjectContainer3D;
public var material: WireColorMaterial;
public var bitmapMaterial: BitmapMaterial;
[Embed(source = "assets/favicon.jpg")]
private var favicon: Class;
public var image: Bitmap = new favicon();
[SWF(backgroundColor = "#EEE8DA")]
public function FirstApplication() {
init3D();
}
public function init3D(): void {
stage.frameRate = 30;
camera = new Camera3D({
y: 400,
z: -1000
});
viewer = new View3D({
camera: camera,
x: 250,
y: 100,
z: 100
});
scene = new Scene3D();
cube = new Cube();
sphere = new Sphere();
wiresphere = new WireSphere();
group = new ObjectContainer3D();
material = new WireColorMaterial();
bitmapMaterial = new BitmapMaterial(Cast.bitmap(image));
material.color = 0xA6111D;
sphere.x = 100;
sphere.y = 50;
sphere.z = 100;
sphere.radius = 75;
sphere.bothsides = true;
sphere.material = material;
group.addChild(sphere);
wiresphere.x = 270;
wiresphere.y = 150;
wiresphere.z = 150;
wiresphere.radius = 75;
wiresphere.bothsides = true;
wiresphere.material = material;
group.addChild(wiresphere);
cube.x = 250;
cube.y = 250;
cube.z = 400;
cube.material = bitmapMaterial;
group.addChild(cube);
viewer.scene.addChild(group);
viewer.render();
addChild(viewer);
addEventListener(Event.ENTER_FRAME, groupRotation);
group.addEventListener(Event.ENTER_FRAME, sphereRotation);
//addEventListener(MouseEvent.MOUSE_DOWN, lookThere);
}
public function groupRotation(e: Event): void {
group.rotationX = group.x + 1;
group.applyRotations();
viewer.render();
}
public function sphereRotation(e: Event): void {
sphere.rotationX = sphere.x + 1;
sphere.applyRotations();
wiresphere.rotationZ = wiresphere.z + 1;
wiresphere.applyRotations();
viewer.render();
}
public function lookThere(e: MouseEvent): void {
var clickpoint: Point = new Point(e.stageX, e.stageY);
var hypothines: Number = Point.distance(new Point(0, 0), clickpoint);
var sine: Number = Math.asin(e.stageX / hypothines);
var cos: Number = Math.acos(e.stageY / hypothines);
camera.lookAt(new Number3D(e.stageX, e.stageY, hypothines));
/**
* Horizontal angle
*/
camera.pan(cos);
/**
* vertical angle
*/
camera.tilt(sine);
viewer.render();
}
}
}