問題タブ [wavefront]
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.
android - バインドするテクスチャが多すぎる (100 以上) とエラーが発生する
オブジェクトを obj および mtl 形式でレンダリングするコードがあります (android - opengl es 1.1) 小さなオブジェクト (テクスチャが少ない) の場合は問題ありませんが、テクスチャの数が 30 ~ 40 を超えると、logcat で次のように表示されます: eglLockWindowSurface failed to map memory at... and を使用してすべてのテクスチャをロードします(onSurfaceCreated
すべて単一のテクスチャ ユニットに)。そして、引き込むためにそれらをバインドしますglBindTexture
texImage2D
onDrawFrame
正確には何が問題なのですか?何時間も検索しましたが、テクスチャ アトラス以外にこの状況の解決策が見つかりませんでした。会社から Blender/3dsmax のエクスポート ファイルが提供されているため、この方法は使用できません。このエラーを回避し、この多すぎるテクスチャを処理するにはどうすればよいですか?
前もって感謝します。
opengl-es - obj/mtl ファイルと混同
私は obj と mtl ファイルとそれらの間の関係と本当に混乱しています。これらの形式について検索して読みましたが、あまり理解できませんでした。これらの形式のロジックを簡単に説明してくれる人が必要です。正しく表現されていない obj ファイルと mtl ファイルを取得してオブジェクトをレンダリングするコードがあるからです。(アンドロイド オープングル 1.1)
これらの行がobjにあると仮定します
そしてmtlファイルのこれらの行
アッパー素材は風合いを、下段はドント素材を使用。どちらも「f」行のテクスチャ データを使用します。マークした線にはどのテクスチャを使用すればよいですか? 一般に、テクスチャを参照しないマテリアルの下にある面をどうする必要がありますか? また、同じ材料の複数の使用法があります。その背後にある理由は何ですか?
java - LWJGL の表示の問題
編集: 質問に回答し、コードが変更されて使用できるようになりました。ご自身のプロジェクトでコードを自由に使用してください。よろしく、リアム
現在、LWJGL で 3D モデルのレンダリングに取り組んでいますが、問題が発生しました。プログラムを実行すると、ディスプレイが表示され、モデルとは別にすべてが機能します。いくつかのランダムなドットを描画して 3D 空間コードをテストしたところ、それらを見て歩き回ることができたので、3D 空間コードは機能していますが、モデル コードは機能していません。
私の質問は次のとおりです。表示コードに何か問題がありますか、それともモデルの読み込みコードですか?以下は私のソースコードです(コードが長くて申し訳ありませんが、短くすることはできませんでした)。
メイン ゲーム スレッド:
モデルの読み込み/レンダリング コード:
ありがとう、リアム。
size - opencl 最大ワーク グループ サイズ
Opencl は最大ワーク グループ サイズを定義します。その理由は何ですか?- そのハードウェアの制限ですか、それとも単なるソフトウェア設計ですか? どのワーク グループ サイズも使用できないのはなぜですか? - どのような場合でも、ワークグループはウェーブフロントに「分割」されます。各ウェーブフロントには、計算ユニット (CU) のプロセッシング エレメント (PE) の数に等しいワークアイテムの数が必要です。したがって、サイズ n のワークグループは次のようになります。で実行
ceil(n/波面サイズ)
java - この Obj ファイル パーサーの何が問題なのかわかりません
Android用のobjファイルパーサーの何が問題なのかを理解するのに苦労しています。立方体の形ではなく、歪んだ三角形を描くだけです。パーサーのコード
opengl 初期化を使用して描画するためのコード
そして drawOnFrame
matlab - matlabでの光波重ね合わせの可視化
点源ジオメトリの空間で異なる振幅を持つ 2 つの波の重ね合わせを視覚化するための簡単なコードをいくつか書きました。これは khanacademy CS プラットフォームで動作します。http://www.khanacademy.org/cs/superposition/1245709541しかし、matlab で正確な現象を再現することはできません。私が得るのは騒々しいイメージだけです。これは乱数生成の違いと関係があるのでしょうか? random(0,1)(JS) と rand(matlab) の違いがわかりません。
ここにmatlabコードがあります
像面上の点 x,y に対する波動重ね合わせ関数
テストスクリプト
c++ - DirectXでモデルサイズを正規化するにはどうすればよいですか?
DirectXで、.objファイルからモデルをロードおよびレンダリングできる単純な「エンジン」を作成しました。私が作成したオブジェクト、たとえば、座標が-1.0〜1.0の範囲内にある単純な立方体の場合は問題なく機能します。ただし、異なる単位を使用し、座標が-2kから2kの範囲内にあるモデルをロードすると、デプスバッファーに完全には収まらない巨大なものになるため、1つの巨大な脚または同様の効果のように見えます。
どこかで読んだことを覚えていますが、最近DXをたくさん読んだので、どこに何があったのか思い出せません。だから私の質問は、異なるユニットを使用する異なるモデルをロードできるようにしたい場合、それらがすべて同じサイズで画面にうまく収まるようにするための最良の方法は何ですか?
オブジェクトのロード時に値を変換しようとすることもできますが、変換行列またはシェーダーを使用するDirectXの方法が他にもあるでしょうか。
c++ - Wavefront obj ファイル形式の解析
obj モデルを opengl プログラムにインポートしたいと考えています。属性データをシェーダーに渡すために使用するクラス/データ形式があります。
インターネットからダウンロードした丸太小屋のモデルを使って作業しています。
丸太小屋には、いくつかの頂点、法線、およびテクスチャ座標の定義があり、その後に面定義のリストが続きます。
だから私の最初の本能は、objファイルを解析して最終的に
ファイルには 210 個の頂点、100 個の tex 座標、80 個の法線が定義されている可能性があるため、これを私の CustomVertex 形式に変換するのは簡単ではありません。
この形式の ~390 個の顔のリストの後:
ファイルに次のようなものがあります。
さらに頂点の定義が続きます。
このことから、モデルはいくつかのサブオブジェクトで構成され、それぞれがいくつかの面で定義されていると推測しました。3 x 頂点/法線/texcoord インデックス値で定義された各面。
したがって、CustomVertex のベクトルを取得するには、次のことを行う必要があると考えています。
作成して入力します。
面の定義で一意の v/vn/vt トリプルごとに CustomVertex を作成する必要があります。
そこで、地図を作成することを考えました:
したがって、私の考えでは、遭遇した v/vn/vt ごとに、この文字列のハッシュを作成します。たとえば、nHashId = hash("80/50/1")* を作成し、マップでハッシュを検索します。存在しない場合は、CustomVertex を作成してベクターに追加し、新しく作成したハッシュと CustomVertex_index をマップに追加します。
*: v/vn/vt 文字列のハッシュを作成することにより、その文字列に対応する一意の数値を作成しています。これにより、同等のテキストよりもマップで検索/比較する方が高速になると期待しています。
ハッシュに一致するものが見つかった場合、customvertex が既に存在すると見なし、新しい CustomVertex を作成する代わりに、CustomVertex_index エントリをインデックス ベクトルに追加して先に進みます。
これは計算コストが高い作業のように思えるので、毎回 obj ファイルを解析するのではなく、後で取得するために CustomVertex 配列 (および対応するインデックス配列) をディスクにダンプすることになると思います。
質問をする前に、時間の制約と、Vbo クラスを再設計する必要がないこと (重要なタスク) のために、CustomVertex 形式にこだわっていることを指摘してもよろしいですか?配列をシェーダーに分けていますが、CustomVertex のようにデータをインターリーブするとパフォーマンスが向上することを読んだことがあります。
だから私の質問に: 1. 私の方法は健全またはクレイジーに見えますか? 気が狂っている場合は、どこが間違っているかを指摘してください。
潜在的な問題を見つけることができますか?
誰かがこれを以前に行ったことがあり、私がやろうとしていることを達成するためのより簡単な方法を推奨できますか?
opengl - シェーダー内のテクスチャのバインド
VBO を使用してウェーブフロント (.obj) ローダーをコーディングしています。
「usemtl」が呼び出されたときに、頂点、texCoord、法線データと一緒に textureID を送信することを考えています。
そのテクスチャ ID を使用して、glBindTexture を呼び出さずに頂点/フラグメント シェーダ内のテクスチャをバインドできますか?