問題タブ [qt3d]
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++ - ubuntuでqt3dをコンパイルする
http://doc.qt.nokia.com/qt3d-snapshot/qt3d-building.html#installing-pluginsをフォローしようとしました
すべてのコンパイルプロセスの後、それは固執しました:
どうすればコンパイルできますか?Ubuntuのバイナリバージョンと-devバージョンを見つける方法はありますか?
多分64ビットアーキテクチャ用ですか?
compilation - Qt ソースコードなしで Qt3D をコンパイルする
Qt3D で問題が発生しています。ソースコードからコンパイルできません。可能であれば、Qt 自体をコンパイルせずに Qt3D をコンパイルしたいと考えています。既にコンパイルされた Qt に対してリンクできますか?
- OS: Linux Ubuntu 11.10 (oneiric) x86_64
- Qt バージョン: 4.7.4
出力を行います:
cp: 通常のファイル
/usr/include/qt4/Qt3D/qt3dglobal.h': No such file or directory make[2]: *** [/usr/include/qt4/Qt3D/qt3dglobal.h] Error 1 make[1]: *** [sub-threed-make_default-ordered] Error 2 make: *** [sub-src-make_default-ordered] Error 2 global/qt3dglobal.h /usr/include/qt4/Qt3D/qt3dglobal.h make[2]: Leaving directory
/home/soroush/programs/programming/libraries/qt3d-1.0-src/src/threed を作成できません make[1]: ディレクトリ `/home/soroush/programs/programming/libraries/qt3d-1.0- を離れますソース/ソース'
qt - Qt3d + glShadeModel
最近、私はqt3d(QGlViewとQGLSceneNodeを使用)を使い始めました。生成されたモデルに頂点ごとの法線を提供し、モデリングアプリにGL_FLATシェーディングモデルを使用したいと考えています。しかし、glShadeModel(GL_FLAT)を呼び出すだけでは何も起こりません。シェーディングは、スムーズモードのように見えます。
qt3d / qopenglがその関数を呼び出す場所を見つけようとしましたが、QGLBuilder以外に何も見つかりませんでした。
ネイティブのopengl関数を機能させるには、QOpenGLContextで何かをしなければならないようです(他のいくつかのopengl関数でも同じ問題があります)
または、QGLPainter / QGLSceneNodeが内部でシェーディングモデルを設定し、それをまったく使用する必要がないのでしょうか。
windows - WindowsでQt3Dアプリケーションを書く
WindowsでQt3Dアプリケーションを作成します。必要なツールもインストールしましたが、コンパイル後に「未解決の外部シンボル」エラーが発生します。解決策は何ですか?
注:私のコンパイラはMicrosoft Visual C ++ 9.0です
c++ - 冗長オブジェクトを含む Qt3D シーンの設定に関するアドバイス
私は Qt3D モジュールを初めて使用し、現在 Qt3D を使用して Qt5/C++ でゲームを作成しています。この質問は、「私は正しい道を進んでいますか?」に関するものです。または「...についてアドバイスをいただけますか」。
ゲームのシーンには、静的な部分 (「世界」) といくつかのオブジェクト (建物と可動ユニット) があります。一部の建物は将来的にアニメーション化される可能性がありますが、それらのほとんどは非常に静的です (もちろん破壊可能です)。
質問を 2 つの部分に分けます。シーン内の異なる位置に配置された同じモデルのコピーを処理する方法と、ビューア クラスでシーン全体を管理する方法です。
シーン内の冗長オブジェクト:
もちろん、オブジェクトは建物/可動ユニットの同じライブラリを共有するため、これらのオブジェクトのモデルをそのようなユニットのすべてのインスタンスのグラフィックス カードにアップロードするのはばかげています。QGLSceneNode のドキュメントを読みました。複数のシーン ノード間で同じ QGeometryData を共有するように設計されていると思いますが、シーン内の異なる位置にオブジェクトを配置するために異なる変換を適用します。建物のすべてのインスタンスに対して同じ QGLSceneNode を共有するのは間違った方法だと思います。
私は現在、建物/可動ユニットの各タイプのプロパティ、とりわけテクスチャを含むジオメトリを伝えるユニット「ライブラリクラス」を持っています。ここで、このライブラリ クラスの各建物に QGeometryData を提供します。これは、ゲームの読み込み手順でアップロードされます (起動時にすべての建物に対してこれを行うことにした場合)。
ユニットの新しいインスタンスを作成するとき、新しい QGLSceneNode を作成し、ライブラリから (明示的に共有されている) QGeometryData を要求し、それをノードに設定します。次に、この新しいノードの変換を設定し、シーンに配置します。これは、私の質問の 2 番目の部分につながります。
シーン全体を管理する:
私の「シーン」は現在、QGLSceneNode でも QGLAbstractScene でもありませんが、シーン内のオブジェクト (またはオブジェクトのコレクション) ごとに 1 つずつ、いくつかの QGLSceneNodes の構造体です。私は3つのアプローチを見ています:
私の現在のアプローチですが、それは「間違った方法」だと思います。
構成: すべてを子ノードとして 1 つのルート QGLSceneNode に配置します。このような構成で特定のノードにアクセスするのが非常に難しいことに気付くまで、これは私にとって正しい方法のように思えました。しかし、いつそのような「特定の」ノードにアクセスする必要があるのでしょうか? ほとんどの操作では、すべてのノードを考慮する必要があります (それらのレンダリング、アニメーションの位置の更新)、またはシグナルスロットベースで操作することさえできるため、手動でノードを見つける必要さえありません。たとえば、アニメーションは QPropertyAnimations を使用して実行できます。ゲーム エンジン コアの QObject (すべての建物はエンジンのコア部分の QObject) を対応する QGLSceneNode に接続することによって、イベントに作用することもできます。
しかし、このアプローチには別の欠点があります。レンダリング中に QGLPainter のいくつかのプロパティを変更する必要があるかもしれません。どのプロパティを変更する必要があるのか わかりません.これは、Qt3Dについて十分に知らず、プロパティを変更せずに何ができるかを推測できないためです(たとえば、特定のシェーダーを使用して特定のシーンノードをレンダリングする) .
その後、QGLAbstractScene を見つけましたが、シーンでのレンダリング プロセスを定義できないため、上記の 2 つのソリューションと比較しても利点がわかりません。しかし、それを定義する正しい場所ではないのでしょうか?
Qt3D でそのようなシーンを管理するための最良の方法はどれですか?
「最高」とは、つまり、何が間違っているのでしょうか? どうすれば改善できますか? 他にどのようなことを考慮に入れる必要がありますか? Qt3D ライブラリで重要なことを見落としていませんか?
c++ - Qt3D の QGLView (QGLWidget ではない) でのオーバーペイントとレンダリング後の効果
現在、Qt3D モジュールを使用して C++/Qt5 でゲームを作成しています。
QGLView でシーン (QGLSceneNodes) をレンダリングできますが、いくつかの GUI 要素でシーンをオーバーペイントすることに行き詰まっています。インターフェイスのルック アンド フィールを定義するために QML と C++ のどちらを使用するかはまだ決めていないので、両方のソリューションを受け入れます。(QML モジュールは QtQuick3D と呼ばれ、C++ モジュールは Qt3D と呼ばれ、どちらも Qt5 の一部であることに注意してください。)
私は QML ベースのソリューションを非常に好みます。
どうすれば上塗りできますか?
次のことが可能でなければなりません。
- もちろん、アルファチャンネルをサポートして、指定された画面座標で2Dアイテム(画像)を描画します。
- システム フォントを使用してテキストを描画します。最初に画像にペイントし、これを Qt3D OpenGL コンテキストでテクスチャとして使用します。
- 画面座標でのマウス入力への反応 (3D シーン オブジェクトのピッキングとは対照的)。
2D GUI 部分に別の QGLSceneNode を使用するだけで、これはすべて可能だと思います。しかし、レンダリング中に(頂点シェーダーを使用して)再配置および再配置するためにシーンノードを配置および方向付けすることは意味がなく、数値エラーが発生し、非効率的だと思います。
別の「GUI」頂点シェーダーを使用するのは正しい方法ですか?
(どのように)ポストレンダリング効果とオーバーペイントを連携させることができますか?
次のポスト レンダリング エフェクトを実行できれば、非常に便利です。
- 以前にレンダリングされたシーンを読み取り、いくつかの 2D イメージ エフェクトを適用します (これらをフラグメント シェーダーとして実装し、このエフェクト シェーダーを使用して最終画面で以前にレンダリングされたバッファーをレンダリングすることが想像できます)。これにより、GUI の一部をぼかし効果のあるガラスのように見せることができます。
- より高度な効果により、シーンをよりリアルに見せることができます: 深度とモーション ブラー、熱に依存する空気のちらつき、グロー効果。それらはすべて、フラグメント シェーダー (これは問題の一部であってはなりません) と、レンダリング時に追加のバッファーを使用して記述できます。それらは、メイン画面のレンダリング プロセスと GUI のオーバーペイントの間に配置する必要があります。これが、この質問に含めた理由です。
特別なシェーダー プログラムを使用してオーバーペイントを実装すると問題が発生します。GUI の背後にあるピクセルにアクセスして、ガウス ブラーなどの効果を適用して GUI をガラスのように見せることができません。QGLView ではなく、別のバッファにシーンをレンダリングする必要があります。これが私の主な問題です...
qt3d - QGLView で QGLNode を介して QWidget を描画する
Qt3D を使用し、QGLView を使用して複雑な 3D シーンを描画します。
このシーン内の QGLNodeにいくつかのウィジェットを描画する必要がありますが、方法がわかりません。
これは、私がやろうとしていることの最小限の例です(qt3dの「ネスト」デモに基づいています):
ヘッダ:
初期化中:
塗装コード:
立方体の描画:
「#define DRAW_GLNODE」がアクティブな場合、回転する立方体が別の立方体内のテクスチャとして表示されます (左側のウィンドウにフレーム バッファ データが表示されます)。
http://i.stack.imgur.com/Ok4NT.png
「#define 0」に切り替えると、QGLView に黒い画面が表示されますが、ご覧のとおり、QGLFrameBuffer にはデータが含まれています。
http://i.stack.imgur.com/5R6Wz.png
私は何を間違っていますか?
opengl - QGLSceneNode を使用してテクスチャを単純な形状にレンダリングする
QBuilder と QGeometryData を使用してテクスチャを単純な形状にレンダリングしようとしていますが、テクスチャを表示できません。何が間違っていますか?
テクスチャを構築し、generateTextureCoordinates を使用してテクスチャ座標をマッピングしようとする QGLSceneNode を作成しました。
手動でテクスチャ座標をマッピングする編集 は機能しているようですが、generateTextureCoordinates は機能するはずです。
[私のクラスは QGLView の子です]
qt-creator - Qt Creator が Qt3D を認識しない
マシンに QtQuick3D をビルドしてインストールしました。サンプル プロジェクト「cube」を実行します。ビルドして実行できます。マウスで回転できる立方体が表示されます。しかし、QML エディターでは、すべての Viewport および Item3D タイプでエラーが発生します。Creator がモジュールを認識していないように感じます (ただし、インポートは機能します)。キューブにカーソルを合わせると、「ヒント」が表示されます: キューブのプロトタイプ Item3D を解決できませんでした
Ubuntu 12.04 を使用しています。
忘れた設定はありますか、それともどうすればよいですか?
ありがとう!
qt - Qt3D は Qt5 の一部ですか?
Windows に Qt5 ライブラリをインストールしましたが、Qt アシスタントに Qt3D に関するドキュメントがありません。Qt3D は Qt5 の一部ですか、それともリリース バージョン 5 から削除されましたか?