Friday, September 26, 2008

VRay Framebuffer 를 이용하여 멀티채널 exr 파일 사용하기


| Eyecg.com tutor

아래 튜토리얼은 eyecg.com 에 2008/09/26 14:37:24  에 게시한 글입니다.
무단전제 및 재배포 금지입니다.
 
 
 
아래 튜토리얼은 V-Ray를 사용하여 multichannel EXR 파일로 랜더링 하는 방법을 설명합니다.
 
 
 
애니메이션 (혹은 스틸이라도) 등을 랜더링 하는 경우에 단일 패스로 한번에 최종랜더링 이미지를 내기보다는
 
여러개의 패스(diffuse, GI, specular, lighting, .....) 를 랜더링 하여 합성툴을 이용하여
 
최종 이미지를 만드는 경우를 흔히 볼 수 있습니다.
 
V-Ray에도 이미 여러가지의 랜더패스들을 추출할 수 있는 옵션이 있습니다.
 
 
Render Element 탭으로 간 다음 원하는 element 들을 선택을 합니다. 컨트롤 키를 누르고 선택을 하면 여러개를 선택할 수 있습니다.
 
OK버튼을 누르면 아래 이미지와 같이 여러가지 랜더패스들이 등록이 되며 개별적으로 몇가지는 약간의 옵션을 가지는 경우도 있습니다.
 
 
일반적으로 랜더링시 많이 사용하는 TGA파일의 경우 32bit 포맷이라고 하지만 이는 채널별 (R, G, B, A) 로는 8비트에 불과합니다.
 
그러므로 색정보의 손실로 인해 합성시에 제약을 받는 경우가 많습니다.
 
이를 채널별로 32비트 포맷이 지원이 되는 exr 파일로 내보내도록 하겠습니다.
 
또한 랜더패스별로 단일 파일을 사용하는 경우 대용량의 파일로 인해 불편해 지는 경우도 많습니다.
 
하지만 Vray에서 지원하는 멀티채널 EXR 을 사용하는 경우 이러한 불편을 없앨 수 있습니다.
 
 
적당한 씬을 만들어서 재질과 조명및 카메라등 모든 설정을 마칩니다.
 
 
랜더러를 V-Ray로 변경을 하고
 
V-Ray 탭에서 V-Ray Frame Buffer를 활성화 시킵니다.
 
Enable built-in Frame Buffer 를 켜고
 
V-Ray raw image file 부분에서 Render to V-Ray raw image file 에 체크가 된 상태에서(기본값임) Brower 버튼을 눌러서 원하는 경로에 저장될 파일의 이름을 입력합니다.
 
이 때 파일 이름뒤에 확장자를 exr 로 직접 입력을 합니다.
 
 
랜더링을 합니다.
 
 
프레임버퍼에 위의 그림과 같이 여러개의 랜더패스들이 보여집니다.
 
지정한 경로에는 프레임별로 하나의 exr 파일이 만들어 졌습니다.
 
 
이를 멀티채널 exr 파일을 지원을 하는 합성툴 (Nuke 등) 을 사용하여 편집을 할 수 있습니다.
 
 
 
아래 링크는 여러가지 랜더패스들을 이용하여 합성을 하는 기본적인 과정에 대한 설명을 담은 링크입니다.
 
http://vray.info/tutorials/basiccomping/
 
아마도 많이 보셨을 것이라 생각되며, gnomon workshop의 Christopher Nichols 씨의 강좌에도 설명이 되어있는 내용입니다.
 
 
참고로 포토샵이나 에프터이펙트 의 경우 최근의 CS3 까지도 멀티채널 exr 파일을 직접 지원하지 않습니다.
 
따라서 ProEXR 같은 플러그인 등을 사용하여야 합니다. http://www.fnordware.com/ProEXR
 
이 플러그인을 사용하게 되면 포토샵 같은 경우 각 패스들이 레이어로 구분이 되어 불러와집니다.
 
 
 
 
--- 끝

