Japanese Frequently Asked Questions about Java3D (C) 1999 Java3Djp ML Version: 000.006 (draft) Last Update: 2000.12.25 Author of draft version: Yukio Andoh (andoh@opengl.com)
[Q] Java 3D とは何ですか?
1998 年に Sun (JavaSoft) が開発した、
Java の標準的な3次元グラフィック API です。
Java 3D API クラスは Java で三次元グラフィックスアプリケーションや
Java アプレットを開発するための Java の拡張クラスです。
Java 3D API は Java でマルチメディアを扱う為の API である
Java Media API の一部です。
"Write once, VIEW anywhere" というスローガンの通り、
Java 2 をサポートするどの環境でも、再コンパイルすることなく
三次元グラフィックを実行できることを目標にしています。
Java 2 (JDK 1.2) と同様に、開発ライセンス、ランタイムライセンスはフリーです。
-------------------------------------------------------------------------------
[Q] Java 3D のホームページはどこですか?
http://www.sun.com/desktop/java3d/
またベータ版などの Early Access は JDC( Java Developer Connection ) で
公開される
http://developer.javasoft.com/developer/earlyAccess/java3d.html
-------------------------------------------------------------------------------
[Q] Java 3D はどこから手に入れることができますか?
以下の URL から Windows95/98/NT 版、Solaris(SPARC) 版が無償で入手できます。
また Sun が配布している Graphics@Sun CD-ROM (非売品) にも入っています。
SGI から IRIX 版がリリースされています。
Blackdown から Linux 版がリリースされています。
http://java.sun.com/products/java-media/3D/
http://www.sgi.com/developers/devtools/languages/java3d111.html
http://nitric.com/pub/java-linux/java3d/1.1.1/i386/
-------------------------------------------------------------------------------
[Q] Java 3D に関して話し合われているメーリングリストはありますか?
本家 JavaSoft のメーリングリスト(英語) と
ボランティアで運営されている日本語のメーリングリストがあります
java3d-interest ML (英語)への入会方法
http://java.sun.com/products/java-media/3D/forDevelopers/interest_group.html
Java3Djp ML (日本語)への入会方法
http://cgi14.plala.or.jp/antun/java3d/ml/
-------------------------------------------------------------------------------
[Q] メーリングリストの討論の内容は保存されていますか?
以下の URL でアーカイブを読むことができます。
java3d-interest ML
http://archives.java.sun.com/archives/java3d-interest.html
Java3Djp ML
http://ar1.easyml.com/MLarchive/user/3384/html/threads.php3
http://ar1.easyml.com/MLarchive/user/3384/html/search.php3
-------------------------------------------------------------------------------
[Q] JavaOne 1997 と JavaOne 1998 での Java 3D セッションの
スライド資料はどこで見ることができますか?
以下の URL で見ることができます
JavaOne'98
http://java.sun.com/javaone/javaone98/sessions/T600/
JavaOne'97
http://java.sun.com/javaone/sessions/slides/TT15/index.html
-------------------------------------------------------------------------------
[Q] JavaOne での Java 3D のチュートリアルを見逃してしまいました。
web上に資料がありますか?
OpenGL の大御所である Mason Woo 氏の行ったプレゼンテーションや
SIGGRAPH で行われたコースノートが
資料が以下の URL で公開されています。
http://www.sun.com/desktop/java3d/collateral/index.html
Mason Woo 氏は日本で行われた OpenGL_Japan セミナーで
Java3D のプレゼンテーションを行いましたが、
残念ながらこの資料は web では公開されていません。
http://www.woo.com/
-------------------------------------------------------------------------------
[Q] Java プログラミングに関しての質問があります。
そのための FAQ はありますか?
Java Programmer's FAQ が頻繁に更新されています。
http://www.afu.com/javafaq.html (英語)
また日本語翻訳版もありますが、最近は更新されていません。
http://www.sun.co.jp/java/faq/Java-Programmers-FAQ.html
他にも Java-House ML のトピックスやアーカイブが役立ちます
http://java-house.etl.go.jp/ml/
-------------------------------------------------------------------------------
[Q] Java 3D についてのより多くの資料はどこで読むことができますか?
仕様書や API Documentation などは以下の URL で読むまたは
ダウンロード可能です
http://java.sun.com/products/java-media/3D/
又日本語での Java 3D ページとして以下のページが役立ちます
Java3DTips
http://cgi14.plala.or.jp/antun/java3d/index.shtml
ABA Games Java 3D
http://www.asahi-net.or.jp/~cs8k-cyu/java3d/index.html
楽しい Java 3D
http://www.javaopen.org/j3dbook/text/index.html
各 Java3D 関連 URL については Java 3D repository が役立ちます
http://java3d.sdsc.edu/
-------------------------------------------------------------------------------
[Q] Java 3D のクラス階層構造図は、どこにありますか?
以下の URL に階層構造図があります
http://www.sun.com/desktop/java3d/collateral/j3dclass.html
-------------------------------------------------------------------------------
[Q] ブラウザ上で Java3D は動くのか?
動きます。
以下の手順をふむことによって Netscape + Java-Plugin 環境
および IE + Java-Plugin 環境で Java3D アプレットを動かすことができます。
- JDK1.2 もしくは JRE1.2 をインストールします
- Java Plug-in をインストールします。
- Java Plug-in html converter をインストールします
- Java Plug-in の設定で JDK1.2 もしくは JRE1.2 で動くよう設定します
- Java3D 1.1 をインストールします
- Java3D 関連Jarファイルを CLASSPATH に追加設定します
( j3dcore.jar, j3dutils.jar, j3daudio.jar, vecmath.jar )
- アプレットの為の HTML ファイルを html converter で変換します
-------------------------------------------------------------------------------
[Q] サンプルをコンパイルしようとすると「クラスが見つかりません」と、
コンパイルができません。何が間違っているのですか?
JDK1.2 + Java3D 1.1 が正常にインストールされている環境では
環境変数 CLASSPATH の設定は必用ありません。
Win32環境の場合は、Java3D 関連の jar ファイルが正常にインストール
されているか、以下のディレクトリをチェックしてみてください。
(1) \jdk1.2\lib
(2) \jdk1.2\jre\1.2\lib (JREをインストール済みの場合)
(3) C:\Program Files\JavaSoft\jre\1.2\lib
必用な jar ファイル
j3dcore.jar
j3dutils.jar
j3daudio.jar
vecmath.jar
CLASSPATH の設定を確認するとともに詳しくは以下の URL を
参照してみてください。
CLASSPATHはこう設定せよ
http://java-house.etl.go.jp/ml/archive/j-h-b/023336.html#body
CLASSPATHをちゃんと理解する
http://java-house.etl.go.jp/ml/archive/j-h-b/021880.html#body
-------------------------------------------------------------------------------
[Q] サンプルを実行した時、なぜ全て白黒で表示されるのですか?
JDK1.2 beta3 以前ではディスプレイが 8bit モードになっていると
そのような現象が置きました。JDK1.2 beta4 以降ではそのような
現象はありません。最新版の JDK1.2 をお使いください。
-------------------------------------------------------------------------------
[Q] サンプルを実行すると exceptions(例外) が発生します。
何が起こっているのですか?
動作環境に起因するもの
Java.lang.NoClassDefFoundError: java/awt/color/ColorSpace
JDK1.1 環境で無理に動かそうとしています
JDK1.2 をインストールしてください。
FATAL ERROR in native method: Wrong field ID passes to JNI
JDK もしくは Java3D のバージョンが古いのが原因です。
最新版の JDK1.2 と Java3D1.1 をインストールしてください
java.lang.ExceptionInInitializerError
環境変数 CLASSPATH にカレントディレクトリ "." が含まれていません
ClassNotFoundException
NT 4.0 で PATH= の先頭に WINNT\SYSTEM があるとき、
JDK 1.2 のインストーラーがここに java.exe と javaw.exe をインストールします。
この配下に lib\exi\j3d*.jar が無いため Exceptions が発生することがあります。
またプログラミングミスに起因するものに関しては
以下の URL が参考になります
http://www.ipc-tokai.or.jp/~atusi/java3d/class/exception.html
-------------------------------------------------------------------------------
[Q] SimpleSounds のサンプルを実行させると、どうなりますか?
空白のウィンドウが現れるだけなのですが?
Java3D には三次元サウンドに関する実装も行われています。
それら三次元サウンドのみを扱う場合には、特に描画が行われる
わけではありません。
-------------------------------------------------------------------------------
[Q] スプライン、NURBS に対応しているのか?
対応していません。
-------------------------------------------------------------------------------
[Q] マルチスレッドの分担内容は?
シーングラフのトラバース作業
カリングの計算
描画
といった負荷が分散されているとうたわれていますが、
詳細は定かではありません。
描画に関して、OpenGL版ではトラバース作業と並行してレンダリング
オブジェクトのレンダリングキュー登録が行われています。
仕様外(実装次第)であり非公開な部分ですが
レンダリングキューへの追加は
javax.media.j3d.Traverseからjavax.media.j3d.RenderQueueを利用して
処理されています。
-------------------------------------------------------------------------------
[Q] ネットワークを介したオブジェクトの転送はどうやるのか?
rmi を使います。
また HORB などの ORB も活用できるでしょう。
ただ、現実的にそのようなことが行われた事例は知りません
-------------------------------------------------------------------------------
[Q] リモートレンダリングはできるのか?
できません。
Solaris 環境や、Exceed3D などのような Windows + X-Server with OpenGL
環境で他のマシンで実行されている Java3D を手元のマシンで表示する
ことは可能です。(GLX拡張された X-Window System であることが必用)
ただしこれは OpenGL で言うところの GLR のように
手元のマシンで実行した Java3D アプリケーションの負荷分散の為
リモートのレンダリングサーバがレンダリングを行い結果を手元のマシンに
返してきたり、数台のレンダリングサーバで負荷分散したりといった
厳密な意味でのリモートレンダリンには該当しません。
また現在のところ Java3D は リモートレンダリング を実装する予定はありません。
-------------------------------------------------------------------------------
[Q] サポートされていないカリングがあるのか?
現在のところ オクルージョンカリング は実装されていません。
仕様には含まれています。
オクルージョンカリングとは、
バウンディング・ボリュームが他のオブジェクトによって完全に遮蔽さ
れている (見えない位置にある) 場合、描画の為の計算を行わず、
処理を高速化する手法です。
-------------------------------------------------------------------------------
[Q] VR 用 API としてのアドバンテージは?
他の一般の Graphics API に比べて後発であることから、
多くの Graphics API のいいところを取り入て洗練されたものであること。
他の Graphics API がカメラ的な ViewModel を持つのに比べ、
Java 3D は三次元空間での自由度が高い、魔法の絨毯に乗った人の視点的な
ViewModel を持つので、各種 VR 入力デバイス・出力デバイスとの相性がいい。
他の比較的高価な VR 専用 ToolKit に比べると、Java3D は基本開発環境、
ランタイムとも無償であること。
-------------------------------------------------------------------------------
[Q] VR 用 API としてのアドバンテージは? −機能的に十分なのか?
即答できず、ちょっと調べないと......
-------------------------------------------------------------------------------
[Q] VR 用 API としてのアドバンテージは? −コリジョンディテクションがあること?
即答できず、ちょっと調べないと......
-------------------------------------------------------------------------------
[Q] Java 3D と VRML の関係は?
Java 3D は三次元グラフィックスの為のプログラミング API であるのに対して、
VRML は三次元空間を表現する為のファイルフォーマットである。
独自のファイルフォーマットを持たない Java3D は
外部ファイルフォーマットとして
ローダー次第で各種フォーマットを扱うことができる
その中でも VRML(VRML97) は表現できる機能が Java3D に似通ったもののため
Java3D と親和性のあるフォーマットとして使われることが多い。
また Java3D の仕様策定の段階で VRML との親和性を考え各種機能が
盛り込まれたことも親和性の要因となっている。
-------------------------------------------------------------------------------
[Q] OpenGL Java binding と Java 3D はどう違うのでしょう?
どういうときにどちらを選べばいいのでしょう?
OpenGL Java binding は OpenGL の各関数を wrapper でくるんで、
Java から利用できるようにしたものです。
OpenGL はハードウェアに密着した低レベル API であるのに比べ、
Java3D はシーングラフベースの高レベル API であるのが大きな違いです。
よりハードウェアに密着した高速のグラフィックスを求める場合には
OpenGL Java binding を用い、シーングラフベースでモデルデータを
扱いたい場合や、カリング等の機能をわざわざ自分で実装するのではなく、
API にまかせてしまいたい場合は Java3D を使うのが良いでしょう。
また Java3D は Windows と Solaris, Linux, IRIX 環境でしか動かないのに比べ、
OpenGL Java binding は各種環境下で動き、ソースが公開されているものも
あるのが選択の条件になる場合もあります。
OpenGL Java binding については現在 OpenGL の標準化団体 ARB によって
策定の最中です。
非公式の OpenGL Java binding としては主に以下のものがあります。
Magician http://www.arcana.co.uk/products/magician
GL4Java http://www.jausoft.com/gl4java.html
JSparrow http://www.will.or.jp/~jsparrow/
一覧は以下の URL にあります
http://www.opengl.org/Documentation/Implementations/Languages.html
また Java3D と同じく シーングラフベースで、各種カリング機能を持った
OpenGL Optimizer の Java binding もあります。
Sorceress
http://www.arcana.co.uk/products/sorceress/
-------------------------------------------------------------------------------
[Q] Java 3D と OpenGL の関係は?
Java 3D は下位層の Graphics API として OpenGL と Direct3D(Windows) を
Native で使い実装されています。
OpenGL はハードウェアに密着した低レベル API であり
Java3D はシーングラフベースの高レベル API です。お互いに競合するものでは
ありません。
-------------------------------------------------------------------------------
[Q] VRML のノード対、Java3D ノードとの対応は?
VRML のノードと Java3Dのノードは
1対1 に対応しているわけではありませんが、機能的には良く似通っています。
VRML Loader や VRML Saver を調べることによって
VRML のどのノードが Java3D のどのノードに対応するのか調べることが
できるでしょう。
CyberVRML97 が参考になります
http://www.cyber.koganei.tokyo.jp/vrml/cv97/cv97java/index.html
-------------------------------------------------------------------------------
[Q] Java 3D は、例えば、どのようなことに使えるのでしょうか?
[Q] Java 3D の用途の例は?
各企業がどのように Java3D を利用しているかといった例が
以下の URL で紹介されています。
http://www.sun.com/desktop/java3d/in_action/index.html
また各種 Java3D のデモをご覧になることによって
Java 3D の用途がイメージできることでしょう。
http://www.sun.com/desktop/java3d/demos/index.html
-------------------------------------------------------------------------------
[Q] ドライバのリクルートはするのか?
プロモーションはするのか?
サンがどこか特定の企業の VR 入力デバイスや、出力デバイスをサポートするという
予定はありません。必用な仕様は公開されているので、
各社が Java3D に対応したものをリリースするのは自由です。
-------------------------------------------------------------------------------
[Q] View と Device との関係は?
??? 意味不明
-------------------------------------------------------------------------------
[Q] リフレッシュレートとの対応をとるには?
イミディエイトモードを使いプログラマが描画のタイミングを取り、
バックバッファをスワップさせて対応を取ってください。
ただ Java3D は SGI の IRIS Performer のようなフレームレートを
厳密にコントーロールできるよう設計されたものではありません。
Java の場合 GC が走るタイミングによって、描画のタイミングも
厳密にコントロールできない場合があります。
秒60フレームの描画が求めるような場合は IRIS Performer 等の
リアルタイムレンダリングを目的とした Graphics API を
使うのが良いでしょう。
-------------------------------------------------------------------------------
[Q] マウスの動き -> View の動きとの対応を簡単に取るには?
[Java3Djp:00211] http://www.trilogy.co.jp/~tomoyuki/java3djp_ml/archive/0226.html
[Java3Djp:00216] http://www.trilogy.co.jp/~tomoyuki/java3djp_ml/archive/0231.html
[Java3Djp:00222] http://www.trilogy.co.jp/~tomoyuki/java3djp_ml/archive/0237.html
[Java3Djp:00227] http://www.trilogy.co.jp/~tomoyuki/java3djp_ml/archive/0242.html
-------------------------------------------------------------------------------
[Q] 三次元グラフィックスで Java を使うのは遅くはないのですか?
Java3D は 全部が Java で描かれているわけではなく、描画部分は
OpenGL や Direct3D を Native でコールしています。
描画部分に関しては Java とは関係なく、ハードウェアの性能を生かした描画を
行います。
Java3D は高レベル API ですので OpenGL で直接描かれたプログラムよりは
遅いことは否めませんが、比較的現実的な速度で動作します。
また Alpha Version, Beta Version から比べて正式版の Java3D 1.1 は、
だいぶ速い印象を受けます。
-------------------------------------------------------------------------------
[Q] シーン・グラフとはなんですか?
三次元空間内のオブジェクトの形状データやそれらの属性、振る舞いなどを
メモリ上に展開したデータベースのことをシーングラフといいます。
このデータベースは三次元画像を描画するための構成要素を
ツリー構造で表現したものです。
三次元画像を描くとなると、画面に球を描いて、立方体を描いて.... と
順次描画していくことを思い浮かべるかもしれません。
しかしシーングラフベースの Graphic API の場合、シーングラフ内のデータを
更新することによって、画面に描かれている画像が自動的に更新されます。
Java3D ではシーングラフのデータをチューニングして保持する
「コンパイル済みリテインモード」と、通常の「リテインモード」
でシーングラフをハンドリングしています。
-------------------------------------------------------------------------------
[Q] 書籍『Java 3D API 仕様』の最初の方に書いてある
UniverseBiulder というクラスが見つかりません。
この本の通り入力してコンパイルするとコンパイルエラーになります。
なぜでしょうか?
スペルが間違ってます :-)
UniverseBuilder は Alpha01 以前の ユーティリティパッケージに含まれていた
らしいのですが、Alpha02 で廃止になりました。
UniverseBuilderは 新たに追加されたSimpleUniverseへ移行することになりました。
第1章の後半に UniverseBuilderを簡略化もののソースが書かれています。
また、以下の URL に Object から extend された
UniverseBuilder のソースがあります
http://www.sun.com/desktop/java3d/collateral/j3d_api/j3d_api_5.html
-------------------------------------------------------------------------------
[Q] Java3D 1.1 には com.sun.j3d パッケージの
ソースコードが添付されているようですが、
どこにあるのでしょうか?
Java3D をデフォルトでインストールすると以下の場所にインストールされます
C:\jdk1.2\java3d-utils-src.jar
-------------------------------------------------------------------------------
[Q] Java 3D もオープンソースになるのですか?
現在はオープンソースではありません。
いまのところサン独自のライセンス形態にものづいて
Java 2 はソースコードが公開されています。
http://www.sun.com/software/communitysource/java2/
しかし Java3D はその中には含まれません。
Java3D が core API ではなく extention であることが理由です。
将来的には Java3D もオープンソースとする考えはあることが
Java3D 開発メンバーから知らされています。
-------------------------------------------------------------------------------
[Q] Java3D 関連書籍
英語版
■The Java 3D API Specification
著 Kevin Rushforth, Michael Deering, Henry A. Sowizral
出版社 Addison-Wesley Pub Co,
$39.95
ISBN 020-1325764
http://java.sun.com/docs/books/java3d/
■Graphics programming for Java
???
日本語版
■The Java 3D API 仕様 (日本語版)
著 Kevin Rushforth, Michael Deering, Henry A. Sowizral
翻訳 竹内里佳
監修 安藤幸央
出版社: 株式会社アスキー
価格: 6400 円(税抜)
ISBN 4-7561-3017-8
http://www.ascii.co.jp/books/detail/4-7561/4-7561-3017-8.html
-------------------------------------------------------------------------------
[Q] どのプラットホームが Java 3D をサポートしますか?
IRIX, Linux, Solaris と Windows 環境でサポートします。
現時点 (1999年10月現在) では、
Solaris (SPARC)、
Win32 (Windows 95/98, Intel CPU の NT 4.0)
Linux(i386)
IRIX 6.X
です。
http://java.sun.com/products/java-media/3D/
http://www.sgi.com/developers/devtools/languages/java3d111.html
http://nitric.com/pub/java-linux/java3d/1.1.1/i386/
SIGGRAPH'99 では HP-UX 版も展示されていました。
非公式なものとして JFree-D があります。
http://www.linuxstart.com/~jfreed/
-------------------------------------------------------------------------------
[Q] Java 3D を JDK1.1.X ベースで動かす方法はありますか?
ありません。
Java 3D 1.1 正式版からは Java 2 (JDK 1.2) で動作します。
JDK 1.1 ベースで 3DCG プログラミングをする手段としては、
OpenGL-Java binding があります。
また、シーン・グラフベースのものとしては、
OpenGL Optimizer Java binding、OpenInventor-Java があります。
JFreeD は JDK1.1 ベースで動作します。
http://spia.freenix.fr/jfd/
-------------------------------------------------------------------------------
[Q] VRMLローダーの入手方法は?
下記の URL から VRML Loader/Player をダウンロード出来ます。
ソースコードも公開されています。
http://www.vrml.org/WorkingGroups/vrml-java3d/
これは以前 Sun が開発していたものを、Sun が VRML Consortium に
加盟したことを受けて、vrml-java3d working group が引き継いだ正式なものです。
-------------------------------------------------------------------------------
[Q] HelloUniverseの立方体を別のプリミティブに代えるには?
objTrans.addChild(new ColorCube(0.4));
この new ColorCube(0.4) を、別のプリミティブに変更してください。
(例えば new com.sun.j3d.utils.geometry.Sphare() など)
-------------------------------------------------------------------------------
[Q] 光源を設定したのに照明されないのですが?
物体に法線ベクトルが設定してあっても、
光源に照明の作用範囲が指定されていないと照明されません。
作用範囲オブジェクトである javax.media.j3d.Bounds
(実際にはそのサブクラス)を生成し、
javax.media.j3d.Light#setInfluencingBouns() メソッドで
作用範囲を指定してください。
-------------------------------------------------------------------------------
[Q] マウス処理のBehaviorをBranchGraphにaddChild()したのに
マウス操作ができません。なぜでしょう?
javax.j3d.Behavior (及びそのサブクラス) は作用範囲の設定が無いと動作しません。
作用範囲オブジェクト javax.media.j3d.Bounds (実際にはそのサブクラス)
を生成し、setSchedulingBounds() メソッドで作用範囲を指定してください。
-------------------------------------------------------------------------------
[Q] シーングラフに動的にNodeを付け加えると
javax.media.j3d.RestrictedAccessExceptionが発生します。どうしてでしょう?
BranchGroup ではなく、TransformGroup に動的に Node を addChild() する場合、
いったん Node を removeChild() してから addChild() してください。
また、compiled モードの場合は動的に追加/削除できないので、
retained モードで行ってください。
-------------------------------------------------------------------------------
[Q] addMouseListener()してもマウスイベントが通知されません。
どうすれば解決するでしょうか?
java.applet.Applet を extend している場合、
コンテナである Applet のサブクラスに addMouseListener() しても
マウスイベントは通知されません。
Canvas3D に addMouseListener() してください。
KeyEvent も同様です。
- Behaviorを使う
- 従来のJavaのイベント処理を使う(Delegetion-Listenerイベントモデルなど)
最初のサンプルはJava 3Dのデモ・ソースに含まれています。
(\jdk1.2.1\demo\java3d\SpinAnim, \jdk1.2.1\demo\java3d\Text2D など)
-------------------------------------------------------------------------------
[Q] スケーリングとはどのようなことをするのですか?
「スケール」= 「縮尺(縮小率・拡大率)」と考えれば解りやすいでしょう。
1.0 の時は実物大。0.5 の時は半分の大きさ、2.0 の時は倍の大きさです。
スケーリングは TransformGroup に対して適用しますが、
回転や移動を適用したい TransformGroup とは別にした方が良いでしょう。
(T) 回転や移動を適用したい TransformGroup
|
(T) スケーリングを適用したい TransformGroup
|
(S) Shape3D など
-------------------------------------------------------------------------------
[Q] Canvas3Dのpaint()メソッドのオーバーライド方法は?
(Canvas3D のバックバッファの取得方法がわからないので保留...)
[Java3Djp:00215]
[Java3Djp:00221]
-------------------------------------------------------------------------------
[Q] TransformGroupから任意のNodeを remove したいのですが?
Groupから継承するクラスなどの中で、
以下のようなメソッドを定義して利用してみてください。
public boolean remove(Node node) {
for (int n=0; n < numChildren(); n++) {
if (getChild(n) == node) {
removeChild(n);
return true;
}
}
return false;
}
-------------------------------------------------------------------------------
[Q] Behaviorを継承したクラスを書いたがイベントが1回しか通知されません。
どうしたら正常にイベントが発生するでしょうか?
proccessStimulus() の最後で wakeupOn() を呼んでください。
-------------------------------------------------------------------------------
[Q] Quat4fをset後値が変なのですが?
これはバグのようです。
回避方法は以下を参照
[Java3Djp:00212]
[Java3Djp:00213]
[Java3Djp:00220]
-------------------------------------------------------------------------------
[Q] 法線を計算したいのですが
com.sun.j3d.utils.geometry.NormalGenerator というクラスがあります。
まず com.sun.j3d.utils.geometry.GeometryInfo に
頂点座標の Point3d などの配列、頂点インデックスの int 配列をセットしておき、
NormalGenerator の public void generateNormals(GeometryInfo geom) で
法線を計算できます。
例:
GeometryInfo ginfo =
new GeometryInfo(GeometryInfo.TRIANGLE_ARRAY);
ginfo.setCoordinates(verts); // verts は Point3d の配列(頂点データ)
ginfo.setCoordinateIndices(indices); // indices は int の配列 (頂点index)
NormalGenerator ngen = new NormalGenerator();
ngen.generateNormals(ginfo);
Shape3D shape =
new Shape3D(ginfo.getIndexedGeometryArray());
-------------------------------------------------------------------------------
[Q] SimpleUniverseで表示できる範囲は?
原点 (x=0.0、y=0.0、z=0.0) を中心とした ±1.0 の範囲のようです。
また、ニアークリップ面 (視点にもっとも近いクリップ面) は 0.1、
ファークリップ面 (視点からもっとも遠いクリップ面) は 10.0 です。
これより近くても遠くても、物体は描画されません。
-------------------------------------------------------------------------------
[Q] pickingをするには?
com.sun.j3d.behaviors.picking.PickObject クラスを使用します。
詳しくは下記を参考にしてください。
[Java3Djp:00139]
[Java3Djp:00147]
[Java3Djp:00155]
[Java3Djp:00211]
[Java3Djp:00218]
pick されたオブジェクトを特定するには、
javax.media.j3d.SceneGraphObject#setUserData()/getUserData() メソッドで
独自のデータを付加/取得すると良いでしょう。
-------------------------------------------------------------------------------
[Q] com.sun.j3d.utils.behavior.mouse パッケージと
com.sun.j3d.utils.behavior.pickingパッケージはどう違うのでしょうか?
com.sun.j3d.utils.behavior.mouse パッケージの Behavior は、
適用対象の TransformGroup をはじめに設定しておきますが、
com.sun.j3d.utils.behavior.pickingパッケージの Behavior は
マウスプレス時のマウス座標にいちばん近い TransformGroup を pick し、
-------------------------------------------------------------------------------
[Q] Java3D のシーングラフを VRML ファイルに書き出すクラスはありますか?
CyberVRML97 があります。ソースコードも公開されています。
http://www.cyber.koganei.tokyo.jp/vrml/cv97/cv97java/index.html
-------------------------------------------------------------------------------
[Q] Java3Dでマウスを使って線を引く方法は?
[Java3Djp:00152]
-------------------------------------------------------------------------------
[Q] SwingでJava3Dは使えますか?
Java3D の Canvas3D は Light-weight コンポーネントではないため、
描画がおかしくなる場合があります。
現時点では AWT を使うのが無難です。
Sun (JavaSoft) は Java3D と Swing をうまく共存させるよう努力中のようです。
考えられる方法としては、
(1) Java3D の改良。オフスクリーン・レンダリングなどを使い、
Light-weight コンポーネントの中でも Java3D が描画出来るようにする。
(2) Swing の改良。Swing の中で Java3D のような Heavy-weight コンポーネントを
うまく描画出来るようにする。
の2通りの方法を考えているようです。(1)は描画のパフォーマンスが悪いかも知れません。
-------------------------------------------------------------------------------
[Q] Java3Dを使って、CADのデータ(DXF)を表示することは可能でしょうか?
可能です。
Java3D 用の DXF file loader が利用できます。
Portfolio
http://havefun.ncsa.uiuc.edu/Java3D/portfolio/
RightSpace
http://www.geocities.com/SiliconValley/Horizon/6481/RightSpace.html
又、Java3D でなくても 幾つか Java ベースの DXF viewer 等があります。
http://do.ymn.or.jp/yasu/java/DxfView/
http://pweb.cc.sophia.ac.jp/~s-okabe/java/Java5.htm
http://do.ymn.or.jp/ex/Niigata/index.html
-------------------------------------------------------------------------------
[Q] Java3D のチュートリアルはありますか?
http://www.sun.com/desktop/java3d/collateral/j3d_tutorial.pdf
http://www.sun.com/desktop/java3d/collateral/j3d_tutorial_examples.jar
-------------------------------------------------------------------------------
[Q] 凸型
多角形は基本的に凸型 (すべての頂点の成す角度が180度より小)
-------------------------------------------------------------------------------
[Q]
Java 3D APIにはどのような機能がありますか?
また、レンダリングエンジンはSunから提供されないのでしょうか?
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
Sun、Sun Microsystems、Java、HotJava は、米国またはその他の国における 米国Sun Microsystems, Inc. の商標または登録商標です。サンのロゴマーク、 Solaris は、米国Sun Microsystems, Inc. の登録商標です。