# Problem mit Texturen im Web.



## TotoWaga (22. Mai 2007)

Hallo,
ich habe ein kleines Programm das .obj File einliest, was auch prima funktioniert, wenn ich's z.B. über java starte oder in ein HTML einbette und dieses mit dem Browser öffne. Nur wenn ich die Seite und alles dazu ins Netz lege, klappt es nicht, ich bekomme folgenden Fehler:

un.misc.ServiceConfigurationError: javax.imageio.spi.ImageTranscoderSpi: http://totowaga.kilu2.de/3d/META-INF/services/javax.imageio.spi.ImageTranscoderSpi:1: Illegal configuration-file syntax
	at sun.misc.Service.fail(Unknown Source)
	at sun.misc.Service.fail(Unknown Source)
	at sun.misc.Service.parseLine(Unknown Source)
	at sun.misc.Service.parse(Unknown Source)
	at sun.misc.Service.access$100(Unknown Source)
	at sun.misc.Service$LazyIterator.hasNext(Unknown Source)
	at javax.imageio.spi.IIORegistry.registerApplicationClasspathSpis(Unknown Source)
	at javax.imageio.spi.IIORegistry.<init>(Unknown Source)
	at javax.imageio.spi.IIORegistry.getDefaultInstance(Unknown Source)
	at javax.imageio.ImageIO.<clinit>(Unknown Source)
	at com.sun.j3d.utils.image.TextureLoader$2.run(TextureLoader.java:386)
	at java.security.AccessController.doPrivileged(Native Method)
	at com.sun.j3d.utils.image.TextureLoader.<init>(TextureLoader.java:381)
	at com.sun.j3d.loaders.objectfile.ObjectFileMaterials.readMapKd(ObjectFileMaterials.java:302)
	at com.sun.j3d.loaders.objectfile.ObjectFileMaterials.readFile(ObjectFileMaterials.java:361)
	at com.sun.j3d.loaders.objectfile.ObjectFileMaterials.readMaterialFile(ObjectFileMaterials.java:408)
	at com.sun.j3d.loaders.objectfile.ObjectFile.loadMaterialFile(ObjectFile.java:525)
	at com.sun.j3d.loaders.objectfile.ObjectFile.readFile(ObjectFile.java:589)
	at com.sun.j3d.loaders.objectfile.ObjectFile.load(ObjectFile.java:1248)
	at com.sun.j3d.loaders.objectfile.ObjectFile.load(ObjectFile.java:718)
	at ObjLoad.createSceneGraph(ObjLoad.java:223)
	at ObjLoad.init(ObjLoad.java:399)
	at sun.applet.AppletPanel.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

Es hat irgendetwas mit den Texturen zu tun.
Wenn ich im der mtl Datei die Texture
map_Kd bild.jpg
entferne, kracht's nicht, ich sehe dann aber natürlich keine Textur.

Genau so wenig geht folgendes:
           TextureLoader loader = new TextureLoader( "bild.jpg", null );
           Texture2D texture = ( Texture2D ) loader.getTexture();

Ich hatte im Forum schon gesehen, das man evtl. die volle html Adresse angeben soll, das bringt aber auch nichts!

Wer kann helfen?


----------



## TotoWaga (22. Mai 2007)

Ich habe jetzt mal ein ganz einfaches Bsp hochgeladen:
http://totowaga.kilu2.de/texture/

Der SourceCode sieht ungefähr so aus, bekommt Ihr auch den gleichen Fehler?:

import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.GraphicsConfiguration;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.universe.SimpleUniverse;
import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.behaviors.mouse.MouseRotate;
import javax.media.j3d.*;
import com.sun.j3d.utils.image.TextureLoader;

import java.net.MalformedURLException;
import java.net.URL;
public class MySimpleUniverse extends Applet
{
   // Inhaltszweig
   public BranchGroup erzeugeInhalt()
   {
      // Erzeugen einer (Wurzel)Gruppe die den geamten Inhalt des Universum aufnehmen soll
      BranchGroup inhalt = new BranchGroup();
      System.out.println(",))");
	   // Load in the Texture File 
      TextureLoader loader = null;
       try
       {
   	   loader = new TextureLoader(new URL("http://totowaga.kilu2.de/texture/brick.jpg"),this);
       }
      catch (MalformedURLException e)
      {
         System.out.println("can't load.....");
         System.err.println(e);
      }


     // Create Texture object
	   Texture brick = loader.getTexture();

      // Erzeugen eines geometrischen Objektes inklusive voreingestellten Aussehens
      ColorCube farbigerWuerfel = new ColorCube(0.4);

      // Erzeugen einer Transformgruppe mit Zugriffsrechten fuer Maussteuerung
      TransformGroup tg = new TransformGroup();
      tg.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
      tg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);

      // Gebe dem verwaisten Wuerfel drehfreudige Eltern
      tg.addChild(farbigerWuerfel);

      // Erzeuge ein Mausdrehobjekt in einem geplanten Bereich mit Ziel-Transformgruppe
      MouseRotate rotor = new MouseRotate();
      rotor.setSchedulingBounds(new BoundingSphere());
      rotor.setTransformGroup(tg);

      // Einhaengen der Transformgruppe und des Mausverhaltens in die Wurzelgruppe
      inhalt.addChild(tg);
      inhalt.addChild(rotor);