Thursday, September 25, 2008

vrmesh파일과 mat 파일 별도저장하여 활용하기


| Eyecg.com tutor

본 튜토리얼은 eyecg.com 에 2008/09/25 19:17:40  에 게시한 글입니다.
무단전제 및 재배포 금지입니다.
 
 
 
본 튜토리얼은 vrmesh파일과 mat 재질파일을 내보내어 사용하는 방법에 대한 기초적인 튜토리얼입니다.
 
 
 
 
V-Ray를 사용시에 Vray Proxy 를 사용하여 Vrmesh 파일을 내보내는 경우에
 
이를 처음 사용하시는 분들은 재질을 어떻게 적용해야 하는지 모르는 경우가 있습니다.
 
아래 튜토리얼에서는 vrmesh파일과 mat 파일을 사용하여
 
내보낸 vrmesh파일을 나중에 다시 사용하는 경우에 좀 더 손쉽게 사용하는 방법을 설명하는 기본적인 튜토리얼입니다.
 
 
 
 
1. 모델링을 하여 재질을 지정하였습니다.
 
아래 두 개의 의자가 있습니다.
 
하나는 녹색 의자이며 다른 하나는 빨간색 의자입니다.
 
오브젝트의 이름은 각각 green_chair 와 red_chair 입니다.
 
두 의자는 각각 하나씩의 오브젝트로써 각 부분이 attach된 상태로 각 부분의 재질은 multi/sub-object 재질로 되어 있습니다.
 
각 재질의 이름은 greenchair 와 redchair 로서 각 5개씩의 sub 재질을 가지고 있습니다.
 
두 가지는 동일한 구조이며 1번 id는 의자 등판,  2번은 의자 안장부분, 3번은 의자 바닥플라스틱, 4번은 의자 하단 지지대, 5번은 팔걸이 입니다.

 
 
각 의자의 해당 부분에 sub-object를 지정하는 방법은 아래 그림과 같이
 
각 오브젝트의 서브 오브젝트로 가서 element 선택상태로 간 다음 1번 id를 지정하고자 하는 의자등판을 클릭한 다음 선택이 되면 material id 를 1로 입력하고 엔터키를 칩니다.
(여러 오브젝트를 attach시킨 경우 polygon 선택보다 element 선택이 훨씬 용이합니다.)
 
 
 
 
2. 각 의자의 특정부분에 각각 별개의 uv를 지정해야 하는 경우가 있습니다.
 
복잡한 unwrap대신 여러개의 uvw map을 사용하여 간단히 해결합니다.
 
 
 
 
3. 이제 만들어 놓은 의자를 vrmesh파일로 내보냅니다.
 
두 의자를 선택한 다음 마우스 우측버튼을 눌러서 V-Ray mesh export 를 선택합니다.

 
 
 
4. export 하기위한 메뉴가 나옵니다.
 
내보내기 할 경로를 brower버튼을 눌러 지정을 합니다.
 
두 개의 라디오 버튼이 있습니다.
 
첫번째 라디오 버튼은 선택한 두 개의 오브젝트를 하나의 vrmesh로 내보내기를 할 때 사용하는 옵션입니다.
 
이 경우 두 오브젝트가 하나의 vrmesh로 합쳐집니다.
 
두번째는 선택한 각 오브젝트의 이름별로 각각의 vrmesh로 내보내기 할 때 사용하는 옵션입니다.
 
우리는 두 의자 오브젝트를 각각의 vrmesh로 내보내기 할 것이므로 두번째 옵션을 선택합니다.
 
이렇게 내보내면 각 오브젝트의 이름과 동일한 이름을 가진 vrmesh 파일이 만들어지게 됩니다.
 
만일 오브젝트에 애니메이션이 지정되어 있다면 export animation을 체크하여 애니메이션이 되는 vrmesh를 내보낼 수 있습니다. (파일 크기가 커집니다)
 
