문제

나는 많은 RGBA 픽셀이 있으며 각각 알파 구성 요소가 있습니다.

그래서 나는 픽셀 목록이 있습니다 : (P0 P1 P2 P3 P4 ... PN) 여기서 p_0_는 전면 픽셀이고 p_n_는 가장 먼 곳입니다 (뒷면).

마지막 (또는 어떤) 픽셀은 불투명하지 않으므로 결과 혼합 픽셀도 투명 할 수 있습니다. 나는 목록의 시작부터 끝까지 블렌딩합니다. 따라서 언제라도 결과가 불투명 해지면 충분한 결과로 멈출 수 있습니다. 이런 식으로 블렌딩 알고리즘을 적용하겠습니다 : (((()P0 @ P1) @ P2) @ P3) ... )

누구든지 R, G 및 B뿐만 아니라 구성 요소에 대한 올바른 블렌딩 공식을 제안 할 수 있습니까?

upd: 나는 색상을 혼합하는 결정된 과정에서 많은 공식을 가질 수있는 방법이 어떻게 될 수 있습니까? 일종의 aproximation입니까? 이것은 나에게 미치게 보입니다. 공식은 너무 다르지 않아서 우리가 실제로 효율성이나 최적화를 얻습니다. 누구든지 이것을 명확히 할 수 있습니까?

도움이 되었습니까?

해결책

알파 블렌딩은 생각보다 더 깊이있는 주제 중 하나입니다. 그것은 당신의 시스템에서 알파 값이 무엇을 의미하는지에 달려 있으며, 당신이 잘못 추측하면, 당신은 괜찮아 보이지만 이상한 유물을 표시하는 결과로 끝날 것입니다.

Porter와 Duff의 클래식 용지를 확인하십시오 "디지털 이미지를 구성합니다"훌륭하고 읽기 쉬운 토론과 모든 공식을 위해. 아마"오버 "운영자를 원할 것입니다.

볼륨 렌더링에 더 가까운 일을하고있는 것 같습니다. 공식과 참고 문헌은 다음을 참조하십시오 그래픽 FAQ, 질문 5.16 "볼륨 렌더링을 어떻게 수행합니까?".

다른 팁

RGBA 값이 실제로 재료의 특성을 어떻게 나타내는 지에 따라이를 수행하는 다양한 방법이 있습니다.

다음은 가능한 알고리즘입니다. 최종 픽셀 색상으로 시작하십시오 lightr=lightg=lightb=0, lightleft=1;

각 r, g, b에 대해 픽셀이 평가 된 픽셀에 대해 다음과 같습니다.

lightr += lightleft*r*(1-a)
lightg += lightleft*g*(1-a)
lightb += lightleft*b*(1-a)
lightleft *= 1-a;

(RGBA 값은 0과 1 사이에서 정규화되며 A = 1은 불투명 한 것을 의미한다고 가정합니다. a = 0은 전적으로 투명합니다)

첫 번째 픽셀이 불투명도가 50% 인 파란색 인 경우 사용 가능한 색상의 50%가 파란색으로 설정되고 나머지는 알려지지 않았습니다. 불투명도가 50% 인 적색 픽셀이 다음에있는 경우 25%는 남아 있습니다 빛은 빨간색으로 설정되므로 픽셀은 50% 파란색, 25% 빨간색입니다. 불투명도가 60% 인 녹색 픽셀이 다음에 있다면, 픽셀은 50% 파란색, 25% 빨간색, 15% 녹색이며, 빛의 10%는 남아 있습니다.

이 기능에 해당하는 물리적 재료는 밝은 방출이지만 부분적으로 불투명 한 재료입니다. 따라서 스택 중간에있는 픽셀은 최종 색상을 어둡게 할 수 없습니다. 최종 색상이 증가하는 것을 방지 할 수 있습니다 (검은 색으로서도 검은 색으로 그리고 완전히 불투명).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top