Hi everyone :
I am new to graphics , I have been trying load a object created in 3Dmax 8.0to Java3D,. I exported it from 3Dmax as a .obj file ,but I couldn’t get the correct .mtl file which will
be needed . Does anyone know how to get a correct .mtl file. ?? The .mtl file I got is as below:
Max2Mtl Version 4.0 Mar 10th, 2001
EOF
which doesn’t work.
I tried to use the Loader in jme.jar to load the .obj exported from 3D max 8.0, it doesn’t work . But it works for the .obj in the example
from the jmonkeyengine.com tutorials .
which is shown as below :
- Copyright © 2003-2006 jMonkeyEngine
- All rights reserved.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are
- met:
-
- Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-
- Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
- Neither the name of ‘jMonkeyEngine’ nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package jmetest.TutorialGuide;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import com.jme.app.AbstractGame;
import com.jme.app.SimpleGame;
import com.jme.bounding.BoundingSphere;
import com.jme.scene.Node;
import com.jme.util.export.binary.BinaryImporter;
import com.jmex.model.converters.FormatConverter;
import com.jmex.model.converters.ObjToJme;
/**
-
Started Date: Jul 22, 2004
-
Demonstrates loading formats.
-
@author Jack Lindamood
*/
public class HelloModelLoading extends SimpleGame {
private static final Logger logger = Logger
.getLogger(HelloModelLoading.class.getName());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
app.start();
}protected void simpleInitGame() {
// Point to a URL of my model
URL model=HelloModelLoading.class.getClassLoader().getResource(“jmetest/data/model/maggie.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 logger.logp(Level.SEVERE, this.getClass().toString(), "simpleInitGame()", "Exception", e); System.exit(0); }
}
}
I changed “the jmetest/data/model/maggie.obj” to the .obj file exported from 3Dmax , it generates an error everytime I tried to run it.
Exception in game loop
java.lang.ClassCastException: com.jme.scene.TriMesh cannot be cast to com.jme.scene.Node
at jmetest.TutorialGuide.HelloModelLoading.simpleInitGame(HelloModelLoading.java:82)
at com.jme.app.BaseSimpleGame.initGame(BaseSimpleGame.java:503)
at com.jme.app.BaseGame.start(BaseGame.java:69)
at jmetest.TutorialGuide.HelloModelLoading.main(HelloModelLoading.java:65)
2007-3-16 11:24:29 com.jme.app.BaseSimpleGame cleanup
can anyone help? ???Many thanks