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

OpenGL® 컴퓨터 프로그래밍에서의 선택은 장면이 렌더링되면 3 차원 (3D) 장면 내에서 어떤 객체가 화면의 주어진 지점에 있는지 결정하는 과정입니다. 또한 한 지점이나 상자 내부에서 여러 객체를 찾는 것을 참조 할 수 있습니다. 대부분의 경우 OpenGL® 피킹은 사용자가 마우스 커서로 선택하려는 화면의 3D 객체를 결정하는 데 사용됩니다. 이 작업은 간단한 것처럼 보일 수 있지만 OpenGL®이 상당히 복잡하게 만드는 장면을 렌더링하는 방법에는 몇 가지 미묘함이 있습니다. 또한 OpenGL® 피킹 기능이 실패하고 허위 결과를 반환 할 수있는 특정 그래픽 카드 및 드라이버에는 본질적인 결함이 있습니다.

사용자가 컴퓨터 모니터에서 3D 장면을보고있을 때 결과 이미지는 장면 렌더링으로 알려져 있습니다. 장면은 실제로 메모리에 원시 모양 또는 다각형의 모음으로 저장되며, 그 자체는 단지 3D 포인트의 컬렉션 일뿐입니다.장면. 컴퓨터는 때때로 절대 좌표라고하는 세계 좌표를 사용하여 장면에서 객체를 조작하는 대부분의 기본 기능을 수행합니다. 대부분의 응용 프로그램에서 사용자는 장면의 관점을 다른 각도로 조작 할 수 있도록 객체를 다른 관점에서 볼 수 있습니다. 장면 내 사용자의 가상 위치를 카메라 각도 또는 카메라 위치라고합니다.

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

첫 번째는 per 대신입니다시청자가 추상적으로 번역 한 다음 렌더링 창에서 객체를 찾기 위해 일련의 별도의 계산을 형성하면, 함수는 선택에 사용 된 렌더링이 표시되지 않는 것을 제외하고는 정상적으로 작동 할 때와 같이 장면을 실제로 렌더링합니다. 차이점은 사용자에게 보이는 전체 영역을 렌더링하는 대신 마우스가있는 영역 만 렌더링한다는 것입니다. 이것은 렌더링 된 모든 물체가 기술적으로 마우스 포인터가있는 지점에 있음을 의미합니다.

두 번째 문제, 즉 선택한 영역의 깊이를 나타내는 방법이없는 것은 장면의 마우스 좌표 아래에있는 모든 객체를 반환하여 해결됩니다. OpenGL® 피킹 함수는 모든 객체를 배열에서 시청자의 위치에서 얼마나 멀리 떨어져 있는지 반환합니다. 이를 통해 프로그램이 원하는 경우 가장 가까운 객체를 빠르게 찾을 수 있습니다.

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

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

다른 언어

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

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