2011-03-17 38 views
0

我正在拍攝全景。我想用光標移動飛機。當我移動鼠標時,平面必須是鼠標座標。我想採用平面三維座標(x,y,z),特別是z座標。我嘗試下面的代碼。但它不能正常工作。屏幕上的鼠標和平面不是相同的座標。我該怎麼辦?如何在flex papervision3d上獲得鼠標z座標?

public class RayTracer 
{ 
    public static function getIntersection(viewport:Viewport3D, camera:CameraObject3D, normal:Array):Number3D 
    { 
     var plane3D:Plane3D=new Plane3D(); 
     plane3D.setNormalAndPoint(new Number3D(0, 1, 0), new Number3D(0, 0, 0)); 
     var cameraPosition:Number3D=new Number3D(camera.x, camera.y, camera.z); 
     var ray:Number3D=camera.unproject(viewport.containerSprite.mouseX, viewport.containerSprite.mouseY); 
     ray=Number3D.add(ray, cameraPosition); 
     var intersect:Number3D=plane3D.getIntersectionLineNumbers(cameraPosition, ray); 
     return intersect; 
    } 
} 

回答

0

就我所知,即使在PV3d中也沒有鼠標的Z座標。

+0

有一個Mouse3D對象,但我不知道如何使用它來解決這個問題? – 2011-03-17 13:10:24

+0

您是否嘗試過點擊事件檢查hitTestPoint? http://papervision3d.googlecode.com/svn/trunk/as3/trunk/docs/org/papervision3d/objects/DisplayObject3D.html#hitTestPoint() – robertp 2011-03-17 15:28:55

0

不,我會嘗試。我想Mouse3d對象,下面的代碼運行:

private function onEnterFrame(param1:Event=null):void{ 
renderer.renderScene(scene, camera, viewport); 
var mouse3D:Mouse3D; 
viewport.interactive=true; 
Mouse3D.enabled=true; 
mouse3D=viewport.interactiveSceneManager.mouse3D; 
trace(mouse3D.x, mouse3D.y, mouse3D.z) 

}

但mouse3D總是座標(0,0,0)。我不知道爲什麼。