그리고 맨 아래에 있는 automatically create proxies 옵션은 vrmesh 로 내보냄과 동시에 현재 선택한 오브젝트를 vrmesh로 바꿔주는 옵션입니다.

 
 
 
5. 이제 의자에 지정된 재질을 별도의 파일로 내보내서 vrmesh파일과 함께 저장을 합니다.
 
우선 재질편집기에 두 개의 재질이 등록이 되어 있습니다.
 
재질편집기의 재질 브라우저를 열어서 (1)
 
brower from scene(2) 을 선택을 합니다. 현재 씬에 지정된 재질이 표시가 됩니다.
 
save as버튼을 눌러(3) vrmesh 파일이 저장된 동일한 폴더에 mat 파일로 저장을 합니다.
 
 
 
6 . 이제 reset을 눌러 완전히 새로운 씬에서 시작을 합니다.
 
create panel에서 VRay를 찾은 다음 VRayProxy를 눌러서 뷰포트의 빈 곳을 클릭합니다.
 
 
 
7.choose external mesh  대화상자가 뜨면 앞에서 지정한 경로에서 원하는 vrmesh파일을 선택을 합니다. 여기서는 앞서 저장했던 red_chair.vrmesh를 불러왔습니다.
 
랜더링을 해 봅니다. 단색 오브젝트로 바뀌었습니다. 이는 오브젝트자체의 색상이며 아무런 재질이 지정되지 않았기 때문입니다.
 
vrmesh파일에는 각 재질id가 기억이 되어 있어서 임의의 multi/sub-object 재질을 만들어서 지정을 한 다음 이를 일일이 수정을
 
해도 되지만 기존에 만들어 놓은 재질을 사용하는 편이 훨씬 번거로움을 덜 수 있습니다.

 
 
 
8. 별도로 저장했던 재질파일을 불러와 봅니다.
 
재질브라우저를 다시 띄운다음 (1)
 
browse from Mtl Librafy 를 선택하고 (2)
 
open을 눌러 (3) 앞서 mat파일을 저장했던 폴더에서 mat 파일을 불러옵니다.


 
 
 
9. 열기 버튼을 누르면 아래 왼쪽 그림과 같이 두 개의 재질이 불러와 집니다. 이를 각각 빈 재질슬롯으로 드래그 하여 붙여넣습니다.

 
 
 
10. 이제 red chair 재질을 vrmesh의자에 지정을 하고 랜더링을 해 봅니다.
 
제대로 랜더링이 되었습니다.

 
 
 
11. 뷰포트상에서는 vrmesh 오브젝트의 재질을 볼 수 없으므로 어떤재질이 적용된 오브젝트인지 구분이 쉽지 않습니다. 
그러므로 오브젝트 컬러를 사용하여 구분을 해 놓는편이 좋습니다.

 
 
끝.....

Tuesday, September 9, 2008

VRay 랜더링시 화이트도트를 처리하는 방법


| Eyecg.com tutor


본 게시글은 eyecg.com 에 2008/09/09 21:18:15  에 게시한 글입니다.
무단전제 및 재배포 금지입니다.




예전부터 자주 보는 질문 중의 하나는

Vray를 사용하는 경우에 아래 그림과 같이 하얀색 점박이(이하 화이트도트라고 하겠습니다)가 생기는데

이걸 어떻게 없앨 수 있느냐는 질문입니다. (그림1)


(그림1)


주로 Vraysun을 사용하는 경우에 자주 발생하며 반사가 많이되는 재질에 특히 자주 발생하게 됩니다.
위의 주전자는 reflect 값이 232,232,232이며 glossiness가 0.88인 금속성 재질입니다.
Vraysun과 Vraysky를 사용하였고, 피지컬카메라를 사용하였습니다.


이제 편의를 위해 Enable built-in Frame Buffer를 체크하고 랜더링을 해 보겠습니다. (그림2)


(그림2)

