쌍곡선 삼각형에 텍스처 매핑


9

나는 잠시 동안 이것에 접근하는 방법에 갇혀있어서 어떤 제안이라도 감사하게 생각할 것입니다!

오른쪽 하단 유클리드 삼각형 형태의 텍스처를 Poincare Disk의 쌍곡선 삼각형에 매핑하고 싶습니다.

텍스처는 다음과 같습니다 (텍스처의 왼쪽 위 삼각형은 투명하고 사용되지 않습니다). 이것을 Escher 's Circle Limit I의 일부로 인식 할 수 있습니다

죄송합니다. 2 개 이상의 링크를 게시 할 수없는 것 같습니다.

그리고 이것은 내 다각형 모양입니다 (원점을 중심으로합니다. 즉 두 가장자리가 직선이지만 일반적으로 세 가장자리는 모두 원 호가됩니다).

와이어 프레임 다각형

다각형의 중심은 정점에 의해 형성된 유클리드 삼각형의 인센티브이며 인 센트를 사용하여 텍스처를 UV 매핑하여 다각형과 동일한 수의면으로 나누고 각면을 해당 다각형면에 매핑합니다. 그러나 결과는 다음과 같습니다.

질감 다각형

아무도 이것이 UV 매핑을 사용하여 해결할 수 있다고 생각하면 예제 코드를 기꺼이 제공 할 수는 있지만 이것이 가능하지 않을 것이라고 생각하기 시작했으며 내 자신의 매핑 함수를 작성해야합니다.

선 AB, AC, BC는 실제로 선이 아닌 호일 수 있기 때문에 아래 @Nathan의 대답이 약간 수정되었습니다.

방법 : BC와 같이 가장 긴면을 선택한 다음 이것을 짝수의 부분으로 세분화하십시오. 다른 두면을 같은 수의 부분으로 세분하십시오. 그런 다음 이들을 연결하는 선 (아래 답변의 DE)은 실제로 직선이 아닌 호 여야합니다. 필요에 따라이 새 호를 세분화하고 새 삼각형을면으로 추가 한 다음 텍스처의 오른쪽 아래 삼각형을 새면에 UV 매핑합니다.

단순한? 전혀. 그러나 효과가있었습니다. 물고기 1 물고기 2


내가 사용하고있는 텍스쳐는 다음과 같습니다. i.stack.imgur.com/SEi0G.png
Lewy Blue

1
문제가 이미지의 전단이라고 가정합니까? 삼각형 세분의 정점 사이의 간격이 일치하지 않는 경우에 발생합니다. 내 생각에 uv 매핑에 일관된 단계를 사용하여 전단 효과를 얻을 수 있습니다.
Daniel M Gessel

나는 실제로 세분화를 일관성 있고 작게 만들어 이것을 게시 한 직후에 고정을 약간 수정합니다 (완전하지는 않지만). 그러나 텍스처는 여전히 매우 왜곡됩니다. 나는 아래의 @nathan 제안에 대해 노력하고 있으며, 이는 적어도 훨씬 더 세분화 될 수 있습니다.
Lewy Blue

1
@Looeee 코드를 전달해 주시겠습니까? 저는이 그래픽 분야에 관심이 있습니다
x-rw

예, 여기에서 내 코드를 찾을 수 있습니다 : github.com/looeee/blackthread-heroku/tree/master/assets/js/src/… 그리고 라이브 버전 : blackthread.io/experiments/eschersketch 솔직히 말해서, 내가 본지 오래되었습니다. 이 코드 에서이 문제를 해결하는 함수가 어디에 있는지 기억할 수는 없지만 이해가 어려운 경우 여기에 다른 의견을 남겨 주시면 살펴 보겠습니다.
Lewy Blue

답변:


8

내 생각에 텍스처가 제대로 보이도록하려면 삼각형의 내부도 세분화하고 그 안에 비선형 UV 매핑을 근사해야합니다.

현재는 삼각형의 가장자리를 세분화하여 가장자리와 중앙 사이에 작은 삼각형의 팬을 형성하는 것처럼 보입니다. 삼각형을 단색으로 렌더링하면 좋을 것입니다. 그러나 텍스처를 적용 할 때 텍스처가 각 세분화 된 삼각형을 가로 질러 선형으로 뻗어 있고 반경 방향을 따라 쌍곡선 매핑을 정확하게 근사하지 않기 때문에 해당 세분의 경계에서 불연속성이 생깁니다.

다음과 같이 두 축을 따라 세분화해야합니다.

여기에 이미지 설명을 입력하십시오

모든 정점을 화면 공간과 UV ​​공간에 적절하게 배치하여 삼각형 내부의 쌍곡 좌표를 근사합니다. 충분히 세분화하면 연속적으로 커브되는 텍스처 매핑의 착시 현상이 발생합니다.


1
고마워, 나는 이것을 시도 할 것이다. 다각형을 작성하는 최초의 방법 중 하나 였지만 수학적으로 훨씬 더 복잡하므로 더 간단한 방법을 사용했습니다. 다시 한 번주고 다시보고하겠습니다.
Lewy Blue

감사합니다. 귀하의 제안을 솔루션으로 수정할 수있었습니다. 위의 편집 내용을 참조하십시오.
Lewy Blue
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.