問題タブ [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.
c++ - OpenGL を使用して 3D オブジェクト (.obj ファイル) をレンダリングする際のちらつき
OpenGL (および GLFW ライブラリ) を使用して 3D オブジェクトをレンダリングしようとすると、モデルで多くのちらつきが発生します。.obj
自分で書いたライブラリを使用してファイルを読んでいます。
以下は私のレンダリング関数です: 残念ながら、面と頂点がどのように入力されているかを理解するために、リンクされているすべてのコードを提供する必要があります: 圧縮されたコードと実行可能ファイルとサンプル.obj
:
ソース
ここから.obj ファイルを使用してプログラムをテストします。現在、プログラムは法線とテクスチャをサポートしていませんが、サイト上のほとんどのモデルには法線とテクスチャがないため、これは問題ではありません。また、(現在)「123.obj」からのみ読み取るため、ファイルに他の名前を付けないでください。また、スペースは 1 つだけで、それ以上は受け入れません。
parsing - Cinema4D.objファイルが正しくインポートされない
.objファイルをインポートするためにActionScriptで記述されたパーサーがあります。次に、それらをMolehillでレンダリングします。これは素晴らしいことです。これまでのところ、頂点がx、y、zオーダーまたはz、x、yオーダーである標準の.objファイルと思われるものをインポートできます。ただし、Cinema4Dからエクスポートされた.objファイルは失敗します。
たとえば、四面体はazコンポーネントをレンダリングしません(.objファイルには適切なz深度のインデックスがあります!)。単純な立方体には、三角形の面の半分がありません。Cinema 4Dはx、z、yの順序でエクスポートされると聞いたので、それも考慮に入れようとしましたが、うまくいきませんでした。そして実際には、頂点の順序によってポリゴンが失われることはありません。
誰かが.objファイルからCinema4Dメッシュをインポートしましたか?特別なトリックはありますか?Cinema4DはWavefront.obj標準を無視しますか?助けてくれてありがとう。
更新:原因は、ポリゴンのインデックスデータが3ではなく4のセットにあることだと思います。たとえば、これが必要です:1/1 2/2 3/3が、これは必要ありません:1/1 2/2 3/34/4。Cinema 4Dは、.objファイルを後者としてエクスポートします。とにかく、解析側またはCinema 4Dエクスポート側のいずれかでこの問題に対処するには?
Update2:インデックスデータは希望どおりになりましたが、それでも正しくレンダリングできません。以下は正四面体の場合です。レンダリングしようとすると、4つの面のうち2つだけが表示されます。
上記の内容について何か奇妙なことはありますか?(同じ四面体の別の標準3Dソフトウェアから.objファイルをエクスポートすると便利です)
graphics - lighweightwavefrontobjモデルパーサー
軽量のc++wavefrontobjパーサーを探しています。さらに、次の機能が必要です。
- 隣接する平面三角形を結合してポリゴンを形成します。
- objファイルからも曲線を読み取ります
私はglmとassimpを検討しましたが、それらは上記のものを提供しません。誰かが何かを提案してもらえますか?
parsing - Wavefront .obj テクスチャ座標の解析に関する問題
OpenGL ES 2.0 の objc で独自の .obj パーサーをコーディングして、この OpenGLES がどのように機能するかをよりよく理解しています。頂点を読み込んで、頂点カラーが適用されたモデルを表示するのは魅力的です。ちょっとしたメモ:私はインデックスバッファを使用しています。
本当の問題は、テクスチャ atm のマッピングです。以下でもう少し詳しく説明しますが、私のテクスチャは本来あるべき方法でマッピングされていません。
.obj 形式がどのように機能すると私は考えていますか? 間違っている場合は修正してください: "f" 行は、スラッシュの前の数字が頂点のインデックスを定義し、スラッシュの後の数字がテクスチャ座標を定義する面を表しています。 .
次の .obj ファイル (Cinema 4D によってエクスポートされたもの) について考えてみます。
そして、次のテクスチャ:
ここで、頂点を OpenGL ES 3D 空間に配置し、テクスチャ座標を個々の頂点にマップしようとすると、マッピングがうまくいきません。テクスチャ座標値の一部を移動することでこれを修正できますが、これはそれを行う方法ではないことに気付きました。また、いくつかの .obj エクスポーター設定を編集して、軸および/または UV マッピングを反転させようとしましたが、いずれも正しいマッピングになりません。.obj ファイル形式に関する私の理論に欠けているものはありますか? 1 つ言えることは、.obj 形式の座標系がテクスチャのアンカー ポイントとして左上を定義することを昨日読んだことです。だから私はすでに私の解析でそれを修正しました。
現在の状況を簡単にまとめます。 更新: テクスチャの座標系は、実際の .obj テクスチャ座標系であり、OpenGL の座標系ではありません。これに対抗するために、解析アルゴリズムで座標を変換します。
c++ - ウェーブフロントオブジェクトファイル(.obj)で、openglで4つを超える頂点を持つ面をレンダリングするにはどうすればよいですか?
では、Wavefrontオブジェクトファイルを使用して、OpenGLで4つを超える頂点を持つ面をレンダリングするにはどうすればよいですか?
頂点が3つある場合は、頂点GL_TRIANGLES
が4つある場合は使用しますが、頂点GL_QUADS
が5つ以上ある場合は、何を使用するのでしょうか。基準はありますか?
python - PyOpenglとPyQtのパフォーマンス
Wavefront OBJローダーを作成しましたが、動作しますが、500ポリゴン、1000ポリゴンは約10秒の遅延、2000以上のポリゴンはフリーズしてクラッシュした後、FPSは約3に低下します。
私のC++/ Qtアプリケーションは約15〜20 FPSの100万ポリゴンをロードしますが、PyOpengl(ctypes)およびPyQt(sip)ラッパーが疑われます。
誰かが私を助けるために高解像度モデルをPyOpenglとPyQtアプリケーションにロードしようとしましたか?
編集:OBJローダーに「頂点バッファオブジェクト」を使用したので、CPUとは何の関係もありません。
model - オブジェクト モデル ファイルとアニメーション
opengl で obj モデル ローダーを試しています。obj モデルをロードしましたが、obj モデルのアニメーションについて十分な情報がありません。アニメーションには、obj モデル ファイルを含むファイルが多いと思います。ファイルの内容を説明していただけますか?ファイルをロードするにはどうすればよいですか?
android - opengles2.0テクスチャ座標
.objwavefrontファイルを解析して3Dモデルを作成するAndroid用のシンプルなモデルビューアを作成しました。この形式のblenderからUVマップでテクスチャリングされた単純なicosphereをエクスポートしています
「v」は頂点を表し、「vt」はテクスチャ座標を表し、「f」は頂点に対応するインデックスであるスラッシュの前の値とスラッシュの後の値がテクスチャ座標に対応するインデックスである面を表します。私の問題は、テクスチャ座標インデックスをopenglesに入力する方法がわからないため、テクスチャ座標が一致しないため、現在のモデルが非常に奇妙に見えることです。
c++ - OpenGL3.x.objローダーとADSPhongの「見た目が悪い」球体
OpenGL 3.xコアプロファイルを使用して、独自の基本的な.obj(Wavefront)レンダラーを作成しようとしています。私はOpenGLSuperBible5thedを使用しています。および参考資料としてのSwiftlessチュートリアル。
ジオメトリが正しく読み込まれているように見えるので、ADS Phong照明モデルを機能させようとしていますが、何かがおかしいです。OpenGL呼び出し、または読み込み方法に関係があると思います。私の法線ですが、それを修正する方法がわからないようです。(私はOpenGLの専門家ではないので、他の問題もあると思います)。
単純な立方体をレンダリングすると、ほぼ正しく見えますが、片側に奇妙な光の点があります。
球をレンダリングすると、照明は「静脈」で表示されます。
私のコードに明らかに何かが非常に間違っています。これが私が関連すると思うコードのセクションです。必要に応じて、コードの詳細/すべてを投稿させていただきます...さらに投稿する必要があるかどうかをお知らせください。
ファイル:objFileRenderer.cpp
ファイル:shader.cpp
ファイル:shader.vert
ファイル:shader.frag
調べることがたくさんあることは知っていますが、この問題の根底に到達するために助けを得ることができればとてもうれしいので、これを理解するのを手伝ってくれる時間がある人に事前に感謝します!
c++ - HalfEdge Mesh の .obj ファイル ローダーを高速化する方法は?
Half-Edge データ構造に基づく独自のメッシュ構造を持つ 3D OpenGl (C++) アプリケーションに取り組んでいます。Wavefront obj ファイルをメッシュ構造にロードする簡単な方法を構築したいと考えています。もちろん、単純に 1 行ずつ実行することもできますが、もっと効率的な方法が必要です (プロのアプリケーションが単純に 1 行ずつファイルをロードしないことはわかっています。何百万もの頂点に対しては遅すぎるでしょう)。
チュートリアルや非常に高速な OBJ ローダーの例を誰か教えてもらえますか? ハーフエッジのデータ構造と関係がある場合は望ましいでしょう。
編集:
私が回避しようとしている2つの基本的な問題があります
1) ファイルから浮動小数点数を読み取る一般的な遅さを回避する
2)各エッジの「隣接する」ハーフエッジをその場でインテリジェントに決定するにはどうすればよいですか。作成中のエッジの対称エッジまたは次のエッジが既に存在するかどうかを判断し、存在する場合はそのポインターを使用するためのある種のハッシュ関数を想像しています。