文档章节

java3D安装

itwriter
 itwriter
发布于 2016/06/01 23:27
字数 624
阅读 398
收藏 2

开发环境:

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下,然后,

好了,环境部署到此结束。接下来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,居然还要本地库的支持??

啧啧,吃枣药丸啊——

© 著作权归作者所有

itwriter

itwriter

粉丝 12
博文 117
码字总数 23872
作品 0
海淀
程序员
私信 提问
加载中

评论(2)

itwriter
itwriter 博主

引用来自“小木学堂”的评论

用lwjgl把
多谢指点。
山东-小木
山东-小木
用lwjgl把
高性能的 Java 3D 引擎 —— Xith3D

Xith3D是高性能的Java 3D引擎,主要面向3D游戏,数据可视化,三维场景原型等。 最突出的特点是基于scenegraph,这是和 JME,Ardor3D 等引擎的最大区别,假如你喜欢换Java3D,或是了解Java3D,...

红薯
2010/09/22
101
0
java3d导入模型动画问题

谁能给一个用java3d导入vrml格式的模型动画的例子啊?源码!我都找好几天了,帮帮忙吧

whipfeng
2011/08/11
431
1
请教一个关于动画的问题

制作一团火,能长大,并形状改变的动画。用java3D能做吗,有没有相关教程?

东子来了
2010/06/13
238
3
java3d的重绘问题

java3d里怎么实现画布的重绘啊,我想实现点击“按钮一”画出一个点,点击“按钮二”画出另一个点

海zuohen真美
2014/04/22
627
0
有熟悉java3D的专业人士吗?

我最近要做个java3d的 程序. 利用 分形理论来做!!@~~ 苦于网上资料太少... 大家帮个忙!!

KYNG
2011/05/10
217
0

没有更多内容

加载失败,请刷新页面

加载更多

golang-字符串-地址分析

demo package mainimport "fmt"func main() {str := "map.baidu.com"fmt.Println(&str, str)str = str[0:5]fmt.Println(&str, str)str = "abc"fmt.Println(&s......

李琼涛
57分钟前
4
0
Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
今天
6
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
今天
4
0
Java反射

Java 反射 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的 Class,Class 类 用于表示.class 文件(字节码)) 一、反射的概述 定义:JAVA 反射机制是在运行状态中,对于任...

zzz1122334
今天
5
0
聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部