2016-06-12 67 views
0

我在使用libGdx呈現模型時遇到問題。
我已經在攪拌機中創建了一個簡單的汽車模型,但是當我在libGdx中渲染它時,它渲染不正確。
這是它看起來在攪拌機(它應該是怎樣看): enter image description hereBlender模型在libGDX中呈現不正確

這是它的外觀在libGdx:

正如你所看到的,輪子都指向錯誤的方向,這是沒有意義的,因爲我根本沒有把它們轉向它們。

它適用於模型中只有1個物體,但是當我添加更多物體(如輪子)時,會發生這種情況。

這裏是我的create()方法:

public void create() { 
    camera=new PerspectiveCamera(67,800,480); 
    camera.position.set(0f, 0f, 20f); 
    camera.lookAt(0f, 0f, 0f); 
    camera.near=1f; 
    camera.far=100f; 

    batch=new ModelBatch(); 
    builder=new ModelBuilder(); 

    UBJsonReader jsonreader=new UBJsonReader(); 
    G3dModelLoader modelloader=new G3dModelLoader(jsonreader); 
    cubemodel=modelloader.loadModel(Gdx.files.getFileHandle("carmodel.g3db", Files.FileType.Internal)); 
    cube=new ModelInstance(cubemodel,0,0,0); 


    environment=new Environment(); 
    environment.set(new ColorAttribute(ColorAttribute.AmbientLight,0.65f,0.65f,0.65f,1f)); 


} 

這裏是我的render()方法:

public void render() { 
    Gdx.gl.glClearColor(1, 1, 1, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT); 

    Gdx.gl20.glEnable(GL20.GL_DEPTH_TEST); 
    camera.update(); 
    batch.begin(camera); 
    batch.render(cube, environment); 
    batch.end(); 
    camera.rotateAround(new Vector3(0f, 0f, 0f), new Vector3(0f, 1f, 0f), 0.5f); 
} 

這裏是我的模型: carmodel.g3db

如果您需要什麼然後問,我會發布它。

在此先感謝!

+0

您相機的遠近比爲10,000!把它減少到不太容易出錯的地方,比如100。 – Xoppa

+0

@Xoppa已經試過了,它沒有工作。我用了近10和遠1000年 – Paul

回答

1

自從我使用Blender之後已經有一段時間了,但這些都是我用來在LibGDX中匹配模型方向的設置。這會設置它,因此,如果您的LibGDX相機使用與Blender相機相同的方向和位置,則場景將相同。

  1. 正常創建您的模型。保存Blender文件。
  2. 圍繞+ X軸將每個模型圍繞其中心旋轉90度並應用變換。
  3. 導出模型-Z向前和Y向上。
  4. 請勿保存Blender文件,因爲您可能需要進一步更改原始方向的模型。
+0

我道歉,如果我的問題似乎模糊,模型的方向不是問題。模型方向很好。問題在於模型渲染不正確。 – Paul

+0

好的,那麼它看起來像你的模型的法線倒置。 – Tenfour04

+0

哦,你能告訴我如何反轉他們,使他們是正常的?非常感謝你,我想知道一天以來的問題是什麼。 – Paul