DDi
Junior Newbie
|
 |
«
Posted
2008-03-16 00:27:20 » |
|
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 (c) 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
|