我不明白如何使用TextureLoader删除IO EXCEPTION

时间:2016-03-20 21:10:34

标签: java image exception

大家好我刚刚在java3d(SimpleUniverse)编写代码我不明白它落到了我的异常以及为什么它无法读取文件...我试图通过TextureLoader将图像作为我的backGround图像感谢任何帮帮我们 这是例外:

  

com.sun.j3d.utils.image.ImageException:javax.imageio.IIOException:   无法读取输入文件!在   com.sun.j3d.utils.image.TextureLoader $ 1.run(TextureLoader.java:344)at at   java.security.AccessController.doPrivileged(Native Method)at   com.sun.j3d.utils.image.TextureLoader。(TextureLoader.java:337)   在   com.sun.j3d.utils.image.TextureLoader。(TextureLoader.java:291)   在Aplication.backGround.createSceneGraph(backGround.java:60)at   Aplication.backGround。(backGround.java:39)at   sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)   at sun.reflect.NativeConstructorAccessorImpl.newInstance(未知   来源)at   sun.reflect.DelegatingConstructorAccessorImpl.newInstance(未知   来自java.lang.reflect.Constructor.newInstance(未知来源)   在java.lang.Class.newInstance(未知来源)at   sun.applet.AppletPanel.createApplet(未知来源)at   sun.applet.AppletPanel.runLoader(未知来源)at   sun.applet.AppletPanel.run(未知来源)at   java.lang.Thread.run(未知来源)引起:   javax.imageio.IIOException:无法读取输入文件!在   javax.imageio.ImageIO.read(未知来源)at   com.sun.j3d.utils.image.TextureLoader $ 1.run(TextureLoader.java:342)   ......还有14个

这是代码:

/ =========================================== ========================= /

package Aplication;

import com.sun.j3d.utils.universe.SimpleUniverse;

import java.applet.Applet;

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

import javax.media.j3d.AmbientLight;
import javax.media.j3d.Background;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.DirectionalLight;

    import javax.media.j3d.ImageComponent2D;
    import javax.media.j3d.Shape3D;
    import javax.media.j3d.TransformGroup;

import javax.vecmath.Point3d;
import javax.vecmath.Vector3f;

import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.image.TextureLoader;
import com.sun.j3d.utils.universe.SimpleUniverse;

public class backGround extends Applet{
    private java.net.URL bgImage = null;

    public backGround(){
        init();
        setLayout(new BorderLayout());
        GraphicsConfiguration config =
                SimpleUniverse.getPreferredConfiguration();

        Canvas3D c = new Canvas3D(config);
        add("Center", c);

        BranchGroup scene = createSceneGraph();
        SimpleUniverse u = new SimpleUniverse(c);

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

        u.addBranchGraph(scene);

    }
    public void init(){
        setSize(1280,650);

    }

    public BranchGroup createSceneGraph(){
        BranchGroup firstBranch = new BranchGroup();
        //background.setColor(0.0f,0.0f,2.0f);
        BoundingSphere backgroundBounds = new BoundingSphere(new Point3d(0,0,0), 1000);

        TextureLoader myLoader = new  TextureLoader("../images/sky.jpg",this);
        ImageComponent2D myImage = myLoader.getImage( );
        Background background = new Background();
        background.setImage(myImage);
        background.setApplicationBounds(backgroundBounds);
        firstBranch.addChild(background);

        Shape3D plane = new createPlane().getGeo();
        plane.setBounds(new BoundingSphere());
        firstBranch.addChild(plane);

        AmbientLight lightA = new AmbientLight();
        lightA.setInfluencingBounds(new BoundingSphere());
        firstBranch.addChild(lightA);

        DirectionalLight lightD1 = new DirectionalLight();
        lightD1.setInfluencingBounds(new BoundingSphere());
        Vector3f direction = new Vector3f(-1.0f, -1.0f, -1.0f);
        direction.normalize();
        lightD1.setDirection(direction);
        firstBranch.addChild(lightD1);

        return firstBranch;
    }




public static void main(String argv[]) {
    Frame frame = new MainFrame(new backGround(), 750, 750);
  }
}

/ * =============== plane运行上面代码所必需的类====== * /

package Aplication;

import javax.media.j3d.Appearance;
import javax.media.j3d.Geometry;
import javax.media.j3d.GeometryArray;
import javax.media.j3d.Material;
import javax.media.j3d.QuadArray;
import javax.media.j3d.Shape3D;
import javax.vecmath.Color3f;
import javax.vecmath.Point3f;
import javax.vecmath.Vector3f;


public class createPlane extends Shape3D {
    Shape3D plane;
      public class LitQuad extends Shape3D {
            LitQuad(Point3f A, Point3f B, Point3f C, Point3f D) {
              this.setGeometry(createGeometry(A, B, C, D));
              this.setAppearance(createAppearance());
            }


      Geometry createGeometry(Point3f A, Point3f B, Point3f C, Point3f D) {

          QuadArray plane = new QuadArray(4, GeometryArray.COORDINATES
              | GeometryArray.NORMALS);

          plane.setCoordinate(0, A);
          plane.setCoordinate(1, B);
          plane.setCoordinate(2, C);
          plane.setCoordinate(3, D);

          Vector3f a = new Vector3f(A.x - B.x, A.y - B.y, A.z - B.z);
          Vector3f b = new Vector3f(C.x - B.x, C.y - B.y, C.z - B.z);
          Vector3f n = new Vector3f();
          n.cross(b, a);

          n.normalize();

          plane.setNormal(0, n);
          plane.setNormal(1, n);
          plane.setNormal(2, n);
          plane.setNormal(3, n);

          return plane;
        }

       Appearance createAppearance() {
          Appearance appear = new Appearance();
          Color3f color = new Color3f(0.0f,1.5f,0.0f);
          Material material = new Material();
          material.setDiffuseColor(color);
          appear.setMaterial(material);

          return appear;
        }
      }

      public createPlane(){
            plane = new LitQuad(new Point3f(-1.5f, -0.5f, -5.0f),
                    new Point3f(-1.5f, -0.5f, 1.0f),
                    new Point3f(1.5f, -0.5f, 1.0f), new Point3f(1.5f, -0.5f, -5.0f));
      }
      public Shape3D getGeo(){
          return plane;
      }
}

0 个答案:

没有答案