티스토리 뷰


예제 모델 '코끼리'

사용자 삽입 이미지

기본 광원 결과물


만화적 표현은 크게 2가지 특징이 있다. 첫째로 외곽선 표현하는 것이고, 둘째로는 명암처리를 날카롭게 표현하는 것이다.

일단은 외곽선을 생성한다.
외곽선은 깊이맵을 이용하거나 혹은 노말맵을 이용하는게 일반적이다. 
 
사용자 삽입 이미지

깊이맵

사용자 삽입 이미지

노말맵

(두 방식 중 원하는 방식을 택일하여 사용하면 된다.)
 
위 결과물의 특징은 경계쪽의 Frequency가 급격히 변화한다는 것이다.
이에 HPF(High Pass Filter)를 적용하면 외곽선 추출을 손쉽게 얻어낼 수 있다.

 

사용자 삽입 이미지

깊이맵을 이용한 외곽선 추출 결과

사용자 삽입 이미지

노말맵을 이용한 외곽선 추출 결과


라플라시안 필터(Laplician Filter) 적용 결과


외곽선을 찾았으니 명암처리를 하도록 한다.
명암처리는 셰이딩 결과 값을 양자화(Quantization) 하면 손쉽게 얻어올 수 있다.
예를 들어 0.0f~0.3f 까지는 0.0f으로 반환, 0.3f~0.7f 까지는 0.5f 반환 0.7f~1.0f 까지는 1.0f 을 반환하면 된다.
아래 이미지는 위 예를 바탕으로 만들어진 결과물이다.

사용자 삽입 이미지

명함처리 후 이미지


최종 결과물을 만들기 위해 위에서 만들어진 두 결과물을 합성한다.
합성할 때에는 Multiply기법을 사용하면 된다. (두 픽셀값을 곱하여 값을 얻어오는 방식)

사용자 삽입 이미지

깊이맵을 이용한 외곽선과 합성

사용자 삽입 이미지

노말맵을 이용한 외곽선과 합성



외곽선이 너무 딱딱하게 표현된다 생각이 들면 LPF를 추가로 적용해주면 된다.
사용자 삽입 이미지

깊이맵을 이용한 외곽선 + LPF 과 합성

사용자 삽입 이미지

깊이맵을 이용한 외곽선 + LPF 과 합성


FX 파일 내용 보기

'Development & Tips > 3D Programming' 카테고리의 다른 글

Ambient Occlusion  (2) 2008.07.22
[Shader] 간단한 수묵 렌더링  (3) 2007.09.04
[Shader] 간단한 카툰 렌더링  (0) 2007.09.03
댓글
댓글쓰기 폼