package example;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.URL;
import java.util.logging.Level;
import com.jme.app.AbstractGame;
import com.jme.app.SimpleGame;
import com.jme.bounding.BoundingSphere;
import com.jme.scene.Node;
import com.jme.util.LoggingSystem;
import com.jme.util.export.binary.BinaryImporter;
import com.jmex.model.XMLparser.XMLtoBinary;
import com.jmex.model.XMLparser.Converters.FormatConverter;
import com.jmex.model.XMLparser.Converters.ObjToJme;
public class HelloModelLoading extends SimpleGame {
public static void main(String[] args) {
HelloModelLoading app = new HelloModelLoading();
app.setDialogBehaviour(AbstractGame.ALWAYS_SHOW_PROPS_DIALOG);
// Turn the logger off so we can see the XML later on
LoggingSystem.getLogger().setLevel(Level.OFF);
app.start();
}
protected void simpleInitGame() {
// Point to a URL of my model
URL model=HelloModelLoading.class.getClassLoader().getResource("level/test.xml");
// Create something to convert .obj format to .jme
XMLtoBinary converter=new XMLtoBinary();
// Point the converter to where it will find the .mtl file from
//converter.setProperty("mtllib",model);
// This byte array will hold my .jme file
ByteArrayOutputStream BO=new ByteArrayOutputStream();
try {
// Use the format converter to convert .obj to .jme
converter.sendXMLtoBinary(model.openStream(), BO);
Node maggie=(Node)BinaryImporter.getInstance().load(new ByteArrayInputStream(BO.toByteArray()));
// shrink this baby down some
maggie.setLocalScale(.1f);
maggie.setModelBound(new BoundingSphere());
maggie.updateModelBound();
// Put her on the scene graph
rootNode.attachChild(maggie);
} catch (IOException e) { // Just in case anything happens
System.out.println("Damn exceptions!" + e);
e.printStackTrace();
System.exit(0);
}
}
}
result:
java.io.IOException: Not in GZIP format
at java.util.zip.GZIPInputStream.readHeader(Unknown Source)
at java.util.zip.GZIPInputStream.<init>(Unknown Source)
at java.util.zip.GZIPInputStream.<init>(Unknown Source)
at com.jme.util.export.binary.BinaryImporter.load(Unknown Source)
at com.jme.util.export.binary.BinaryImporter.load(Unknown Source)
at example.HelloModelLoading.simpleInitGame(HelloModelLoading.java:42)
at com.jme.app.BaseSimpleGame.initGame(Unknown Source)
at com.jme.app.BaseGame.start(Unknown Source)
at example.HelloModelLoading.main(HelloModelLoading.java:25)
Damn exceptions!java.io.IOException: Not in GZIP format
next....
package example;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.URL;
import java.util.logging.Level;
import com.jme.app.AbstractGame;
import com.jme.app.SimpleGame;
import com.jme.bounding.BoundingSphere;
import com.jme.scene.Node;
import com.jme.util.LoggingSystem;
import com.jme.util.export.binary.BinaryImporter;
import com.jmex.model.XMLparser.XMLtoBinary;
import com.jmex.model.XMLparser.Converters.FormatConverter;
import com.jmex.model.XMLparser.Converters.MaxToJme;
import com.jmex.model.XMLparser.Converters.ObjToJme;
public class HelloModelLoading extends SimpleGame {
public static void main(String[] args) {
HelloModelLoading app = new HelloModelLoading();
app.setDialogBehaviour(AbstractGame.ALWAYS_SHOW_PROPS_DIALOG);
// Turn the logger off so we can see the XML later on
LoggingSystem.getLogger().setLevel(Level.OFF);
app.start();
}
protected void simpleInitGame() {
// Point to a URL of my model
URL model=HelloModelLoading.class.getClassLoader().getResource("level/house.3ds");
// Create something to convert .obj format to .jme
FormatConverter converter = new MaxToJme();
// Point the converter to where it will find the .mtl file from
//converter.setProperty("mtllib",model);
// This byte array will hold my .jme file
ByteArrayOutputStream BO=new ByteArrayOutputStream();
try {
// Use the format converter to convert .obj to .jme
converter.convert(model.openStream(), BO);
Node maggie=(Node)BinaryImporter.getInstance().load(new ByteArrayInputStream(BO.toByteArray()));
// shrink this baby down some
maggie.setLocalScale(.1f);
maggie.setModelBound(new BoundingSphere());
maggie.updateModelBound();
// Put her on the scene graph
rootNode.attachChild(maggie);
} catch (IOException e) { // Just in case anything happens
System.out.println("Damn exceptions!" + e);
e.printStackTrace();
System.exit(0);
}
}
}
result:
Damn exceptions!java.io.IOException: Header length doesn't match up: End ID#:7 len left to read=-1092616098 parentID#=4100
java.io.IOException: Header length doesn't match up: End ID#:7 len left to read=-1092616098 parentID#=4100
at com.jmex.model.XMLparser.Converters.TDSChunkingFiles.ChunkerClass.chunk(Unknown Source)
at com.jmex.model.XMLparser.Converters.TDSChunkingFiles.ChunkerClass.<init>(Unknown Source)
at com.jmex.model.XMLparser.Converters.TDSChunkingFiles.TriMeshChunk.<init>(Unknown Source)
at com.jmex.model.XMLparser.Converters.TDSChunkingFiles.NamedObjectChunk.processChildChunk(Unknown Source)
at com.jmex.model.XMLparser.Converters.TDSChunkingFiles.ChunkerClass.chunk(Unknown Source)
at com.jmex.model.XMLparser.Converters.TDSChunkingFiles.ChunkerClass.<init>(Unknown Source)
at com.jmex.model.XMLparser.Converters.TDSChunkingFiles.NamedObjectChunk.<init>(Unknown Source)
at com.jmex.model.XMLparser.Converters.TDSChunkingFiles.EditableObjectChunk.processChildChunk(Unknown Source)
at com.jmex.model.XMLparser.Converters.TDSChunkingFiles.ChunkerClass.chunk(Unknown Source)
at com.jmex.model.XMLparser.Converters.TDSChunkingFiles.EditableObjectChunk.<init>(Unknown Source)
at com.jmex.model.XMLparser.Converters.TDSChunkingFiles.TDSFile.processChildChunk(Unknown Source)
at com.jmex.model.XMLparser.Converters.TDSChunkingFiles.ChunkerClass.chunk(Unknown Source)
at com.jmex.model.XMLparser.Converters.TDSChunkingFiles.TDSFile.<init>(Unknown Source)
at com.jmex.model.XMLparser.Converters.MaxToJme.convert(Unknown Source)
at example.HelloModelLoading.simpleInitGame(HelloModelLoading.java:42)
at com.jme.app.BaseSimpleGame.initGame(Unknown Source)
at com.jme.app.BaseGame.start(Unknown Source)
at example.HelloModelLoading.main(HelloModelLoading.java:26)
next...
package example;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.URL;
import java.util.logging.Level;
import com.jme.app.AbstractGame;
import com.jme.app.SimpleGame;
import com.jme.bounding.BoundingSphere;
import com.jme.scene.Node;
import com.jme.util.LoggingSystem;
import com.jme.util.export.binary.BinaryImporter;
import com.jmex.model.XMLparser.XMLtoBinary;
import com.jmex.model.XMLparser.Converters.FormatConverter;
import com.jmex.model.XMLparser.Converters.MaxToJme;
import com.jmex.model.XMLparser.Converters.ObjToJme;
public class HelloModelLoading extends SimpleGame {
public static void main(String[] args) {
HelloModelLoading app = new HelloModelLoading();
app.setDialogBehaviour(AbstractGame.ALWAYS_SHOW_PROPS_DIALOG);
// Turn the logger off so we can see the XML later on
LoggingSystem.getLogger().setLevel(Level.OFF);
app.start();
}
protected void simpleInitGame() {
// Point to a URL of my model
URL model=HelloModelLoading.class.getClassLoader().getResource("level/eagle.obj");
// Create something to convert .obj format to .jme
FormatConverter converter = new ObjToJme();
// Point the converter to where it will find the .mtl file from
//converter.setProperty("mtllib",model);
// This byte array will hold my .jme file
ByteArrayOutputStream BO=new ByteArrayOutputStream();
try {
// Use the format converter to convert .obj to .jme
converter.convert(model.openStream(), BO);
Node maggie=(Node)BinaryImporter.getInstance().load(new ByteArrayInputStream(BO.toByteArray()));
// shrink this baby down some
maggie.setLocalScale(.1f);
maggie.setModelBound(new BoundingSphere());
maggie.updateModelBound();
// Put her on the scene graph
rootNode.attachChild(maggie);
} catch (IOException e) { // Just in case anything happens
System.out.println("Damn exceptions!" + e);
e.printStackTrace();
System.exit(0);
}
}
}
result:
java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(Unknown Source)
at com.jmex.model.XMLparser.Converters.ObjToJme.processLine(Unknown Source)
at com.jmex.model.XMLparser.Converters.ObjToJme.convert(Unknown Source)
at example.HelloModelLoading.simpleInitGame(HelloModelLoading.java:42)
at com.jme.app.BaseSimpleGame.initGame(Unknown Source)
at com.jme.app.BaseGame.start(Unknown Source)
at example.HelloModelLoading.main(HelloModelLoading.java:26)
i read every tutorial and it is the example code, but why, why and why it do not work?