Load de plusieurs mesh ?

Signaler
Messages postés
63
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
28 juin 2012
-
Messages postés
155
Date d'inscription
vendredi 12 décembre 2003
Statut
Membre
Dernière intervention
15 février 2009
-
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

Messages postés
155
Date d'inscription
vendredi 12 décembre 2003
Statut
Membre
Dernière intervention
15 février 2009

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