2010-08-08 2 views

답변

0

"3D 피킹"이라고합니다. 화면 좌표를 세계 좌표로 변환해야합니다. 거기에서 광선/충돌 객체 (경계 상자?) 교차 테스트를 수행합니다. 교차하면 사용자가 클릭 한 것입니다.

깊이 순서 문제를 해결하려면 먼저 각 객체의 교차점을 찾은 다음 최저 (양수) 시간대를 선택하는 등 조금 더해야 할 것입니다.

Google에서 '3D 피킹'을 검색하면 원하는 것을 찾을 수 있습니다. 이 그것에게 수학을 파악하기 위해 당신은 단지이 경계 상자, 다각형, 곡선 등이 될 객체를 경계의 형태에 국한되지 것을 http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=32

참고 : 여기에

는 튜토리얼 지원하려는 각 유형의 오브젝트에 대한 교차 테스트의 경우.

편집 : 모든 멋진 애들이 (틀림없이 10 년 전 ...)는 OpenGL을 배울 어디를 연결하기 전에 내가 그 자습서를 읽어 보지 않았

, 나는 그냥 생각 NEHE이다.

http://www.opengl.org/resources/faq/technical/selection.htm

+0

NeHe 튜토리얼은 OpenGL ES에서 원격으로 작동하지 않는 나쁜 예입니다. –

+0

@Matias Valdenegro : 궁극적으로 3D 피킹 알고리즘 자체는 3D API에 무관심합니다. 나는 연결된 튜토리얼이 너무 많이 끼어 들었다는 것에 동의하며, 픽업 계산을하기 위해 API를 사용하고 있는지 여부를보기 위해 읽지 않았다. 링크 제공의 요점은 적어도 하나의 3D 피킹 자습서가 있다는 것을 보여주는 것입니다. NEHE는 종종 새로운 OpenGL 프로그래머가 모든면에서 올바른지 여부에 관계없이 쉽게 따라 할 수있는 자습서를 제공합니다. 당신이 더 나은 것을 가지고 있다면, 링크를 제공하십시오. –

0

waldecir하는 raypick 기능을 찾습니다 여기

은 따기에 대한 OpenGL을 자주 묻는 질문에서 무언가이다. 이것은 장면의 카메라 중심에서 클릭 한 픽셀을 통해 광선을 보내는 이름입니다 (실제로는 3D 세계에서 "화면의 유리 표면"을 나타내는 카메라 평면에서 해당 픽셀의 변환 된 위치를 통해). 가장 앞쪽의 다각형을 반환합니다. ray가 일부 정보와 함께 나타납니다. 일반적으로 다각형의 표면 축에서 좌표가 지정됩니다. UV 또는 텍스처 좌표. 좌표를 확인하여 사용자가 클릭 한 사각형을 결정할 수 있습니다.

광선은 어떤 위치에서나 어떤 방향으로도 전송 될 수 있으므로 카메라 위치와 비행기 중심을 가져야 할 가능성이 있지만 문서가 도움이 될 것입니다.