이제 하얀점이 나타나는 지점을 마우스 우클릭을 하여 픽셀 정보가 보이게 합니다.

프레임버퍼창 하단의 i 형태의 아이콘을 누르면 정보창이 항상 켜집니다.


흰점의 색상값이 8비트로 보면 단순히 255,255,255로 나타나지만 32비트 float 로 보면 57.028, 46.147, 34.458 로 나타납니다.

일반적으로 255,255,255의 float값은 1.0, 1,0, 1,0으로 나타나야 하지만 지금 우리가 클릭한 밝은 부분은 이보다 훨씬 밝은

색입니다. 그로 인해 검정색테두리 같은 모양이 나왔습니다. (경계면이 날카롭게 표현되는 Catmull-Rom 필터를 사용했기 때문에

검정색 경계면이 뚜렷하게 나타났습니다.)



아래와 같이 프레임버퍼창의 첫번째 아이콘을 눌러 correction control 창을 열어봅니다.(그림3)

0 과 1 사이의 히스토그램이 왼쪽구석에 몰려있네요. 이는 57.028에 이르는 밝은 부분까지 히스토그램에 나타내려고 하다보니

대부분의 색영역이 있는 0~1.0구간이 한쪽으로 몰릴 수 밖에 없습니다.


(그림3)



자 이제 이를 해결하기 위한 가장 손쉬운 방법은 안티알리아싱 필터를 바꿔주는 것입니다.

아래 그림4에서는 필터를 건축CG에서 자주 사용하는 Catmull-Rom에서 기본세팅인 Area 1.5로 바꿔서 랜더링 해보았습니다.


(그림4)

괜찮게 나왔네요. 혹은 quadratic이나 아니면 아예 필터를 사용하지 않고 랜더링 해도 괜찮습니다.

하지만 우리나라사람들은 Catmull-Rom 필터를 선호하는 것 같습니다. 이미지 경계면이 뚜렷하게 보이기 때문이겠지요.

심지어 최종랜더링된 이미지에 포토샵 등에서 샤픈필터를 주는 경우도 많습니다.

또 필터변경만으로 해결이 되지 않을 수도 있습니다.



그럼 필터를 바꾸지 않고 해결할 수 있는 방법을 찾아봐야겠습니다.

VRay 랜더설정 창에서 Color mapping 롤아웃으로 갑니다.

우측의 sub-pixel mapping과 clamp output을 모두 체크합니다.


(그림5)


랜더링을 해 보았습니다. (그림5)

물론 필터는 기존의 Catmull-rom 필터입니다.

화이트도트가 사라졌습니다.

와~ 만세!!!



문제가 모두 해결되었을까요?


아래 correction 컨트롤 창을 다시 열어봅니다.(그림6)


(그림6)

히스토그램이 좀전과는 달리 0에서 1 사이에 모두 다 들어가 있습니다.

네. 아무리 밝은 부분을 클릭해서 픽셀정보를 살펴보아도 Float 값이 1.0을 넘어서지 않습니다.

맞습니다. 여러분이 clamp output을 체크했을 때 바로 옆에 clamp level 이란게 있다는 것을 눈치채셨을 겁니다.

분명 거기에 1.0이라고 적혀 있었고, 여러분은 그 값을 건드리지 않았을 것입니다.


이제 명확해 졌습니다. 여러분이 clamp level 을 1.0으로 놓고 clamp output을 체크했다면 이는

모든 색상의 최대값을 1.0으로 제한하고 그 보다 밝은 값을 갖는 픽셀은 잘라내어서 1.0으로 맞추겠다는 얘기가 됩니다.


아래 이미지는 위와 같이 clamp output을 체크하지 않았을 경우에 clamp된 부분을 보여줍니다.(그림7)


(그림7)

흰색으로 보이는 부분은 모두 float 값이 1.0을 넘어서는 부분을 나타냅니다.

