問題タブ [vertex]
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.
javascript - WebGL でオブジェクトをアニメーション化する方法 (完全な変換ではなく特定の頂点を変更する)
わかった、
私は 3D グラフィックスを初めて使用し、モデル内の個々の特定の頂点をアニメーション化したいと考えています(モデル全体の変換ではありません)。私のスクリプトは主に NEHE webgl チュートリアルに基づいています。このチュートリアルでは、すべてのオブジェクトの頂点がバッファーに格納されます。このバッファーは、プログラムの最初の実行時に一度初期化されます。初期化コードは次のとおりです。 *頂点には頂点の配列が含まれていることに注意してください。
これらは最初に初期化されるため、明らかに vertices 配列を変更しても何も起こりません。そのため、スムーズに実行するのに十分な効率を維持しながら、リアルタイムで頂点を変更する最良の方法は何かと考えていました。
何らかの方法でバッファを再バインドすることは可能ですか?たとえば、アニメーションのティックごとにこのコードを再度実行しますか?
乾杯、J
c++ - DirectX10で頂点バッファーを適切に更新する方法
少し背景を説明します。私はC++でプロジェクトに取り組んでおり、リアルタイムのプロファイルデータに基づいてオブジェクトの3D表現を描画しようとしています。プロファイリングデータは、外部プロファイリングハードウェアから収集されます。システムはオブジェクトに沿って移動し、1秒間に300回の速度で、ソフトウェアにプロファイルスライスを提供します。各スライスは、最大8000個のXYポイントのリストで構成されます。プロファイラーの動きはエンコーダーによって記録されます。エンコーダ情報は、スキャンの3次元を提供します。
注意すべきもう1つの重要な点は、プロファイラーがオブジェクト上を前後に移動する可能性があることです。このとき、以前に読み取った/描画したスライスを(エンコーダーの位置に基づいて)新しいスライスに置き換えたいと思います。今のところ、私はエンコーダーカウントで保存するスライスの循環バッファーでこれを達成しています。これは、バッファがいっぱいになり、古いスライスの上書きを開始するときに、スライスを破棄したいことも意味します。画面に被写体の適切な量を表示するには、一度に1000スライスのプロファイルデータを描画する必要があります。今のところ、オブジェクトを点群としてレンダリングしています。将来的には、隣接するスライスを添付して、三角形のリストとしてレンダリングすることを試みる可能性があります。
私はDirectXを初めて使用しますが、書籍やオンラインの例を使用して、オブジェクトを3Dで描画するようになりましたが、頂点バッファーを効率的/適切に使用していないと確信しています。私が見つけたほとんどの例は、非常に静的なモデルで機能します。したがって、ポイントのリストを使用して単一の頂点バッファーを作成する傾向があり、その後、行列変換によって操作されます。一方、ハードウェアからプロファイルデータを取得すると、シーンが非常に迅速に更新されます。
現在、読み込んだスライスごとに新しい頂点バッファを作成しています。シーンを描画するときは、最大1000個のバッファのリストをループし、それぞれに対してDraw()を呼び出します。一度に描画される頂点バッファーの数を半分に減らすと、FPSが大幅に増加するのに対し、バッファーあたりの頂点ポイントの数を半分にするとほとんど改善が見られないことに気付きました。これは、複数の頂点バッファーであることを示しています。これにアプローチする適切な方法ではありません。
ですから、私の質問の本質は...頂点が頻繁に変化するときに、これらすべての頂点を1つの頂点バッファーに入れることができるかどうか疑問に思っています。既存の頂点バッファ内のポイントを更新できますか?または、シーンを更新するたびに1つの新しいバッファを再作成する必要がありますか?最後に覚えておくべきことは、ハードウェアからのスライスあたりのポイント数が異なることです。したがって、前のスライスを上書きする場合、新しいスライスには、置き換えられるスライスよりも多いまたは少ないポイントが含まれる可能性があります。
御時間ありがとうございます。どんなアドバイスも大歓迎です!
opengl - OpenGL vbo テクスチャ
私はまだ vbo の初心者で、collada モデルをレンダリングしたいと考えています。頂点、法線、テクスチャ、および頂点、法線、テクスチャのインデックスに関するすべての必要な情報を cae ファイルから取得した後、それらを Model オブジェクトとしてメモリに配置しました。残ったのは、テクスチャで vbo を使用してこのオブジェクトをレンダリングする方法です。頂点とインデックスを取得し、vbo レンダリングの場合は drawlelement を適用することで、オブジェクトを正常にレンダリングすることができました。しかし、テクスチャをレンダリングしようとすると、すべての三角形を通過し、頂点インデックスとテクスチャ インデックスに従って頂点と texcoord を正しく適用しているため、表示リストを使用してテクスチャを正しくレンダリングすると失敗します。では、テクスチャを正しくレンダリングするために、vbo のオブジェクトで見つかったテクスチャ インデックスを適用するにはどうすればよいでしょうか。
これはプロジェクトのコードです:
c++ - 自己照明のようなメッシュ、頂点を与える方法は?
自己照明のような複雑なメッシュ、頂点をどのように与えることができるか。ライトアンビエント、マテリアルアンビエントを増やしてみましたが、遠ざかるとすぐに消え始めます。どんな距離からでも見えるようにしたい。円柱から頂点を取得してから色を入れようとしましたが、色には問題なく機能しますが、距離では失敗します。
c# - リストとスタックを使用したC#への深さ優先探索の実装
ある程度成功している深さ優先探索を作成したいと思います。
これまでの私のコードは次のとおりです(コンストラクターを除いて、VertexクラスとEdgeクラスにはプロパティのみが含まれていることに注意してください。ここに投稿することは重要ではありません)。
すべての頂点が訪問されるように機能しますが、正しい順序ではありません。
ウィキペディアと比較して、私の訪問方法を比較すると、次のようになります。
私の物は向きを変えて右から左に始まっているようです。
何が原因か知っていますか?(また、私の実装に関するアドバイスをいただければ幸いです)
編集:私は答えを得ましたが、それでもGetConnectedVerticesメソッドの最終結果を表示したいと思いました:
opengl - OpenGL:頂点シェーダーで頂点を追加します
頂点シェーダーに新しい頂点を追加するにはどうすればよいですか?
c++ - VCG でのメッシュの改良
VCG ライブラリでトリメッシュの改良を行った人はいますか? タグとして追加しますが、まだ十分な評判がありません。洗練されたライブラリのいずれかを含めるたびに、次のエラーが発生します。
これはこの行にあります:
それを含む定義 (巨大な c/p を許してください) は次のようになります。
私の頂点、面、およびメッシュは次のように宣言されています。
誤解しているものがあるかどうかはわかりません。コードの他の場所で myMesh::FacePointer を使用していますが、テンプレートの山に欠けているものがあると思います。これは、refine.h をインクルードしようとするまでは正常に動作します (つまり、コンパイルして、想定どおりに動作します)。VCG の経験のある方からのアドバイスをいただければ幸いです。
c - サンプルのOpenGL頂点属性の変更
このチュートリアル/サンプルを使用して、iPhoneで基本的なオブジェクトトラッキングを実行しています。すべてが正常に機能し、パフォーマンスを大幅に調整しましたが、それでも1つの問題が発生します。
基本的な問題は、OpenGLを十分に理解していないことです。恥ずかしそうにサンプルコードを取得し、それを自分に合ったものに変えたことで罰せられるべきです。実際のところ、私は罰せられています。
このサンプルは、iPhoneのカメラを(シェーダーを使用して)オフスクリーンテクスチャにレンダリングして、処理して画面に表示できるようにする方法を示しています。これで、頂点属性の配列を使用してテクスチャ/レイヤーを描画することがわかりました(Google検索にもかかわらず、ほとんど理解できない原則です)。
頂点配列は次のとおりです。
また、これらの頂点属性によって、描画されたテクスチャの方向が変わる可能性があることもわかりました。テクスチャが縦向きに描画されるようになりました。つまり、iPhoneを横向きに保ち(希望する)、ビューを回転させると、画面に表示されるものはすべて90度の角度のカメラになります。
私はこれらの頂点を非難するのに十分に問題を絞り込んだと思います、そして私はそれらの値をいくらかいじり回しましたが、許容できる結果はありませんでした。
風景にテクスチャを描くのを手伝ってくれる人はいますか?
PS:'squareVerticles'の値を逆にすると、180度回転した画像を取得できます。ただし、テクスチャを180度ではなく90度回転させたいと思います。
c++ - 最短経路アルゴリズムのモデリング中のキュー問題
キューに問題があります。グラフをモデリングして、C++ で最短経路アルゴリズムを実行しています。
このステートメントに戻ると、私while (!q.empty())
のフロントは変わります。vertex*
理由がわかりますか?
ここに getNeighbours() が来ます
c++ - マルチパラメータ クラス テンプレートと私の「頂点」クラス
組み合わせるとグラフを形成する「頂点」クラスを定義しました。これらの頂点は一方の端で入力を受け取り、もう一方の端で出力を生成します (これらの両側は、この頂点クラスの他のインスタンスの 0、1、またはそれ以上の「サブスクリプション」を持つことができます) 入力データと出力データの両方のタイプは、それぞれに依存しませんこれらの頂点はすべての種類の入力/出力タイプで動作する必要があるため、これらはテンプレート パラメーターとして指定されます。
したがって、コードでは次のようになります。
受信したデータを送信する前に、頂点はフィルター関数を適用してデータを変換/フィルター処理してから、リストのサブスクライバーに再度送信することができます。この関数は、その機能がこの仮想頂点基本クラスから継承する特殊化クラスの種類に依存するため、純粋仮想関数として宣言されます。
これは、フィルターが次のように宣言されていることを意味します。
もちろん、複数の頂点を互いにリンクさせたいと思っています。各頂点の入力と出力が正確に 1 つの他の頂点の入力/出力に接続されている最も単純な形式で、このリンクを検討してください。
(ClassX)vertex1(int) --> (int)vertex2(std::string) --> (std::string)vertex3(OtherClassOrType) -->...
これを念頭に置いて、与えられた例の問題ステートメントは次のように
なります。これらすべてのサブスクリプションを追跡するために、頂点はすべてのパブリッシャーとサブスクライバーへの一連のポインターを保持します。
サブスクライブする頂点は、着信データ型を発信データ型と一致させる必要がありますが、サブスクライバーの発信データ型は関係ないため、気にしません。パブリッシャーの着信データ型にも同じことが当てはまります。
残念ながら、これを指定する方法がわかりません。クラス テンプレートの代わりに関数テンプレートを使用して (仮想フィルター関数のために動作しません)、boost::any (コンパイルしません)、void ポインター (コンパイルしません) をいじりましたが、何もしませんでした。作品を考えることができます。
要するに、「 DontCareType 」タイプをテンプレート パラメータとして使用する方法を探しています。それが可能であれば、基本的には「「気にしない」とマークするテンプレート パラメータを言う方法です。とにかくそのデータを使用しないため、任意の型にすることができます"
実用的な解決策を得る最後の手段として、一種の「VertexData」型を使用するオプションも検討しています。これは、頂点で使用される着信または発信データ型の基本クラスにする必要があります。これは役に立ちますか?
もちろん、これを実現するための他の提案も大歓迎です。