java 3d 配置_java 中的 java3d 环境配置?

我下载并安装了个java3d包,并把安装目录下的jar文件,拷贝到了jdk安装目录下lib,jre目录,但做程序时可以通过编译,就是不能运行,程序是没问题,因为在别人的机上上都能运行,就是在我的机...

我下载并安装了个java3d包,

并把安装目录下的jar文件,

拷贝到了jdk安装目录下lib,jre目录,

但做程序时可以通过编译,

就是不能运行,

程序是没问题,

因为在别人的机上上都能运行,

就是在我的机子上不能运行,

是不是java3d 环境配置出了问题?

还是什么别的原因,

谢谢...

程序代码是:

import java.applet.Applet;//可以插入html

import java.awt.BorderLayout;//窗口采用BorderLayout方式布局

import com.sun.j3d.utils.applet.MainFrame;//application

import com.sun.j3d.utils.geometry.Sphere;//调用生成Box的Utility

import com.sun.j3d.utils.geometry.Primitive;

import com.sun.j3d.utils.universe.*;//观测位置的设置

import javax.media.j3d.*;//核心类

import javax.vecmath.*;//矢量计算

public class Hello extends Applet {

public BranchGroup createSceneGraph() {

// 创建一个用来包含对象的数据结构

BranchGroup objRoot = new BranchGroup();

// 创建一个球并把它加入到objRoot中

Sphere sphere = new Sphere(0.5f);

// 小球的半径为0.5米

objRoot.addChild(sphere);

// 创建一束红色光

Color3f light1Color = new Color3f(1.8f, 0.1f, 0.1f);

// 设置光线的颜色

BoundingSphere bounds =

new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);

// 设置光线的作用范围

Vector3f light1Direction = new Vector3f(4.0f, -7.0f, -12.0f);

// 设置光线的方向

DirectionalLight light1

= new DirectionalLight(light1Color, light1Direction);

// 指定颜色和方向,产生单向光源

light1.setInfluencingBounds(bounds);

// 把光线的作用范围加入光源中

objRoot.addChild(light1);

// 将光源加入objRoot组

return objRoot;

}

public Hello() {

setLayout(new BorderLayout());

// 设置一个BorderLayout

Canvas3D c=new Canvas3D(null);

// 构造一个图形环境

add("Center",c);

// 将图形环境放入BorderLayout的中心位置

BranchGroup scene=createSceneGraph();

// 生成一个场景图分支,在其中定义分支的形体、材质、灯光等信息

SimpleUniverse u=new SimpleUniverse(c);

// 生成虚拟空间

u.getViewingPlatform().setNominalViewingTransform();

// 设置观察者的位置为缺省位置

u.addBranchGraph(scene);

// 把场景放入虚拟空间中

}

public static void main(String[] args) {

new MainFrame(new Hello(),300,300);

// 生成一个MainFrame对象,MainFrame是Java 3D提供的一个实用工具

// 如此处理就使程序既可以按Application的方式在控制台上用“Java Hello”运行

// 也能作为Applet在被浏览的网页中运行

}

}

错误提示是:

Exception in thread "main" java.lang.NullPointerException: Canvas3D: null GraphicsConfiguration

at javax.media.j3d.Canvas3D.checkForValidGraphicsConfig(Canvas3D.java:954)

at javax.media.j3d.Canvas3D.(Canvas3D.java:997)

at Hello.(Hello.java:43)

at Hello.main(Hello.java:58)

Process completed.

我照足前面elietian所说的去做了,

还卸掉了java3d 1.5,

装了个java3d 1.4,

可还是不行,

运行窗口是出来了,

可窗口里一片空白,

什么都没有,

错误信息是:

************************************************************************

*** ERROR: Canvas3D constructed with a null GraphicsConfiguration

*** This will cause a NullPointerException in a subsequent release

************************************************************************

Exception in thread "J3D-Renderer-1" java.lang.IllegalStateException: GL_VERSION

at javax.media.j3d.Canvas3D.createNewContext(Native Method)

at javax.media.j3d.Canvas3D.createNewContext(Canvas3D.java:2429)

at javax.media.j3d.Renderer.doWork(Renderer.java:747)

at javax.media.j3d.J3dThread.run(J3dThread.java:250)

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值