2009-05-23 3 views
2

포인트와 삼각형 간의 교차를 테스트하는 방법을 알고 있습니다.마우스 좌표에서 3 차원으로 점 - 삼각형 교차점을 찾으십니까?

... 그러나 나는 그것을 얻지 못한다. 마우스의 좌표를 사용하여 정확하게 점의 시작 위치를 화면 평면 위로 옮길 수 있기 때문에 마우스 커서가 화면의 어디에 있는지에 따라 점 각도가 변경되어야한다. 또한 이것은 OpenGL 응용 프로그램에서 어느 원근감 각도를 사용하든 상관없이 완벽하게 작동해야하므로 점 각도가 다른 원근감 각도에 따라 달라집니다. gluPerspective()는 내가 말하는 함수입니다.

+0

에 당신이 "점의 시작 위치를 이동"무엇을 의미합니까? 점은 하나의 지점입니다. 내 요점은? ;) – ralphtheninja

+0

귀하의 질문이 무엇인지 명확히 할 수 있습니까? 정확한 지점을 움직일 수있는 방법을 묻고 있습니까? –

답변

2

글쎄, 당신은 무슨 뜻인지 짐작하고 추측 할 것입니다. 마우스로 개체를 선택하려고합니다. 체크 아웃 :

glUnProject.

이것은 3d 세계 좌표로 화면이 다시 좌표 변환합니다.

Google에는 문제가 발생하는 경우 자세한 정보가 있습니다.

건배!

1

그래, 내가 예를 들어, 난 내 마우스가 3D 좌표를 사용하여, 현재 그 시점에 큐브를 렌더링 할 수 있도록 화면 평면에 점을 이동하려면, 다음 난에 그 위치에서 선 촬영 내 마우스가 가리키는 곳에 배치, 그래서 내 3D 세계에있는 삼각형을 칠 것이며, 내가 마우스로 해당 개체를 선택할 수있는 방법 있음. 불분명 한 것에 대한

죄송합니다 :/

-

편집 : 야호 내가 그것을 그 nehe 튜토리얼 작업있어! 덕분에, 난 그게 쉽지 않을 거란 걸 알았어!

지금 사용하여 코드의 메신저이며 위대한 작품 :

void GetOGLPos(int x, int y, GLdouble &posX, GLdouble &posY, GLdouble &posZ){ 
    GLint viewport[4]; 
    GLdouble modelview[16]; 
    GLdouble projection[16]; 
    GLfloat winX, winY, winZ; 

    glGetDoublev(GL_MODELVIEW_MATRIX, modelview); 
    glGetDoublev(GL_PROJECTION_MATRIX, projection); 
    glGetIntegerv(GL_VIEWPORT, viewport); 

    winX = (float)x; 
    winY = (float)viewport[3]-(float)y; 
    glReadPixels(x, int(winY), 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ); 

    gluUnProject(winX, winY, winZ, modelview, projection, viewport, &posX, &posY, &posZ); 
} 
0

당신은 화면에 수직 마우스 위치를 통과하는 선 (라인)을 생성해야합니다.

난 당신이 훨씬 더 가기 전에 3D 형상 및 2D 예상을 몇 가지 기본 정보를 얻는 것이 좋습니다.

체크 아웃 Wikipedia

book search on Google 적지 제목을 마련했습니다.

폴리 & 밴 댐하지만 결정적인 책이다 - 여기 Amazon.co.uk 또는 여기 Amazon.com

관련 문제