I don't understand this.. If I dont add any camera movepivot seems to
work normally... but when I add the hovercam it rotates the object?
page.movePivot(-(page.width / 2),0,0);
Complete source..
package
{
import away3d.cameras.HoverCamera3D;
import away3d.cameras.TargetCamera3D;
import away3d.core.utils.Cast;
import away3d.containers.View3D;
import away3d.core.base.Vertex;
import away3d.materials.WireColorMaterial;
import away3d.materials.BitmapMaterial;
import away3d.primitives.Plane;
import away3d.events.MouseEvent3D;
import com.as3dmod.ModifierStack;
import com.as3dmod.modifiers.Bend;
import com.as3dmod.modifiers.Perlin;
import com.as3dmod.plugins.away3d.LibraryAway3d;
import com.as3dmod.util.ModConstant;
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageQuality;
import flash.display.StageScaleMode;
import flash.display.Bitmap;
import flash.events.Event;
import flash.events.MouseEvent;
import caurina.transitions.Tweener;
/**
* ...
* @author Chris de Kok
*/
[SWF(width="800", height="600", frameRate="30",
backgroundColor="#FFFFFF")]
public class Main extends Sprite
{
private var view:View3D;
private var cam:HoverCamera3D;
private var page:Plane;
private var mstack:ModifierStack;
private var bend:Bend;
[Embed (source="assets/front.jpg")]
private var FrontMaterialJPG:Class;
private var frontMaterial:BitmapMaterial;
[Embed (source="assets/back.jpg")]
private var BackMaterialJPG:Class;
private var backMaterial:BitmapMaterial;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
//Configure stage
stage.quality = StageQuality.HIGH;
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
// create a basic camera
cam = new HoverCamera3D();
cam.z = 0; // make sure it's positioned away from the
default 0,0,0
coordinate
cam.panangle = 0;
cam.tiltangle = 0;
cam.targetpanangle = 0;
cam.targettiltangle = 0;
cam.mintiltangle = -90;
// Create the view
view = new View3D({camera:cam});
view.x = (stage.stageWidth / 2);
view.y = (stage.stageHeight / 2);
addChild(view);
// Setup everything
initObjects();
initListeners();
}
private function initListeners():void {
this.addEventListener(Event.ENTER_FRAME, render);
page.addEventListener(MouseEvent3D.MOUSE_DOWN,
turnPage);
}
private function initObjects():void {
// Material
var mat:WireColorMaterial = new WireColorMaterial();
mat.color = 0xFFFFFF;
mat.wirecolor = 0x000000;
frontMaterial = new
BitmapMaterial(Cast.bitmap(FrontMaterialJPG));
backMaterial = new
BitmapMaterial(Cast.bitmap(BackMaterialJPG));
// Create the page
page = new Plane();
page.width = 200;
page.height = 300;
page.material = frontMaterial
page.back = backMaterial;
page.bothsides = true;
page.segmentsH = 6;
page.segmentsW = 6;
//page.rotationX = 90;
view.scene.addChild(page);
cam.target = page;
mstack = new ModifierStack(new LibraryAway3d(), page);
}
private function render(event:Event):void {
mstack.apply();
view.render();
}
private function dragPage(event:MouseEvent3D):void {
trace(event);
}
private function turnPage(event:MouseEvent3D):void {
if (Tweener.isTweening(page) == false) {
bend = new Bend(-2, 0, 1.5707963);
bend.constraint = ModConstant.RIGHT;
mstack.addModifier(bend);
if (page.rotationZ == 180) {
page.rotationZ = 0;
}
Tweener.addTween(page, { rotationZ:180, time:2,
transition:'easeInOutSine' } );
Tweener.addTween(bend, { force: 0, angle:0,
time:2,
transition:'easeInOutSine' } );
}
}
}
}