2012-10-06 7 views
2

glutSolidCube(GLDouble size)에 일종의 tranformation을 적용하여 3D square frustum을 만들 수 있는지 알고 싶습니다. 나는 어떤 종류의 전단 매트릭스가 관련되어 있다고 추측합니다. 이것은 내가 말할 수있는 것부터입니다. 이것은 내장 된 변형이 아닙니다.변형을 큐브에 적용하여 3D 정사각형 절두체를 만드시겠습니까?

참고로, 나는보기 frustum (당신이 상상할 수있는 것처럼, 모든 Google 검색을 비뚤어지게 만들고 있음)에 전혀 신경 쓰지 않습니다. 저는 3D 장면의 일부로 3D 사각형의 절두체를 가지고 싶습니다. 큐브에서 하나를 생산하는 방법에 대한 아이디어는 인정 될 것입니다!

A Square Frustum

+1

친구가 제 큐브를 절두체로 변형시키는 전단 변형을 수행한다고 말했습니다. 그는 전단 매트릭스 내부의 음의 계수에 대해 이야기합니다. 하지만 지금은이 매트릭스를 찾을 수 없습니다. 콜루드가 도와 줘? – Gabrer

답변

2

이것은 매트릭스 전단되지 않고, 그 투시 투영하는 투영 행렬이다. 단위 큐브의 꼭지점 좌표에 역 투영 행렬을 곱하여 절두체 정점의 좌표를 얻습니다. 세계 공간에서 절두체의 좌표를 얻으려면 반대의 카메라 행렬 (뷰 행렬)에 의해 정점을 배가해야합니다. 자세한 공식 여기

봐 : http://www.songho.ca/opengl/gl_projectionmatrix.html

당신이 사용하는 일부 quick'n'dirty 구현을 원하는 경우는, 변형 쿼드의 숫자를 원하는 정점으로 VBO를 작성하거나 렌더링하는 것이 좋습니다 큐브를 변형하려면 고정 기능 파이프 라인.

P.

절두체의 모서리를 계산하는 코드 추출물이있다 : http://www.gamedev.net/topic/606716-frustum-corners-from-view-projection/

+0

그는 OpenGL 변환을 명시 적으로 요구하지 않았습니다. 큐브를 사다리꼴로 변환하기 위해서는보다 간단한 변환이 필요하다고 생각합니다. – linello

0

예는 매우 투영 행렬 주어진 프러스 텀으로 큐브를 변환 할 수 있습니다. 먼저 frustum의 모서리가 수렴하는 지점 인 초점 거리 d를 정의합니다. 그런 다음 볼륨의 모든 모서리에이 행렬을 곱하십시오.

P = [ 1 0 0 0 
     0 1 0 0 
     0 1 1/d 0 
     0 0 1 0 ]