2010-01-06 7 views
1

다른 각도와 위치에서 비행기 벽이 있습니다. 카메라를 회전시키고 초점을 맞춘 평면을 똑바로 볼 수있게하고 싶습니다. 나는 다음과 같이 내가 클릭 평면에 트위닝 더미 평면 (lookAtMe) 만든 다음 looAtMe 비행기에Papervision3D : 비행기 모양 카메라 만들기

private function planeClicked(e:InteractiveScene3DEvent):void 
    { 
     lookAtTarget.copyTransform(this); 

     var time:Number = 1; 
     var tweenObject:Object = {}; 
     tweenObject.x = lookAtTarget.x; 
     tweenObject.y = lookAtTarget.y; 
     tweenObject.z = lookAtTarget.z; 
     tweenObject.rotationX = lookAtTarget.rotationX; 
     tweenObject.rotationY = lookAtTarget.rotationY; 
     tweenObject.rotationZ = lookAtTarget.rotationZ; 
     tweenObject.onUpdate = onSeatTween; 
     tweenObject.ease = Cubic.easeInOut; 
     TweenMax.to(lookAtMe, time, tweenObject); 
    } 

    private function onSeatTween():void 
    { 
     camera.lookAt(lookAtMe); 
    } 

카메라 센터를하지만 선택 비행기가 똑바로이되도록 회전하지 않습니다.

도와주세요! 감사.

+0

당신은 이것의 배후에있는 수학을 이해하고 있습니까, 아니면 그냥 추측하고 있습니까? –

+0

대부분 추측 - 나는 이것에 아주 새롭다. 어떤 도움이라도 대단히 감사하겠습니다. – Josh

답변

2

비행기가 정상적인가요? 사실입니다. 비행기가 어느 쪽을 향하고 있는지를 결정합니다. 법선은 길이가 1 인 벡터입니다.

세 개의 3 차원 점을 알고 있으면 평면의 법선을 계산할 수 있습니다. 예 : 중심, 상단의 중심 및 오른쪽의 중심. 센터 C, 센터 상단을 M1, 센터를 M2으로합시다.

여기 계산하는 방법은 다음과 일반 :

Cross(C - M1, C - M2) 

(당신이 십자가 제품을 모르는 경우를 찾아주세요)

화살표에 의해 정의 된대로이 당신에게 벡터를 제공한다 :

alt text

좋아, 그래서 우리는 어떻게 그 정보를 사용할 수 있습니까?

이 떨어진면에서 올바른 위치에 약간의 거리를 카메라를 넣어 것입니다

camera_position = plane_position + (plane_normal의 * 거리) : 비행기와 센터의 정상을 알고, 우리는 다음과 같이 말할 수있다.

camera_direction = plane_normal *은 -1

이것은 평면에 카메라 모양을 만든다.

그러나 ActionScript 3에서는 카메라 룩업 기능을 벡터로 정의한다고 생각하지 않습니다. 객체를 사용한다고 생각합니다. 예를 들어 비행기의 중앙에 작은 보이지 않는 물체를 놓고 카메라를 가리킬 수 있습니다. 그렇게하면 원하는 결과를 얻을 수 있습니다.

1

나는 당신이보고 싶은 평면 (X, Y, Z)의 점을 평균하여 (?) 선택하여 뒤로 작업하고 싶다고 생각합니다. 그런 다음 원하는 지점에서 거리 D 떨어진 곳을 선택하십시오.

다음은 평면ax + by + cz = d (다른 d)의 방정식을 취하고 법선 벡터 n = (a, b, c)를 추론합니다. 그것을 정규화하고 D를 곱하여 N = (A, B, C)를 얻는다. 이제는 (X, Y, Z) +/- (A, B, C)에서 볼 수있는 두 지점 만 있습니다.

그래서 뒤에서 보거나 앞에서 보려고 할 것인지 선택합니다. 이는 + vs의 선택에 영향을 미칩니다. 어느 것이 어떤 것인지 알 수 없습니다.

1

PV3D.org 블로그에는 찾고자하는 것이 정확히 일치하는 working example이 있습니다.

관련 문제