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


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.