問題タブ [canvas3d]
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.
java - オフスクリーン レンダリング Canvas3D が機能しないのはなぜですか?
Java3D 1.5.2を使用して、オフスクリーンレンダリングを機能させようとしています。私のソース コードCanvas3D
では、オフスクリーン レンダリングを行う拡張を にアタッチしようとしましたSimpleUniverse
が、そうするとレンダリングが中断されます。
完全なソース コードは、StackOverflow に貼り付けるには少し大きすぎるため、ここのPasteie から入手できるようにしました。
63 行目はコメント アウトされており、通常の Canvas3D が画面上でレンダリングを行います。立方体をレンダリングし、これをJFrame
. ただし、コメントを削除すると、オフスクリーン レンダリングにより、オンスクリーン レンダリングがレンダリングされなくなります。また、オフスクリーン レンダリングは "big black nothing" を返しますBufferedImage
。
オフスクリーン レンダリングを機能させる方法、つまり、回転した立方体のシーンをバッファ イメージにレンダリングする方法を知りたいです。Java3D が提供するオフスクリーン レンダリング用のサンプル コードを見てきましたが、これも同じように実行されます (Raster
オブジェクトを使用してオフスクリーン バッファをオンスクリーン ウィンドウにレンダリングすることを除いて)。
virtual - Canvas3D の動きを仮想 3D ワールドの動きに変換するにはどうすればよいですか
私の目標は、マウス ポインターがキャンバス上にある場所になるように、仮想世界で図形を移動することです。
私が持っているもの: - Canvas3D オブジェクト上のマウス位置 (x、y) - Canvas3D ビューポートから始まるピック レイが最初のシーン オブジェクトと交差する場所の Point3d オブジェクト。(ドラッグを開始したい場所の 3D 空間内のポイント)
私が欲しいもの: - Point3dの座標を変換して、最初の交点(Point3dオブジェクト)が常にキャンバス上のマウス位置と重なるようにする方法(ユーザーがクリックしたものを決定するためにピックレイを使用したときと同じ) Canvas3D オブジェクトから)。
ありがとう!
java - ビューを水平方向に反転-どのように?
私はJava3Dを初めて使用します。最近、すべてのシーンオブジェクトが左手座標にあることがわかりましたが、Java3Dは右手座標を使用しています。解決策があります。シーンのZ軸を反転し、三角形の巻き順を元に戻します。しかし、これはひどい混乱になります。どういうわけかビューを水平方向に反転させることができれば、必要な仕事をするようです。どうすればこれを達成できますか?どこかにTransform3Dを適用する、ある種のオフスクリーンレンダリング、または...?
事前に10倍!
printing - PrintCanvas3D が機能しない
Java3d からグラフィックを印刷しようとすると、一部のコンピューター (Intel ベースのグラフィック カード) が印刷時に完全にクラッシュします。この例外があります。
OpenGL 1.2 にアップグレードする必要があると言われましたが、確認したところ、既に 1.5 がインストールされています (エラー メッセージは正確ではありません)。
IllegalRenderingStateException をキャッチしようとしましたが、うまくいきません。JVM はいずれにしてもクラッシュします。Intel ベースのグラフィック カードで印刷機能を使用する方法を知っている人はいませんか?
geometry - Canvas3D の球体を「クリック可能」にする
いくつかの球を保持する Canvas3D があります。ユーザーが球をクリックしたことを検出する方法はありますか?
java - Canvas3Dとボタンが重なっているJava3D
私はJava3Dを使用して固体物理学の紹介をしています。内部の多くの3Dを調べた後、さまざまなものをテストするためにいくつかのボタンを配置することにしました。私の問題はここに現れました。
次の図では、setLayout(null)を使用してボタンとCanvas3Dを配置していました。
私がここで欲しくないのは:
- Canvas3Dはボタンと重なります。
- Canvas3Dは、画像サイズ/ウィンドウサイズの同じ比率を維持するために拡大されないため、ウィンドウのサイズを変更すると、同じサイズになります。
次に、Canvas3Dで、ボタンに「南」、「西」、「東」を使用してsetLayout(new BorderLayout());
みました。add("Center",component);
下の写真はケースを示しています:
これは見た目は良くなりますが、今回は別の問題が発生します。
- ボタンは私が望んでいたサイズではなく(ウィンドウに伸びる)、私が望んでいたオフセット位置にありません。
- 「南」のように同じエリアに2つ置くとボタンも重なります。
質問: Canvas3Dと重ならないように、ボタンが希望の位置(x、y)にあり、希望のサイズ(h、w)になっているときに、Canvas3Dをウィンドウに拡大するにはどうすればよいですか。Canvas3DとButtonsの異なるレイアウトを試しました->失敗しました。1つのレイアウトのみが表示されています。
お時間をいただきありがとうございます。
Java3D1.5.2およびEclipse。WindowsXPとIntelCentrino
java - 別のイベントを処理しているときにJFrameがイベントに応答しない
次のシナリオがあります。1。ActionListenerを実装する「FrontEnd.java」クラスにJFramejFrameを作成します。次に、Canvas3DオブジェクトをそのContentPaneに追加し、その直後に、いくつかのJMenuといくつかのJMenuItemをそれぞれ含むJMenuBarを追加します。2.次に、球をCanvas3Dオブジェクトにレンダリングするために使用するRendererClass.javaクラスがあります。したがって、フロントエンドから、 JMenuItemの1つをクリックして、イベントを処理し、actionPerformedから実行します。(ActionEvent ae)メソッドRendererClass(jFrame)を呼び出し、レンダラー側からjFrameオブジェクトを取得するため、Canvas3Dで球をペイントします。だから、私はそれらを初期の位置にペイントします。3.次に、 RendererClassにある「updateCoordinates()」を呼び出すFrontEndにあるループで球の座標を更新します。これは、最大1分間続く可能性のある重いループです。球の座標を更新している間、Canvas3Dでそれらがどのように更新されているかを示します(各反復で、座標はわずかに変化します)-これはRendererClassのupdateCoordinates()によって行われます。
問題は、actionPerformed(...)メソッドから呼び出されたループ内で、jFrameと対話できず、イベントを閉じられないことです。ループが終了したときに「X」(ウィンドウを閉じる)のループ内をクリックするとウィンドウが閉じるため、実際にリッスンしています。さらに、Canvas3Dでカメラを回転させようとすると、ループが終了するまで回転が更新されません。ループ中に、球が動いているのがわかります。また、ボタンが応答を停止し、応答しなくなります。ドロップダウンJMenuItemsがCanvas3Dの下にあるように見え、アクセスできなくなります。
コードは次のとおりです。
だから、質問は簡単です...なぜJFrameウィンドウが動かなくなってイベントへの応答を停止するのですか?そして、なぜループが終了した後、過去のイベントがすべて突然処理されるのですか?最後になりましたが、このような機能をどのように実装しますか(JFrameを1つのクラスで作成し、それを他のクラスに渡して、Canvas3D内に配置できるようにします...ループ中に対話できるようにします) Canvas3D?
前もって感謝します。
java - Java3D-一部のクラスが見つかりませんが、クラスパスが正しく設定されています
正常にコンパイルされるJava3Dを使用するクラスがありますが、実行しようとすると、次のように表示されます。スレッド「main」の例外java.lang.NoClassDefFoundError:javax / media / j3d / Canvas3D、
次のスタックトレースを使用します。
私がすでに試したもの:
Java3Djarを/jre/ lib / ext /にコピーするまで、コンパイルすることすらできませんでした。
最新のJava、Java3Dを使用しており、Notepad ++を使用しており、Java3Dを再インストールしてみました。
クラスパス/パスを正しく設定しました。
コードにエラーはありません。
作成した通常のJavaアプリケーションを実行できます。
アプリケーションの実行時にクラスパスを使用してみました(java -classpath blahblah ApplicationName)。
私はjarファイルの内部を確認しましたが、クラス(Canvas3Dを含む)は間違いなくそこにあります。
java - JPopupMenu.setDefaultLightWeightPopupEnabled(false) が機能しない
ImageJ 3D Viewer ライブラリ ( http://3dviewer.neurofly.de/ ) を使用しています。ビューアに画像を表示しようとしていますが、ポップアップ メニュー (メニュー オプション) がキャンバスに隠れています。つまり、キャンバスの後ろに消えます。私は全体を見渡しましたが、コンセンサスの答えは、次のコード行を早期に追加する必要があるようです:
これを非常に早い段階で追加しましたが、問題はまだ残っています。誰にもアイデアはありますか?コードを投稿することもできますが、それが本質的な考え方です。JMenuBar を Canvas3D に追加しようとしています。