2012-01-01 4 views
0

テクスチャ座標に問題があります。まずは何をしたいのかを説明したいと思います。マージされたテクスチャ上のXNAテクスチャ座標

大きなテクスチャを1つだけ使用してテクスチャを増やしたいメッシュを作成したいとします。大きなテクスチャは、メッシュが使用しているすべてのテクスチャをマージします。私はテクスチャをマージするルーチンを作成しましたが問題はありませんが、まだテクスチャ座標を変更する必要があります。したがって、多くの場合ではなく1つのテクスチャを使用するメッシュはすべてうまく配置されます。

画像を参照してください:私はテクスチャの1つを得た左上に

enter image description here

を(のはAそれを呼びましょう)私は大きなテクスチャ、右1(B)にマージ。 Aの左上は0,0、右下は1,1です。簡単な使い方として、B.width = A.width * 2とし、その高さについても考えてみましょう。だから、Bのミニテクスチャ(Mは元々はA)は右下が0.5,0.5になるはずです。

私はこれらのことを今まで理解できていませんでした。

  • これらはMにどうあるべきか、元A.上

1上:しかし、ここで問題があるテクスチャ座標があること、ありますか?

Aが-0.1,0 - MのBの中で-0.05,0であるとします。

0..1の範囲外にある数字はどうなりますか? A.1.6に-3.2,0、Bに-3.1?だから、%1の部分をクリップし、2で割る(上記の幅は2倍であるため)、または2を整数で割るべきですか?私が今まで理解しているところでは、この地域以外の数字はテクスチャを鏡映しています。これをどのように管理するのですか?出力にはBのオレンジ色のテクスチャは含まれていませんか?私の質問は(私は英語ではあまり熟練していないです)十分に明確でない場合は

は、尋ねると、私は/答えを編集します、ちょうど私の混乱私が明らか助けてください:)事前に

ありがとう: ペーテル

答えて

0

単一のテクスチャの座標を有する[0-1,0-1]新たなテクスチャの座標を有する

範囲[0-1,0-1]単4で構成される新しいテクスチャで

の範囲テクスチャ、あなたのアルゴリズムはテクスチャを翻訳しなければなりませんこのように調整する。

  • ブルー単一の正方形のテクスチャは[0.5-1、0-で新しい座標を 持つことになります[0-0.5、 0-0.5]の範囲
  • オレンジ単一の正方形のテクスチャで新しい座標を持っています0.5]範囲
+0

です。範囲外の座標はどうですか?翻訳のルールはありますか? ([0-1,0-1]からの[0-0.5,0-0.5]を単純な除算にするには、[0-1,0-1]の座標が範囲内にない場合はどうでしょうか? 1.3や-4.7など?) –

+1

[texture mapping](http://msdn.microsoft.com/en-us/library/bb976075(v=xnagamestudio.31).aspx)についてはこれをお読みください。これはxna 3.1についてですが、情報は有効ですが、 xna 4.0では、ラップ、ミラーリング、クランプの3つのアドレッシングモードしかありません。あなたは常に範囲内外の値に対して同じ方法で作業しなければなりません。問題はどのテクスチャアドレッシングモードが使用されているかです...クランプされていなければ、ラップを複製してミラーアドレッシングが価値がない可能性があります – Blau

関連する問題