而我安装的是Jdk6和J3d1.5.1,在 objLoader.java 同级目录下放了一个从maya中导出的简单多边形obj文件。代码如下:完全摘自《Java 3d编程实践》一书。import com.sun.j3d.loaders.objectfile.*;
import com.sun.j3d.loaders.ParsingErrorException;
import com.sun.j3d.loaders.IncorrectFormatException;
import com.sun.j3d.loaders.Scene;
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.event.*;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.universe.*;
import java.io.*;
import javax.media.j3d.*;
import javax.vecmath.*;public class objLoader extends Applet{

/**
 * 
 */
private static final long serialVersionUID = -4735900585868949748L; public BranchGroup createSceneGraph(String filename){

BranchGroup sceneRoot = new BranchGroup();
BoundingSphere bounds = 
new BoundingSphere(new Point3d(0.0,0.0,0.0),100.0);

Color3f bgColor = new Color3f(1.0f,1.0f,1.0f);
Background bg = new Background(bgColor);
bg.setApplicationBounds(bounds);
sceneRoot.addChild(bg);

Color3f lightColor = new Color3f(0.0f,1.0f,1.0f);
Vector3f light1Direction = new Vector3f(4.0f,-7.0f,-12.0f);
Color3f light2Color = new Color3f(0.3f,0.3f,0.4f);
Vector3f light2Direction = new Vector3f(-6.0f,-2.0f,-1.0f);
Color3f ambientColor = new Color3f(0.1f,0.1f,0.1f);

AmbientLight ambientLight = new AmbientLight(ambientColor);
ambientLight.setInfluencingBounds(bounds);
sceneRoot.addChild(ambientLight);

DirectionalLight light1
= new DirectionalLight(lightColor,light1Direction);
light1.setInfluencingBounds(bounds);
sceneRoot.addChild(light1);

DirectionalLight light2
= new DirectionalLight(light2Color,light2Direction);
light2.setInfluencingBounds(bounds);
sceneRoot.addChild(light2);

TransformGroup sceneTG = new TransformGroup();
sceneTG.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
sceneRoot.addChild(sceneTG);

Alpha rotationAlpha = new Alpha(-1,Alpha.INCREASING_ENABLE,0,0,4000,0,0,0,0,0);
Transform3D yAxis = new Transform3D();
RotationInterpolator rotator = 
new RotationInterpolator(rotationAlpha,sceneTG,yAxis,0.0f,(float)Math.PI*2.0f);

rotator.setSchedulingBounds(bounds);
sceneTG.addChild(rotator);

TransformGroup objTG = new TransformGroup();
Transform3D objTrans = new Transform3D();
objTG.getTransform(objTrans);
objTrans.setScale(0.6);
objTG.setTransform(objTrans);
sceneTG.addChild(objTG);

int flags = ObjectFile.RESIZE;
ObjectFile f = new ObjectFile(flags,(float)(49.0*Math.PI/180.0));

Scene s = null;
try{
s=f.load(filename);

}

catch(FileNotFoundException e){
System.err.println(e);
System.exit(1);
}

catch(ParsingErrorException e){
System.err.println(e);
System.exit(1);
}
catch(IncorrectFormatException e){
System.err.println(e);
System.exit(1);
}

objTG.addChild(s.getSceneGroup());
return sceneRoot;

}

public  objLoader(String filename){
filename = "b1.obj";
setLayout(new BorderLayout());
Canvas3D c= new Canvas3D(null);
add("Center",c);

BranchGroup scene = createSceneGraph(filename);
SimpleUniverse u = new SimpleUniverse(c);
u.getViewingPlatform().setNominalViewingTransform();
u.addBranchGraph(scene);
}

public static void main(String[] args){
 new MainFrame( new objLoader(null),640,480);
}}
javac objLoader.java  正常
java objloader 后,显示如下:Exception in thread "main" java.lang.NullPointerException: Canvas3D: null Graphi
csConfiguration
        at javax.media.j3d.Canvas3D.checkForValidGraphicsConfig(Canvas3D.java:96
3)
        at javax.media.j3d.Canvas3D.<init>(Canvas3D.java:1006)
        at objLoader.<init>(objLoader.java:105)
        at objLoader.main(objLoader.java:115)请问是什么问题,我该怎么解决,谢谢!

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【BullBone】截止到2008-07-28 10:28:49的历史汇总数据(不包括此帖):
    发帖的总数量:0                        发帖的总分数:0                        每贴平均分数:0                        
    回帖的总数量:0                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:---------------------结分的百分比:---------------------
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    将代码:
      Canvas3D c = new Canvas3D(null); 
    替换如下:
      GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
      Canvas3D c = new Canvas3D(config);
    当然你还需要加入如下引入
    import java.awt.GraphicsConfiguration;
    该问题网上早有