2013-08-29 38 views
2

好吧,這是很難解釋沒有圖片。我在Blender製造了一個非常有限的格洛克模型,其中一個擠壓立方體構成基座,一個縮放立方體組成桶。 在攪拌機,它看起來不錯:奇怪的幾何與3D模型XNA +攪拌器

1

但是,導出模型.FBX並將其加載到編譯器之後,它出來是這樣的:

2

我不不知道到底發生了什麼。在模型中的任何適當的UV映射和座標是正確的,這似乎只是翻譯是... ..關閉

這裏是我的drawModel代碼:

private void DrawModel(Model model, Matrix world, Matrix view, Matrix projection) 
{ 
    foreach (ModelMesh mesh in model.Meshes) 
    { 
     foreach (BasicEffect effect in mesh.Effects) 
     { 
      effect.EnableDefaultLighting();     
      effect.World = world; 
      effect.View = view; 
      effect.Projection = projection; 
     } 
     mesh.Draw(); 
    } 
} 

任何指針將會很有幫助!

編輯:應用旋轉,位置和縮放後,我能夠讓他們在正確的位置,但它爲什麼看起來透明?

3

謝謝所有幫助!

+3

你有沒有在攪拌機應用旋轉/縮放/翻譯?您需要在導出之前執行此操作,以便導出的模型可以選取新的位置/比例/方向。 –

+0

我不認爲這是一個繪圖問題,代碼似乎是正確的,你在Blender中犯了錯誤。 – pinckerman

+0

我增加了比例尺,但我認爲我忽略了翻譯 –

回答

1

正如Nikola所提到的,在Blender的後期版本中,他們有適當的XNA支持。

下面是導出模型時,我選擇了設置的截圖:

enter image description here

0

啓用深度緩衝

 GraphicsDevice.DepthStencilState = DepthStencilStates.Default; 

,並提請在XNA中你可以按照這個tutorial,顯示骨是如何將已經被應用到獲得合適的位置網格模型。

1

爲什麼會發生這種情況: 您的深度緩衝區未啓用,因此當您的GPU首先繪製桶,然後是庫存/手柄時,手柄會繪製在桶的頂部,即使它的某些部分應該因爲它們會被槍管藏起來而不可見。

如何修復: 如其他答案所示,啓用深度緩衝區。和/或根據距離攝像機的距離對模型進行網格劃分,然後按照從近地點到最遠的順序繪製網格。這看起來可能不是很有用,但是當你開始使用透明對象時,你會明白爲什麼這是一件好事。