3D mesh 마진라인 그리기 1 [Raycasting]

위 글과 연결되는 글입니다.

1. 문제 정의와 요구사항


이전 글에서 보았듯이 처음에는 Raycasting으로 표면에 점을 투영하는 방식을 시도했다.

해당 방식에 문제점이 있었는는데 간단하게 요약하자면 다음과 같다.

2. Vertex Indexing


Raycasting의 근본 문제는 "어느 방향으로 광선을 쏠 것인가?"였다. 한 동안 Raycasting 방식에 사로잡혀있었기 때문에 어떤 수학적 방법을 써야 완벽한 방향 설정을 할지 생각했었다. 하지만 복잡한 mesh일수록 방향을 잡기 힘들었고 결국 다른 방법을 생각해보았다.

Raycasting을 세팅하는 것 자체에 리소스 낭비가 심하다면 광선을 쏘지 않고 mesh 내 모든 vertex와 거리 비교하는 방식으로 생각을 했다. 3D mesh는 결국 점(vertex)들의 집합이기 때문에 모든 vertex와의 거리를 직접 계산하면 광선 방향을 고민할 필요가 없다는 생각에서 비롯되었다.

Raycasting: 점 → (광선) → 표면 교차점 찾기
Vertex 방식: 점 → 모든 vertex와 거리 비교 → 최근접 vertex 선택

리소스 낭비가 심할 것 같지만 오히려 raycasting 방식보다 성능은 훨씬 더 좋았다.