問題タブ [texture-packing]

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 投票する
1 に答える
1090 参照

bin-packing - 一部の画像から画像(2048x2048)を生成するC#アルゴリズム

私がやりたいのは、画像(私の場合は2048x2048)を作成することです。アルゴリズムは次のように機能するはずです。

-ユーザーがフォルダからいくつかの画像を選択し、プログラムに「画像を生成」と指示します

-プログラムは、すべての画像を1つの画像内に収めることができるかどうかをチェックします(サイズの問題)。そうでない場合は、エラーメッセージを返します。

-プログラムは、すべての画像を画像内に配置する正しい方法を見つけてから、ユーザーに保存パスを選択するように促します(明らかに古い画像はサイズ変更/切り取りしないでください)

問題は明らかに最後のステップです。実際にそれを行う方法がわかりません。また、画像のファイル名がmyimage_1であり、「myimage_2」がある場合、プログラムがチェックする必要がある別のこともあります。これらの画像は互いに近くに配置する必要があります。 (3、4などもほぼ同じ)

誰かがこれを手伝ってくれますか?

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

algorithm - 2D 形状を長方形に効率的に配置します。どのようにアプローチするのですか?

私は 7 つのインターネットで広範囲に検索してきましたが、役に立ちませんでした。私が必要としているものに最も近いのは、 2D のみの The Cutting Stock Problem のようです(ウィキペディアではその解決方法に関する指示が提供されていないため、これは残念です)。もう 1 つの類似の問題は、UV アンラッピングです。そこには解決策がありますが、さまざまな 3D ソフトウェアのアドオンから得られるものだけです。

長い話を短くする - 私が欲しいのはこれです:既知の幅と高さの長方形が与えられた場合、既知のサイズ (自由に回転できる) の形状 (ポリゴン) がその長方形の中にいくつ収まるかを調べなければなりません。

たとえば、T 字型のピースを選択し、同じ長方形に両方を効率的に詰め込むことができ、長方形ごとに 4 つの形状が得られます。

ここに画像の説明を入力

バウンディングボックスに基づいてそれらをタイル張りするだけでなく、3つしか収まらない場合

ここに画像の説明を入力

もちろん、これは単なる例です...そして、この特定のケースを解決するのにあまり役に立たないと思います. 私が今考えられる唯一のアプローチは、複雑さをバックトラックするか、この問題の特定のケースのみを解決することです。それで...何かアイデアはありますか?

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

perlin-noise - テクスチャのタイル化可能な 3D ノイズ?

これに対する答えを探しましたが、まだ何も見つかりませんでした。これが私の質問です:

事前に計算されたノイズを 2D テクスチャにパックして、本格的な 3D ノイズ アルゴリズムで計算するオーバーヘッドなしで 3D ノイズの合理的な複製を計算できるようにすることはできますか?

私の最初のアイデアは、X の Z スライスを Y ノイズで取り、それらを並べてパックし、すべてのピクセルについて「低」ノイズ ピクセルと「高」ノイズ ピクセルを計算し、2 つの Z サンプル間で加重補間を行うことでした。言うまでもなく、これはあまりうまくいきませんでした。

ノイズを生成するさまざまなシェーダーについては知っていますが、概して、ハードウェアのスペックが低く、メーカーが実施したさまざまな最適化により、モバイル プラットフォームで問題が発生するため、その場で計算することはできません。

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

ios - iOS のテクスチャとアニメーション

iPhone Retina 対応のゲームを開発しています。

このゲームには、使用するスプライト シートがたくさんあります。より使いやすい MyQuest

  1. pvr
  2. pvr.gz
  3. pvr.ccz
  4. または通常のpng形式

これは、スプライト シートを使用するためのベスト プラクティスです。

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

bin-packing - 静的な長方形を使用した長方形のパッキング

ここで述べたものと同様の矩形パッキング クラスを実装しました。私の最終的な目標は、多数の小さなスプライトを大きなスプライトシートに詰め込むことです。

私が経験している困難は、そのアルゴリズムを拡張して静的な長方形を可能にする方法を考え出すことです。つまり、梱包プロセス中に位置が静的なままであり、回避する必要がある障害物として効果的に扱われる四角形です。

私が検討すべき別のアルゴリズム、またはおそらくこれを行うためのより効率的な方法はありますか?

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

android - OpenGL ES レンダリングの不具合

私は次のような状況にあります。

私のゲームでは、IOS または Android デバイスの openGL ES 1.2 でテクスチャ アトラスからタイルマップをレンダリングしています。

テクスチャ アトラスには、各サブ テクスチャ間に 2 ピクセルのパディングがあります。パディングカラーはブラック、クリアカラーです。

私の目標は、できるだけ多くの異なる画面解像度をサポートすることです。私のゲームがスケーリングされていない画面解像度をサポートしていない場合、フォールバック戦略としてスケーリングを使用して、任意の画面解像度をサポートしたいと考えています。

スケールなしでレンダリングしている限り (モデル マトリックスでスケール = 1.0)、タイルマップは完璧に見えます。また、タイルマップをグリッチなしで非常にスムーズにスクロールできます。

