이미지 주위에 알파 블렌드 그라디언트 경계선을 배치해야합니다. 내 문제는 모서리를 블렌딩하여 수평 및 수직 그래디언트가 만나는 지점이 매끄럽다는 것입니다. 나는이 문제를 해결하는 표준 알고리즘이 있다고 생각한다. 나는 심지어 수년 전에 학교에서 만난 적이 있다고 생각합니다. 그러나 나는 여러 웹 검색에서 하나에 대한 참조를 찾는 데 실패했습니다.이미지에서 그라디언트가 채워진 모서리를 혼합하는 알고리즘
(나는 구석에 방사형 채우기 패턴을 구현하지만 전환은 아직 충분히 부드러운되지 않습니다.)
내 질문 :
을 위한 표준 알고리즘이있는 경우 이 문제는 무엇입니까 의 이름이며, 심지어 더 나은, 어떻게 구현 무엇입니까? 표준 알고리즘을 삼가고
, 는 구석에 부드러운 그라데이션 을 생산하기 원하는 픽셀 값을 결정하는 가장 좋은 방법은 무엇인가? (수평 그라데이션에 수직 그라데이션에서 부드러운 전환합니다.)
편집 : 그래서 내가 큰 이미지의 상단에 삽입합니다 이미지가 상상한다. 큰 이미지는 검정색으로 표시되고 작은 이미지는 흰색으로 표시됩니다. 삽입하기 전에 더 작은 이미지에 알파 값을 설정하여 더 작은 이미지를 큰 이미지로 혼합하여 주위에 투명한 "테두리"를 만들어 큰 이미지로 "페이드"합니다. 정확하게 말하면 검정부터 흰색까지 부드러운 그래디언트가 있어야하고 모서리와 안쪽 가장자리를 제외한 모든 곳에서해야합니다.
이미지의 중앙 근처에있는 그라디언트 경계의 가장자리에서 값은 255 (투명하지 않음)입니다. 테두리가 바깥 쪽 가장자리에 가까워지면 알파 값은 0에 접근합니다. & horiz 테두리가 만나는 이미지의 모서리에서 대각선 길이는 얼마입니까? 나는 그 선을 제거하고 매끄러운 전환을 원한다.
내가 필요한 것은 수평 및 수직 에지가 만나는 동안 이미지의 구석에서 겹치는 각 픽셀의 알파 값 (0 - 255)을 결정하는 알고리즘입니다.
이 유망 보인다 - (2 * t 3)
간단한 시그 모이 드 함수 smoothstep (t) = t t이다. 나는 XNA를 엉망으로 만들고 싶지 않다. (이것은 C# 응용 프로그램이며 XNA가 최상이라고 생각 하는가?) 방법으로 매끄러운 발걸음을 내딛을 수는 있지만 현재 테스트를 진행하고 있으며 결과를 기반으로 사용할지 또는 사용할지 결정합니다. – TMarshall
Smoothstep은 내가 설명한 매우 단순한 함수입니다. 그것은 yonks를 위해 주변에 있고 XNA에 독점적이지 않다. –
방금 구현했습니다. 그래디언트 가장자리를 좋게 만드는 동안 모서리도 같은 문제가 있습니다. 진짜 문제는 그라디언트에 의해 생성 된 광학 환상입니다. 선형 또는 smoothstep에는 '오류'가 없지만 비전에서 그라데이션 재설정을 차단하지 않으면 여전히 선이 보입니다. –