Pre-Multiplied Alpha & 외곽에 흰색, 검정색 라인이 나타나는 문제.
● Pre-Multiplied Alpha
다음과 같이 Targa 파일로 32비트 저장시 옵션이다. (RGB외에 Alpha가 포함이 된다.)
상단 이미지 2개는 흰색 background에서 렌더링한 결과이며,
하단 이미지 2개는 검정색 background에서 렌더링한 결과를 최대한 확대했다.
■ RGB chanel
Pre-Multiplied Alpha 를 체크를 하고 렌더링한 결과는 경계부분에 AA가 발생한다. 즉 배경색과 혼합이 두드러지게 나타난다.
Non Pre-Multiplied Alpha 의 그림은 블랙 배경에서는 AA가 없는 것처럼( Jaggies ) 보이는 반면, 화이트 배경에서는 오브젝트 색상을 많이 잠식하고 있다.
※ 배경색의 문제도 있지만 이미지 출력 Gamma 상태에 의해 색이 왜곡되어 외곽으로 확장되면서 안티알리아싱 영역이 틀어지는 문제가 있음. 색상보정시 문제가 더 발생할 수도 있다. (jpg 보다 EXR 이미지파일 형식으로 출력하는게 좋다.)
예를 들어 0.3 이라는 값을 가진 컬러가 색상 보정을 통해서 0.8로 색상값이 바뀐다면 이로 인해서 알파와 혼합 연산에서 결과가 달라진다.
■ alpha chanel의 영역은 변화가 거의 없어 보인다.
위 그림의 결과대로 RGB 채널과 Alpha 채널을 각각 빼보면 텍스쳐보다 알파이미지 영역이 클때 외부 라인이 생기는 결과가 나타난다.
alpha chanel의 용도
-장면에서 오브젝트의 불투명도 조절(유리와 같은 불투명 오브젝트)
-배경 또는 다른 이미지와의 부드러운 혼합을 위해 엣지를 AA 처리
-채널로 마스크 역활. (배경 지움)
Pre-Multiplied : RGB 픽셀 값과 알파 픽셀 값이 Multiply 되어진 이미지이다.
-Non Pre-Multiplied (Straight) : 알파가 곱해지지 않은 RGB 픽셀 값이다.
-픽셀값 0과 1에서는 문제가 되지 않는다. 불투명(완전한 0과 1이 아닌) 으로 처리 되는 AA가 적용되는 외곽선이라든가 모션블러, 유리 같은 반투명 오브젝트 같은 부분에서 문제가 발생할 수 있다.
-Pre-Multiplied 된 오브젝트에 알파가 또 적용되어(두번 적용), 컬러보정으로 인해 불투명 픽셀값의 변동으로 발생된다.
결론:
* Alpha 와 Blending에 관한 연산 문제
* Pre-Multiplied Alpha 상태에서 컬러보정, 감마 ( 로우포맷 이미지 2.2 로 변환시에 색상영역대,색상값이 변해서) 로 인한 문제 발생.
* 컬러보정을 위해서 출력 형식은 EXR 32bit floating point, Tiff형식이 좋다.
(PNG,TGA 는 잘못된 감마 데이타가 포함되어 있을 수 있다는 오토데스크 포럼내용이 있음)
● 이미지 합성을 위해 맥스에서 출력하기 전.
Black Background에 Pre-Multiplied Alpha 를 체크하여 이미지를 저장하는 것이 최선이다.
블랙이 아닌 배경에서 Non Pre-Multiplied Alpha를 사용할 경우에는 `Customize> Preferences>Rendering - Don't Antialias against Background' 를 체크 하면 블랙배경에서와 같은 효과를 얻을 수 있다.
추가:
http://www.mrbluesummers.com/4054/3d-tutorials/semi-transparent-layer-rendering-in-3dsmax
여기서는 'Use Enviroment Alpha'를 체크 해서 Non Pre-Multiplied Alpha로 저장하고 있다. 그리고 앤티 앨리어싱(AA) 알파채널로 마스크를 만들어 배경을 지워버린다.
윗 그림처럼 알파채널은 Non Pre-Multiplied Alpha 상태라도 앤티 앨리아싱이 되어 있는 상태이기 때문이다.
RGB 채널- AA alpha 채널 = AA RGB 채널
하여간 Black Background에 Pre-Multiplied Alpha 를 체크를 한 결과물과 비슷하지만 백그라운드 컬러가 검정인 상태라야만 제대로 된 결과물이 나온다.
팁) 환경광을 사용해야 하는 exterior 조건.
environment 에서 background 이미지를 사용하지 않고, 둠라이트를 활용해서 background 이미지를 환경광으로만 이용하고
background 이미지는 나타나지 않게 돔라이트 속성에서 invisible 체크 (background 컬러는 블랙이어야함.)
출처영상: https://youtu.be/maW0jHuOlC0
● 소스를 이용하여 맥스에서 렌더링 결과에 흰색 엣지가 보이는 경우.
1) 포토샵에서 알파채널의 1픽셀을 줄인 소스를 만든다. ( layer > matting > defringe 또는 select> modify >contract )
2) Diffuse의 Blur 값을 조절해서 알파 이미지보다 넓은 영역이 되도록 한다.
3) Diffuse map : alpha source - none 체크 (Diffuse에서는 알파채널이 필요가 없기 때문이다.)
Filtering- None 체크 (결과에 따라서)
opacity map : mono channel output - alpha 체크
rgb channel output - alpha as gray 체크
alpha source - image alpha 체크 (이미지에 알파가 포함되어 있는 경우)
4) opacity map에서 output을 활용하는 방법..
참고:
http://www.3dsmax.net/ez2k/ezboard.cgi?db=maxtheory&action=read&dbf=3&page=0&depth=1
http://cafe.naver.com/pinksox/4666
http://blog.naver.com/blue9954/50117482549
-----------------------------------------------------------------------------------------------------------------
추가
1) 흰색 엣지와 블랙 엣지 해결 정리.
■ 합성결과 절차
전경의 RGB × 전경 알파 + 배경의 RGB × (1- 전경 알파) = 합성 결과
0 => 0%, Transparent, Black Color
1 => 100%, Solid, White Color
전경의 RGB × 전경 알파 => Pre-Multiplied 된 이미지
(1- 전경 알파) => 전경알파의 반전
■ 알파 처리된 이미지의 특징
Straight Alpha (Non Pre-Multiplied Alpha) 방식
* Pre-Multiplied Alpha 처리를 하지 않은 순수한 컬러 , 뚜렷한 컬러로 인해서 가장자리에 계단현상을 볼 수 있다.
* 투명도, 피사계심도, 모션블러 취약 (알파채널을 제외하고 RGB는 배경과 섞이지 않음에서 문제)
* 색상보정(color correction)에 유리
* 스펙큘러 하이라이트에 클리핑 현상이 일어날 수 있음. (부동소수점 방식이나 스펙큘러 하이라이트를 분리하여 나중에 합성으로 해결)
* AE/PS 에서는 PNG 가 Straight Alpha 방식으로 출력됨. (출처:https://www.w3.org/TR/PNG-Rationale.html, http://cafe.naver.com/hicine/377), SuperPNG : http://blog.daum.net/3dsmaxman/332
Pre-Multiplied Alpha 방식
* 대부분 3D 프로그램에서 이용
* 전경의 RGB와 알파를 미리 곱함, 특징은 가장자리에 안티알리아싱(AA) 처리를 볼수 있다.
* 투명도, 피사계심도, 모션블러 유리
* 색상보정(color correction)에 불리 (알파 채널은 감마 값에 따라 잘못 처리되어 가장자리가 어두운 톤으로 나타날 수 있음)
* 합성시 Multiply 로 사용되는 Render Elements는 가장자리가 더 어두운 톤( 이중으로 Pre-Multiplied Alpha 처리된 효과)
되므로 주의가 필요함.. 특히 Occlusion.
가장자리가 검정인 이유 :
Pre-Multiplied 처리를 두번 했기 때문. Straight Alpha 처리를 하면 해결. ( Pre-Multiplied Alpha ÷ 알파 값 = Straight Alpha )
가장자리가 백색인 경우:
Pre-Multiplied 처리를 하면 해결. ( 전경의 RGB × 전경 알파 = Pre-Multiplied Alpha )
로우포맷의 이미지 경우 감마 2.2 적용시 안티알리아싱 테두리의 투명도 변화가 크기 때문에 Pre-Multiplied 처리된 OpenEXR,HDRI 같은 이미지로 출력감마 1.0으로 출력하고 편집툴에서 리니어 작업하는게 유리.
실제 예)
소스를 사용하여 렌더링 결과물에 흰색 엣지가 발생.
( 이미지 출처: http://cafe.naver.com/maxkill/208507 )
■ 포토샵에서 다시 기존 소스를 처리하는 방법
백색 라인이 생기는 경우에는 위 방식 계산식대로 Pre-Multiplied Alpha 처리 = RGB × 전경 알파
수정된 소스를 가지고 다시 맥스에서 렌더링 결과물 - 흰색 엣지가 없어짐.
■ 반대로 합성을 위해서 맥스 렌더링 결과물을 포토샵으로 가져갔는데 검정 엣지를 발견한다면
* Divide 연산
*layer> matting > Remove Black matte
( AE : Effect > Channel > Remove Color Matting )
* AlphaUtility.atn.zip 액션을 이용하여 RGB 확장으로 해결하는 방법.
https://docs.unity3d.com/Manual/HOWTO-alphamaps.html
참고 :
[Digital Lighting&Rendering ]Book - Jeremy Birn
https://www.schoolofmotion.com/blog/premultiplication/
2) Diffuse Bitmap 필터링 처리에 의한 문제
카메라와의 거리에 따라 외곽선이 보이는것은 Diffuse에서 처리하는 필터링으로 인해 외곽 경계가 흐려져서 부족한 부분에 Diffuse color가 표시되기 때문이다. 즉 Diffuse의 색상이 침범해서 생긴다. (확인 방법은 Diffuse color를 바꾸어 보면 텍스쳐의 외곽 경계라인의 색이 Diffuse color와 비슷하게 된다.)
* 알파가 포함된 텍스쳐의 경우
Diffuse Texture와 비슷한 색상을 Diffuse color에도 설정한다.
* 알파 채널이 없는 텍스쳐인 경우
포토샵에서 외곽(배경)을 같은 색으로 채워서 Diffuse 소스로 사용한다.
또 다른 솔루션
*이 방법은 모든 텍스쳐에 적용되기 때문에 아티팩트나 앨리어싱등에 문제가 발생할 수 있음.
-Diffuse Bitmap 설정에서 Blur 를 0으로 설정
-렌더설정에서 필터링- 없음으로 설정
'3DsMax > Tips' 카테고리의 다른 글
3dsmax.mat 이 없다. (0) | 2014.02.22 |
---|---|
planet map 이 없다. (0) | 2014.02.11 |
viewport에서의 wireframe 컬러 설정 (0) | 2013.08.16 |
viewport에서의 원하는 오브젝트만 wireframe 으로 보기 (0) | 2013.08.01 |
더 이상 업데이트가 안되고 있는 기능들. (0) | 2013.07.07 |
댓글