1

マップ間に目に見える継ぎ目がないように、2 つ以上の無関係な高さマップをつなぎ合わせるアルゴリズム (c#) を作成しようとしています。基本的に、このページにある機能を模倣したい: http://www.bundysoft.com/wiki/doku.php?id=tutorials:l3dt:stitching_heightmaps

(写真を見ただけで、私が話していることの要点をつかむことができます)

また、無限の世界を作成するために、単一の高さマップを取得してタイル表示できるように変更できるようにしたいと考えています (これらはすべて Unity3d で使用するためのものです)。ただし、複数のハイトマップをつなぎ合わせることができれば、1 つのハイトマップに作用するようにアルゴリズムを簡単に変更できるはずなので、この部分については心配していません。

成功せずに解決策を検索して検索したため、あらゆる種類のガイダンスをいただければ幸いです。正しい方向への簡単な微調整だけでも大歓迎です! 高さマップに多くの画像操作技術を適用できることは理解していますが、探している結果を生成する画像処理アルゴリズムを見つけることができませんでした。たとえば、画像のスティッチングは、視野が重なっている画像に対してのみ機能するように見えますが、関連のない高さマップには当てはまりません。

何らかの方法で FFT ローパス フィルターを利用することはできますか、それとも単一のタイル可能な高さマップを生成する場合にのみ役立ちますか?

アルゴリズムは Unit3d で使用されるため、C# コードは .Net 3.5 に限定する必要があります。これが Unity が使用する最新バージョンであると私は信じています。助けてくれてありがとう!

4

2 に答える 2

0

あなたが投稿した画像で行われていることは、単純な線形補間によく似ています。基本的には、2 つの画像 (左、右) を取り、ステッチ領域を定義します。線形補間の場合、左画像の左端のピクセル (ステッチ領域内) と右画像の右端のピクセル (ステッチ領域内) を取得できます。次に、その間のスペースを補間値で埋めます。

この例を見てみましょう - ここではアイデアを示すために 1 行を使用しています。

Left = [11,11,11,10,10,10,10]
Right= [01,01,01,01,02,02,02]

オーバーラップの幅が 4 ピクセルだとします。

 Left = [11,11,11,10,10,10,10]
 Right=          [01,01,01,01,02,02,02]
                   ^  ^  ^  ^ overlap/stitiching region.

左の画像の左端の値は 10 です。右の画像の右端の値は 1 です。2 つのステップで 10 と 1 の間を線形に補間すると、新しいステッチ領域は次のようになります。

stitch = [10, 07, 04, 01]

最終的に次のステッチラインになります。

line = [11,11,11,10,07,04,01,02,02,02]

これを 2 つの完全な画像に適用すると、前に投稿したものと同様の結果が得られるはずです。

于 2013-05-08T07:02:04.157 に答える