'DirectX'에 해당되는 글 4건

  1. 2008/02/16 DirectX SDK November 2007
  2. 2007/11/27 Panda DirectX Max Exporter x86 5.8.63.0 for 3DSMax 8
  3. 2007/09/04 [Shader] 간단한 수묵 렌더링
  4. 2007/09/03 [Shader] 간단한 카툰 렌더링
2008/02/16 16:00

DirectX SDK November 2007

밑에 클릭해서 다운로드 하세요.

http://www.microsoft.com/downloads/details.aspx?familyid=4b78a58a-e672-4b83-a28e-72b5e93bd60a&displaylang=en
이올린에 북마크하기(0) 이올린에 추천하기(0)

'Development > Download' 카테고리의 다른 글

DirectX SDK November 2007  (0) 2008/02/16
Panda DirectX Max Exporter x86 5.8.63.0 for 3DSMax 8  (0) 2007/11/27
FRAPS 2.9.1 Retail  (1) 2007/08/23
Trackback 0 Comment 0
2007/11/27 16:16

Panda DirectX Max Exporter x86 5.8.63.0 for 3DSMax 8

Panda DirectX Max Exporter x86 5.8.63.0 for 3DSMax 8
이올린에 북마크하기(0) 이올린에 추천하기(0)

'Development > Download' 카테고리의 다른 글

DirectX SDK November 2007  (0) 2008/02/16
Panda DirectX Max Exporter x86 5.8.63.0 for 3DSMax 8  (0) 2007/11/27
FRAPS 2.9.1 Retail  (1) 2007/08/23
Trackback 0 Comment 0
2007/09/04 00:46

[Shader] 간단한 수묵 렌더링

이번엔 간단한 수묵 렌더링 구현!
일단 "GPU-based Rendering and Animation for Chinese Painting Cartoon" 이라는 이상한 논문 중 일부만 정말간단하게 구현한거라는걸 알아두시길.

먼저 표현할 모델부터!
수묵으로 뭘 표현하면뭐가 이쁠까? 고민하다가 사과로 결정!

사용자 삽입 이미지

예제가 되는 사과 모델


수묵화의 특징은 간단하게 말하면 적당한 농담이 곁들어져있고 선이 좀 두껍고 뭐....
대충 알거라 생각하고 스킵 (역시나 본인도 잘 모름 ㅠ.ㅠ)
그래서 크게 2가지만 살리기로 했음!
첫째. 전체적으로 윤곽은 크게 살리자!
둘째. 농담은 4단계로 농담과 농담 사이는 부드럽게 해보자!
본인은 수묵에 대해 아는게 전혀 없어서 대충 이정도만 적용하기로 결정!

그럼 이 사과의 윤곽을 따보도록 하자규~

카툰렌더링과는 다르게 윤곽이 크게 드러나야 하기 때문에 따로 Edge 추출 방법을 쓰지 않고, 광원의 위치를 카메라의 위치와 동기화 시키고 뽕 셰이딩(Phong Shading)으로 대충 빠바방 해서 윤곽을 만들기로 함. 하지만 뽕 셰이딩으로는 완전히 윤곽을 잡아낼 수 없어서 대충 0.3~0.7값만 골라내서 Linear Interpolation 적용

사용자 삽입 이미지

뽕 셰이딩(Phong Shading) 결과

사용자 삽입 이미지

Linear Interpolation 결과

(사실 귀찮아서 Phong shading으로 안하고 대충 N·L 로 구현)

요로케 나온 결과물을 그냥 쓰기엔 너무 끝이 날카(?)롭기 때문에 LPF로 불러효과 작렬!

사용자 삽입 이미지

LPF가 적용된 윤곽 추출 결과


윤곽을 얻어냈으니 이번에는 내부 농담 처리 시작!
일단 다시 광원 위치를 원래대로 놓고 이번에도 가짜 Phong Shading으로 광원처리 빵!

이전 카툰 렌더링에서는 그냥 코드에서 양자화 해버렸지만 이번에는 이래저래 귀찮아서(농담별로 값이 다른건 둘째치고 농담 사이도 부드럽게 처리하고 해야함) 양자화 대신에 텍스쳐에서 농담값을 불러와서 쓰기로 함.

사용자 삽입 이미지

농담 값 텍스쳐

보는봐와 같이 텍스쳐에 대충 어디부터 어디까지가 무슨 값이고 그 사이는 부드럽게 뭐 이런 정보가 들어있음. (바보가 아니면 알 수 있다고 생각하는데...)

