2012-01-18 2 views
0

Я создал сцену в 3DS Max с моделью запаса и некоторые вещи, которые я добавил в себя, самолетом и кнопкой.Импорт модели XNA - Все сетки появляются друг на друга

http://i.stack.imgur.com/R2iva.png

Независимо от того, как я экспортировать сцену, независимо от того, как его .X с помощью панду экспортера или .fbx использованием 2012.2 FBX экспортера как при загрузке в XNA и оказано, все появляются на верхней части друг друга.

http://i.stack.imgur.com/6gdMb.png

Поскольку отдельные части двигателя все остаются там, где они должны (и индивидуальный в 3ds Max) им довольно уверен, что есть что-то им не устанавливать правильно в 3ds Max с расположением остальной части моего объекты.

Update 1: Код я использую для загрузки моделей в XNA выглядит следующим образом

 Matrix[] transforms = new Matrix[model.Bones.Count]; 
     model.CopyAbsoluteBoneTransformsTo(transforms); 

     foreach (ModelMesh mesh in model.Meshes) 
     { 
      foreach (BasicEffect be in mesh.Effects) 
      { 
       be.EnableDefaultLighting(); 
       be.Projection = camera.projection; 
       be.View = camera.view; 
       be.World = GetWorld() * mesh.ParentBone.Transform; 
       // adding the additional * transforms[i]; didnt do anything 

      } 
      mesh.Draw(); 
     } 

Этот код отлично подходит для других моделей народов работает, но не какой-либо, что я делаю. Его как 3ds max не экспортирует позиции объектов, которые я создаю в сцене относительно начала сцены.

+0

Просто, чтобы вы знали, экспортер panda X иногда не работает с XNA. – annonymously

+0

Вы пытались загрузить модель из Интернета и использовать ее, чтобы проверить, является ли это вашим кодом или моделью? – annonymously

ответ

1

Вы должны объединить все преобразования матрицы из родительских костей и костей ребенка, как это:

Matrix[] transforms = new Matrix[model.Bones.Count]; 
model.CopyAbsoluteBoneTransformsTo(transforms); 

foreach (ModelMesh mesh in model.Meshes) { 
    foreach (BasicEffect ef in mesh.Effects) { 
     ef.World = transforms[mesh.ParentBone.Index]; 
     //Also do other stuff here, set projection and view matrices 
    } 
} 

Существует, вероятно, лучший способ, но этот код должен работать.

+0

Я не думаю, что вам нужны дополнительные '* transforms [i]' –

+0

@Neil Если вы можете это подтвердить, я удалю его – annonymously

+0

Обновлен мой ответ кодом, который я использую, чтобы показать, как im загружается в моделях – jordanrs

Смежные вопросы