▼歪むテクスチャの謎▼ (現在では必要のない記事です。ご了承ください) HSPの本家掲示板で質問され、色々考えさせられたので 僕なりに対策を考えてみました。 ホントはあの一件が無くてもこの記事を作ろうと考えていました。 HGIMGが「パース補正」をサポートすると必要がなくなるので ちょっとためらってはいたんですけどね… いつサポートされるのか分らないという事と 質問の一件を放置したままなのも悪いですし 何より、考えるだけ考えて「ボツ」にするのが勿体無いですからね。 まず知っておいてほしいと思うのが テクスチャの歪み方の特徴です。 ![]() この画像を何の変哲も無い正方形のポリゴンモデルに貼り付け そのモデルを斜めにし、パースが掛かるようにします。 ![]() するとこのようになります。 「対角線で斬った」ようになってしまいました。 ![]() 実際このモデルは「斬った」ような部分に「線」があります。 つまりこの「線」の部分を境に歪んでいるわけです。 「パース補正」の無いテクスチャ表示というのは 2D画像を3角形の3点で変形させるのと同じです。 4角形のポリゴンの場合、この3点で変形させた画像2つを 組み合わせることで表現しています。 2Dで変形しているので当然のことながら「パース(遠近感)」が 付くはずもありません。 「3D」なのは「透視変換」を行うまでで その後は「2D」で変形・表示するのです。 ![]() この状態だと分かり易いかも知れません。 辺を等分割した変形をするので 画像は各辺に対して平行なラインを持ちます。 つまり個々の三角形の辺に対して テクスチャで描いたラインが平行になります。 ![]() ![]() ちなみにパースの付かない「平行投影」だと テクスチャは歪みません。 理屈は1つ上の図から何となく分ると思います。 また「物凄く遠くにあるモデル」は 「平行投影」に限りなく近づくため歪みが少なくなります。 (表示が小さくなって歪みが紛れる、というのもありますけどね…) 「平行投影」は滅多に使わないですし (某有名シミュレーションゲームもどきを作るなら使うかもしれませんが…) 「HGIMG」がサポートする可能性も低いですからね。 どちらにしろ解決には程遠いです。 じゃぁ、どうすれば歪みを無くせるか、軽減できるか というのが今回の本題です。 「パース補正」が無い、という状況では ポリゴン数を増やすくらいしか「歪みの軽減方法」は無いです。 単純に細かく分割してポリゴン数を増やしても効果はあるんですが やはり表示の負荷も押さえたいですよね。 つまりポリゴン数というコストを抑えて且つ、歪みも抑える。 これが出来ればかなり便利です。 今回、分りやすさを重視して単純なグリッドしか用意していません。 ただこれでも「要点を絞る」という感覚が分るのではないでしょうか。 ![]() ![]() 正方形の丁度真ん中を十字に切りました。 するとテクスチャの中央部分、同じく十字になっている部分の 歪みが抑えられました。 しかしまだ歪みは残っています。 ![]() ![]() テクスチャの模様に沿うようポリゴンを再度分割しました。 今度はどうでしょう。 見事に歪みが目立たなくなりました。 ![]() ![]() 今度は実験的に「模様の一部」に合わせて分割してみました。 (見辛いですが、L字になるよう左下の方で十字に切っています) 分割部分だけ歪みが押さえられています。 これらを見て分るとおり、分割によって増えた「線」に沿った部分の 歪みは小さくなります。 これを応用して、テクスチャの「明らかにラインを成している」部分や 「歪んでほしくない」部分にポリゴンを割けば 適度なコストとクオリティを維持できるのではないでしょうか。 ![]() ![]() これはちょっとした実験です。 一番手前が「縦横4分割」 次が「縦横2分割」 そして一番奥が「分割無し」の通路ブロックです。 直線だらけのテクスチャなので歪みが際立っています。 が、しかし「黒いライン」に重点を置いた 一番手前のブロックはそんなに酷くは見えないはず。 この場合、単純な分割数による見栄えの比較にしかならないですが 何か参考になればと思います。 ちなみにこれらは「HGIMGX」で表示した場合の話であって 「HGIMG」だとまた微妙に違う歪み方をしているようです。 | ||