뭐 저 값이야 가져오는건 쉽지 않은가... 대충 빛에대한 밝기값 0~1 나오는거 UV좌표로 먹여버리면 바로 나오는거니깐 -_-ㅋ

그런고로 다음과 같은 결과 득템 성공!

사용자 삽입 이미지

기본 광원 결과

사용자 삽입 이미지

농담 텍스쳐 처리 결과


하지만 이녀석도 변두리가 날카로운고로 LPF 작렬!
사용자 삽입 이미지

Low Pass Filter를 적용한 농담 결과


이번에도 역시 마무리는 윤곽과 농담 믹씽!
사용자 삽입 이미지

윤곽 + 농담


뭔가 허전하다... 그래서 아래 그림과 같은 종이 표면같은(대충 뽀샵으로 끄적거려서 만듦) 텍스쳐를 발라봄.
사용자 삽입 이미지

종이 텍스쳐


그럼  다시 종이 위에다 믹씽 결과를 입혀보면?

사용자 삽입 이미지

최종 결과


오우- 그럴싸하게 나온다ㅋ

뭐 대충 간단한 수묵 렌더링은 여기서 그만 두는걸로 하고 아래는 사과말고 다른 모델에 적용해 봤을때 이미지ㅋ 즐감~
사용자 삽입 이미지

코끼리 선수

사용자 삽입 이미지

노랑붓꽃 선수

사용자 삽입 이미지

동백 선수

FX 파일 내용 보기

이올린에 북마크하기(0) 이올린에 추천하기(0)

'Development > DirectX' 카테고리의 다른 글

[Shader] 간단한 수묵 렌더링  (0) 2007/09/04
[Shader] 간단한 카툰 렌더링  (0) 2007/09/03
Trackback 1 Comment 0
2007/09/03 16:09

[Shader] 간단한 카툰 렌더링

카툰 렌더링 적용하기!
예제 모델은 '코끼리'

사용자 삽입 이미지

기본 광원 결과물


만화적 표현은 크게 2가지 특징이 있다. 첫째로 외곽선 표현하는 것이고, 둘째로는 명암처리를 칼같이(?) 표현해 주는 것이다.
뭐 당연한 이야기니 자세한건 스킵. (사실 본인도 그외의 것은 잘 모르겠음)

일단은 외곽선을 생성해봅시다.
외곽선은 깊이맵을 이용하거나 혹은 노말맵을 이용하는게 일반적임! 그래서 본인도 노말맵과 깊이맵을 이용해서 외곽선을 추출!ㅋ (둘 중 땡기는거 아무거나 쓰셔요)
 
사용자 삽입 이미지

깊이맵

사용자 삽입 이미지

노말맵

(노말맵 깊이맵이 맞는 표현인지능...;;)


Render to Texture를 이용하여 위와같은 노말맵 혹은 깊이맵 결과  얻을 수 있능뎁, 문제는 이걸 가지고 어떻게 외곽선을 얻을 것인가... 인디...
요건 HPF(High Pass Filter)중 하나인 라플라시안 필터(Laplician Filter)를 이용하면 손 쉽게 얻을 수 있다.
* Image Processing를 조금이라도 안다면 쉽게 이해 할 수 있을 듯!

사용자 삽입 이미지

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

사용자 삽입 이미지

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


외곽선을 찾았으니 명암처리를 해보자!
명암처리는 사실 너무 단순하다. 어차피 밝기가 0~1 사이 값으로 올테니 중간 중간에 양자화(Quantization) 해버리면 그만!
예를 들지만 '0.0~0.3까지는0을 반환, 0.3~0.7까지는 0.5 반환 0.7~1.0까지는 1을 반환'정도 랄까?
대충 본인 개성에 맞춰서 설정하면 될듯ㅋ
사용자 삽입 이미지

명함처리 후 이미지


자 그럼 명암맵과 외곽선맵을 얻었으니 둘이 합쳐봅시다!
사용자 삽입 이미지

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

사용자 삽입 이미지

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


외곽선이 너무 딱딱하니 LPF한번 먹이고 다시 합성
사용자 삽입 이미지

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

사용자 삽입 이미지

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


이걸로 간단한 카툰 렌더링 완료!

FX 파일 내용 보기

이올린에 북마크하기(0) 이올린에 추천하기(0)

'Development > DirectX' 카테고리의 다른 글

[Shader] 간단한 수묵 렌더링  (0) 2007/09/04
[Shader] 간단한 카툰 렌더링  (0) 2007/09/03
Trackback 0 Comment 0