Monday, March 15, 2010

What is Micropolygon?(2)

(밀린 글 쓰는 느낌이.....)
전 글에서 micropolygon은 사변을 가지고 있는 bilinear patch라고 했다. 보통 ray-tracing기반의 renderer에서 빠른 intersection test를 위해 triangle mesh을 shading & rendering 최소 단위로 쓰는 것과 상반되는 부분이 아닐 수 없다. 삼각 폴리곤은 언제나 절대적으로 구부러짐 없이 flat 하기에 intersection 된 point에서 한결같은 color값을 shading에서 얻을 수 있는 반면, 사각의 micropolygon은 ray-tracing을 위한 intersection test가 필요 없었기에(지금은 아니지만) parametric geometry에서 sub-divide가 더 용이한 사각을 선택 했고 경우에 따른 non-flat 상황 즉 구부러지면서 생성되는 error는 pixel보다 작아지는 상황에선 아무런 영향을 미치지 못 하기 때문에 그냥 무시하게 된다.

참고로, ray-tracing의 심장인 intersection test는 세 점으로 구성된 triangle mesh상태에서 가장 효율적인 계산이 이루어지기 때문에(참고로 triangle mesh보다 더 빠른게 ray-tracing 계산이 이루어 지는 곳은 normal과 distance, 즉 disk 형태로 구성된 point cloud에서 가장 빠른 계산이 이루어진다고 한다. 이렇게 따지면 bounding box 상태에서가 가장 빠르겠지만....) 다소 투자가 이루어져도 preprocess로 convert to triangle mesh or polygon을 하게 되는 것이다. intersection test 계산시 메모리, 그리고 시간적인 부담감은 모든 geometry를 큼직한(?) 삼각 폴리곤으로 전환해서 쓸 수 밖에 없게 되면서 부족해진 곡율적 부담감은 shading interpolation에 의지하게 되는 것이다.  

다시 micropolygon으로 돌아와서, 위에서 sub-divide에 가장 효율적이기에 bilinear patch를 쓰게 되었다고 했다. 이는 모드 종류의 geometry에 해당하는 것은 아니고 parametric geometry 즉 u.v을 기준으로 쉽게 divide가 가능한 것과(나무 결을 따라 자를때 가장 쉽게 잘라 지는 것과 같은 이치라고 생각하면 좋을 듯^^) 그리고 quad based로 가장 renderman과 궁합이 잘 맞게 쪼개버리는 catmull-clark sub-division meshes가 이에 해당 될 것이다.

여기에 시대의 반항아 같은 존재인 삼각 polygon은 micropolygon으로 전환 시키는데 가장 골치 덩어리로 다른 것에 비해 계산이 가장 오래 걸릴 뿐더러(결국 어거지로 가운데 중심점을 만들어 거기서 부터 각 세개의 포인트와 연결해 3개의 micropolygon으로 쪼개 나감) 기술적으로 곡율적인 형태를 지원 안하기에 쪼개는 의미도 없어 진다. 이런 저런 단점이 있음에도 아직까지 polygon이 많이 쓰이는 이유는 modeling tool에서 다루기 쉽고 연관된 다른 작업에 용이 하기 때문이다.

위의 글을 잘 읽어 봤다면 renderman에서 어떻게 해야 가장 효율적으로 geometry를 rendering까지 잘 이끌어 갈 수 있는지 이해 했으리라 생각한다.

Micropolygon processing은 무엇보다 sampling과정을 shading으로부터 독립 시켜주는 중추적인 역할을 하는 일등 공신으로 RenderMan같은 micropolygon-based renderer에 그들만의 독특하고 강한 특징들을 가질 수 있게 해 주었을 뿐만아니라 deep shadow maps이라든지 최신의 point-based 방식의 illumination 계산을 위한 caching 까지 다 micropolygon processing이 받쳐 주기에 가장 효율적으로 사용이 가능해 졌다고 말 할 수 있겠다.

RenderMan is very efficient at generating point clouds because of the way the REYES algorithm dices geometry.

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home