Hi all
i using last away3d from svn and have trouble with z-sorting
take a look image(http://img528.imageshack.us/img528/7465/zsorttrouble.jpg)
for best understanding.
why if the camera is close to plane, plane breaks(1) and what happens
with moon if plane overrides moon(2).
Source code:
import away3d.containers.*;
import away3d.core.base.*;
import away3d.primitives.*;
import away3d.materials.*;
import away3d.core.utils.Cast;
import away3d.cameras.*;
import away3d.core.render.*;
import away3d.core.math.Number3D;
var move:Boolean = false;
var staticMove:Boolean = false;
var lastPanAngle:Number;
var lastTiltAngle:Number;
var lastMouseX:Number;
var lastMouseY:Number;
var scene:Scene3D;
var camera:HoverCamera3D;
var trackingItem:Cube;
var view:View3D;
var globe:Sphere;
var moon:Sphere;
var bgPlane:Plane;
initEngine();
initObjects();
initListeners();
function initEngine():void
{
stage.align = StageAlign.TOP_LEFT;
scene = new Scene3D();
trackingItem = new Cube();
trackingItem.width = trackingItem.depth = trackingItem.height = 5;
trackingItem.x = 0;
trackingItem.y = 0;
trackingItem.z = 0;
trackingItem.alpha = 0;
camera = new HoverCamera3D();
camera.z = -1400;
camera.target = trackingItem;
camera.panangle = 0;
camera.tiltangle = 0;
camera.targetpanangle = 0;
camera.targettiltangle = 0;
view = new View3D({stats:false, scene:scene, camera:camera,
renderer:Renderer.CORRECT_Z_ORDER});
view.x = 495;
view.y = 325;
addChild(view);
}
function initObjects():void
{
globe = new Sphere({ownCanvas:true, material:"blue#white",
radius:150, segmentsH:18, segmentsW:26});
view.scene.addChild(globe);
moon = new Sphere({ownCanvas:true, material:"yellow#white",
radius:50, x:200, y:50, z:-300, segmentsH:6, segmentsW:6});
view.scene.addChild(moon);
bgPlane = new Plane({ownCanvas:true,
material:"CCCCCC#white",width:4000,height:4000,x:0,y:-150,z:0,segmentsW:4,
segmentsH:4});
view.scene.addChild(bgPlane);
}
function initListeners():void
{
addEventListener(Event.ENTER_FRAME, Update);
stage.addEventListener(MouseEvent.MOUSE_DOWN, MouseDown);
stage.addEventListener(MouseEvent.MOUSE_UP, MouseUp);
}
function MouseDown(event:MouseEvent):void
{
lastPanAngle = camera.targetpanangle;
lastTiltAngle = camera.targettiltangle;
lastMouseX = stage.mouseX;
lastMouseY = stage.mouseY;
move = true;
}
function MouseUp(event:MouseEvent):void
{
move = false;
}
function Update(event:Event):void
{
var cameraSpeed:Number = 0.3;
if (move)
{
camera.targetpanangle = cameraSpeed*(stage.mouseX - lastMouseX)
+
lastPanAngle;
camera.targettiltangle = cameraSpeed*(stage.mouseY -
lastMouseY) +
lastTiltAngle;
}
camera.hover();
view.render();
}
CORRECT_Z_ORDER and INTERSECTING_OBJECTS can't help =(
Сan you help me?