여러분이 Vray Frame Buffer(VFB) 창을 열었을 때 하단의 아이콘을 보시면 두번째 아이콘이 기본적으로 클릭이 되어 있는 것을 볼 수 있습니다.

이 버튼의 이름은 Force color clamping 으로서 강제로 화면에 표시할 수 있는 최대밝기는 255,255,255 값으로

clamp시킨 상태의 이미지로 보이게끔 해 주는 역할을 합니다.


clamp level을 1.0으로 제한하고 랜더링 했을 때는 이 버튼을 누르건 안누르건 아무 변화가 없습니다.

하지만 clamp level을 1.0보다 높은 값으로 제한하거나, 혹은 이 옵션을 사용하지 않았을 경우는 아래와 같이 보이게 됩니다.


(그림8)


자 그럼 우리는 Clamp output을 체크함으로써 화이트 도트를 해결하였습니다.

그럼 항상 이 옵션을 켜고 사용하면 될까요?




아래 이미지를 다시 봅니다.(그림9)

큰 주전자 옆의 작은 주전자는 VraylightMtl을 사용한 것으로 자체발광을 하고 있습니다. 연한 푸른색을 지정하였고 세기는 200을 줬습니다.


(그림9)

앞에서 했던대로 Clamp level 을 1.0으로 설정하고(사실 기본값을 그대로 둔다고 봐야겠죠)

Clamp output 을 체크한 상태로 랜더링 했습니다. 히스토그램이 0에서 1까지 범위에 있군요.


이제 VFB의 Exposure correction 아이콘 (하단 우측에서 3번째 조리개모양 아이콘) 을 누른다음 컨트롤 창의 맨 위에

삼각형 슬라이더를 왼쪽으로 옮겨봅니다.   -0.55까지 낮춰보았습니다.(그림10)


(그림10)

노출값을 조절했기 때문에 이미지의 전체적인 밝기가 어두워졌습니다.

근데 발광하는 주전자 역시 빛을 잃어서 탁한 느낌이 나는군요. 빛을 내는 것 같지 않아 보입니다.

노출값을 더 어둡게 하면 더욱 이상해 보입니다.




이번에는 clamp level을 3.0을 지정하고 랜더링 해보겠습니다.(그림11)


(그림11)

1.0으로 clamp했을때와 별 차이 없이 밝은 푸른빛을 내는 주전자가 랜더링 되었습니다.

물론 히스토그램에는 3.0까지의 범위가 나오고 그 이상의 밝기는 3.0까지 clamp 되었습니다.




이제 익스포져 컨트롤을 이용해서 노출값을 조절해 보았습니다. 역시 -0.55 로 낮췄습니다.(그림12)


(그림12)

네. 밝은 푸른빛의 주전자가 여전히 밝게 빛을 내고 있네요. 카메라 노출값이 낮아졌으므로 원래의 밝은 파란색이

더 잘 보이게 되었습니다.




결론입니다.

우리는 화이트도트를 없애기 위해 컬러클램핑을 사용하여 간단히 해결을 했습니다.

하지만 clamp output을 사용하는 경우에는 고유의 색과 밝기를 잃어버리게 됩니다.

물론 랜더링 이미지를 그대로 사용하는 경우에는 아무 상관이 없습니다.

하지만 32bit floating포맷인 EXR이나 HDR로 저장을 한 다음 이를 포토샵이나 에프터이펙트 등의 툴에서 색보정을 하려면

클램핑 된 색상으로 인해 조명과 같은 밝은 물체는 빛을 잃어서 탁한색으로 바뀌어버리게 됩니다.


예전의 Vray버전에는 clamp level을 조절하는 기능이 없었습니다.

하지만 최근의 버전에는 이 값을 조절하는 기능이 있기 때문에 1.0이 아닌 좀 더 높은 값을 사용하여 클램프 시켜서

후보정시에 좀 더 유연성을 줄 수 있게 됩니다.



이상으로 VFB와 color clamping 을 사용한 화이트도트 처리법을 살펴보았습니다.