카툰 렌더링5. 외각선 그리는 방법
• 첫번째, 윤곽이 될 폴리곤의 변을 검색하
여 그 변에 따라서 검은색 그리는 방법
• 두번째, 원본 모델과 같은 형태로 검은 모
델을 그리는 방법
• 세번째, 렌더링 완료 후 인위적 효과를 첨
가하여 그리는 방법(포스트 이펙트)
6. 외각선 추출 목차
• 색 성분 외각선 추출
• 휘도 외각선 추출
• ID 외각선 추출
• 법선 외각선 추출
• 디렉션 외각선 추출
7. 색 성분 외각선 추출
• 색의 차이를 조사하는 것입니다.
• 인접한 픽셀에 있는 RGB색의 각각의 성분
과 차이를 구해서 외각선을 그린다.
• 색의 차이가 있는 곳에 다 외각선을 넣고
싶을 때 사용
• 단점 – 다른 물체라도 색이 같은면 외각선
이 없다.
10. 휘도 외각선 추출
• 휘도 – 인간이 느끼는 주관적 밝기와 비교
적 잘 대응하도록 정해진 시각 자극의 강
도를 말한다.(즉 빛의 밝기)
• 단점 – 다른 물체라도 빛의 밝기가 같은면
외각선이 없다.
13. ID 외각선 추출
• 픽셀에 색대신 적당한 번호(ID)을 넣어서
외각선을 그린다.
• 외각선을 넣고 싶은 곳에만 넣을때 사용
• 단점1 – 알파 성분에 ID을 넣는다면 256종
류의 밖에 넣을 수 없다.
• 단점2 – 서서히 사라지는 선을 그리기 어
렵다.
16. 깊이 외각선 추출
• 깊이 값에 차이에 의해서 윤관선을 그린다.
• 단점1 – 연속적으로 연결되어 있지 않은
부분에 윤관선을 그린다.
• 단점2 – 물체가 접촉한 장소는 윤관선이
사라져버린다.
19. 법선 외각선 추출
• 법선 벡터의원드 좌표계에서의 x, y, z성분
을 텍스쳐 RGB성분에 대응시켜서 외각선
그린다.
• 단점 – 부동소수점 포맷이나 부호 점부 포
맷을 사용하면 깔끔할 수 있으나 부동소수
점 포맷을 사용할수 없는 시스템이 있으면
속도가 상당히 느려진다.
22. 디렉션 외각선 추출
[시선 벡터와 법선 벡터를 이용]
: 시선벡터와 법선 벡터가 90도에 가까우면 외각 정점(o)
: 시선벡터와 법선 벡터가 90도에 가깝지 않으면 외곽 정점이 아니다
(X)
23. 색 성분 외각선 추출
PixelShader PS_NormalEdge = asm
{
tex t0 // 현재프레임(좌측상단)
tex t1 // 현재프레임(우측하단)
tex t2 // 현재프레임(좌측하단)
tex t3 // 현재프레임(우측상단)
// RGB 각각의휘도차
sub_x2 r0, t0, t1 // r0 = 2*(t0-t1) //RGB각각 한다.
sub_x2 r1, t2, t3 // r1 = 2*(t2-t3) // RGB각각 한다.
// 절대값의근사값을얻기위해서제곱
dp3_x4 r0, r0, r0 // r0 = (r0)^4
dp3_x4 r1, r1, r1 // r1 = (r1)^4
// (1 - 휘도차)로흰색바탕에검은엣지
add r0, 1-r0, -r1 // 1 - r0 - r1
};
24. 마치면서...
• 각각의 게임에 맞게 사용하는 것이 중요한
것 같습니다.
• 한가지 방법만 사용해도 되지만 단점을 보
안에 주는 방법과 같이 사용해도 될것 같
습니다.
Editor's Notes 완전하게 자동화 한다는것은 대단한 작업이다.