我如何在flex papervision3d上获得鼠标z坐标?

时间:2011-03-17 09:54:33

标签: flex actionscript papervision3d pv3d

我正在拍摄全景。我想用光标移动一架飞机。当我移动鼠标时,平面必须是鼠标坐标。我想采取平面3D坐标(x,y,z)特别是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;
    }
}

2 个答案:

答案 0 :(得分:0)

据我所知,即使在PV3d中也没有鼠标的Z坐标。

答案 1 :(得分: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)。我不知道为什么。

相关问题