Ourmessage的个人空间

BlogJava 首页 新随笔 联系 聚合 管理
  13 Posts :: 0 Stories :: 16 Comments :: 0 Trackbacks
package com.wizard.J3D.HelloJava3D;

import java.applet.Applet;
import java.awt.Frame;
import java.awt.GraphicsConfiguration;
import java.awt.BorderLayout;

import javax.media.j3d.Canvas3D;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;

import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.universe.SimpleUniverse;

public class HelloJava3Db extends Applet{
    //这是sun《Java指南》的例子
    public HelloJava3Db() {
        // TODO Auto-generated constructor stub
        this.setLayout(new BorderLayout());
        GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
        Canvas3D canvas3D = new Canvas3D(config);
        
        this.add("Center", canvas3D);
        SimpleUniverse simpleU = new SimpleUniverse(canvas3D);
        BranchGroup scene = this.createSceneGraph();
        simpleU.getViewingPlatform().setNominalViewingTransform();
        
        simpleU.addBranchGraph(scene);
    }// end for HelloJava3Db (constructor)

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Frame frame = new MainFrame(new HelloJava3Db(),256,256);
    }
    public BranchGroup createSceneGraph(){
        // Create the root of the branch graph
        BranchGroup objRoot = new BranchGroup();
        objRoot.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        TransformGroup objRotate = new TransformGroup();    
        //objRotate.addChild(rotate);
        objRotate.addChild(new ColorCube(0.4));
        
        objRoot.addChild(objRotate);
        
        // rotate object has composited transformation matrix
        Transform3D rotate = new Transform3D();
        Transform3D tempRotate = new Transform3D();
        //////////////////////////////////////////////////
        // 在这里可以改变魔方的位置
        // 如果需要改变为以Z轴为中心旋转,那就用rotZ(double arg0)这个方法
        // 当我们想平移的话可以这样,使用rotate.setTranslation(arg0)
        // arg0 是一个位移的矩阵
        //
            rotate.rotX(Math.PI/4.0d);
        tempRotate.rotY(Math.PI/5.0d);
            rotate.mul(tempRotate);// 使用这个方法,我们可以把旋转组合起来
         ////////////////////////////////////////////////
         //
         //   要记得把叶加入节点中
         //
            objRotate.setTransform(rotate);
            objRoot.compile();
      
        
        return objRoot;
    }// end for CreateSceneGraph methord of HelloJava3D
}

posted on 2007-03-03 18:05 夜一 阅读(263) 评论(0)  编辑  收藏 所属分类: Java3D

只有注册用户登录后才能发表评论。


网站导航: