게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
블렌더]다이나믹 레인지, hdri 설명
게시물ID : animation_445477짧은주소 복사하기
작성자 : 아프로불편러
추천 : 2
조회수 : 891회
댓글수 : 3개
등록시간 : 2019/09/22 18:04:17
(언제나 그랬지만) 독자연구를 담고 있습니다. 틀린 곳이 있거나 추가하실 설명이 있으면 답글 달아주셔도 됩니다.





1. 컴퓨터는 색을 어떻게 표현하는가

사진 편집이나 디지털 일러스트를 해보지 않은 분들이라도, 어렸을적 그림판으로 그림을 그려보던가 하는 경험으로 컴퓨터가 어떻게 색을 인식하고 있는지 알고 계실 겁니다. 컴퓨터는 빛의 3원색인 빨강, 초록, 파랑을 0부터 255까지의 256단계로 나누어 저장합니다. 
그에 따라 
R 256가지 X G 256가지 X B 256가지 =256*256*256
=256^3
=1677만가지의 색을 나타낼 수 있습니다. 1600만가지의 색이라니. 굉장한 수 같네요.


표현법에 대하여 설명하자면, RGB각각의 색은 256가지의 서로 다른 값을 가질 수 있으므로, 256=2^8로, 각 색마다 8비트의 데이터가 필요합니다. (뭔가 인과관계가 바뀐것 같지만 이해에는 문제가 없을겁니다) 흔히 8비트 RGB라고 하면 바로 이것을 말하는 것입니다.

캡처_2019_09_22_16_11_32_514.png
웹에서의 컬러 코드는 RGB각각을  두자리 16진법으로 나타내는 것입니다. 이 경우에도 16*16=256가지의 경우의 수 입니다.





*잡담. 윈도 95 시절 컴퓨터 디스플레이 설정을 해보셨다면  256색, 16비트(하이컬러), 24비트(트루컬러)설정이 있었음을 기억하실겁니다. 여기서 말하는것은 RGB를 섞은 전체 색 수를 말하는 것으로.. 256색은 말그대로 전체 표현가능한 색이 겨우 256색밖에 되지 않음을 의미합니다. 16*16 파레트에 다 표현할 수 있을 정도의 양이죠. 256색밖에 지원하지 않는 GIF가 색이 구리게 나오는 이유입니다.
16비트(하이 컬러)는 각 색당 5비트=32색이 표현가능하고, 24비트 트루 컬러가 곧, 각 색당 8비트 = 256색이 표현가능한 현재의 표준으로 자리잡은 색상 규격입니다. 
이제 이런것들은 전부 먼 옛날 얘기고.. 결국 현재의 거의 모든 컴퓨터는 전부 트루 컬러 = 8비트 RGB이다 라고 생각하셔도 무방합니다.






2. 8비트는 충분한가?
컴퓨터로 그림을 그려보신 분들이라면 아마 한번쯤 경험해보셨을 겁니다. 흰색 책을 그리고, 흰색 빛을 때리려고 하니, 더 밝은 색이 없네? 혹은, 검은색 카메라를 그리고, 그림자를 표현하려고 하니, 더 어두운 색이 없네? 등.. 8비트 1700만가지 색은 꽤 많은 것 같지만 안 그렇게 느껴질 때가 더 많습니다. 밝기는 상대적인 것이라, 흰색 종이에 하얀 빛을 때리려면 나머지 부분을 회색으로 어둡게 그려야 한다는 사실은 알지만, 그것을 몸으로 느끼는 것은 또 다른 문제죠. 

2D일러스트가 아니라 3D에서는 어떨까요.
예를 들어 3D모델에 배경을 넣는다고 칩시다.
정말 좋은 시대라 배경을 넣으면 컴퓨터는 자동으로 배경 사진에 있는 색을 조명으로 씁니다. 

Ice_Lake_preview.jpg

요런 사진을 넣으면....



캡처_2019_09_22_17_50_22_907.png

이렇게 나옵니다. 좋은 세상이야.







하지만 생각해봅시다. 그 사진은 어떤 정보를 가지고 있죠? 사진은 십중팔구 JPG나 PNG일 것이고, 그것은 8비트 RGB입니다. 가장 어두운 색과 가장 밝은 색은 최대 256만큼밖에 차이나지 않습니다.
그렇기에 이런 문제가 발생합니다. :


캡처_2019_09_22_17_52_00_8.png

하늘과 태양을 스포이드로 찍어 봤습니다. 
태양은 당연히 255,255,255 찍힐테고.. 하늘은 131,183,222가 찍힙니다. 밝기인 L*값이 72가 나옵니다. 
사진에서는 태양이 하늘빛보다 100/72=1.39배 밖에 밝지 않다는 것입니다.






실제로는 어떨까요? 

캡처_2019_09_22_17_52_47_587.png

하늘의 밝기는 제곱초 (각도 단위 입니다. ..)당 1.6에서 3.8 이라는군요. 









캡처_2019_09_22_17_52_53_387.png


태양의 밝기는 -26입니다. 



제가 제대로 이해한게 맞다면 ..

태양의 크기는 0.000068 스테라디안=0.22제곱 도=2850000 제곱초 이므로, 태양과 같은 면적의 하늘은 1.6에서 3.8 밝기의 285만배 입니다.

단위가 천문학적으로 가는거같지만 계산은 간단합니다. 별의 밝기단위는 2.5배 증가할때마다 1 감소하므로 
(log2850000)/(log 2.5)=16.22
즉 태양 면적의 하늘의 밝기는 1.6-16=-14 정도가 나오네요. 태양( -26)하고 14정도 차이입니다. 

이게 어느정도 차이일까요? 다시 말하지만 2.5배 증가할때마다 밝기단위는 1 차이납니다. 밝기차이 14라는것은 2.5^14=372500배 차이라는 겁니다!

8비트에서 37만배라는 수치는 표현할 수 없습니다. 그렇기에 8비트 사진을 배경으로 쓰면, 컴퓨터는 정직하게 rgb값을 읽고,





istockphoto-947314334-612x612.jpg

255,255,255의 햇빛 




bg-clouds.jpg

= 255,255,255의 구름







022affd874787119baf7028877afef2f.jpg


=255,255,255의 눈












20141204_105431.png

=255,255,255의 석탄


이라는 기적의 계산을 해 버립니다!





출력물이 8비트여도 3D내부에서 계산(=렌더링)을 하기 위해서는 그 이상의 정보가 필요합니다. 이것이 HDRi (high dynamic range image) 의 필요성입니다.




3. HDRi 이미지

hdr이미지 =hdri 는 8비트 이미지보다 훨씬 많은 정보를 담을 수 있습니다. Hdri파일로 가장 많이 보이는 open exr 포맷의 경우, 1만 nit보다도 밝은 밝기 정보를 저장할 수 있다고 하는군요. 근데 오픈소스 라이센스로 로열티가 없어. 신난다!


Etnies_Park_Center_preview.jpg


이 사진은 sibl 아카이브에서 얻은 hdr이미지.







Etnies_Park_Center_preview.jpg
그리고 그것의 jpg 이미지입니다.





..똑같죠? 그야 이미지가 어찌됐든 모니터는 출력을 8비트로 하기 때문입니다. 하지만 보여지지 않는 속의 정보량은 다릅니다.





캡처_2019_09_22_17_58_13_22.png
캡처_2019_09_22_17_58_15_220.png


두 사진을 배경으로 이용했을 때의 차이. 힘의 차이가 느껴지십니까?  아래쪽 사진은 태양이 확실하게 반사되고 있습니다. 흰 구름과 흰 태양을 구분하지 못하는 jpg배경에선 흐리멍텅한 빛을 반사할 뿐이죠. Hdri이미지의 유용성은 명확합니다. 

하지만 여기에는 문제점이 있습니다.

ㄱ. 가격.
꽤 많은 Hdr이미지들을 무료로 구할 수 있지만 거기에도 한계가 있습니다. 대부분의 이미지들은 수십달러를 주고 구매해야 합니다. 

ㄴ. 용량과 사양 
안그래도 Hdr자체가 무거운데, 직접적으로 배경으로 쓰려다 보니 초고해상도의 이미지가 많습니다. 비교적 가벼운 이미지도 10메가 정도, hdr이미지는 한장당 수백메가는 기본입니다. 
이것은 곧바로 사양으로 이어집니다. 제 컴퓨터에서 80메가짜리 hdr 이미지를 로딩하니까 뻗어버리더군요. 저사양에서는 써먹을 게 못됩니다.

ㄷ. 예술적인 측면에서의 문제
수많은 환경사진을 구할 수 있지만, 문제는 그것을 편집할 방법이 매우 제한되어 있다는 것입니다. 많은 경우 주어진 사진을 그대로 써야 합니다. 단지 제품-그것이 건물이 됐든, 상품이 됐든- 을 돋보이게 하는 용도라면 모르겠지만, 직접적으로 풍경을 그리겠다라던가 하는 목적이라면, 이미 있는 Hdr사진을 이용하는것은 용도에 부합하지 않습니다. (성에 차지 않습니다.ㅋㅋ)






4. 환경 이미지로서의 hdri는 어떤 면이 중요한가

HDRi의 주요 특징을 크게 나누면 이정도가 될 것 같습니다.
1. 해상도.

2. 픽셀당 정보량
Hdri는 포맷마다 조금씩 다르지만 대개 8비트가 아니라 부동소수점 (float)으로 정보를 저장합니다. 

3. 밝기 정보. 
위에서 언급했듯이 1만 니트 밝기 정보도 저장할 수 있습니다. 특수한 경우가 아니라면 배경으로 쓰기에 차고 넘칩니다. 예를 들자면 흰색 종이를 255,255,255로 하고 흰색 빛을 2550,2550,2550으로 해버릴 수 있다는 말입니다.




이들 중 무엇이 가장 중요한가? 실험을 통해 1,2는 많은 경우에서 갖다버려도 됨을 확인했습니다.



T1.png
T3.png
T4.png

배경으로 쓸 예시 사진입니다. 
첫번째는 이전에 렌더링했던 이미지. 2번은 블러를 잔뜩 준 것, 3번은 아예 필터로 오려내기효과를 준 것입니다.

각각을 배경으로 써서 어떻게 보이는지 확인합니다.



테스트 결과. 
캡처_2019_09_22_18_02_17_622.png
캡처_2019_09_22_18_02_21_622.png
캡처_2019_09_22_18_02_24_889.png



재질은 위에서부터 
1. 무광
2. 유광
3. 거친 금속
4. 매끈한 금속

입니다.
보시다시피, 거울 수준으로 배경이 완전히 비치는 4번째 재질을 제외하고는 세 가지 배경이 큰 차이를 보이지 않습니다

특히 마지막 배경의 결과가 고무적입니다. 이건 도저히 못쓸 줄 알았는데 생각보다 쓸만하네요. 



그리하여 제가 내린 결론은

-배경 이미지에서 중요한건 빛의 밝기 정보다
-선명도나 해상도보다는 빛의 밝기를 확실히 구분할 수 있는 이미지가 필요하다.

입니다.






5. 활용
알아낸 것을 바탕으로 이것을 어떻게 활용할 수 있는지 알아봅시다.. 는 힘들어서 다음에.




전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호