問題タブ [texture-mapping]
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.
c++ - モデルのテクスチャリング
その上に単純なモデルエンジンを備えた3D地形エンジンをコーディングしました。
地形に長方形のハイトマップを使用しているので、これらの三角形のテクスチャリングは非常に簡単です。
しかし、私のモデルをテクスチャリングする際に、私は少し立ち往生しています。
私はカスタムモデルフォーマットを使用しているので、blenderを使用したり3dsを使用したりするような答えは役に立ちません。
その理由は、OpenGLプログラミングを自分で学ぶためにこの趣味のプロジェクトを開始し、1999年に友人が書いた非常に古いTurbo Pascalソフトウェアレンダラーからモデルを準備していたので、それらを使い続けたからです。
私の質問は次のとおりです。
モデルが構成する三角形のテクスチャ座標を生成するためのよく知られたアルゴリズムはありますか?そうでない場合、どのような戦略に従う必要がありますか?
opengl - 幅と高さの両方を持つ OpenGL の長方形テクスチャ POT
OpenGL で長方形のテクスチャを使用しようとしています。高さがテクスチャの幅と等しい場合、すべてがきれいに見えますが、高さが幅と異なる場合、テクスチャはゆがんで見えます。
私の表示機能は(h
およびw
画像の高さと幅を格納するグローバルです):
描画される画像のサイズは関係ありません。実際のポリゴン サイズに関係なく歪んでいます。
私はテクスチャをロードしています:
正方形のテクスチャ イメージを読み込んでいる64x64
と、問題なく表示されます。しかし、長方形のテクスチャ イメージをロードすると、イメージが歪んで見えます。
OpenGL はどのように長方形の POT テクスチャをサポートしていますか? コードの何が問題になっていますか?
image - GIS アプリケーションで使用するための OpenGL での画像の読み込み
私は現在、社内の GIS アプリに取り組んでいます。背景画像は、画像をテクセルと呼ばれるものに分解して OpenGL にロードされ、ミップマップされます。その後、各テクセルを長方形にテクスチャ マップするための表示リストが構築されます。これは非常に標準的なように聞こえますが、問題は現在、2^n ピクセル x 2^m ピクセルのテクセルにきれいに分割されていない画像の場合、残りが破棄されることです。残りをキャプチャして何らかの方法で処理したとしても、テクセルのサブディビジョンを継続的にテストして、最終的にきれいな境界で画像を完全にキャプチャすることが答えだとは想像できませんか? またはそれは?
場合によっては、読み込んでいる画像が geotiff であり、すべてのピクセルを背景に含める必要があります。glDrawPixels が遅いと聞いたことがあります。これを自分でテストできることはわかっていますが、この分野の人々は、ピクセル ダンプを追跡せずに、opengl でテクスチャを使用しているように感じます。
私は OpenGL が初めてで、アプリ自体が 1.1 呼び出しに制限されていると思います。
graphics - テクセル密度と一貫性を最大化するためのUVマッピングアルゴリズム?
テクセル密度が最大化され、ポリゴン間で可能な限り一貫性が保たれるように、3DメッシュのポリゴンをUV空間に自動的にマッピングする方法を探しています。この点で、平面、ボックス、円筒形、球形などの標準的な投影よりも優れた結果を提供するアルゴリズムは存在しますか?
graphics - レンダリングされたUV値の最小値と最大値の取得(Direct3D)
特定のオブジェクトが特定の視点から画面上に描画されたときに生成されるピクセルに割り当てられた最小および最大のUV値を計算する必要があります。たとえば、UVマップされた立方体があり、前面のみが表示されている場合、min(UV)とmax(UV)は、表示されている面のピクセルに割り当てられた最小および最大のUV座標に設定する必要があります。
Direct3D 9シェーダー(および可能な限り最低のシェーダーモデル)を使用してこれを実行し、処理を高速化します。頂点シェーダーは、各入力頂点のUV座標を取得し、それらを変更せずにピクセルシェーダーに渡すのと同じくらい簡単です。一方、ピクセルシェーダーは、頂点シェーダーによって生成された値を取得し、これらを使用して最小および最大のUV値を計算する必要があります。
私が知りたいのは:
- ピクセルシェーダーの呼び出し間で状態(現在の最小値と最大値)を維持するにはどうすればよいですか?
- シェーダーによって生成された最終的な最小値と最大値をプログラムに取り込むにはどうすればよいですか?
HLSLでこれを行う方法はありますか、それとも私は手作業でそれを行うのに行き詰まっていますか?HLSLが機能しない場合、シェーダーを使用せずにこれを行うための最も効率的な方法は何でしょうか。
3d - 「袋の中の球」平面から球への投影
2D平面上の点を単位球に変換する数学的変換を探してい[0,1]x[0,1]
ます。
最も一般的な投影法は、u
とv
を球座標の角度として解釈することによる緯度経度マッピングです (とにマップu
します) 。[0,2PI]
v
[-PI/2, PI/2]
これにより、球の極に強い歪みが生じます。この変換は、両端で紙をくるくると巻いてボンボン紙に球体を包むようなものと考えることができます。これにより、これらの両端に歪みが生じます。
私が探している変換は、球体を紙の真ん中に置き、球体の周りにすべての側面を置き、それらを 1 つの場所で一緒に回転させるという評価者の考えです。つまり、球体が入った小さな紙袋を手に入れることができます。 . これにより、「バッグ」の底部の歪みが最小になり、上部の歪みが最大になります。下から見た場合、歪みはすべての方向で等しくなります。
この種のマッピングを計算する方法を教えてもらえますか?
cocoa - OpenGL/Cocoa でテクスチャを共有する際の問題
私は少し openGL 初心者で、2 つの openGL ビュー間でテクスチャ共有を機能させようとしています。2 つの NSOpenGL ビュー クラスを作成し、インターフェイス ビルダーで、各 openGL ビューを 1 つ持つウィンドウを作成しました。最初のビューの prepareOpenGl には、テクスチャを設定してグローバル変数に割り当てるコードが含まれています。 2 番目のビューでは、グローバル テクスチャで glBindTexture を呼び出します。アプリケーションを実行すると、最初のビューにテクスチャしか表示されず、2 番目のビューにはテクスチャのないオブジェクトが表示されます。テクスチャの共有が機能していないようです。私の一般的な戦略に欠陥があるのか 、それとも細部が少し欠けているだけなのか疑問に思っています.
「2 番目のビュー」とは、元のビューのテクスチャを使用しようとしているビューを意味します。
opengl - OpenGL テクスチャのブレンディングと変換
サーフェスにマッピングされた 2 つのテクスチャがあります。1 つはチェッカーボード (床のパターン) で、もう 1 つはライトマップです。どちらもうまくブレンドされ、表示されています。私が問題を抱えているのは、ブレンドの前にライトマップ テクスチャを変換することです。これを行う必要があるのは、床をスキャンする懐中電灯をシミュレートできるようにするためです....
コード:
** 内の 6 行のコードをいくつかの場所に配置しようとしましたが、OpenGL ステート マシンが特定の場所でそれを必要としている可能性があると考えましたが、私が望む効果が得られないようです。
誰もこれを以前にやったことがありますか?私の OpenGL ブックでも、オンラインでも、テクスチャの翻訳とブレンディングに関する情報が見つかりません。間違ったものを探しているのかもしれませんが、ここ 2 日間壁に頭をぶつけています。どんな助けでも素晴らしいでしょう。
ありがとう
3d - UV座標はどのように測定されますか?
UVマッピングされた3Dモデルをエクスポートする3Dモデリングプログラムがあります。
しかし、UV座標が無効であるか、私が理解していないシステムを使用しているようです。UV座標がビットマップのピクセル(X、Y)にどのようにマッピングされるかを理解するのに助けが必要です
150x100から200x600の範囲のテクスチャがいくつかあります。ここにいくつかの抜粋があります:
上記のデータに基づいて、測定可能な最大ピクセルが600であることを考慮すると、700以上のUV座標は画像の先頭に戻っていますか?また、<0のUV座標は、画像の端から後方に測定されていますか?
3d - これらのUVマッピング座標が0-1とピクセルで表されるのはなぜですか?彼らは0-1システムだけを使うべきではありませんか?
ええと、私は明らかに0-1の範囲の3Dモデルの多くのUV座標と、100-300の範囲の見かけ上ピクセル値の多くの座標を持っています。
座標を解釈するものをどのように知ることができますか?このための標準またはシステムはありますか?
エクスポートされたファイルの各3Dメッシュはどちらのシステムも使用できることに気付きました。これは通常の手順ですか?もしそうなら、UVテクスチャマッピング座標を解釈して3Dエンジンで正しく表示するにはどうすればよいですか?
0-1システムの座標の例:
ピクセルで測定する座標の例: