how to load a .obj with mtl?
Posted by Ususuus on Aug 06, 2017; 3:59am
URL: https://forum.jogamp.org/how-to-load-a-obj-with-mtl-tp4038099.html
I'm struggling this for 3 days, i can load .obj files, but the materials never works, can anyone give some tips?
package com.java3d.dennist.loader;
import javax.media.j3d.BranchGroup;
import com.sun.j3d.loaders.Scene;
import com.sun.j3d.loaders.objectfile.ObjectFile;
public class ObjFileReader extends BranchGroup{
private double creaseAngle = 60.0;
public ObjFileReader(String filePath){
BranchGroup branchGroup = new BranchGroup();
int flags = ObjectFile.RESIZE;
ObjectFile objFile = new ObjectFile(flags, (float)(creaseAngle*Math.PI)/180);
Scene scenen = null;
try {
scenen = objFile.load(filePath);
} catch (Exception e) {
e.printStackTrace();
System.out.println("OBJ load Err:" + e.getMessage());
}
branchGroup.addChild(scenen.getSceneGroup());
this.addChild(branchGroup);
}
}
package com.java3d.dennist.loader;
import java.applet.Applet;
import java.awt.BorderLayout;
import javax.media.j3d.Alpha;
import javax.media.j3d.Background;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.DirectionalLight;
import javax.media.j3d.RotationInterpolator;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.vecmath.Color3f;
import javax.vecmath.Point3d;
import javax.vecmath.Vector3f;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.universe.SimpleUniverse;
public class JavaModelObjLoaderApp extends Applet{
private static final long serialVersionUID = 5841679659336190804L;
public BranchGroup createSceneGraph(){
BranchGroup group = new BranchGroup();
TransformGroup transGroup = new TransformGroup();
Transform3D trans3d = new Transform3D();
trans3d.setScale(0.8);
transGroup.setTransform(trans3d);
group.addChild(transGroup);
BoundingSphere bound= new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);
Color3f bgColor = new Color3f(0.05f,0.05f,0.2f);
Background bg = new Background(bgColor);
bg.setApplicationBounds(bound);
group.addChild(bg);
Color3f lightColor = new Color3f(1.0f,1.0f,0.9f);
Vector3f lightDirection = new Vector3f(4.0f,-7.0f,-12.0f);
DirectionalLight light = new DirectionalLight(lightColor, lightDirection);
light.setInfluencingBounds(bound);
group.addChild(light);
TransformGroup objTrans = new TransformGroup();
objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
objTrans.addChild(new ObjFileReader("F:/guanyu.obj"));
transGroup.addChild(objTrans);
group.compile();
return group;
}
public JavaModelObjLoaderApp(){
setLayout(new BorderLayout());
Canvas3D canvas = new Canvas3D(null);
add("Center",canvas);
BranchGroup scene = createSceneGraph();
SimpleUniverse universe = new SimpleUniverse(canvas);
universe.getViewingPlatform().setNominalViewingTransform();
universe.addBranchGraph(scene);
}
public static void main(String[] args) {
new MainFrame(new JavaModelObjLoaderApp(), 360,360);
}
}