OpenGL® 피킹이란 무엇입니까?

컴퓨터 프로그래밍에서 OpenGL® 선택은 장면이 렌더링되면 3D (3D) 장면 내의 어떤 객체가 화면의 특정 지점에 위치하는지 결정하는 프로세스입니다. 또한 한 지점이나 상자 내부에 여러 개체를 찾는 것을 나타낼 수도 있습니다. 대부분의 경우 OpenGL® 선택은 사용자가 마우스 커서로 화면에서 어떤 3D 객체를 선택하려고하는지 결정하는 데 사용됩니다. 이 작업은 단순 해 보이지만 OpenGL®이 장면을 상당히 복잡하게 렌더링하는 방법에는 몇 가지 미묘한 점이 있습니다. 또한 특정 그래픽 카드 및 드라이버에는 OpenGL® 선택 기능이 실패하고 잘못된 결과가 반환 될 수있는 고유 한 결함이 있습니다.

사용자가 컴퓨터 모니터에서 3D 장면을보고있는 경우 결과 이미지를 장면의 렌더링이라고합니다. 장면은 실제로 기본 모양 또는 다각형의 모음으로 메모리에 저장되는데, 그 자체는 장면의 공간 내에서 3D 점의 모음 일뿐입니다. 컴퓨터는 절대 좌표라고도하는 월드 좌표를 사용하여 장면에서 객체를 조작하는 대부분의 기본 기능을 수행합니다. 대부분의 응용 프로그램에서 사용자는 장면을 다른 각도로 조작 할 수 있으므로 다른 관점에서 물체를 볼 수 있습니다. 장면 내에서 사용자의 가상 위치를 카메라 각도 또는 카메라 위치라고합니다.

OpenGL® 선택의 복잡성은 장면 내 카메라 위치와 같은 임의의 위치와 각도에서 2D (2D) 화면에서 마우스의 위치를 ​​결정하는 데 있습니다. 또한 사람 뷰어의 관점에서 렌더링하는 것이 실제로 2D이므로 사용자가 장면 내부에서 마우스 클릭의 깊이를 제공 할 수있는 방법이 없습니다. OpenGL® 피킹 기능은이 복잡한 문제를 두 가지 방법으로 해결합니다.

첫 번째는 뷰어가 추상적 인 위치를 번역하고 렌더링 창에서 객체를 찾기 위해 일련의 개별 계산을 수행하는 대신 렌더링이 사용한 것을 제외하고는 정상적으로 작동 할 때와 같이 실제로 장면을 렌더링한다는 것입니다 선택을 위해 표시되지 않은 경우 올바른 객체 위치를 계산하는 데만 사용됩니다. 차이점은 사용자가 볼 수있는 전체 영역을 렌더링하는 대신 마우스가있는 영역 만 렌더링한다는 것입니다. 이는 렌더링 된 객체가 기술적으로 마우스 포인터가있는 지점에 있음을 의미합니다.

선택된 영역의 깊이를 나타낼 방법이없는 두 번째 문제는 장면에서 마우스 좌표 아래에있는 모든 객체를 반환함으로써 해결됩니다. OpenGL® 선택 기능은 뷰어의 위치에서 얼마나 멀리 떨어져 있는지와 함께 배열의 모든 객체를 반환합니다. 이를 통해 프로그램은 원하는 경우 가장 가까운 객체를 빠르게 찾을 수 있습니다.

OpenGL® 피킹을 시각화하는 한 가지 방법은 마우스 포인터의 위치에서 장면으로 이동하고 뷰어의 위치에서 멀어지는 선 (3D 프로그래밍에서 광선이라고도 함)을 상상하는 것입니다. 이 광선이 닿는 각 개체는 뷰어에서 얼마나 멀리 떨어져 있는지와 함께 개체 배열에 추가됩니다. OpenGL® 선택의 한 형태가 어떻게 작동하는지에 대한 매우 간단한 설명입니다.

OpenGL®에서 객체를 선택하는 또 다른 방법은 색상으로 객체를 찾는 것과 관련이 있으며 훨씬 빠릅니다. 이 방법은 장면을 렌더링하지만 오브젝트에 조명과 질감을 적용하는 대신 단일의 단순한 색상으로 렌더링합니다. 각 개체 또는 개체 그룹에는 고유 한 색상이 있습니다. 장면은 메모리에서만 렌더링되고 표시되지 않으므로 사용자가 보는 것에 영향을 미치지 않습니다. 객체 간의 3D 충돌을 찾는 대신 마우스 커서 위치의 색상이 대신 반환되고 해당 색상이 특정 객체와 상관됩니다.

다른 언어

이 문서가 도움이 되었나요? 피드백 감사드립니다 피드백 감사드립니다

어떻게 도와 드릴까요? 어떻게 도와 드릴까요?