2011-03-17 4 views
0

나는 파노라마 장면에서 일하고있다. 그리고 커서로 비행기를 움직이고 싶습니다. 마우스를 움직일 때, 비행기는 마우스 좌표 여야합니다. 그리고 저는 비행기의 3D 좌표 (x, y, z)를 expecially z 좌표로 가져 가고 싶습니다. 나는 아래의 코드를 시도한다. 하지만 제대로 작동하지 않습니다. 마우스와 평면은 화면상의 좌표가 동일하지 않습니다. 내가 어떻게 할 수 있니?플렉스 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 개체가 있지만이 문제에 대해 어떻게 사용할 수 있는지 잘 모릅니다. –

+0

클릭 이벤트에서 hitTestPoint를 확인해 보셨습니까? http://papervision3d.googlecode.com/svn/trunk/as3/trunk/docs/org/papervision3d/objects/DisplayObject3D.html#hitTestPoint() – robertp

0

아니요. 시도하지 않습니다.

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) 좌표 : 나는 개체를 Mouse3d 코드 아래 실행하려합니다. 나는 이유를 모른다.

관련 문제