java3D安装

开发环境:

win8 64 +jdk8

教程地址:http://www.java3d.org/tutorial.html

步骤:

1. jdk安装部署——略

2. 安装java3D

https://java3d.java.net/binary-builds.html

笔记本是64位,所以下载j3d-1_5_2-windows-amd64。注意,j3d-1_5_2-windows-i586.zip和j3d-1_5_2-windows-amd64不是指对应的cpu,有效的是最后2位数字。被这个坑了一阵子……

解压后发现两个文件夹,bin和lib

老规矩,lib包里的jar导入到项目classpath

bin的处理新鲜一点,我把它copy到src下,然后,

002543_O9IX_1379006.png

好了,环境部署到此结束。接下来run你自己的代码就好。比方说:

import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.geometry.ColorCube;
import javax.media.j3d.*;
import javax.vecmath.*;
import java.awt.GraphicsConfiguration;

/**
 * Simple Java 3D example program to display a spinning cube.
 */
public class HelloUniverse extends javax.swing.JFrame {

    private SimpleUniverse univ = null;
    private BranchGroup scene = null;

    public BranchGroup createSceneGraph() {
 // Create the root of the branch graph
 BranchGroup objRoot = new BranchGroup();

 // Create the TransformGroup node and initialize it to the
 // identity. Enable the TRANSFORM_WRITE capability so that
 // our behavior code can modify it at run time. Add it to
 // the root of the subgraph.
 TransformGroup objTrans = new TransformGroup();
 objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
 objRoot.addChild(objTrans);

 // Create a simple Shape3D node; add it to the scene graph.
 objTrans.addChild(new ColorCube(0.4));

 // Create a new Behavior object that will perform the
 // desired operation on the specified transform and add
 // it into the scene graph.
 Transform3D yAxis = new Transform3D();
 Alpha rotationAlpha = new Alpha(-1, 4000);

 RotationInterpolator rotator =
     new RotationInterpolator(rotationAlpha, objTrans, yAxis,
         0.0f, (float) Math.PI*2.0f);
 BoundingSphere bounds =
     new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);
 rotator.setSchedulingBounds(bounds);
 objRoot.addChild(rotator);

        // Have Java 3D perform optimizations on this scene graph.
        objRoot.compile();

 return objRoot;
    }

    private Canvas3D createUniverse() {
 // Get the preferred graphics configuration for the default screen
 GraphicsConfiguration config =
     SimpleUniverse.getPreferredConfiguration();

 // Create a Canvas3D using the preferred configuration
 Canvas3D c = new Canvas3D(config);

 // Create simple universe with view branch
 univ = new SimpleUniverse(c);

 // This will move the ViewPlatform back a bit so the
 // objects in the scene can be viewed.
 univ.getViewingPlatform().setNominalViewingTransform();

 // Ensure at least 5 msec per frame (i.e., < 200Hz)
 univ.getViewer().getView().setMinimumFrameCycleTime(5);

 return c;
    }

    /**
     * Creates new form HelloUniverse
     */
    public HelloUniverse() {
 // Initialize the GUI components
 initComponents();

 // Create Canvas3D and SimpleUniverse; add canvas to drawing panel
 Canvas3D c = createUniverse();
 drawingPanel.add(c, java.awt.BorderLayout.CENTER);

 // Create the content branch and add it to the universe
 scene = createSceneGraph();
 univ.addBranchGraph(scene);
    }

    // ----------------------------------------------------------------
    
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
    private void initComponents() {
        drawingPanel = new javax.swing.JPanel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("HelloUniverse");
        drawingPanel.setLayout(new java.awt.BorderLayout());

        drawingPanel.setPreferredSize(new java.awt.Dimension(250, 250));
        getContentPane().add(drawingPanel, java.awt.BorderLayout.CENTER);

        pack();
    }// </editor-fold>//GEN-END:initComponents
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new HelloUniverse().setVisible(true);
            }
        });
    }
    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JPanel drawingPanel;
    // End of variables declaration//GEN-END:variables
    
}

java3d的下载命名和本地库的设置着实坑了我一阵。

还有两个问题,一是不开放源码,看代码注释很不方便;二是java3d已经暂停维护了?!真的太糟糕了。

而且,堂堂java程序,除了JVM,居然还要本地库的支持??

啧啧,吃枣药丸啊——

转载于:https://my.oschina.net/u/1379006/blog/685718

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JAVA 3D开发工具包(3个版本),java3d-1_3、java3d-1_4、java3d-1_5,加一个例子。例子代码如下: import java.awt.GraphicsConfiguration; import javax.media.j3d.Alpha; import javax.media.j3d.BoundingSphere; import javax.media.j3d.BranchGroup; import javax.media.j3d.Canvas3D; import javax.media.j3d.RotationInterpolator; import javax.media.j3d.Transform3D; import javax.media.j3d.TransformGroup; import javax.swing.JApplet; import javax.vecmath.Point3d; import com.sun.j3d.utils.geometry.ColorCube; import com.sun.j3d.utils.universe.SimpleUniverse; import com.sun.j3d.utils.universe.ViewingPlatform; public class HelloUniverse extends JApplet { public BranchGroup createSceneGraph() { BranchGroup objRoot = new BranchGroup(); //新建一个变形组结点,初始化它 //变形组结点指定一个单一的空间变形,通过一个Transform3D对象, //能对它的子结点定位,定向,定尺寸 TransformGroup objTrans = new TransformGroup(); //指定结点可以写入它的对象的变形信息。这样我们的行为代码就能在运行进修改它。 objTrans.setCapability( TransformGroup.ALLOW_TRANSFORM_WRITE); //根节结中加入这个变形组结点 objRoot.addChild(objTrans); //新建一个例子Shape3D结点,并把它加入到场景图表中 objTrans.addChild(new ColorCube(0.4)); Transform3D yAxis = new Transform3D(); /* * 提供转换一个时间值到一个0到1之间的alpha值的方法 * 第一个参数loopCount:运行循环次数,-1表示无限循环 * 第二个参数increasingAlphaDuration:alpha值从0到1的时间周期 */ Alpha rotationAlpha = new Alpha(-1, 4000); //新建旋转者,它将执行变形操作 RotationInterpolator rotator = new RotationInterpolator( rotationAlpha, objTrans, yAxis, 0.0f, (float) Math.PI*2.0f); //用一个中心点和半径定义一个球状范围区域。 BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0); //设置旋转者的运行范围 rotator.setSchedulingBounds(bounds); //加它到根结点 objRoot.addChild(rotator); //执行优化 objRoot.compile(); return objRoot;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值