2015-01-11 6 views
3

삼각형 메쉬로 레이 트레이싱하는 것은 널리 알려진 솔루션과 많은 리소스를 가지고 있습니다. Z 축에 정렬 부 실린더를 나타낸다공식이 알려진 표면에서 광선 추적을 수행하는 가장 효과적인 방법은 무엇입니까?

S(u,v) = (cos(u), sin(u), v) 

: 같은 공지 된 파라미터 수식과 표면에 대한 레이 트레이싱 포함 관련된 문제가있다. 제 질문은 레이 트레이싱을 그런 종류의 표면에 적용하는 가장 효율적인 방법은 무엇입니까? 분명한 해결책은 수식에서 대략적인 메쉬를 생성하고 레이 트레이싱을 적용하는 것입니다. 그러나이 문제에 가장 적합한 솔루션이 있는지, 특히 일종의 주문형 다항식 솔버를 적용하는 것이 가장 좋습니다.

답변

2

다항식 솔버를 언급하면 ​​표면의 암시 적 대수 설명에 기초하는 것처럼 들립니다. x,y,z

((1-u^2)/(1+u^2), 2*u/(1+u^2), v) 

그런 다음 다항식의 집합으로이 오길 : 그래서 상황에서, 당신은이 tangent half-angle substitution 사용하여 삼각 함수의 제거 얻을 것

(1-u^2)/(1+u^2) - x = 0 
    2*u/(1+u^2) - y = 0 
       v - z = 0 

당신은 u을 제거 할 수 및 이들 방정식으로부터의 vresultants을 사용하십시오. 즉 당신의 실린더 이후

당신은 놀랄 일이 아니 온다

x^2 + y^2 - 1 == 0 

로 끝날 것입니다. 그러나 위의 접근법은 다른 매개 변수화 된 표면에도 적용됩니다. 그러면 여러분은 여러분의 광선을 취할 수 있고, 카메라 렌즈가 원점이라고 가정하면, 그 광선에 점을 λd로 쓰십시오. 여기서 d는 광선의 방향입니다. 방정식에 그 점을 연결하고, λ를 풀고, 가장 작은 양의 해를 구하자. 광선이 서페이스와 교차하는 지점을 얻었습니다. 또한, 그 지점에서 암시 적 방정식의 그래디언트를 계산하면 표면의 법선도 얻을 수 있습니다.

실제로이 접근법이 실제로 얼마나 많이 사용되고 있는지 알 수 없습니다. 대부분의 레이 트레이서는 가장 단순한 기하학적 기본 요소를 제외하고 대부분의 작업에서 메시 기반이지만 너무 오래된 정보 일 수 있습니다. CPU가 많이 드는 메쉬 생성을 피하고 실제 표면의 GPU 중량이 높은 고 품질 계산으로 대체하려는 경우 확실히 가치있는 방법으로 들릴 것입니다.

Surfer 및 그 자손과 같은 도구가 있으며 암시 적 방정식으로 설명되는 시각화 대수 표면을 유일한 도구로 사용합니다. 그러한 표면에서 튀어 나와있는 매우 얇은 스파이크와 같은 특이점을 잘 다루기 위해 많은 것들을 좋아합니다. 내가 직접이 도구를 사용했습니다. 설명하기 위해 this answer. 서퍼는 복잡한 반사 및 조명 모델을 가지고 있지 않으므로 레이 캐스팅 만 수행합니다.