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

[Java3Djp:00207] Java3D Behavior (Re: Java3Dインストール日記(WindowsNT))



===================================================================
■■■■■■■■■■■■■■■■■■■■■
■   フルカラー名刺屋さん・カードクラフト    Webから簡単に注文!
■            80枚¥1500円  送料無料         カラーデザインが豊富!
■   http://www5.tokyoweb.or.jp/netcraft/  ご注文から直ぐにお届け!
■■■■■■■■■■■■■■■■■■■■■
====================================================================

>com.sun.j3d.utils.behavior.*の解析ご苦労様です。参考になります (^ ^)

今野さんにこのように言っていただけるほどのものではないです。^^;

>なんか慌てているなぁ ..... と思っていたのですが (^ ^;)、早速Java3Dを
>仕事に活用されていたのですね。羨ましい話です。 

今回の仕事で痛感したのですが、やはり趣味を仕事にしてはいけないと思いました。^^;
今度 3D の仕事が来たら全速で逃げようと思います。

私は実は月曜から金曜までは、某社でネットワーク管理の仕事をしています。
従って作業は土日や年末年始のみとなりました。
今回の作業を振り返ったものを作りましたのでご覧ください。

                           1998                    1999
                           12                      01                               02
                           13 19 20 27 28 29 30 31 02 03 04 10 15 16 17 24 28 30 31 01
                           日 土 日 日 月 火 水 木 土 日 月 日 金 土 日 日 水 土 日 月
既存C++ルーチンテスト      **
開発環境インストール          ** *
JNIラッパー(既存C++部分)          * ** ** ** **
ポリゴン頂点index計算                           ** ** **
地層Java3D描画処理                                       ** **

【祝】Java3Djp ML 開設!                                   ◆

ボーリングデータ読込(JDBC)                                     ** ** **
ピッキング(ボーリング柱状図)                                            ** ** **
マウス処理(マウスプレス中にズームし続ける)                                       ** *
回転軸(x,y,z)描画                                                                    *

我ながらよくできたと思います。Java3D を使わなかったらできなかったでしょう。

>ちなみにどのようなアプリケーションにJava3Dを活用されたのでしょうか? 
>差し支えなかったら教えて頂けると、参考になるのですが (^ ^)

話せば長くなりますが、
もともと別の下請けソフトハウスが受注した Win32 MFC での OpenGL の仕事でした。

これは、ある自治体の地層表示プログラムの3次元表示部分です。
ボーリングデータを元にした地層深度データがあり、これを読む C++ のクラスが提供されました。
これを OpenGL で視覚化するのですが、最初に請けたソフトハウスは OpenGL が初めてで、
途中で力尽きて私の勤務先に話しが来ました。

最初納期は1998年の年内ということでした。
VC++ & MFC で OpenGL プログラミングなんかをやっていたら絶対間に合わないだろうと思って
Open Inventor for Win32 を使うことを提案したのですが、
このプログラムは大学などに配布することも考えているようで、
ライセンス形態が実状に合わなくでダメでした。

そこで検討したのが、
シーン・グラフベースの 3D API である OpenGL Optimizer とJava 3D でした。

まず OpenGL Optimizer ですが、VC++ 6.0 日本語版で使えるのかどうか良く分からず、
情報もあまり入手できなかったのでちょっと不安でした。
VC++ での環境構築もてこずりそうだったので、こちらの調査は後回しにすることにしました。
(SGI の寺田さんのサイトはとても参考になりました)

Java3D ですが、試しにダウンロードしてみた Java3D 1.1 は、何のコンパイルエラーもなく
サンプルソースがサクサク動くし、何よりあの MFC のダサダサなイベントモデルと格闘する
必要もないので私の心はすでに Java3D に傾いていました。

Open Inventor の ExaminerViewer やトラッカーのような高度なツールは無いものの、
法線を計算してくれる便利なクラスはあるし、ピッキングやSwitchノードや衝突判定もあるし、
(衝突判定は今回使ってません) 使えば使うほど面白くなりました。

仕事でなければもっと楽しめたのに残念です。

>それにしても、Behaviorクラスは、Java3Dクラスでも色々と利用されている
>訳ですが、アプリケーションレベルで考えると、使い勝手としてはどうなの
>でしょうか?

イベントモデルとしてはけっこうダサダサかも知れません。
でも、マウスやキーボードだけでなく、VRで使われる多種多彩な入力ディバイスから
統一して操作できる API を作るとなると、Behavior のような枠組みになるのかも
知れません。

>機能的にはVRML97のScriptノードを意識して拡張された感じのクラスで

VRML97 はよく知りませんが、なんだかそんな印象は受けました。

>起動条件が細かく設定できるのですが、マウスやキーボードなどのAWT
>イベントまでBehaviorクラスに任せたり、Behavior間でイベントを通知し会う
>のは、ちょっと大袈裟かなぁ ..... とゆう気がします。

ピッキング以外のマウスイベントは、通常の MouseListener を使う方が良いかもしれません。

今回築山さんに教わって、Canvas3D に addMouseListener() すればマウスイベントが
通知されることがわかってものすごく助かりました。

>#もうちょっとBehaviorで設定できるイベントが増えれば、色々と活用できる
>#とは思うのですが、現状で利用できるのは接触判定ぐらいかなぁとゆうの
>#が私の印象です。

衝突判定を使う、面白いサンプルコードがありましたらぜひご紹介ください。

# 私もピッキングのサンプル書かなきゃ...
------------------------------------------------------------------
遠藤靖之 (えんどう やすゆき) <yasuyuki@xxxxxxxxxx>
http://www.freepage.total.co.jp/jfriends/ (Java互助会ホームページ)
株式会社タイムインターメディア 情報通信サービス部 TEL 03-5362-9009
〒162-0065 新宿区住吉町3-11 新宿スパイアビル      FAX 03-5362-9008