Eu estive preso em como abordar isso por um tempo, para que todas as sugestões sejam apreciadas com gratidão!
Quero mapear uma textura na forma de um triângulo euclidiano inferior direito para um triângulo hiperbólico no disco de Poincaré.
Aqui está a textura (o triângulo superior esquerdo da textura é transparente e não utilizado). Você pode reconhecer isso como parte do limite de círculo I de Escher
Desculpe, veja o comentário, pois não tenho permissão para postar mais de dois links!
E é assim que meu polígono se parece (está centrado na origem, o que significa que duas arestas são linhas retas, no entanto, em geral, todas as três arestas serão arcos circulares):
O centro do polígono é o incentivo do triângulo euclidiano formado por seus vértices e eu estou mapeando UV a textura usando seu incentre, dividindo-a no mesmo número de faces que o polígono possui e mapeando cada face na face correspondente do polígono. No entanto, o resultado fica assim:
Se alguém achar que isso é solucionável usando o mapeamento UV, eu ficaria feliz em fornecer algum código de exemplo, no entanto, estou começando a pensar que isso pode não ser possível e terei que escrever minhas próprias funções de mapeamento.
RESOLVIDO com algum refinamento da resposta de @ Nathan abaixo, pois as linhas AB, AC, BC podem na verdade ser arcos, não linhas.
Método: escolha o lado mais longo, digamos BC, e subdividi-lo em um número par de partes. Subdividir os outros dois lados no mesmo número de partes. Então as linhas que os conectam (DE na resposta abaixo) também devem ser arcos, não linhas retas. Subdividir esses novos arcos conforme necessário, adicione os novos triângulos como faces e, em seguida, UV mapeie o triângulo inferior direito da textura para essas novas faces.