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

[Java3Djp:00426] Re: [Q] dynamic node operation 2



┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃                ソフトウェア業界専門求人・求職情報                ┃
┃                    http://www.aun-soft.co.jp/                    ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

とりあえずexceptionは出なくなりましたが、
物体が何も見えないです。(*_*)

import java.applet.Applet;
import java.awt.BorderLayout;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import java.awt.*;
import java.awt.event.*;
import com.sun.j3d.utils.geometry.*;

public class WorldViewer002 extends Applet implements KeyListener{

    SimpleUniverse u = null;//1999.3.1 y.e キーイベントで使うのでここに定義
    BranchGroup scene = new BranchGroup();

  // 追加するノード
  public TransformGroup maru(){
       TransformGroup tg  = new TransformGroup();
       //tg.setCapability(TransformGroup.ALLOW_TRANSFORM_READ 
       //               | TransformGroup.ALLOW_TRANSFORM_WRITE
       //               | Group.ALLOW_CHILDREN_EXTEND
       //               | Group.ALLOW_CHILDREN_READ
       //               | Group.ALLOW_CHILDREN_WRITE);
       tg.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
       tg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
       tg.setCapability(Group.ALLOW_CHILDREN_EXTEND);
       tg.setCapability(Group.ALLOW_CHILDREN_READ);
       tg.setCapability(Group.ALLOW_CHILDREN_WRITE);

       Primitive primitive=new Sphere(0.5f);             
       tg.addChild(primitive);
                  
       return tg;
  }

   //追加されるノード
   public BranchGroup createSceneGraph() {
	// Create the root of the branch graph
       BranchGroup objRoot = new BranchGroup();

       //objRoot.setCapability(Group.ALLOW_CHILDREN_EXTEND 
       //                   | Group.ALLOW_CHILDREN_READ 
       //                   | Group.ALLOW_CHILDREN_WRITE
       //                   | BranchGroup.ALLOW_DETACH);
       objRoot.setCapability(Group.ALLOW_CHILDREN_EXTEND);
       objRoot.setCapability(Group.ALLOW_CHILDREN_READ);
       objRoot.setCapability(Group.ALLOW_CHILDREN_WRITE);
       objRoot.setCapability(BranchGroup.ALLOW_DETACH);
        //objRoot.compile();//1999.3.1 y.e コンパイルしない
        return objRoot;
    }


   public void keyPressed(KeyEvent evt){}
   public void keyReleased(KeyEvent evt){}

   //ノードの追加操作  
   public void keyTyped(KeyEvent evt){

      char keyChar = evt.getKeyChar();

      if(keyChar == 'b'){
        System.out.println("keyChar=" + keyChar);//DEBUG 1999.3.1 y.e
        TransformGroup tmp = maru();
        u.getLocale().removeBranchGraph(scene);//1999.3.1 y.e Localeから外す
        scene.addChild(tmp);       
        u.addBranchGraph(scene);//1999.3.1 y.e また Loceleに接続(live状態になる)
      }
   }

    //コンストラクタ
    public WorldViewer002() {

	setLayout(new BorderLayout());
        Canvas3D c = new Canvas3D(null);
        c.addKeyListener(this);
	add("Center", c);

        scene = createSceneGraph();
        //SimpleUniverse u = new SimpleUniverse(c);
        u = new SimpleUniverse(c);//1999.3.1 y.e

        u.getViewingPlatform().setNominalViewingTransform();

	u.addBranchGraph(scene);
    }

    //メインルーチン
    public static void main(String[] args) {
	new MainFrame(new WorldViewer002(), 500, 500);
    }

}
------------------------------------------------------------------
遠藤靖之 (えんどう やすゆき) <yasuyuki@xxxxxxxxxx>
http://www.javaopen.org/jfriends/ (Java互助会ホームページ)
株式会社タイムインターメディア 情報通信サービス部 TEL 03-5362-9009
〒162-0065 新宿区住吉町3-11    新宿スパイアビル   FAX 03-5362-9008