問題タブ [openinventor]
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.
texture-mapping - Open Inventor で直方体の面全体にテクスチャが引き伸ばされる
長方形の立方体にテクスチャを適用する小さなスクリプトを作成しようとしています。これを実現するために、シーングラフを実行し、SoIndexedFaceSet ノードを見つけたら、その前に SoTexture2 ノードを挿入します。画像ファイルを SoTexture2 ノードに配置しました。私が直面している問題は、テクスチャが YZ 平面の 2 つの面 (face1 と face2 など) に正しく適用されていることですが、他の 4 つの面では、2 つの面の境界でテクスチャが引き伸ばされるだけです (1および 2)。
こんな感じです。
正面は本来あるべき姿ですが、ご覧のとおり、他の 2 つの面では、正面の角の値を推定しているだけです。なぜこれが起こっているのか、これを回避する方法はありますか?
windows - 3D ラインから投影されたリボンを「常に前を向いている」ように視覚化する方法
現在、3D 空間内の点で構成された (曲線) 線があります (開いている発明者ですが、この問題の解決策は製品固有ではない可能性があります)。
その線から直角に投影されたリボンを記述し、回転するときに常にカメラに面するサーフェスを描きたいと考えています。
(たとえば、ユーザーは、線自体をその辺の 1 つとする線の曲線を表すリボンを表示します。次に、シーンを回転させると、リボンは線を中心に「回転」し、常に常にユーザーに面している)
我々は持っています:
カメラの位置と回転
線に沿った各点の位置
アプローチの方法は、隣接するポイントのペアごとに、カメラに直交する平面とそれらのポイント間のラインに直交する平面に交差するラインを見つけ、そのラインに沿って設定された距離を投影することであると考えましたが、これはうまくいきませんでした正しい結果に近づくことはできません。(以下のコードは機能していません)。
このアプローチは正しいですか?もしそうなら、それを説明する以下のコードのどこが間違っていますか?
そうでない場合、コアの目的 (リボンは常にユーザーに面している) をどのように達成しますか?
c++ - Coin3d/OpenInventor を使用して任意の数のエンジン出力を追加する方法
Coin3d ライブラリ (OpenInventor と同じコード ベースに基づく) を使用して大規模なデータ セットを視覚化するアプリケーションを作成しています。私はしばらくこの問題に取り組んできましたが、満足のいく解決策を見つけられませんでした。
データは可変数の「ストリップ」でSoEngine
提供されます。視覚化するデータを収集し、それを多数の出力に送信し、SoQuadMesh
レンダリングのために各ストリップに接続する を作成しました。
ここでエンジンを使用している理由は、データがデータ ソースからフェッチされ、ユーザーがナビゲートすると視覚化が更新されるためです。つまり、ユーザーがズームインおよびズームアウトすると、画像の解像度が変更されます (Google マップによる)。データはバックグラウンド スレッドで取得され (1 ~ 2 秒かかります)、エンジン出力の更新に使用されます。
問題は、任意の数の を作成する方法がないように見えることです。SoEngineOutput
それらはすべて、SO_ENGINE_ADD_OUTPUT
マクロを使用してエンジンに追加する前に、クラス定義で宣言する必要があります。
Coin のソース コードを分析することで、マクロの背後にあるコードをSO_ENGINE_ADD_OUTPUT
わずかに変更した形式で実装することで、これを回避しようとしましたが、最終的には失敗しました (または神経を失いSoEngine::outputdata
ました)。内部の実装全体の詳細を知らずに、再初期化の結果を危険にさらしたくありませんでした。
私が現在取り組んでいる解決策は、ヘッダーのように、すべての出力を可能な最大値まで宣言することです。
次に、Engine コンストラクターで、各出力をエンジンの出力リストに追加します。
これは機能しますが、 Engine クラスが 100 に設定されている場合、約 20 秒インスタンス化されるとパフォーマンスが低下します。MAX_NUM_SAMPLE_SETS
これは 600 の宣言を意味しSoEngineOutputs
ます。MAX_NUM_SAMPLE_SETS = 100
は可能な限り最大です - ほとんどの視覚化ではこれよりもはるかに少ない (10 未満) 必要があるため、実行時に出力の数を決定できるようにしたいと考えています。
だから私の質問は:
SoEngineOutput
実行時に Coin3d に任意の数の s を追加する方法はありますか?- `SoEngineOutput の宣言の数がこれほど多いのはなぜですか? (これは、別の質問を作成する一般的な C++ の質問であるか、Coin3d の問題である可能性があります)
- これに対する解決策を実装するためのより良い方法はありますか?
graphics - Open Inventor 3D Graphics API で線を描画するにはどうすればよいですか?
Open Inventor 3D Graphics API は初めてで、指定された 3D 座標との間に線を引きたいだけです。最初の点が 0,0,0 で、2 番目の点が 1,1,1 だとします。この API のドキュメントと例は本当にひどいもので、うまく説明できません。私はVisual Studioを使用しています。
vtk - VTK を使用したシーン グラフ
VTK でシーン グラフを作成することについては何もないようです。ソフトウェアで Coin3d (および SoQt) を VTK に置き換える必要があります。Coin3d はシーン グラフに重点を置いているため、Coin3d が提供するいくつかのクラス (たとえばSoSeparator ) を置き換える方法がわかりません。
また、VTK を使用してシーン グラフを作成するためのチュートリアルや紹介も見つかりません。そのためのリソースを知っている人はいますか?それとも、VTK を使用してシーン グラフを作成するのは悪い考えですか?
openinventor - OpenInventor/coin3d はどのようにして OpenGL のような両面レンダリングを可能にしますか?
Coin3D はデフォルトで下の画像のように片面レンダリングを使用します:</p>
OpenInventor/coin3d はどのようにして OpenGL のような両面レンダリングを可能にしますか?</p>
c++ - PoPieChartRep の注釈の色をどのように設定しますか?
要するに、PoPieChartRep のラベルにカスタム色 (スライスとは異なる) を設定するにはどうすればよいですか?
詳細: OIV の PoPieChartRep クラスを使用して円グラフを作成しようとしています。文字列 "Value1" と "Value2" に特定の色を付けたいと考えています。
PoPieChartRep のオンライン リファレンスにフィールドがあり、isAnnoSliceColor を false に設定すると、ラベルが白くなります。
マテリアルを使用して色を設定する必要があると思いますが、どのオブジェクトを使用すればよいかわかりませんか? 参照が示唆するように PoLabelHints と PoMiscTextAttr もチェックしましたが、色/素材に関連するフィールドは見つかりませんでした。