Loading the model works fine
But no jbin file is created!
Any suggestion? Thanks
package game.bin.obj;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.logging.Logger;
import com.jme.image.Texture;
import com.jme.math.FastMath;
import com.jme.math.Quaternion;
import com.jme.math.Vector3f;
import com.jme.scene.Node;
import com.jme.system.DisplaySystem;
import com.jme.util.export.Savable;
import com.jme.util.export.binary.BinaryExporter;
import com.jme.util.export.binary.BinaryImporter;
import com.jme.util.resource.ResourceLocatorTool;
import com.jmex.model.converters.AseToJme;
import com.jmex.model.converters.FormatConverter;
import com.jmex.model.converters.MaxToJme;
import com.jmex.model.converters.Md2ToJme;
import com.jmex.model.converters.Md3ToJme;
import com.jmex.model.converters.MilkToJme;
import com.jmex.model.converters.ObjToJme;
public class Mesh extends Node{
private static final Logger logger = Logger.getLogger(Mesh.class.getName());
private DisplaySystem display = DisplaySystem.getDisplaySystem();
public Mesh(String name){
super(name);
logger.info("Mesh " + name + " created.");
}
Texture baseMap;
Texture normalMap;
Texture specMap;
public void addModel(String model_path, String model_name){
logger.info("Add Mesh " + model_name + " to " + name);
Node loaded_model = new Node(model_name);
FormatConverter formatConverter = null;
ByteArrayOutputStream BO = new ByteArrayOutputStream();
String modelFormat = model_path.substring(model_path.lastIndexOf(".") + 1, model_path.length());
String modelBinary = model_path.substring(0, model_path.lastIndexOf(".") + 1) + "jbin";
URL model_url = ResourceLocatorTool.locateResource(ResourceLocatorTool.TYPE_MODEL, model_path);
URL model_url_jbin = ResourceLocatorTool.locateResource(ResourceLocatorTool.TYPE_MODEL, modelBinary);
if (model_url_jbin == null){
logger.info("Create jbin Format" + " (Node_" + name + " - Child_" + model_name + ")");
//evaluate the format
if (modelFormat.equals("3ds") || modelFormat.equals("3DS")){
formatConverter = new MaxToJme();
} else if (modelFormat.equals("md2")){
formatConverter = new Md2ToJme();
} else if (modelFormat.equals("md3")){
formatConverter = new Md3ToJme();
} else if (modelFormat.equals("ms3d")){
formatConverter = new MilkToJme();
} else if (modelFormat.equals("ase")){
formatConverter = new AseToJme();
} else if (modelFormat.equals("obj")){
formatConverter = new ObjToJme();
}
formatConverter.setProperty("mtllib", model_url);
try {
formatConverter.convert(model_url.openStream(), BO);
loaded_model = (Node) BinaryImporter.getInstance().load(new ByteArrayInputStream(BO.toByteArray()));
//save the jbin format
BinaryExporter.getInstance().save((Savable)loaded_model, new File(modelBinary));
} catch (IOException e) {
e.printStackTrace();
}
}
else{
logger.info("Found jbin Format" + " (Node_" + name + " - Child_" + model_name + ")");
try {
//load the jbin format
loaded_model = (Node) BinaryImporter.getInstance().load(model_url.openStream());
//load the jbin format
//loadedModel = (Node) BinaryImporter.getInstance().load(modelURL.openStream());
//loaded_model =(Node)BinaryImporter.getInstance().load(new ByteArrayInputStream(BO.toByteArray()));
} catch (IOException e) {
}
}
Quaternion temp = new Quaternion();
temp.fromAngleAxis(FastMath.PI / 2, new Vector3f(-1, 0, 0));
loaded_model.setLocalRotation(temp);
loaded_model.setLocalTranslation(new Vector3f(0.0f,0.0f,0.0f));
this.attachChild(loaded_model);
logger.info("Child_" + model_name + " has been added to Node_" + name);
}
}