[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Java3Djp:00153] Re: マウスの座標
木曾海老屋通販逸品カタログ ====================
『えっ!木のワインクーラー!おっ!うるし塗りのワイングラス??』
☆ 食を楽しくする器のお店です☆
ヒノキの箸 お椀 弁当箱 コーヒーカップ おひつ等逸品の数々!!
========== http://www.cnet-kiso.ne.jp/h/hajime/ippin.html
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>Canvas3Dクラスのcanvas3Dにリスナーを付けるとマウスイベントが取れると
>思うのですが、これではいけないのでしょうか?
あ、本当だ! ありがとうございます。m(_ _)m
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();
}
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);
//これでマウスイベントが通知される
canvas3d.addMouseListener(new MouseEventAdapter());
BranchGroup scene = createSceneGraph();
SimpleUniverse u = new SimpleUniverse(canvas3d);
u.getViewingPlatform().setNominalViewingTransform();
u.addBranchGraph(scene);
}
public MouseEventTest3D() {
}
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());
}
}
>それから、
>
>GraphicsConfiguration config =
> SimpleUniverse.getPreferredConfiguration();
>
>の処理はどのようなものなのでしょうか?
私もまだよく調べてません^^; お時間ください。
(って言っても API Specification を読むだけなんですが...)
>例えば"HelloUniverseのようなプログラムの画面で、マウスのドラッグと同時に
> 線を引いたりしたい"と考えています。
この線というのは3D空間上の直線ですか?
それとも、
普通の2Dグラフィックの鉛筆ツールみたいな線を描きたいと言うことなのですか?
(Visual C++ のscribbleチュートリアルみたいな)
>ImmediateModeなるものでプログラムしなけらばならないのかな、と考えていたのですが、
>上のものを使ってCanvas3Dクラスを生成するということは、このようなことに関連するのでしょうか?
Canvas3D ですべての描画を管理しているのですよね。
------------------------------------------------------------------
遠藤靖之 (えんどう やすゆき) <yasuyuki@xxxxxxxxxx>
http://www.freepage.total.co.jp/jfriends/ (Java互助会ホームページ)
株式会社タイムインターメディア 情報通信サービス部 TEL 03-5362-9009
〒162-0065 新宿区住吉町3-11 新宿スパイアビル8F FAX 03-5362-9008