問題タブ [texture-atlas]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
174 参照

ios - 複数のアトラスファイルの扱い方

フォルダ名 myImages.atlas にたくさんの画像があります。これらの画像を組み合わせると、2048x2048 以上のサイズになります。Appleのドキュメントに基づいて、XCodeがこれを複数のファイルに自動的に分割することを期待していました。

しかし、コンパイルしようとすると、次のエラーで失敗します。

XCode がこのシナリオを処理できるかどうかを知っている人はいますか?もしそうなら、私は何が間違っているのでしょうか?

0 投票する
3 に答える
6010 参照

unity3d - Unity でカスタム シェーダーを使用してアトラス テクスチャを正しくタイリングする

これは少し複雑ですが、非常に単純な問題になることを願っています。その方法は次のとおりです。Unity を使用して、実行時に頂点、面、UV、テクスチャ参照などを多数含む bsp ファイルからマップ ゲームオブジェクトを生成しています。作成されたメッシュは本来あるべき姿であり、すべてのテクスチャは問題なく表示されます。ただし、問題が 1 つあります。非常に多くのマテリアルで非常に多くのメッシュが作成されているため、多くのドロー コールが発生し、プログラムが遅くなります。そこで、ドローコールを減らす方法を探したところ、解決策が見つかりました。すべてのメッシュを 1 つの大きなメッシュに結合し、使用されるすべてのテクスチャを組み合わせてテクスチャ アトラスを作成します。メッシュの組み合わせはうまく機能し、テクスチャの組み合わせもうまくいきます。次に、UV マッピングの問題に直面しました。そこで、NVidia のホワイト ペーパーから、tex2d 関数を使用してテクスチャからテクセルを補間するカスタム シェーダーを作成するソリューションを見つけました。UV 位置とその導関数を使用します。これでうまくいくと思いますが、私のメッシュには本当に奇妙な三角形があり、このソリューションが台無しになっていると思います。下の画像では、メッシュが結合されている場合と分離されている場合の違いを見ることができます。

変更された UV とカスタム シェーダーを使用した結合されたメッシュ

元の UV でメッシュを分離する

これは、モデルの色を設定するためにシェーダーで使用しているコードです。

ご覧のとおり、元の UV の非タイル バージョンである 2 つ目の UV を追加しました。frac() 関数を使用してこれを行いますが、シェーダーではなく C# コードで行います。テクスチャはさまざまなサイズになる可能性があるため、その時点でテクスチャ サイズにアクセスできるため、シェーダーに到達する前に UV を計算する必要がありました。

2 つの UV を計算するために使用したコードは次のとおりです。

配列 uvReMappers は、Texture2D 関数 PackTextures() を使用するときに作成される Rect の配列です。

長くなって申し訳ありませんが、私の質問は次のとおりです。テクスチャがゆがむのはなぜですか。メッシュの三角形化の方法によるものですか、それともカスタム シェーダーの書き方によるものですか。そして最後に、どうすれば修正できますか。

お時間をいただきありがとうございます。何度も書いて申し訳ありませんが、以前に質問を投稿したことがありません。私はいつもオンラインでほぼすべての問題の答えを見つけていますが、この問題を解決する方法を何日も探していました. 具体的すぎて答えが見つからないかもしれないと思います。十分な情報を提供できたことを願っています。

0 投票する
1 に答える
817 参照

opengl - OpenGL 4.4 テクスチャ アトラス アーティファクト


OpenTK を使用して C# で小さな OpenGL タイル マップ レンダラーを作成しています。タイルをレンダリングするには、まず頂点配列を作成し、次に頂点バッファーを作成します。
次に、すべてのタイルを反復処理し、タイル タイプに応じて、2 つの三角形を頂点バッファーに追加し、対応する頂点 (テクスチャの座標、色、位置) を指定します。
テクスチャの高価な切り替えを避けるために、テクスチャ アトラスという名前のすべてのタイル テクスチャで 1 つの大きなテクスチャを使用します。
しかし、テクスチャ アトラスの操作中に問題が発生しました。
問題は、ズームアウトしてカメラを移動すると、一部のタイルの端にアーティファクトが発生することです。
インターネットで見つけた解決策は...

  1. ...ハーフ ピクセル補正を使用してテクスチャ座標を計算します。
  2. ...テクスチャ配列を使用するには

私が最初に試したものですが、期待どおりに機能しませんでした(詳細は以下で説明します)。
2 つ目は、テクスチャ配列の操作方法がわからず、インターネット上でテクスチャ配列についてあまり見つけることができませんでした。

