Hello
I now that this topic has been written many times but solution that i found on forum don't work for me.
i have file in format *.3ds i convert it and write in cache folder. But my textures dosn't work.
after conversion i do:
rootNode.attacheChild(model) ;
maybe i need set a renderer state or ??
to conversion I use code from this forum:
public static Node getModel3ds(File file) {
FormatConverter converter = new ObjToJme();
String fileN = file.getPath() ;
String format = fileN.substring(fileN.lastIndexOf(".") + 1, fileN.length());
if(format.equalsIgnoreCase("3ds")) {
converter = new MaxToJme();
} else if(format.equalsIgnoreCase("md2")) {
converter = new Md2ToJme();
} else if(format.equalsIgnoreCase("md3")) {
converter = new Md3ToJme();
} else if(format.equalsIgnoreCase("ms3d")) {
converter = new MilkToJme();
} else if(format.equalsIgnoreCase("ase")) {
converter = new AseToJme();
} else if(format.equalsIgnoreCase("obj")) {
converter = new ObjToJme();
}
Node model = new Node();
ByteArrayOutputStream bo = new ByteArrayOutputStream();
File input = new File("D:/java_program/pierwsza gra/build/classes/models/cache/"+file.getName() + ".jme");
// check if there is a cached jme format model for the requested file
if(input.isFile()) {
try {
ResourceLocatorTool.addResourceLocator(ResourceLocatorTool.TYPE_TEXTURE,
new SimpleResourceLocator(file.getParentFile().toURI()));
if(BinaryImporter.getInstance().load(input).getClassTag().getName().equals("com.jme.scene.Node")){
model = (Node)BinaryImporter.getInstance().load(input);
}else {
TriMesh tm = (TriMesh) BinaryImporter.getInstance().load(input);
tm.setName("childNode") ;
model.attachChild(tm);
}
ResourceLocatorTool.removeResourceLocator(ResourceLocatorTool.TYPE_TEXTURE,
new SimpleResourceLocator(file.getParentFile().toURI()));
return model;
} catch(IOException e) {
e.printStackTrace();
}
}
// no cached model found -> convert the 3ds file and cache it
try {
ResourceLocatorTool.addResourceLocator(ResourceLocatorTool.TYPE_TEXTURE,new SimpleResourceLocator(file.getParentFile().toURI()));
converter.convert(new FileInputStream(file), bo);
if(BinaryImporter.getInstance().load(new ByteArrayInputStream(bo.toByteArray())).getClassTag().getName().equals("com.jme.scene.Node")){
model =(Node) BinaryImporter.getInstance().load(new ByteArrayInputStream(bo.toByteArray()));
}else {
TriMesh tm = (TriMesh)BinaryImporter.getInstance().load(new ByteArrayInputStream(bo.toByteArray()));
tm.setName("childNode") ;
model.attachChild(tm);
}
bo.writeTo(new FileOutputStream("D:/java_program/pierwsza gra/build/classes/models/cache/"+file.getName()+".jme"));
ResourceLocatorTool.removeResourceLocator(ResourceLocatorTool.TYPE_TEXTURE,
new SimpleResourceLocator(file.getParentFile().toURI()));
} catch(IOException e) {
e.printStackTrace();
}
return model;
}