Sunday, January 24, 2010

What is Micropolygon?(1)

흔히 RenderMan을 Micropolygon-based renderer라고 한다. Reyes algorithm renders를 조금이라도 접했다면 'Micropolygon' 이 단어를 정말 귀청 떨이질 정도로 들었을 것이다. 많이들 듣고 얘기를 하지만 사실 이 녀석이 뭔 놈인지, rendering시 다른 process와 연관되어 어느만큼 중요한 부분을 차지하는지 정말 이해하고 쓰는 이는 많지 않다고 생각된다. 그냥 아주 작은 rendering되는 최소 geometry 단위(the common basic geometric unit of the algorithm)라는 정도로 생각하지 않을까....

Reyes algorithm의 꽃 중에 하나가 그 제각기 크기와 성격이 다른 geometry에서 micropoylgon으로 통일화 되어 가는 여정일 것이다.(The Reyes algorithm is in essence a micropolygon-centered algorithm) 이 micropolygon이란 단어는 micro-bilinear-patch의 줄임 말이다. 전에는 더 복잡한 flat-shaded sub-pixel quadrilateral이란 단어로 쓰이기도 했었다. 직역해 보면 '평면의 쉐이드된 한 픽셀보다 작은 사변형'이라고 나름 해석 할 수 있겠다. 다시 말하면 한 pixel의 반보다도 작게 쪼개 질 수 있는 four vertices로 구성된 사변(four-sided)의 polygon(quadrilateral facet)이다.(tiny bilinear patch or facet 이라고도 함) 뭐 말만 붙이면 넘 더 복잡해지니..... 쉽게 얘기하면 아주 아주 작은 삼각이 아닌 그냥 사각의 쌍 직선의(bilinear) 두 edges로 이루어진 polygon이다.

늘 평면을 유지하는 triangle mesh를 기본 Rendering 단위로 쓰는 ray tracing-based renderers와 달리 micropolygon은 사각으로 되어 있기에 경우에 따라 flat 하지 않을 수 있는 상황에서 오는 error를 가질 수 있지만 pixel보다 작아지는 상황에서는 그냥 무시되는 error일 뿐이다. 그럼 왜 사각형으로 선택을 했을까하는 의문을 가질 수 있겠는데 이는 parametric geometry을 sub-divide하기에 가장 용이한 형태이기 때문이다. (단, polygon만 제외)

micropolygon의 바로 전 단계 형태인 grid라는 놈을 빼놓고 얘기 할 수는 없다고 보는데, a grid는 각각의 micropolygon으로 분리 시키기전의 micropoygon을 그룹 시켜논 bicubic subpatch이다.(A grid is a tessellation of the primitive into a rectangular array of quadrilateral facets(= micropolygon facets) and a bunch of large rectangular arrays of floating-point-numbers) 사실 shading단계까지는 이 migropolygon의 덩어리인 grid 단위로 계산이 이루어지고 rendering과정이 거의 끝나갈 무렵인 모든 shading조차 끝난 상태에서 그 grid가 각각의 조각인 micropolygon으로 분리 독립이 되어 한손에는 Ci 값을 다른 한손에는 Oi값을 네 vertex마다 쥐어 주고 최종 hiding과 sampling 공정으로 보내지게 된다. (사실 micropolygon을 부를때 shaded micropolygon이라 불러야 더 정확하지 않을까 한다.) grid 단위로 shading 계산이 이루어진 이유는 당연 계산의 효율성 때문인다. 즉 이웃한 micropolygon끼리 공유된 vertex를 한번에 renderman shading engine의 심장인 SIMD virtual machine으로 보내져 shading계산을 할 수 있기 때문이다.

Anyway! 다시 micropolygon쪽으로 돌아 오면,
우선 그 그렇게 작은 크기에서 오는 장점부터 얘기를 해보겠다. (한 픽셀의 반보다도 작게 쪼개 진다는 말은 정말 CG세계의 마이크로 세계의 단위라고 말 할 수 있을 만큼 정말 정말 작은 단위이다.) 이는 크게 네가지의 장점을 만들어 준다.

첫번째로, 최초 geometry(polygon은 제외)의 곡율를 가장 가깝게 전달, 재현해 줄 수 있고( 게다가 veiw dependent),
두번째로, Nyquist limit으로 올 수 있는 artifacts를 지오메트리 단계에서 부터 해결해 줄 수 있고,
세번째로, shading과정에서 displacement에 의한 vertex의 재배치에 자유로움을 주게 되고,
마지막으로, shading을 현존하는 렌더러중 현실과 가장 가까운 단위 면적으로 빛과 표면의 반사되는 관계를 계산해 내어 정확한 color값을 구할 수 있다는 것이다.(interpolation만 의지 한게 아닌)  계속......

1 Comments:

Anonymous Anonymous said...

여러모로 도움이 많이 되고 있어요 감사해요

January 25, 2010 at 2:58 AM  

Post a Comment

Subscribe to Post Comments [Atom]

<< Home