2012-06-03 1 views
3

일부 큐브가있는 장면을 표시하고 있습니다. 카메라는 persective를 사용합니다. 모든 것이 훌륭하게 작동하지만 수직선을 평행선으로 사용하고 싶습니다 (2 점 원근감 : http://en.wikipedia.org/wiki/Perspective_(graphical)#Two-point_perspective).오우거/모그레 : 카메라 두 점 원근감

정면에서 큐브 볼 때 :

내가 원하는 무엇을 :

+-----+ 
|  | 
|  | 
+-----+ 

내가 (과장) 받고 있어요 :

+--------+ 
\ /
    \ /
    +--+ 

나는 바이올린을 켜는 시도했습니다 카메라의 FOV, 그러나 아무 소용이 없습니다. 지금까지

내 시도 :

Camera = SceneManager.CreateCamera(CameraName); 
float q = 45; 
float d = 5000f; 
Matrix4 m = new Matrix4(
    1, 0, 0, (float)(Math.Sin(q)/d), 
    0, 1, 0, 0, 
    0, 0, 1, (float)(Math.Cos(q)/d), 
    0, 0, 0, 0 
    ); 
Camera.SetCustomProjectionMatrix(true, m); 
+0

enter image description here

도움이되지 않습니다. 이전에 컴퓨터 그래픽에서 2 점 관점을 보지 못했지만 가능해야한다고 생각합니다. – ChrisF

답변

5

버클리 대학은 다른 관점 변환하고 사용하는 데 필요한 행렬에 페이지가 있습니다. 두 점 관점의 변화는 다음과 같습니다

_     _ 
| 1 0 0 sin(q)/d | 
| 0 1 0  0  | 
| 0 0 1 cos(q)/d | 
|_ 0 0 0  0 _| 
q이 (오히려 축보다) 포인트를 회전하는 데 사용되는 각도

d입니다 설명 할 수없는하지만 난 그게 초점에서 카메라의 거리를 생각 (!) 평면. 보기의 필드 조작하기

Source

+0

빠른 답장을 보내 주셔서 감사합니다. 'Camera.ProjectionType = ProjectionType.PT_ORTHOGRAPHIC; '을 설정했지만 모든 축이 수직 (y?)이 아닌 평행이됩니다. 또한 Camera.SetCustomProjectionMatrix (true, new Matrix4 (1,0,0,0, 0,1,0,0, 0,0,0,0, 0,0,0,1));를 추가하려고 시도했지만 그런 다음 단색을 얻습니다 (카메라가 매우 가까이에있는 것처럼 확대). –

+0

@TeunvanVegchel - 한 축에는 평행 투영을, 다른 축에는 원근감을 가질 수 없습니다. – ChrisF

+0

위키 피 디아에서 원하는 것을 찾았습니다. [2 점 관점] (http://en.wikipedia.org/wiki/Perspective_ (graphical) # 2-point_perspective). 그러나 오우거는 이것을지지하지 않습니까? –