View vector: V
Mesh surface normal: N
이 있다고 할 때,
result= dot(V, N); 을 계산한다고 생각해 보자.
vector V와 N의 내적된 결과는
-1 ≤ result ≤ 1
의 값을 범위로 갖는다.
result가 0보다 작은 경우에는 backface가 되고,
result가 0인 경우는 N이 V에 수직인 벡터가 된다.
result가 0보다 큰 경우에는 frontface가 된다는 것은 잘 알고 있을 것이다.
따라서 0 ≤ result ≤ threshold 의 범위를 갖는 값을 edge로 판단하면 렌더링 결과는 어떻게 될까?
그 결과는 Figure 1, Figure 2에 나타나 있다.
<Figure 1>
<Figure 2>
threshold값을 0.5로 설정하여 렌더링한 결과이다.
즉, 뷰벡터와 수직인 벡터 ~ 뷰벡터와 내적하여 0.5가 되는 벡터는 검은색,
나머지는 흰색으로 처리한 결과물이다.
약간 수묵화(?) 적인 느낌이 나는 듯 하지만, 엣지의 계단현상이 심한것을 볼 수 있다.
이 결과에 Gaussian filter를 적용하여 계단현상을 완화시켜 보도록 하겠다.
<Figure 3>
약간 더 부드러워 졌음을 볼 수 있다.
이제 여기에 내부 쉐이딩을 추가하면,
<Figure 4>
다음과 같은 결과를 얻을 수 있다.
Figure 4는 가우시안 필터를 적용하지 않은 엣지 + 내부 쉐이딩의 결과이다.
<Figure 5>
Figure 5는 가우시안 필터를 적용한 엣지 + 내부 쉐이딩의 결과이다.
'Computer > Graphics' 카테고리의 다른 글
수묵화렌더링 (0) | 2008.12.13 |
---|---|
Motion Blur? (0) | 2008.12.05 |
Edge detection on GPU (0) | 2008.10.28 |
Slide (0) | 2008.10.22 |
Cartoon rendering (0) | 2008.10.21 |