본문 바로가기

Computer125

Edge detection on GPU Render to texture 에 관한 예제이다. 윈도우에 직접 Teapot를 렌더링 한 것이 아니라, 우선 윈도우 클라이언트 영역(화면의 검은 부분)과 같은 크기의 텍스쳐를 생성한 후, 그 텍스쳐에 Teapot를 그리고, Quad(Triangle x 2)를 이용하여 텍스쳐 매핑을 수행 한 것이다. DirectX는 Render to texture에 관한 여러가지 보조 함수가 있으나 OpenGL은 별로 그렇지 못하다. 이렇게 화면에 직접 무엇인가를 그리지 않는 이유에는 몇 가지를 들 수 있다. 그림 2는 그림 1에서 렌더링된 결과를 이용하여 Mask 0 -1 0 -1 4 -1 0 -1 0 로 Edge detection을 수행한 결과이다. 카툰렌더링에 사용될 Edge를 이런 식으로 구할 수도 있다는 것과,.. 2008. 10. 28.
Slide 붉은색 박스가 A 위치에서 출발하여 B위치 까지 이동하는 경우를 생각해 보자. 1. 사실감 있는 이동을 위해서는, A에서는 점점 가속 되다가, B에서는 점점 감속되어야 한다. 2. Impact가 있는 이동의 경우 A에서 최고 속도가 될 것이고, B지점에 가까워 질 수록 감속이 되어야 한다. 감속률이 1/2 즉 0.5라고 하고 계산을 하면, 첫 번째 프레임에서 박스를 A와 B의 중간 지점인 C까지 이동 시킨다. 두 번째 프레임에서는 박스를 C와 B의 중간 지점인 D까지 이동 시킨다. 네 번째 프레임에서는 박스를 D와 B의 중간 지점인 E까지 이동 시킨다. 이같은 작업을 반복식으로 나타내 보면, while( abs(Box.position.x-Destination.x) >0.01){ Box.position.x.. 2008. 10. 22.
Havok Havok Demo를 보면 크게 두가지 부분으로 나뉜다. 첫째, 물리를 위한 라이브러리. 둘째, 렌더링을 위한 라이브러리. 첫째의 물리를 위한 라이브러리 즉, Havok Physics & Havok Animation은 당연하다 하겠으나, 둘째의 렌더링을 위한 라이브러리도 그 소스가 공개되어 있지않다. 데모에서, hkpRigidBody로 하나의 리지드를 만들면, 렌더링 프로세스에 표현이 된다. 이렇게 저렇게 렌더링 하겠다는 것을 따로 명시해 주지 않아도 어떤 방식에 의해 '화면에 그려야되는 오브젝트의 리스트'에 추가가 되게 되는 것이다. 예를 들어 보자. Havok에서 하나의 Sphere의 모양을 정의하기 위한 Radius & Position을 비롯하여, 여러가지 성질(Restitution & Fricti.. 2008. 10. 21.
Cartoon rendering 카툰렌더링은 첫째, 3~4단계의 급격한 명암 변화 둘째, 실루엣 엣지 상기한 두 가지를 기반으로 렌더링된다. 첫째의 급격한 명암변화는 아주 쉽게 구현할 수 있다. 렌더링될 버텍스의 법선과 방향성 광원을 내적 하여 나온 값을 이용하면 된다. vertexNormal(버텍스의 법선, 3차원 벡터) lightingDirection(방향성 광원의 방향, 3차원 벡터) 라고 하고, finalColor(최종 색상 계산 결과, rgb컴포넌트) 라고 할 때, 픽셀 쉐이더에서, float dotResult= dotProduct(vertexNormal, lightingDirection); if( dotResult > 0.7f ) finalColor= float4(0.7f, 0.7f, 0.7f); else if( dotRes.. 2008. 10. 21.