# .obj-Datei in Java3D laden: ParsingErrorException



## P8BB (6. Dez 2010)

Hi,

ich habe ein Problem, eine .obj-Datei (aus Blender exportiert) in Java3D einzubinden.
Folgender Code gibt mir die folgende Fehlermeldung aus:


> com.sun.j3d.loaders.ParsingErrorException: Unrecognized token, line 4
> at com.sun.j3d.loaders.objectfile.ObjectFile.readFile(ObjectFile.java:597)
> at com.sun.j3d.loaders.objectfile.ObjectFile.load(ObjectFile.java:1248)
> at com.sun.j3d.loaders.objectfile.ObjectFile.load(ObjectFile.java:676)
> ...




```
import java.io.FileNotFoundException;

public class ObjektLaden {

  public BranchGroup macheSzene() {
    String p = "C:\\Users\\*name*\\Desktop\\glas.obj"; // *name* ist natürlich jetzt nur fürs forum hier angepasst
    BranchGroup objgroup = new BranchGroup();

    ObjectFile file = new ObjectFile(ObjectFile.RESIZE);
    Scene scene1 = null;

    try {
      scene1 = file.load(p);
    } catch(FileNotFoundException e) {
      e.printStackTrace();
    } catch(IncorrectFormatException e) {
      e.printStackTrace();
    } catch(ParsingErrorException e) {
      e.printStackTrace();
    }

    if(scene1 != null) {
      objgroup.addChild(scene1.getSceneGroup());
    }

    return objgroup;
  }

  // main funktion hab ich jetz mal weggelassen, da wird das ganze ja nur dann erstellt und aufgerufen

}
```

Wenn ihr noch die die glas.obj braucht, dann lad ich die später hoch, aber im Moment sitz ich in der Schule und hab deshalb keine Möglichkeit, auf den PC zuhause zuzugreifen. Deshalb entschuldigt auch eventuelle Tippfehler im Quellcode - zuhause wird aber alles richtig gecompiled 

MfG
P8BB


----------



## Evil-Devil (6. Dez 2010)

Was in der Obj Datei steht zu wissen wäre wirklich von Vorteil. Obj ist zwar ein an sich einfaches Format, aber vielleicht ist da etwas drin das der J3D Loader nicht kennt oder was kaputt.


----------



## P8BB (7. Dez 2010)

> # Blender v2.55 (sub 0) OBJ File: 'untitled.blend'
> # blender.org - Home
> mtllib glas.mtl
> o Circle_Circle.001
> ...



Hier


----------



## Marco13 (7. Dez 2010)

Mal probiert was passiert wenn du die Zeile 4 rausnimmst?


----------



## EgonOlsen (8. Dez 2010)

Die Datei sieht für mich ok aus. jPCT lädt sie auch problemlos. Wenn er "o" nicht mag, dann probier mal "g" stattdessen.

Edit: Nachtrag - laut JavaDOCs von ObjectFile kennt der in der Tat den Token "o" nicht. Das ergibt zwar keinerlei Sinn, aber wenn es halt so ist...auf "g" setzen müsste dann helfen.


----------



## Evil-Devil (8. Dez 2010)

Naja, einfach tauschen würde ich die aber nicht. G ist der Gruppenname und O der Objekt Name. Mehrere Objekte können in einer Gruppe zusammengefasst sein. Besser die Zeile auskommentieren oder den Loader ergänzen.


----------



## EgonOlsen (8. Dez 2010)

Schon klar. Aber wenn die Doku stimmt, versteht er g, nicht aber o. Und für g steht da:



> Faces defined after this token will be added to the named group. These geometry groups are returned as separated Shape3D objects attached to the parent SceneGroup.



Und das dürfte ja das sein, was man will...denke ich...


----------



## Evil-Devil (8. Dez 2010)

Hmm, jein. Stumpf betrachtet würde ich Gruppe und Objekt wie folgt einteilen unabhängig davon wie J3D das handhabt. So hab ich es jedenfalls damals mal in einem Objloader geschrieben.

Gruppe: Bein
 Objekt: Oberschenkel
 Objekt: Unterschenkel
 Objekt: Fuß

Wenn er jetzt aus jedem Objekt eine Gruppe macht erhält er letzten Endes viel mehr Entitäten, aber letzten Endes muss er das eh selbst entscheiden was er genau will.


----------

