3D mesh 마진라인 그리기 1 [Raycasting]
위 글과 연결되는 글입니다.
이전 글에서 보았듯이 처음에는 Raycasting으로 표면에 점을 투영하는 방식을 시도했다.
해당 방식에 문제점이 있었는는데 간단하게 요약하자면 다음과 같다.
Raycasting의 근본 문제는 "어느 방향으로 광선을 쏠 것인가?"였다. 한 동안 Raycasting 방식에 사로잡혀있었기 때문에 어떤 수학적 방법을 써야 완벽한 방향 설정을 할지 생각했었다. 하지만 복잡한 mesh일수록 방향을 잡기 힘들었고 결국 다른 방법을 생각해보았다.
Raycasting을 세팅하는 것 자체에 리소스 낭비가 심하다면 광선을 쏘지 않고 mesh 내 모든 vertex와 거리 비교하는 방식으로 생각을 했다. 3D mesh는 결국 점(vertex)들의 집합이기 때문에 모든 vertex와의 거리를 직접 계산하면 광선 방향을 고민할 필요가 없다는 생각에서 비롯되었다.
Raycasting: 점 → (광선) → 표면 교차점 찾기
Vertex 방식: 점 → 모든 vertex와 거리 비교 → 최근접 vertex 선택
리소스 낭비가 심할 것 같지만 오히려 raycasting 방식보다 성능은 훨씬 더 좋았다.