본문 바로가기
Computer/Graphics

수묵화 렌더링(?)

by DogBull 2008. 11. 2.

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