3ds model with texture

I'm a newb myself, but I might be able to help you a little since I struggled with this myself.

The 3ds model will need to have texture names assigned to its various parts. This has to be done inside a 3ds editing program. The easiest way to start is to find a 3ds model that already comes with textures.

Place all the textures in a directory and then point code to load the textures from that directory.

Here's a simple program I wrote (with much borrowed code from the wise folk of this forum) that loads a 3ds model and applies textures to it.

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.Converters.FormatConverter;
import com.jmex.model.XMLparser.Converters.ObjToJme;
import com.jmex.model.XMLparser.Converters.MaxToJme;
import com.jme.image.Texture;
import com.jme.scene.state.TextureState;
import com.jme.util.TextureManager;
import com.jme.util.TextureKey;
import com.jme.math.Vector3f;
import com.jme.input.NodeHandler;
import com.jme.light.PointLight;
import com.jme.renderer.ColorRGBA;
import com.jme.scene.shape.Quad;


public class modeltex extends SimpleGame
       public static void main(String[] args)
        modeltex app = new modeltex();
        // Turn the logger off so we can see the XML later on

    protected void simpleInitGame() {
       cam.setLocation( new Vector3f( 0, 0, 100 ) );
        //Vector3f modelpos = new Vector3f(0,0,0);
        Quad background = new Quad( "Background" );
         background.initialize( 150, 120 );
        background.setLocalTranslation( new Vector3f( 0, 0, -30 ) );

         Texture bg = TextureManager.loadTexture(
                      "skycloud.jpg" ),
              Texture.FM_LINEAR );
         TextureState bgts = display.getRenderer().createTextureState();
         bgts.setTexture( bg );
         bgts.setEnabled( true );
        background.setRenderState( bgts );
        //background.setDetailTexture(1, 64);
        rootNode.attachChild( background );
        PointLight pl = new PointLight();
        pl.setAmbient( new ColorRGBA( 0.75f, 0.75f, 0.75f, 1 ) );
        pl.setDiffuse( new ColorRGBA( 1, 0, 0, 1 ) );
        pl.setLocation( new Vector3f( 50, 0, 0 ) );
        pl.setEnabled( true );

        lightState.attach( pl );
        // Point to a URL of my model
        URL model=model.class.getClassLoader().getResource("3dm-v-38.3ds");

        // Create something to convert .obj format to .jme
         //FormatConverter converter=new ObjToJme();
        // Create something to convert .3ds format to .jme
           FormatConverter converter=new MaxToJme();

        // Point the converter to where it will find the .mtl file from (for .obj)
        // converter.setProperty("mtllib",model);
        // This byte array will hold my .jme file
        ByteArrayOutputStream BO=new ByteArrayOutputStream();
        try {
            // Use the format converter to convert to .jme
             //for textures
            TextureKey.setOverridingLocation(new URL("file:modeltextex\"));
            //do conversion
            converter.convert(model.openStream(), BO);
            Node starship=(Node)BinaryImporter.getInstance().load(new ByteArrayInputStream(BO.toByteArray()));
            // shrink this baby down some
            starship.setModelBound(new BoundingSphere());
            // Put it on the scene graph
            input = new NodeHandler( starship, 10, 2 );
           catch (IOException e)
              {   // Just in case anything happens
            System.out.println("Damn exceptions!" + e);
            //System.out.println("Texture URL was" + texuredir);