問題タブ [openscenegraph]
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.
qt - シーン内のオブジェクトを歪めているこれらの OpenGL 呼び出しを突き止めるにはどうすればよいですか?
Qt と OpenSceneGraph という OpenGL を使用する 2 つのライブラリを混在させています。私は OpenGL ES 2 をターゲットにしているので、シェーダーと ES 2 互換の呼び出しですべてが行われます。
OSGをQDeclarativeItemにペイントしようとすることで、QtDeclarativeでOSGを具体的に使用しています。私はこれを Qt ドキュメントで提案されている方法で行います: beginNativePainting()/endNativePainting() の間ですべての OpenGL 呼び出しをラップします。
これは、OpenSceneGraph シーンでテクスチャを使用するまで問題なく機能します。これを行うと、より良い言葉がないためにQMLウィンドウが「めちゃくちゃ」になります。できるだけシンプルにするために、OSG シーンはテクスチャが適用された平面で構成されています。基本的な OpenGL 呼び出しを使用してシーンを再作成したところ、問題は発生しなくなりました。一連の写真として要約された問題は次のとおりです。
- QtDeclarative エンジンは、OpenGL を使用して描画します。簡単な QML ページをセットアップしました。
- OpenGL を直接使用して簡単なシーンを作成します。テクスチャが描かれた飛行機です。
- 今、私は OSG で同じシーンをセットアップしようとしています... 同一のシェーダーなど.
最後のスクリーンショットで奇妙なことが起こっていることがわかります。元の OpenGL シーンが透明だった黒い背景について心配する必要はありません。これは、OSG が黒のクリア カラーを使用しているだけです。問題は、QML で設定された他のアイテム (四角形) が台無しになることです。
編集:何が起こるかを明確にするために:QMLで描いた長方形はすべて画面の右端に引き伸ばされます。また、QML で OpenSceneGraph アイテムの後に四角形を描画すると、それらが表示されないことに気付きました (以前は気付きませんでした)。次のスクリーンショットでは、OSG アイテムの後に紫がかった黒い四角形を描画していますが、消えていることに注意してください。もっと奇妙なことが起こっているかもしれませんが、四角形で遊んでいるのを観察したのはこれだけです。
前
後
私は OpenGL にかなり慣れていないので、どのような呼び出し/状態設定がこのようなことを引き起こすのかわかりません。OpenSceneGraph は、Qt のペイント エンジンを台無しにする OpenGL の状態変更を行っていると思います。また、これは OSG がテクスチャを使用する場合にのみ発生することも知っています... OSG シーンにテクスチャを適用しない場合、これは発生しません。これは私が立ち往生しているところです。
また、BuGLe を使用して、OSG でテクスチャを有効にした場合と無効にした場合の OpenGL コール トレースを取得して、問題のある状態の変化を特定できるかどうかを確認しました。私はいくつかの違いを見つけ、OSG が 2 つの間で変更したいくつかのグローバル状態 (glPixelStorei() など) も見つけましたが、見つけた変更をリセットしても違いはありませんでした。何を探すべきかを知っていれば、とても役に立ちます。誰かが気が狂っている場合は、スタック トレースもあります。
- OSG with texturering : http://pastie.org/4223182 (OSG テクスチャは 637~650 行目)
- テクスチャリングなしの OSG: http://pastie.org/4223197
編集 2: 役立つ可能性のある差分を次に示します。関連する行が明らかになる前に、下にスクロールする必要があります。 http://www.mergely.com/nUEePufa/
編集 3: うわー! さて、その違いは私をかなり助けてくれました。OSG は VertexAttribArray 3 を有効にしますが、無効にはしません。OSG がフレームをレンダリングした後に glDisableVertexAttribArray(3) を呼び出すと、問題が部分的に解決されるようです。QML の長方形を引き伸ばす必要はもうありません。ただし、OSG アイテムの後に描画された四角形はまだ表示されません。
c++ - OpenSceneGraph - 3D 壁の描画
以下のコードがあります。チュートリアルからアイデアを得ましたが、コードを実行しても何も表示されません。目標は、3D で壁を描くことです。私の推測では、ポイントがずれている可能性がありますが、ポイントを選択する方法とスケーリングする方法がわかりません。
c++ - カメラを O(0,0,0)、45 度に向ける
すべての座標が正の他のすべての軸に対して 45° の角度で原点 O(0,0,0) を指すようにカメラを設定する際に問題があります (もちろん、同じ値を持つ必要があります)。私が持っている最も近い画像で見ることができます
ただし、ご覧のとおり、ここでは値が負であるため、カメラは平面x
の反対側にあります。YZ
完全なコンパイル可能なプロジェクトは、このリビジョンの gist にあります。
関連する行列の乗算は次のとおりです。
ファイルでSimple.cpp
。
これがどのように機能するかを理解しようとしています(数学的にもプログラム的にも)。openscenegraph にできるだけ依存しないソリューションを好みますが、最初は自分で数学を実行して、それがどのように機能するかを実際に把握したいので、数学側にもっと依存します。したがって、基本的な線形代数の大学のコースでは教えられていない四元数やその他の高度なものはまだありません。
c++ - 世界のY軸を中心にカメラを回転させます(O(0,0,0)で)
Y
プロジェクトで3Dクロスでマークされた、世界の軸を中心にカメラを回転させようとしています。
私が達成したのは、それをそれ自体の軸を中心に回転させることです。これはクールですが、それは私が望んでいたものではありません。
四元数といくつかの数学を使用してそれを達成する方法、または osg::PositionAttitudeTransforms
使いやすいが理解しにくいインフラストラクチャ。
その背後にある数学に触れたいと思います。
関連するコードは次のとおりです。
これはファイルの下部にありますSimple.cpp
。プロジェクト全体は、このリビジョンの要点にあります。
GNU / Linuxボックスでは、入力するだけmake
で、適切なツールがインストールされていれば、箱から出してすぐに機能するはずです。
c++ - OpenSceneGraph float 画像
C++ と OSG を使用して、float テクスチャをシェーダーにアップロードしようとしていますが、うまくいかないようです。最後に、コードの一部を投稿しました。主な問題は、float 配列のデータを使用して osg::Image オブジェクトを作成する方法です。OpenGL では、目的のコードは次のようになります。
ただし、この場合は OSG を使用する必要があります。
使用時にコードは正常に実行されます
それ以外の
生成された float データをアップロードする必要があります。シェーダー コードで GL_LUMINANCE32F_ARB データ範囲が必要なため、unsigned char 配列に切り替えることもできません。
Googleが私を助けることができなかったので、誰かがここで私を助けてくれることを願っています(例:osg float imageをグーグルで検索)。だからここに私のコードがあります。
osg::Image でデータを作成し、後で入力できるようにする別の方法を Web で見つけました。しかし、どういうわけかこれも機能しません。これを新しい XYZ の直後に挿入しました。行。
c++ - コードで osgDB/FileUtils が原因でコンパイラ エラーが発生する
プロジェクトを OSG でコンパイルしようとしていますが、必要なすべての rpm を OpenSUSE 12.1 にインストールしました。私が行ったのは #include だけで、コンパイラ (gcc 4.6.2) が内部でクラッシュして、次のように言っているため、何が起こっているのかわかりません。
「「(」トークンの前に識別子が必要です」
問題は、エラーをクリックすると、FileUtils に表示される場所です。
列挙値 {
わかった、
SOURCE_EQUALS_DESTINATION、
... 等々
};
何が起こっているのか理解できません。助けていただければ幸いです。
qt - OSG で Qt HUD を作ろうとしている、カメラの問題
私は OSG と Qt の両方で一種の初心者ですが、OSG ウィンドウで Qt HUD を作成しようとしています。モデルで回転するのではなく、OSG シーン内で修正された Qt インターフェイス要素が必要です。問題は、Qtウィンドウ内のOSGシーンではなく、OSGシーン内のQt要素が必要なことです(OSGviewerQtの例のように)。
私がまだ持っているのは、--useWidgetImage --fullscreen 引数を使用した OSGQtWidgets の例です。これは、OSG モデルの上に固定された Qt コントロールを示しています。問題は、OSG モデルの上に qt 要素用の新しい (FIXED) カメラを作成することです。そのため、カメラが透明ではないため、ユーザーは OSG モデルを回転させたり移動したりできません。
問題は、使用可能な Qt 要素を含む透明なカメラを作成する方法はありますか? または、私の目標を達成するための他の方法はありますか?
前もって感謝します!
qt - QtコンソールアプリケーションをOpenscengrapghとリンクできません
OpenscenegraphをVisualStudio2008と正常に統合しました。例として示されているサンプル「cessna.osg」は、コンソールプログラムとしてVS2008で正常に実行されます。しかし、Qtでコンソールと同じコードを実行しようとすると、エラーが発生します。Windows764ビットでQtオプション付きのVS2008コンパイラを使用してCMAKEでOpenscenegraph3.0を構築しました。Qtでは、バージョンQT 4.7.4 Desktop-MSVC2008(QtSDK)を使用しています。私のQt.proファイルは次のようになります...
私は同じライブラリを使用しており、上記のようにVS2008IDEにファイルパスをインクルードしています。
main.cppファイルはdis...のように見えます(これはVS2008 IDEと同じです)
私が得ているエラーは...
アプリケーションをコンソールとして実行できるようにガイドしてください。または、QtコンソールでOpenscenegraphアプリを実行する他の方法はありますか?
android - HUDカメラの正しいビューマトリックスとは何ですか?
GLES2を搭載したAndroidでOpenSceneGraphを使用しています。
私は2台のカメラを持っています。1台はシーン用で、もう1台はHUD用です。シーンカメラは私のosgViewerのメインカメラです。私の問題はHUDのカメラにあります。OSGジオメトリを2Dシーン(HUDカメラ)に追加しようとしていますが、表示されないようです。
カスタムシェーダーを使用して、ジオメトリの位置を操作しています。私の理解では、投影行列は正しいですが、2台のカメラを使用しているため、ビュー行列に問題がある可能性があると思います。HUDのビューをシーンの最初のビューに設定しようとしましたが、役に立ちませんでした。私がこれで間違っているならば、私を訂正してください。
その後、子としてhud_cameraをシーンデータにアタッチします。また、シーンカメラは、シーン内の特定のポイントを見る以外に特別なことは何もしていません。
ジオメトリが作成されているという事実を知っています。頂点シェーダーでこれを使用することにより:
gl_Position = osg_ModelViewProjectionMatrx * osg_Vertex
シーンの左側に見えます。
qt - OSG 内の Qt でキーボードを押しても無視する
私は Qt の初心者で、1 か月ほど対処できない問題が 1 つあります。状況は次のとおりです。OpenSceneGraph プロジェクト (OpenGL) を作成し、3D シーン内で Qt インターフェイスを作成しようとしています。私はそれをどのように処理するかは必要ないと思いますが、誰かがもっと知りたい場合は、OSG フォーラムのスレッドで詳細情報を確認してください (ただし、そこで解決策は得られませんでした)。問題は、キーボードの任意のキーがクリックされると、Qt コントロールが画面を飛び回り、(マウスまたはキーボード) イベントに反応しなくなることです。ただし、プログラム全体は引き続き機能します。要約すると、私の質問は次のようなものです: Qt ウィジェットにすべてのキー押下を無視させる方法はありますか? 私はたくさん検索しましたが、有効な解決策を見つけることができませんでした。
前もって感謝します!