2012-04-05 2 views
1

J'ai un modèle que j'ai fait dans Blender qui a des maillages individuels. Quand je le mets dans un projet Xna et que j'essaie de déplacer le modèle via la traduction Matrix, toutes les mailles individuelles vont dans des directions séparées. Mon code met fondamentalement à jour chaque mesh individuellement. Y a-t-il un meilleur code que je devrais utiliser pour faire bouger les maillages du modèle?Comment déplacer des modèles dans Xna dans son ensemble?

Répondre

0

Si vous appelez ceci:

private void DrawModel(Model model, Matrix worldMatrix) 
    { 
     //Matrix array for number of bones 
     Matrix[] modelTransformations = new Matrix[model.Bones.Count]; 

     //Put bones into matrix array 
     model.CopyAbsoluteBoneTransformsTo(modelTransformations); 

     //for every model 
     foreach (ModelMesh mesh in model.Meshes) 
     { 
      foreach (BasicEffect effect in mesh.Effects) 
      { 
       //Add default lighting 
       effect.EnableDefaultLighting(); 

       //Set default postion 
       effect.World = modelTransformations[mesh.ParentBone.Index] * worldMatrix; 

       //Set view 
       effect.View = camera.viewMatrix; 

       //Set projection 
       effect.Projection = camera.projectionMatrix; 
      } 

      //Draw Model 
      mesh.Draw(); 
     } 
    } 

Et puis traduit la matrice du monde que vous mettez dans comme ceci:

modelWorld *= Matrix.CreateTranslation(XDir, YDir, ZDir); 

Vous devriez avoir aucun problème. Au moins, c'est comme ça que je le fais.

Questions connexes