[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Java3Djp:00216] Re: 線の描画について



-------------------------------------------------------------------
○今年のバレンタインはアンナミラーズの焼きたてパイで○○○○○○○
  アンナミラーズインターネットショッピングでは、新発売のチョコレート
 チーズケーキパイを特別価格、4,000円(送料・消費税込み)でご提供中。
 ご注文は2月10日までです。 下記URLへ今すぐアクセス!
 =======> http://shopping.biglobe.ne.jp/kaze/AnnaMillers/ 
-------------------------------------------------------------------

>イメージのロードの管理みたいな感じでどうにかならないかと考えているのですが、
>Java3Dの描画が終了した、というような情報をとれる方法はあるのでしょうか?

私も詳しくないですが、このような情報を取得する方法は無いかもしれません。

Java3D では、いったんシーングラフが "ライブ" (BranchGraph にaddされている状態)
になると、プログラム側で描画のタイミングを制御する方法はありません。

>現在はCanvas3Dにリスナーを付けてマウスイベントを取っていますので、
>Windowの座標系と3Dの座標系が違ってきます(当たり前ですが。。。)。
>これらを対応づける方法というものはあるのでしょうか?

com.sun.j3d.utils.behavior.picking.PickObject#generatePickRay() で
それらしきことをやっているようですが私もまだ解読しきっていません。

javax.media.j3d.Canvas3D#getCenterEyeInImagePlate()
javax.media.j3d.Canvas3D#getPixelLocationInImagePlate()
javax.media.j3d.Canvas3D#getImagePlateToVworld()

このようなメソッドを使っているようです。

これで多分 x,y は変換できると思うのですが、
問題は z でしょう。
通常は z = 0.0 にしておくのではないかと思います。

これをどうにかしたければ、よくある3Dモデラーのように上面図、側面図、正面図を
別々のウインドウに描画して、それぞれを操作できるようにする必要があるかも知れません。
Java3D でこれを実現する方法は私は良く分かりません。

>また、この方法は間違いでBehaviorによって実現すべきなのでしょうか?

Behavior は十分解明していないので良く分かりませんが、
私は普通の MouseListener で良いのではないかと思っています。
------------------------------------------------------------------
遠藤靖之 (えんどう やすゆき) <yasuyuki@xxxxxxxxxx>
http://www.freepage.total.co.jp/jfriends/ (Java互助会ホームページ)
株式会社タイムインターメディア 情報通信サービス部 TEL 03-5362-9009
〒162-0065 新宿区住吉町3-11 新宿スパイアビル      FAX 03-5362-9008