2013-12-17 1 views
1

QGLViewer를 사용하는 QT UI 프로그램에 표시해야하는 상당히 큰 모델이 있습니다. 기본 근거리 및 원거리 클리핑 거리 때문에 모델이 잘리지 않습니다. 너무 좁습니다. 내 질문은 기본 근거리 및 원거리 자르기 범위를 변경하는 방법입니다.QT 및 QGLViewer 프로그램에서 기본 QGLViewer의 근거리 및 원거리 자르기 거리를 변경하는 방법은 무엇입니까?

예를 들어 내 문제는

::glMatrixMode(GL_PROJECTION) ; 
::glLoadIdentity() ; 

::glClearColor(1.0f,1.0f,1.0f,0.0f); 
::glFrustum(-0.5,0.5,-0.5,0.5,-100000000.0,100000000.0) ; 

::glMatrixMode(GL_MODELVIEW) ; 
::glLoadIdentity() ; 

이 전혀 작동하지 않는, 내가 좋아하는 뭔가를 사용하려고이 일 enter image description here

처럼 보일 수 있고, 그것은 너무 QGLViewer에서 마우스 상호 작용을 나누기 . QT 및 QGLViewer를 사용하고 있으므로 사용할 수있는 glu 기능이 없습니다.

QGLViewer가 기본 클리핑 범위를 변경하는 방법을 아는 사람이 있는지 묻습니다.

QGLViewer가 clipping plane example, standard camera example과 같이 제공되는 일부 예제를 발견했지만 기본 뷰어를 변경하는 방법에 대한 단서가 아직 없습니다.

+0

내 질문에 문제가 있습니까? –

답변

1

본인 스스로 해결 한 것 같습니다. 설명서 here. 난 그냥 뷰어를 초기화하는

void Viewer::initializeGL() 
{ 
    QGLViewer::initializeGL(); 
    this->setSceneRadius(10000.0); 
} 

를이 코드를 사용하지만 반경이 기본 관점의 위치도 변경, 높은 경우이 역시 기본 장면 카메라를 설정하고, 그래서이 setSceneRadius 만 근처를 변경하지 않습니다/멀리 클리핑 비행기.

실제로는 here 문서와 다른 방법이 있습니다.

그럼이 부분이 더 좋을 것입니다. 실제 근거리 및 원거리를 계산하는 수식은 마지막 링크의 문서에 나와 있습니다. 계수가 클수록 크고 클리핑 계수가 클수록 가시 영역의 범위가 넓어집니다.

void Viewer::initializeGL() 
{ 
    QGLViewer::initializeGL(); 
    this->camera()->setZNearCoefficient(0.00001); 
    this->camera()->setZClippingCoefficient(1000.0); 
} 

가까운 근거리 버전과 원거리 버전을 무시할 수 있습니다.

이 맞춤형 카메라로 QGLViewer 개체를 구성하십시오.