次のテクスチャ フィルタを使用しました。

ハーフ ピクセル補正を使用したテクスチャ座標の計算:

ハーフ ピクセル補正なしのテクスチャ座標計算:

ハーフ ピクセル補正を使用した1 つのタイル:
ハーフ ピクセル補正を使用した 1 つのタイル

ハーフ ピクセル補正なしの1 つのタイル:
ハーフ ピクセル補正なしの 1 つのタイル

ハーフ ピクセル補正を使用した複数のタイル:
ハーフ ピクセル補正を使用した複数のタイル

ハーフ ピクセル補正なしの複数のタイル:
ハーフ ピクセル補正なしの複数のタイル

0 投票する
1 に答える
440 参照

ios - SpriteKit のロード テクスチャは、プリロードしても最初のタイム ラグが発生する

これが私の問題です:これらをしているにもかかわらず:

1) すべてのテクスチャ アトラスをプリロードする

2)アトラスをシングルトンに保存して、ARCによって破棄されないようにする

3) すべてのアニメーション配列を Singleton に格納する

SpriteKit には、最初に敵を追加するときにのみ、シーンに敵を追加するときにまだ短い「遅延ジッター」があります。テクスチャが一度描画されると、そのテクスチャがシーンに追加されたときに再び遅延することはありません。テクスチャが最終的に画面に描画されると、メモリが増えていることがわかります。これは、テクスチャがプリロードされていないように見えます。

現在、起動時にAppDelegateにすべてのテクスチャアトラスをプリロードしています...

primaryAtlas は、Singleton に格納されている 4 つのアトラスすべての配列です。

私がすでに試したことと、現在のセットアップが何であるかを指摘させてください。

1)アニメーションのフレームの配列はシングルトンに保存され、別のシングルトンにあるアトラスから画像を取得します。それらは同じシングルトンにありました。

2)アトラスからロードされたすべてのテクスチャをシングルトンに保存しようとしました。しかし、現在、アニメーションは保存されていますが、単一のテクスチャはアトラスからそのテクスチャを取得する関数です。

3) 敵のすべてのアニメーションをオフにしました (SKAction を実行しないでください)。敵が追加され、アニメーション化されていない場合でも、ジッターが発生します。

私はこれを非常に長い間修正しようとしてきましたが、正直なところ、解決策はないようです。

答えのないここで見つけた同様の StackOverflow の質問があるようです: Spritekit: First texture draw slow (preloaded)

これは、Instruments で行った分析の写真です。 楽器のキャプチャ

0 投票する
1 に答える
70 参照

arrays - SKTextures が iPod Touch の配列に読み込まれない

SpriteKit ゲームで奇妙な問題が発生しています。iPad と iOS シミュレーターでは問題なく動作しますが、iPod Touch で実行するとエラーが発生します。エラーの原因を突き止めました。ここで、テクスチャの配列内の項目の 1 つにアクセスしようとしました。

このエラーは基本的に、Frames[0] が存在しないことを示しています。実際、iPod Touch では、配列内の項目数を出力しても何も表示されません。他のデバイスでは、配列には必要なすべてのテクスチャが含まれています。

テクスチャ アトラスからアニメーション用の配列にいくつかのテクスチャをロードする場所と方法は次のとおりです。

これを iPod Touch 以外のデバイスで実行すると、アトラスのテクスチャが配列 Frames に読み込まれます。ただし、iPod Touch では、配列にテクスチャが読み込まれません。テクスチャ アトラスの画像は次のとおりです。テクスチャ配列の画像へのリンク

繰り返しになりますが、テクスチャはアレイに完全にロードされ、iPad および iPhone シミュレーターだけでなく、実際の iPad デバイスでも完全にアニメーション化されます。iPod Touchでは機能せず、エラーが原因でアプリをロードできません. iPod touch は、他のデバイスと同様に iOS 9 を実行しています。

どんな助けでも大歓迎です!ありがとう!

0 投票する
2 に答える
861 参照

libgdx - テクスチャ アトラス ファイルのインデックスの意味

私はテクスチャアトラスで libgdx tutuorial に従っています。これはテクスチャ アトラス ファイルからの抜粋です。パラメータの意味は何indexですか? また、プログラマにとってどのような状況で役立ちますか? すべてのテクスチャ領域にそれがあり、それらのすべてで同じ、つまり -1 です。