問題タブ [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.

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

c++ - OBJ ファイルの読み込み、法線の使用方法 (#vertices < #normals)

obj ファイルがあり、指定された法線を使用せずにオブジェクトを opengl に正常にロードしました。 ファイルの形式は次の
とおりです。
法線のない木

メッシュの表示機能は次のようになります。

結果は次のとおりです。
ここに画像の説明を入力

OpenGL が照明方程式に使用するデフォルトの法線ベクトルが原因で、オブジェクトが平らに見える可能性があることを読みました。
これは法線で解決できます。指定された法線は 780 で、頂点は 155 です。

各 glVertex3f 呼び出しの前に glNorm を使用しようとしましたが、obj は完全に奇妙に見えます (行など)。

私は何をすべきか?

編集#1: これは私がファイルを読む方法です:

そして、これは私がそれを表示する方法です:

関数 displayMesh は openGL の Render 関数内で呼び出され、ローダー関数は Setup OpenGL 関数内で呼び出され、メッシュ ツリー オブジェクトはグローバル変数です。

編集 #2: ツリーが法線でどのように見えるか:
法線のある木 また、これはOpenGL のセットアップ関数のコードです。

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

c++ - OpenGL のオブジェクトローダー

openglも含むC ++でプログラムを作成しました。また、objファイルをロードするためにobjローダーも作成したいと思います! 私はすでに次の2つの関数を作成しました:

主な問題は、プロジェクトをコンパイルして実行すると、ビューポートに何も表示されないことです。オブジェクトを表示するためにビューポートが小さい場合に備えて、ビューポートのサイズも大きくしましたが、状況は変わりません。したがって、これらの関数で何か間違ったことをしたという結果に達しました! 誰か助けてくれませんか?!

また、obj ファイルの値をいくつか指定します。

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

c++ - インデックス法線をシェーダーに渡す GLSL

Blender でモデル (Suzie) を生成し、法線を含む .obj ファイルにエクスポートしました。アプリへの読み込みモード中に、頂点と法線の数が異なることに気付きました (2012 年と 1967 年)。

モデルの詳細

シンプルなセルシェーディングを実装しようとしています。問題は、法線をシェーダーに渡すことです。頂点データを格納するには、glm のベクトルを使用します。

私がこれまでに得た結果

間違った法線

バッファのレイアウト

レンダリング フラグメント

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

3d - Wavefront OBJ での顔要素の順序付け

OBJ ファイルの構造を理解したいのですが。

顔要素の特定の順序はありますか? さまざまな情報源は、通常、より簡単なレンダリングを可能にする順序で保存されることを示唆していますが、決定的な答えはありません。仕様もそれについて言及していないようです。順序が任意であり、それを処理するのはパーサー次第ということですか?

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

graphics - パーティクル システムを使用して Blender で OBJ ファイルに頂点法線 (vn) をエクスポートする方法

OpenGL コンテキストで OBJ ファイル形式を解析および解釈できるプログラムがあります。

Blender で、「Hair」パーティクルを含む単純な球体を含む小さなプロジェクトを作成しました。

変換後 (球から粒子を分離)、粒子は新しいメッシュを形成します。そのため、プロジェクトには 2 つのメッシュ (「球体」と「髪」という名前) があります。OBJ ファイル (File/export/Wavefront (.obj)) でメッシュの「Sphere」をエクスポートする場合、「include Normals」を選択すると、エクスポート後にファイルに法線に関するすべての情報が含まれます (例: vn 0.5889 0.14501 0.45455、 ...)。

「法線を含める」を選択してパーティクルで同じことをしようとすると、OBJ ファイルに法線がありません。(エクスポートする前に、適切なメッシュを選択しました。)

そのため、パーティクル タイプのメッシュに対して法線プロパティがエクスポートされない理由がわかりません。

これは、私の髪のパーティクルの一般的な Blender レンダリングの上にあります。ご覧のとおり、すべての粒子が光に反応します。そのため、Blender はこれらのパーティクルに法線プロパティを使用します。

ここに画像の説明を入力

そして今、上の写真は(Blender の「編集モード」で -> 変換後)パーティクルが複数の線で形成されていることを示しています。私のopenglプログラムでは、GL_LINESを使用して同じ粒子をレンダリングしています。パーティクルのライト プロパティを管理するための法線情報が必要です。

ここに画像の説明を入力

パーティクル メッシュの法線プロパティをエクスポートする方法を知っていますか?

よろしくお願いします。

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

matlab - オイラー角を使用した wobj 頂点の回転

こんにちは専門家!

私はオイラー回転行列を持っています:

回転行列が正しいと確信しています。この問題は、wobj ファイル (この場合はボックス) に回転を適用しようとすると発生します。

次のようなボックスを回転させたい:

私が行った場合:

回転後、頂点を再び元に戻します

回転を間違えます。誰でも私を助けてもらえますか?

問題の図: ボックスは赤いシステムのように回転しません (X,Y,Z)

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

android - VBOにデータをロードする独自のOBJパーサーを作成し、単一のインデックスリストに一致するようにデータを並べ替える方法は?

以前に作成した、表示リストを使用して代わりにVBOを使用するOBJパーサーを変換しようとして、外部の支援なしで自分で問題を理解できるかどうかを確認しようとしましたが、今はコードが長すぎて、エラーを見つけることができません。

これはOpenGLES2.0を介したAndroidアプリであり、画面上にいくつかの三角形が表示されますが、正しい場所にはまったく表示されません。単一のインデックスリストに基づいて各面のすべての要素を取得しようとする試みは正しくなく、すべてを順不同に投げてしまうだけだと感じていますが、エラーを見つけることができません。

基本的に、OBJ形式では頂点、テクスチャ座標、法線ベクトルに個別のインデックスが付けられるため、互いに完全に順序が狂っている3つのデータリストが作成されますが、VBOは単一の部分に基づいて各部分を参照します。インデックスのリスト。

誰かが私を助けるのを助けるために、これが私のコードです:

OBJToolkit:

メッシュクラス:

明らかに間違っていることや、見つけられなかったほど複雑なことをしているのでしょうか。

私は彼らの意見を提供してくれる人に感謝します。

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

android - LibGDX と ObjLoader で .mtl が表示されない?

LibGDX を使用して .obj ファイルを Android プロジェクトにロードしようとしています。ファイルにはテクスチャ ファイルはありませんが、.mtl ファイルにマテリアルが含まれています。私は最新の公式ナイトリーを使用していますが、オブジェクト ファイルをレンダリングすると、オブジェクトが白く表示されます。ObjLoader で .mtl ファイルを使用するにはどうすればよいですか?

これは、オブジェクトをレンダリングするコードが呼び出される方法です。ここに ObjLoader クラスへのリンクがあります

https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/g3d/loaders/wavefront/ObjLoader.java

私は何を間違っていますか?そして、なぜ .mtl ファイルをロードしないのでしょうか? 私が理解できることから、.obj ファイルと同じフォルダーと同じ名前の .mtl ファイルをロードする必要があります。

EDIT 私は少しいじって、ObjLoaderクラスにいくつかの行を入れて、ロードされているものとロードされていないものをログに記録しました。mtl ファイルを読み込んで、各 mtl をマテリアル インスタンスに割り当てているように見えます。また、obj がそれらのマテリアルを正しく要求しているようにも見えます。

これらのマテリアルが適切に使用されていることを確認するために、OpenGL 側で有効にするか、その他の方法で行う必要があることはありますか?