[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Java3Djp:00149] Re: Java3Dインストール日記(WindowsNT)
★「在宅でできるお仕事をサイドビジネスにして、ゆとりある生活を送りたい」★
インターネットに興味があり、やる気のある方ならどなたでも始められます。
(20歳以上/学生不可)
初心者でもスクール制度でホームページの作り方からビジネスのハウツーまで
楽しみながら学べます。詳細ご希望の方は「詳細希望」と書いてメールでお申
込み下さい。 mail-to: yayoi1@xxxxxxxxxx
===========================================================================
>>この mx、my ですが、例えば java.awt.event.MouseEvent で取得するマウスの x, y 座標という
>>理解でよろしいでしょうか。
>はい、OKです。Canvas3Dがくっついているフレームのマウス座標を渡してやって下さい。
ちょっと試してみたのですが、Java3D の 初期化処理(後述)をしてしまうと
マウスイベントが通知されないので悩んでいます。Behavior はまだ調べていないので
JDK 1.1 の Delegation-Listener モデルを使っているのですが、これが悪いのかも
知れません。
Java3D を使わないテスト
MouseEventTest.java
===========================
import java.awt.*;
import java.awt.event.*;
import com.sun.j3d.utils.applet.MainFrame;
public class MouseEventTest extends java.applet.Applet {
public void init(){
this.addMouseListener(new MouseEventAdapter());
}
public void paint( Graphics g ){
}
public void update( Graphics g ){
}
public void start(){
}
public void stop(){
}
public static void main(String[] args) {
MouseEventTest me = new MouseEventTest();
MainFrame frame = new MainFrame(me, 500, 500);
}
}
class MouseEventAdapter implements MouseListener {
public void mousePressed( MouseEvent e ){}
public void mouseReleased( MouseEvent e ){}
public void mouseEntered( MouseEvent e ){}
public void mouseExited( MouseEvent e ){}
public void mouseClicked( MouseEvent e ){
System.out.println("x=" + e.getX() + ", y=" + e.getY());
}
}
===========================
Java3D を使ったテスト
MouseEventTest3D.java
===========================
import java.awt.*;
import java.awt.event.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.universe.*;
public class MouseEventTest3D extends java.applet.Applet {
public void init(){
initialize3D();
this.addMouseListener(new MouseEventAdapter());
}
public void paint( Graphics g ){
}
public void update( Graphics g ){
}
public void start(){
}
public void stop(){
}
public BranchGroup createSceneGraph() {
BranchGroup objRoot = new BranchGroup();
TransformGroup objTrans = new TransformGroup();
Transform3D t3d = new Transform3D();
t3d.setScale(0.4);
objTrans.setTransform(t3d);
objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
objRoot.addChild(objTrans);
objTrans.addChild(new ColorCube(1.0));
return objRoot;
}
private void initialize3D() {
setLayout(new BorderLayout());
GraphicsConfiguration config =
SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas3d = new Canvas3D(config);
add("Center", canvas3d);
BranchGroup scene = createSceneGraph();
SimpleUniverse u = new SimpleUniverse(canvas3d);
u.getViewingPlatform().setNominalViewingTransform();
u.addBranchGraph(scene);
}
public MouseEventTest3D() {
//initialize3D();
}
public static void main(String[] args) {
MouseEventTest3D me = new MouseEventTest3D();
MainFrame frame = new MainFrame(me, 500, 500);
me.init();
me.start();
}
}
class MouseEventAdapter implements MouseListener {
public void mousePressed( MouseEvent e ){}
public void mouseReleased( MouseEvent e ){}
public void mouseEntered( MouseEvent e ){}
public void mouseExited( MouseEvent e ){}
public void mouseClicked( MouseEvent e ){
System.out.println("x=" + e.getX() + ", y=" + e.getY());
}
}
===========================
やはり SimpleUniverse は使わないで、自分で View 側のツリーを構築しないとだめでしょうか。
それと、Behavior を理解しないと...Java3D のピッキングはハードル高そうです。(_ _)
# Inventor が使えればもう仕事が終わっていたかも知れない...
------------------------------------------------------------------
遠藤靖之 (えんどう やすゆき) <yasuyuki@xxxxxxxxxx>
http://www.freepage.total.co.jp/jfriends/ (Java互助会ホームページ)
株式会社タイムインターメディア 情報通信サービス部 TEL 03-5362-9009
〒162-0065 新宿区住吉町3-11 新宿スパイアビル8F FAX 03-5362-9008