Painter’s Algorithm
- 각 object마다 고유 색깔을 지정
- offline buffer (screen에 노출되지 않는 버퍼)를 기본 framebuffer size만큼 사용
- Two pass 사용
- picking pass (1st pass)
- offline color 버퍼에 고유 color 정보를 저장
- rendering (2nd pass)
- clicked
- viewport 내에서 click되면, 여떤 color의 object인지 찾음
- 찾은 object를 pick함
- 빠른 picking 알고리즘
- scene이 2번에 걸쳐 rendering 되기 때문에 real-time 앱에는 부적합
- 비용과 효율을 생각하면 AABB가 오히려 더 나음
- 다수 primitive가 object 단위로 압축된 표본을 이용 가능
- 그러나 object가 아닌 volume을 감지하는 측면에서는 Painter’s algorithm이 더 정확함
Ray Casting Algorithm
- 마우스 포인팅 viewport로부터 역 연산을 통해 world object를 감지해내는 아이디어
- Ray direction을 먼저 구함
- 스크린 좌표계에서 마우스 포인터의 점을 transforming
- viewpoint, perspective matrix의 역행렬을 곱한 뒤 normalise
Möller–Trumbore intersection algorithm
- Ray와 Triangle의 intersection 여부를 알아내는 방법
- Ray와 intersect하는 triangle/plane의 precomputation 과정이 필요하지 않다
- 근데 무슨 원리인지 모르겠다…
출처