Load de plusieurs mesh ?

10demon10 Messages postés 63 Date d'inscription vendredi 23 avril 2004 Statut Membre Dernière intervention 28 juin 2012 - 22 juin 2008 à 19:38
bizzard4 Messages postés 155 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 15 février 2009 - 3 oct. 2008 à 19:53
bonjour à tous

voila j'ai un petit soucis pour le chargement de mesh avec directX. Je suis entreint de créer une apply qui me permet de charger plusieurs mesh dans la même scene et je voulais savoir si il y as une méthode pour que dans le l'ouverture d'un fichier directX il charge un autre fichier réelement (je sais pas si vous me suivez sous entendu charger plusieurs fichiers mais que quand on appuis sur un bouton comme avec 3DSMAX pas à l'init de l'apply).
Sur le principe j'ai mon idée, à chaque ouverture de fichier on fait un new mesh. seulement je vois pa comment ? (voici une partie de mon code cela aidera surement)

public partial class Board3D : Form
    {
        camera cam = new camera();
        Obj3D obj = new Obj3D();
       
        int numobj = 0;
        Microsoft.DirectX.DirectInput.Device clavier;
       
        public Board3D()
        {
            InitializeComponent();                         
        }
...

  public void Render()
        {
           
            device_manager.Maindevice.BeginScene();
            device_manager.Maindevice.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.BlueViolet, 1.0f, 0);
            cam.Apply();
            obj.render();
            GestionClavier();
            device_manager.Maindevice.EndScene();
            device_manager.Maindevice.Present();
...
  {
           
            if (ImportFileDialog.ShowDialog() == DialogResult.OK)
            {
               
                try
                {                      
                    obj.load(ImportFileDialog.FileName);
             }
                catch (FormatException)
                {
                    MessageBox.Show("invalid file");
                }
            }           
        }   

   // fichier obj3D
   
    class Obj3D
    {
        Mesh mainobj = null;

        public Vector3 position = new Vector3(0, 3.0f, 0);
   
        public void render()       
        {
           
            device_manager.Maindevice.RenderState.FillMode = FillMode.Solid;
            device_manager.Maindevice.RenderState.CullMode = Cull.Clockwise;
            if (mainobj != null)
                mainobj.DrawSubset(0);
        }

        public void load (string file)
        {           
            mainobj = Mesh.FromFile(file, MeshFlags.Managed, device_manager.Maindevice);                     
        }

Je pensai aussi au diférent subset mai je ne sais pas non plus comment s'en servire donc si quelqu'un peut m'éclairer je sui preneur          

         
Stay GREAT forever [  ]

1 réponse

bizzard4 Messages postés 155 Date d'inscription vendredi 12 décembre 2003 Statut Membre Dernière intervention 15 février 2009
3 oct. 2008 à 19:53
Si je comprend bien ton problème tu essaye de charger au runtime des nouveaux mesh.

As-tu une erreur ?

Parce que normalement si tu as une boucle d'affichage et que en appuyant (par exemple F1) tu ouvre un prompt pour aller chercher un nouveau fichier et que tu change le mesh. Si ta routine est correcte tout devrait marcher. L'affichage du mesh devrait se faire correctement.

Par contre je pense qu'il faut que tu "lock" ton mesh pour le changer car cela implique une modification des vertex (évidament).

~~ Cordialement Francois Gingras
0
Rejoignez-nous