OpenGL® 피킹이란 무엇입니까?
컴퓨터 프로그래밍에서 OpenGL® 선택은 장면이 렌더링되면 3D (3D) 장면 내의 어떤 객체가 화면의 특정 지점에 위치하는지 결정하는 프로세스입니다. 또한 한 지점이나 상자 내부에 여러 개체를 찾는 것을 나타낼 수도 있습니다. 대부분의 경우 OpenGL® 선택은 사용자가 마우스 커서로 화면에서 어떤 3D 객체를 선택하려고하는지 결정하는 데 사용됩니다. 이 작업은 단순 해 보이지만 OpenGL®이 장면을 상당히 복잡하게 렌더링하는 방법에는 몇 가지 미묘한 점이 있습니다. 또한 특정 그래픽 카드 및 드라이버에는 OpenGL® 선택 기능이 실패하고 잘못된 결과가 반환 될 수있는 고유 한 결함이 있습니다.
사용자가 컴퓨터 모니터에서 3D 장면을보고있는 경우 결과 이미지를 장면의 렌더링이라고합니다. 장면은 실제로 기본 모양 또는 다각형의 모음으로 메모리에 저장되는데, 그 자체는 장면의 공간 내에서 3D 점의 모음 일뿐입니다. 컴퓨터는 절대 좌표라고도하는 월드 좌표를 사용하여 장면에서 객체를 조작하는 대부분의 기본 기능을 수행합니다. 대부분의 응용 프로그램에서 사용자는 장면을 다른 각도로 조작 할 수 있으므로 다른 관점에서 물체를 볼 수 있습니다. 장면 내에서 사용자의 가상 위치를 카메라 각도 또는 카메라 위치라고합니다.
OpenGL® 선택의 복잡성은 장면 내 카메라 위치와 같은 임의의 위치와 각도에서 2D (2D) 화면에서 마우스의 위치를 결정하는 데 있습니다. 또한 사람 뷰어의 관점에서 렌더링하는 것이 실제로 2D이므로 사용자가 장면 내부에서 마우스 클릭의 깊이를 제공 할 수있는 방법이 없습니다. OpenGL® 피킹 기능은이 복잡한 문제를 두 가지 방법으로 해결합니다.
첫 번째는 뷰어가 추상적 인 위치를 번역하고 렌더링 창에서 객체를 찾기 위해 일련의 개별 계산을 수행하는 대신 렌더링이 사용한 것을 제외하고는 정상적으로 작동 할 때와 같이 실제로 장면을 렌더링한다는 것입니다 선택을 위해 표시되지 않은 경우 올바른 객체 위치를 계산하는 데만 사용됩니다. 차이점은 사용자가 볼 수있는 전체 영역을 렌더링하는 대신 마우스가있는 영역 만 렌더링한다는 것입니다. 이는 렌더링 된 객체가 기술적으로 마우스 포인터가있는 지점에 있음을 의미합니다.
선택된 영역의 깊이를 나타낼 방법이없는 두 번째 문제는 장면에서 마우스 좌표 아래에있는 모든 객체를 반환함으로써 해결됩니다. OpenGL® 선택 기능은 뷰어의 위치에서 얼마나 멀리 떨어져 있는지와 함께 배열의 모든 객체를 반환합니다. 이를 통해 프로그램은 원하는 경우 가장 가까운 객체를 빠르게 찾을 수 있습니다.
OpenGL® 피킹을 시각화하는 한 가지 방법은 마우스 포인터의 위치에서 장면으로 이동하고 뷰어의 위치에서 멀어지는 선 (3D 프로그래밍에서 광선이라고도 함)을 상상하는 것입니다. 이 광선이 닿는 각 개체는 뷰어에서 얼마나 멀리 떨어져 있는지와 함께 개체 배열에 추가됩니다. OpenGL® 선택의 한 형태가 어떻게 작동하는지에 대한 매우 간단한 설명입니다.
OpenGL®에서 객체를 선택하는 또 다른 방법은 색상으로 객체를 찾는 것과 관련이 있으며 훨씬 빠릅니다. 이 방법은 장면을 렌더링하지만 오브젝트에 조명과 질감을 적용하는 대신 단일의 단순한 색상으로 렌더링합니다. 각 개체 또는 개체 그룹에는 고유 한 색상이 있습니다. 장면은 메모리에서만 렌더링되고 표시되지 않으므로 사용자가 보는 것에 영향을 미치지 않습니다. 객체 간의 3D 충돌을 찾는 대신 마우스 커서 위치의 색상이 대신 반환되고 해당 색상이 특정 객체와 상관됩니다.