問題タブ [pyopengl]
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.
python - pyopengl glut input
GLUTグラフィックを含むウィンドウが表示されたら、ターミナルに入力を入力します。
理想的には、 PythoncmdをGLUTのglutKeyboardFuncと統合したいと思います。私の試みは失敗しました(両方ではなく、どちらか一方を同時に許可します。また、ウィンドウまたは端末にフォーカスがあるかどうかの問題もあります)。
回転するティーポットを表示するサンプルコードを次に示します。現在、「m」を押すとメテオラの良さ(スタブ)が呼び出されますが、たとえば「メテオ500」と入力できることが望ましいでしょう。
glutKeyboardFuncを使用して文字をグローバル文字列に収集し、同じ機能効果を与えることができますが、ユーザーはブラインドと入力します。「printsomestring」を使用すると、同じ行に印刷できますが、コンマは、入力中に出力が表示されないことを意味します。また、「print'\ b'」(バックスペース)は普遍的に機能しません...
基本的に私は持ちたくない:
1つのコマンドを入力します
使用制限:
- pyopengl
- GLUT
(他の答えは気まぐれな未来のために歓迎されていますが-別の問題を解決しようとしている人々)
python - Python を使用した OpenGL の表示リストの効率性は?
私は、Python ラッパー PyOpenGL を使用して OpenGL プログラミングを独学で学んでおり、現在、それを使用した最初のプロジェクトに取り組んでいます。このプロジェクトは、多数の独立して移動し、独立して色付けされた立方体を使用する音楽ビジュアライザー (whitecap と似ていません) です。
私の現在の方法は、1 つの立方体の表示リストを作成し、glColor と glTranslatef を使用して色と位置を繰り返し変更するように呼び出すことです (疑似コード):
このようにして、フレームレートに気づき始める前に約 10,000 個のキューブをレンダリングできます。これは問題ありませんが、より高速にして、プログラムが能力の低いコンピューターに移植できるようにしたいので、私の質問は次のとおりです。
多数の同一だが独立したオブジェクトをレンダリングする最も効率的な方法は何ですか?また、現在表示リストを使用している場合よりもはるかに優れたパフォーマンスが得られますか? C を使用するか、頂点バッファリングを学習する必要がありますか?
注: エラー チェックを無効にすると、パフォーマンスが大幅に向上することがわかりました。
python - Pythonで反復する最速の方法
これまでのところ、この問題を心配する必要はありませんでしたが、PyOpenGL でバッファリングする必要がある多数の頂点を使用する必要があり、Python の反復がボトルネックになっているようです。これが状況です。3D ポイントの配列がvertices
あり、各ステップで各頂点の色の 4D 配列を計算する必要があります。これまでの私のアプローチは次のとおりです。
今、ループの各ステップから操作を排除するためにできることは他にないと思いますが、そのループを実行するには、より最適なパフォーマンスの方法が必要だと思います。たとえば、JavaScript では同じ計算で 9FPS が生成されるのに対し、Python では 2 ~ 3 FPS しか得られないためです。
よろしく、 ボグダン
3d - pyopengl でのテクスチャのレンダリング
私は、テクスチャ レンダリングがどのように機能するかの基本を理解しようとしており、pyopengl でしばらく作業してきました。
赤い本からチュートリアルまで、いくつかのドキュメントを読みましたが、私のプログラムはテクスチャをレンダリングしません。描画されたオブジェクトの表面の色を変更 (暗く) するだけです。
関連するコードは次のとおりです。画像ファイルを読み取り、テクスチャ プロパティを設定して有効にする関数です。
オブジェクトの頂点視覚化リストを作成する関数、
これが問題だとは思いませんが、各オブジェクトのテクスチャ座標を手動で計算しています (「周囲の球」と、オブジェクトの中心から各頂点を通るベクトルとの交点を計算しています)。
コードの他の部分を見たい場合は、お問い合わせください。ヒントやアドバイスをいただければ幸いです。
編集:多分問題は、テクスチャをサーフェスに適用するために、とglTexCoord2f()
組み合わせて使用することです。または他のサーフェスと一緒に使用する必要がありますか? 問題は、オブジェクトの側面が特定のポリゴン タイプで構成されていないことです。主に三角形ですが、四角形もあります。glBegin(GL_POINTS)
GL_QUADS
GL_TRIANGLES
python - インデックス付きのpyOpenGL VBO
インデックス付きの VBO を使用して、pyOpenGL で Rectangle を描画したいと考えています。そのために glDrawRangeElements() 関数を使用していますが、glDrawRangeElements の行で常に同じ間違いが発生します。
WindowsError: 例外: アクセス違反の読み取り値 0x00000000
私は多くのことを試し、解決策をインターネットで探していて、コード例を一日中勉強していたので、どうすればいいのか本当にわかりません. ここの誰かが私を助けてくれたらいいのに。
これは、エラーが作成されるコードの一部である必要があります。
プロジェクトで必要なので理解しようとしているだけなので、まだこれらすべての手がかりがないことを認めなければなりません。これまでに見落とした追加の間違いがある場合は、私に教えてください ;)
前もって感謝します
opengl - マウスでopengl選択球
ユーザーがマウスのクリックで選択できるはずの 3D 空間に多数の球体があります。gluUnProject の使用例をいくつか見たので、試してみました。だから私は持っています(私が間違っている場合は、そのすべての部分について100%確信が持てないため、すべてのステップを修正してください):
次に、マウス クリックの x と y と球の中心の位置を取得します。
したがって、私の 3D ジオメトリはまったく良くないので、光線の始点と終点として 2 つの点を計算し、一度に 1 つの次元を削除して 2D に 3 回入り、線と球の中心の間の距離を計算します。これらの距離のいずれかが球体レイよりも大きい場合、クリックされません。距離の式は正しいと思いますが、念のため:
これで、コードは開始位置で正常に動作するようになりました。しかし、少しでもマウスを使って画面を回転させると、期待どおりに何も機能しなくなります。
opengl - WindowsでのpyOpenGLカラーピッキング
クロスプラットフォームにする必要がある wxPython + pyOpenGL アプリケーションがあります。選択のために、基本的に次のようにカラーピッキングスキームを実装しました。
init_color_buffers の場合:
これで、MacOS で完全に動作するようになりました。しかし、Windowsで試してみると、まったく機能しません。作成されるカラー ディクショナリは単なる {(0, 0, 0): last_index} であり、アイテムをクリックすると (0, 0, 0) も返されます。特にMacOSではすべて正常に動作するため、ここで何が間違っているのか本当に困惑しています。私の唯一の推測は、glReadPixels がどういうわけか Windows で正しく動作しないか、Windows で wxPython が何らかの形で台無しになったということです。
どんな助けでも大歓迎です。
よろしく、 ボグダン
python - uv マッピング python OpenGL 三角形
pyOpenGL を使用してテクスチャ ポリゴンの単純なイミディエイト モード セットを表示しようとしていますが、うまくいきません。私はいくつかのジオメトリ データをロードするいくつかのコードをまとめました。すべて正常に動作し、テクスチャを追加するためのすべてのコードを持っていると言えますが、白いポリゴンを取得するだけです。
コードの重要な部分は次のとおりです。
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とは何の関係もありません。
python - pyOpenGL キャンバスと wxpanel のボタンの間で通信できません...イベントをバインドする方法がわかりません。
私は実際にユーザー 'Fenikso' からこの大部分を借りました: wxGLCanvas を wxPanel に追加する問題
wxpanel と openGL キャンバス間の通信をテストするための簡単な関数を追加しました。機能します....パネルボタンからキャンバスに通信しようとするまで。:P まず、パネルからキャンバスと通信できません。ボタンにバインドされた関数は、球の位置を更新できません。第二に、それは恐ろしく遅れます。アニメーションを制御する機能を遅くしようと思っていますが、差分を行う必要があるかどうか疑問に思っていました。これを少しスピードアップするには?