Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    [c++ ]Collada importatore

    Ciao,
    Ho Sto creando un importatore da un formato di descrizione
    di mesh 3d (COLLADA).
    l'importatore segue un "percorso" a seconda dei parametri
    del tipo di file che trova:
    Un file collada ad es puo' essere a triangoli o a poligoni.
    Se il file che trova è di tipo triangoli eseguirà alcune
    funzioni , se è di tipo poligoni ne eseguirà altre, ma
    l'importante secondo me è che il resto delle funzioni non
    cambiano.

    Ho pensato quindi di partire da una classe generica di
    importazione CBaseCollada , divisa per sezioni:


    class CBaseCollada
    {
    CImporterTypeBase m_import;
    void importVertex();
    void importFace();
    void importNormals();
    void importMaterials();

    }

    ecc....


    class CImporterTypeBase
    {
    virtual void GetVertex() {}
    }

    class CImporterTriangle:CImporterTypeBase
    {
    void getVertex()
    {
    COLLADA::Triangles.Get(
    ecc....
    }
    }

    class CImporterPoly:CImporterTypeBase
    {
    void getVertex()
    {
    COLLADA::Polys.Get(
    ecc....
    }
    }

    ImportVertex()
    {
    m_import->GetVertex(.....
    }

    m_import puo' essere di tipo triangle o poly a seconda
    del tipo di file che si trova ,quindi per polimorfismo
    runtime l'importatore eseguirà la funzione relativa.

    Pensavo che pero' il file puo' essere di tipo diverso anche
    a seconda del tipo di normali che trova:

    quindi potro' avere un file del tipo:
    1)Triangolare , normali Vertex
    2)Triangolare , normali Face

    3)Poly , normali Vertex
    4)Poly , normali Face

    e cosi' via con un esponenziale crescita del tipo di file.

    Vorrei creare un metodo di composizione , tipo mattoncini
    della classe di importazione , la prima cosa che mi
    viene in mente è di utilizzare qualcosa del tipo:

    CImporterTypeBaseVertex m_importVertex // puo' essere poly o triangular;
    CImporterTypeBaseNormals m_importNormals;//puo' essere vertex o face

    e cosi via ,e di andare a incapsulare la classe relativa
    leggendo le proprietà del tipo di file.
    In modo da comporre l'importatore.
    VOi cosa mi consigliate?

  2. #2
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Ciao!
    Anche io ho sviluppato un importer collada, anche se incompleto.
    Stai usando Collada_DOM o usi un generico parser XML?

    L'approccio è buono, anche se io ho preferito usare il metodo "spaghetti" perchè il formato è lento già di per se ne caricamento.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  3. #3
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381

    Re: [c++ ]Collada importatore

    Puoi vedere se il pattern composite fa al caso tuo.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    Devo ammettere che sarebbe un metodo notevole.
    Devo pero ' mettere a posto le idee , se mi aiuti un po' è meglio:

    Per creare una struttura ad albero (quindi un percorso di importazione) va benissimo , il problema è che tutti gli oggetti dovrebbero implementare la stessa interfaccia base(Sbaglio?).
    In un importatore ogni fase ha dei dati restituiti diversi , e quindi non va molto bene.
    Ho pensato pero' che si puo' "condividere" (non so quale metodo è il migliore) la classe di dati che si vuole costruire tra tutti gli oggetti della gerarichia di importazione in modo che ogni foglia della gerarichia vada a modificare la struttura dati condivisa(che ha un interfaccia generica) , ad es aggiungendo vertici o facce ecc... e scorrendo ad es l'albero e invocando un metodo execute ogni foglia in pratica fa la sua operazioncina sulla struttura dati fino a completare l'albero ottenendo una struttura dati completa.

    L'aspetto che mi piace meno pero' è che il metodo execute deve essere autonomo , nel senso che deve svolgere un ruolo "atomico" che non dipende da niente ,solo dalla gerarchia di importazione.

    Si puo' fare?
    ciao.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    sono solo fantasie?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    ok ragazzi,erano solo fantasie.

    Umilmente ho riguardato il composite e vorrei chiedere:
    Portando all'estremo :Perchè usare il pattern composite e non una serie di if che chiamano funzioni diverse?
    Che vantaggi da?
    Grazie.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.