Hi, ich hab da ein problem. Ich hab eine klasse, mit der man "obj" dateien laden kann, und der die punkte in der datei dann in die figur umwandelt, aber da habe ich ein problem. Wie kann ich über die figur dann eine Textur legen danke im Voraus für eure Hilfe, deVeloper_X
Code:
import java.io.*;
import java.net.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.loaders.*;
import com.sun.j3d.loaders.objectfile.*;
public class Model
{
private static final String MODELS_DIR="F:/Models/";
private static final double MAX_SIZE = 5.0;
// max size of model along any dimension
private ObjectFile objFileloader;
public Model()
{ objFileloader = new ObjectFile(); }
public TransformGroup getModel(String fnm)
{ return getModel(fnm, 0); }
public TransformGroup getModel(String fnm, double yMove)
{
BranchGroup modelBG = loadModel(fnm);
if (modelBG == null)
return null;
double scaleFactor = getScaling(modelBG);
Transform3D t3d = new Transform3D();
t3d.setScale(scaleFactor);
t3d.setTranslation( new Vector3d(0,yMove,0));
TransformGroup tg = new TransformGroup(t3d);
tg.addChild(modelBG);
return tg;
}
private BranchGroup loadModel(String modelFnm)
{
String fnm = MODELS_DIR + modelFnm;
System.out.println("Loading OBJ model from " + fnm);
File file = new java.io.File(fnm);
if (!file.exists()) {
System.out.println("Could not find " + fnm);
return null;
}
URL url = null;
try {
url = file.toURI().toURL();
}
catch(Exception e) {
System.out.println(e);
return null;
}
Scene scene = null;
try {
scene = objFileloader.load(url);
}
catch (FileNotFoundException e) {
System.out.println("Could not find " + fnm);
return null;
}
catch (ParsingErrorException e) {
System.out.println("Could not parse the contents of " + fnm);
System.out.println(e);
return null;
}
catch (IncorrectFormatException e) {
System.out.println("Incorrect format in " + fnm);
System.out.println(e);
return null;
}
if(scene != null)
return scene.getSceneGroup();
else
return null;
}
private double getScaling(BranchGroup modelBG)
{
double scaleFactor = 1.0;
BoundingBox boundBox = new BoundingBox( modelBG.getBounds());
Point3d lower = new Point3d();
boundBox.getLower(lower);
Point3d upper = new Point3d();
boundBox.getUpper(upper);
double maxDim = getMaxDimension(lower, upper);
if (maxDim > MAX_SIZE) {
scaleFactor = MAX_SIZE/maxDim;
System.out.println("Applying scaling factor: " + scaleFactor);
}
return scaleFactor;
}
private double getMaxDimension(Point3d lower, Point3d upper)
{
double max = 0;
if ((upper.x - lower.x) > max)
max = upper.x - lower.x;
if ((upper.y - lower.y) > max)
max = upper.y - lower.y;
if ((upper.z - lower.z) > max)
max = upper.z - lower.z;
return max;
}
public Scene load(String string) {
// TODO Auto-generated method stub
return null;
}
}