      // Optimiert den gesamten Inhaltszweig - nicht unbedingt erforderlich
      inhalt.compile();

      return inhalt; // Los, gibs mir!
   }

   // Sichtzweig
   public SimpleUniverse erzeugeSicht()
   {
      // Erzeugen eines minimalen virtuellen Universums mit Hilfe der SimpleUniverse-Klasse
      SimpleUniverse minimalesUniversum = null;

      // Besorgen der besten Konfiguration hinsichtlich der
      // Anzeigeumgebung (Farbtiefe, Tranzparenzwerte der Pixel, ...)
      GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();

      // Erzeugen des aeusserst schweren Anzeigeflaeche-Objektes
      Canvas3D canvas3d = new Canvas3D(config);

      // Hinzufügen der Anzeigeflaeche zum Clientbereich des Fensters
      add(canvas3d);

      // Uebergabe des Canvas3D-Objekts als Anzeigeflaeche
      minimalesUniversum = new SimpleUniverse(canvas3d);

      // setNominalViewingTransform() stellt den Betrachter 2,41m auf die positive
      // z-Achse mit Sichtrichtung nach unten in negative z-Achse
      minimalesUniversum.getViewingPlatform().setNominalViewingTransform();

      return minimalesUniversum; // Her mit dem Mist!
   }

   // Diese Methode wird vom Browser beim Laden des Applets aufgerufen.
   public void init()
   {
      // Erzeuge neues Layout für Container
      setLayout(new BorderLayout());

      // Sei Gott und erzeuge ein minimales Universum mit Sicht auf den Inhalt
      SimpleUniverse su = erzeugeSicht();

      // Sei Gott und erzeuge den Inhalt des Universums mit Maussteuerung
      BranchGroup suInhalt = erzeugeInhalt();

      // Es werde Licht! - verbindet Universum inklusive Sicht mit Inhalt
      su.addBranchGraph(suInhalt);
   }

   // Startpunkt fuer die Laufzeitumgebung
   public static void main(String[] args)
   {
      new MainFrame(new MySimpleUniverse(), 800, 600);
   }
}


----------



## TotoWaga (22. Mai 2007)

Jetzt habe ich mal das Beispiel von
http://www.java2s.com/Code/Java/3D/MultiTexture.htm
bei mir gebaut.

Es liegt unter
totowaga.kilu2.de/multi
und ich bekomme den gleichen Fehler.

Nehme ich die Version unter
http://www-evasion.imag.fr/~Francoi...va3d/TextureTest/MultiTextureTest_plugin.html
läuft es. Habe ich vielleicht eine fehlerhafte Entwicklungs-Umgebung?!


----------



## TotoWaga (23. Mai 2007)

Am JDK scheint es wohl nicht zu legen. Wenn ich mir die class vom Server, auf dem es läuft, auf den kilu Server kopiere, funktioniert dort auch nicht!


----------



## TotoWaga (23. Mai 2007)

Wenn ich hinter einem Proxy hänge (wie jetzt in der Firma), geht das Beispiel unter
http://www-evasion.imag.fr/~Francoi...va3d/TextureTest/MultiTextureTest_plugin.html
auch nicht mehr?!
Bei meinem eigenen Beispiel, bei dem ich via ObjectLoader ein obj-File einlese wird, geht aber (ohne Texturen). Werden die Images-Files (für die Texturen) und obj-Files über einen anderen Mechanismus geöffnet, oder warum werden .obj-Files gefunden, jpg-Files nicht?!

om.sun.j3d.utils.image.ImageException: javax.imageio.IIOException: Can't get input stream from URL!
	at com.sun.j3d.utils.image.TextureLoader$2.run(TextureLoader.java:388)
	at java.security.AccessController.doPrivileged(Native Method)
	at com.sun.j3d.utils.image.TextureLoader.<init>(TextureLoader.java:381)
	at com.sun.j3d.utils.image.TextureLoader.<init>(TextureLoader.java:351)
	at MultiTextureTest.createSceneGraph(MultiTextureTest.java:131)
	at MultiTextureTest.init(MultiTextureTest.java:239)
	at sun.applet.AppletPanel.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: javax.imageio.IIOException: Can't get input stream from URL!
	at javax.imageio.ImageIO.read(Unknown Source)
	at com.sun.j3d.utils.image.TextureLoader$2.run(TextureLoader.java:386)
	... 7 more
Caused by: java.io.IOException: Server returned HTTP response code: 502 for URL: http://www-evasion.imag.fr/~Francoi...a/demo/java3d/TextureTest/../images/stone.jpg
	at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
	at java.net.URL.openStream(Unknown Source)
	... 9 more
com.sun.j3d.utils.image.ImageException: javax.imageio.IIOException: Can't get input stream from URL!
	at com.sun.j3d.utils.image.TextureLoader$2.run(TextureLoader.java:388)
	at java.security.AccessController.doPrivileged(Native Method)
	at com.sun.j3d.utils.image.TextureLoader.<init>(TextureLoader.java:381)
	at com.sun.j3d.utils.image.TextureLoader.<init>(TextureLoader.java:351)
	at MultiTextureTest.createSceneGraph(MultiTextureTest.java:131)
	at MultiTextureTest.init(MultiTextureTest.java:239)
	at sun.applet.AppletPanel.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: javax.imageio.IIOException: Can't get input stream from URL!
	at javax.imageio.ImageIO.read(Unknown Source)


----------