タイルマップをスケーリングしてレンダリングするとすぐに、タイルマップがスクロールしているときに、タイル間に黒いストライプが表示されます (テクスチャ アトラスのサブテクスチャ間の塗りつぶし色として黒色のクリア カラーが使用されます)。

何らかの理由で、スケーリングされたレンダリング中にサブ テクスチャに指定されたテクスチャ座標が何らかの理由で超えられ、塗りつぶしの色が部分的に使用されているようです。

この問題を回避するための可能な戦略を見つけようとしています。これまでに2つの解決策が頭に浮かびました:

1) テクスチャ座標を変更します。x と y に半ピクセルを加算し、幅と高さから完全なピクセルを減算します。これは機能しますが、レンダリングされたタイルは不鮮明です。

2) 整数位置でのみタイルマップを移動します。動作しますが、スクロールがぎこちなく見えます。

3) テクスチャ アトラスを変更し、すべての境界ピクセルを複製して、各サブテクスチャを各方向に 1 ピクセルずつ拡張します。これはまだ試していません。テクスチャ パッキング ツールを変更する前に、これが機能するかどうかを確認したかったのです。(この戦略について何か読んだ気がしますが、もう記事が見つかりません)

誰もこの問題の経験があり、正しい方向に私を向けることができますか?

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

cuda - CUDA:テクスチャとchar4(またはint4)を使用して、スレッドごとに1つのトランザクションで4(または16)文字を読み取る方法は?

デバイスのグローバルメモリに大きな文字配列があり、スレッドによって合体的にアクセスされます。スレッドごとに1つのメモリトランザクションで4文字または16文字を読み取ることで、メモリアクセスを高速化できることをどこかで読んだことがあります。テクスチャとchar4またはint4構造体を使用する必要があると思います。ただし、これに関するドキュメントや例は見つかりません。ここにいる誰かが、私がこれについてもっと学ぶことができる場所への簡単な例またはポインタを提供できますか?

私のコードでは、char配列を次のように定義しています。

テクスチャとchar4(またはint4)を使用したい場合、定義はどうなりますか?

どうもありがとう。

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

libgdx - LibGDX テクスチャ パッカー

ビデオ ゲーム用のタイルのテクスチャ アトラスを作成するために、LibGDX のテクスチャ パッカー GUI を使用しようとしています。しかし、アルファブリードが発生し続けており、それを防ぐ方法を知りたいですか? さまざまなフィルターをすべて試しましたが、機能するのは Nearest フィルターだけでしたが、MipMaps が必要なので、パフォーマンスの観点からは機能しません。では、MipMaps でアルファブリードを取り除く方法はありますか?

テクスチャ パッカーの 3.2.0 バージョンを使用しています。

これは、各画像で何が起こっているかを説明するテキストとともに何が起こっているかの画像です。

ゲーム内で完全に縮小された画像。

少し拡大。

完全にズームインし、すべて問題ありません。

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

java - libGDX - スケーリングすると TextureRegion の描画がおかしくなる

奇妙な問題があります。

スプライト アニメーションの 4 つのフレームを持つテクスチャがあります。各フレームは TextureRegion としてロードされます。

ほとんどの場合、アニメーションは問題なく再生されますが、1 つのフレームに大量のテクスチャが描画されることがあります。

これが私が意味することの例です:

ここに画像の説明を入力

ご覧のとおり、UFO の左側に赤いバーがあります。その赤いバーは、私のコードに記載されている TextureRegion 境界の外側にあるフレームの一部です。(赤い枠は、すべての角に透明性があるため、測定しやすくするためにあります)

テクスチャは次のとおりです。

ここに画像の説明を入力

上記のスプライト シートでは、上部のスライドの赤いフレームの境界は 0、0、202、71 です。アニメーションのフレームの TextureRegion は 1、1、200、69 です。私の知る限り、赤枠が表示されます。

回避策として、必要な測定値が得られたので、フレームを透明に設定することができますが、後で再度測定する必要がある場合、またはスプライト画像を置き換える必要がある場合に備えて、赤いフレームを保持したいと思います。 、そして実際には回避策は単なる応急処置ですが、私は問題の根本に対処するための適切な解決策を見つけたいと思っています. (たとえば、密集したテクスチャでは、別のスプライト フレームからピクセルを描画したり、別のスプライトやメニュー イメージなどからピクセルを描画したりする場合があります)。

最後に、役に立つ場合に備えて、SpriteBatch が画像を表示するときに、UFO の動きに基づいて回転を適用します (左に移動すると左に傾くなど)。グリッチのある赤いバーは、上、右、下、または左にランダムに表示されることがありますが (ほとんどの場合、まったく表示されません)、UFO の回転がゼロの場合にのみ表示されるようです。(繰り返しますが、回転が 0 かどうかを確認するチェックを含めてから、回転の数値なしで SpriteBatch.draw() メソッドを呼び出すことができますが、それも問題の根本に対処するのではなく、症状を治療することになります)。

学んだマスターから何か考えはありますか?