2012-09-27 67 views
2

因此,我一直在嘗試使用Java 3D進行遊戲,最近我一直在玩外部3D模型導入程序。此時,我可以將模型作爲OBJ文件加入程序中,但無論出於何種原因,程序都不會加載相應的材質文件,而且我不知道問題出在我的編碼上,還是僅僅是文件不存在沒有正確導出。加載對象文件時不會加載材質文件

這是我寫的代碼:

import com.sun.j3d.utils.universe.*; 
import com.sun.j3d.utils.geometry.*; 
import javax.media.j3d.*; 
import com.sun.j3d.loaders.objectfile.*; 
import com.sun.j3d.loaders.Scene; 
import java.awt.Color; 
import javax.vecmath.*; 

public class ModelLoadingTest { 

    public static void main(String[] args) { 
     SimpleUniverse universe = new SimpleUniverse(); 
     BranchGroup scene = new BranchGroup(); 

     ObjectFile loader = new ObjectFile(ObjectFile.LOAD_ALL); 
     loader.setFlags(ObjectFile.RESIZE); 

     Scene modelScene = null; 

     try{ 
      modelScene = loader.load("paintedcar.obj"); 

     } 
     catch(Exception e){ 

     } 

     DirectionalLight lighting = new DirectionalLight(new Color3f(Color.WHITE), new Vector3f(0f, 0f, -1f)); 
     lighting.setInfluencingBounds(new BoundingSphere(new Point3d(0.0, 0.0, 1.0), 100)); 

     scene.addChild(modelScene.getSceneGroup()); 
     scene.addChild(lighting); 
     universe.addBranchGraph(scene); 
     universe.getViewingPlatform().setNominalViewingTransform(); 
    } 
} 

如果有幫助,我在瑪雅作了並導出爲波前文件測試模型。

回答

1

...你沒有加載你的代碼中的紋理。 matirl文件不在obj文件中編碼,您需要將其作爲紋理導入,除非將紋理指定給網格,否則您可以像對球體一樣進行此操作。當你將它,你需要使用

"mesh name".setAppearance("your Appearance name"); 

例如

model.setAppearance(ap);