テクスチャを双曲線三角形にマッピングする


9

私はしばらくこれに取り組む方法にこだわっていますので、どんな提案もありがたいです!

右下のユークリッド三角形の形のテクスチャをポアンカレ円盤の双曲線三角形にマッピングしたい。

これがテクスチャです(テクスチャの左上の三角形は透明で未使用です)。エッシャーのサークルリミットIの一部としてこれを認識するかもしれません

申し訳ありませんが、コメントは2つを超えるリンクを投稿することはできません。

そして、これは私のポリゴンのように見えます(これは原点を中心としています。つまり、2つのエッジは直線ですが、一般に3つのエッジはすべて円弧になります)。

ワイヤーフレームポリゴン

ポリゴンの中心は、頂点によって形成されるユークリッド三角形の中心であり、その中心を使用してテクスチャをUVマッピングして、ポリゴンと同じ数の面に分割し、各面を対応するポリゴン面にマッピングしています。ただし、結果は次のようになります。

テクスチャポリゴン

これがUVマッピングを使用して解決可能であると誰かが思うなら、私はいくつかのサンプルコードを提供できれば幸いですが、これは不可能かもしれないと私は考え始めており、独自のマッピング関数を作成する必要があります。

線分AB、AC、BCは実際には線分ではなく円弧である可能性があるため、@ Nathanの回答を以下のように改善しました。

方法:最長の辺(BCなど)を選び、これを偶数の部分に分割します。他の2つの辺を同じ数のパーツに分割します。次に、これらを接続する線(以下の回答のDE)も、直線ではなく、実際には円弧でなければなりません。必要に応じてこれらの新しい弧を細分割し、新しい三角形を面として追加してから、テクスチャの右下の三角形をこれらの新しい面にUVマップします。

簡単?どういたしまして。しかし、うまくいきました。 魚1 魚2


これが私が使用しているテクスチャです。i.stack.imgur.com
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
よろしくお願いします。これは、ポリゴンを作成する私の元の方法の1つでしたが、数学的にははるかに複雑なので、より単純な方法を使用しました。もう一度試して、報告します。
Lewy Blue

ありがとうございました。私はあなたの提案を解決策に変えることができました。上記の私の編集を参照してください。
Lewy Blue
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.