CR#1055 : Datatube prototype refactoring

| State :working | Assign to :sdevaux | Module :net.eduvax.datatube | Type :task | Parent :1052 | Source : |

Description

Maxime's TODO list:
1: Au niveau des fonctions permettant l'identification des messages (pour l'instant dans les readers cf: ISampleReader):
    - Changer la sémantique des noms de fonctions
    - Generaliser le traitement d'un message de creation d'une nouvelle Serie : savoir de quel type est cette Serie.
        (pour l'instant cela est effectué avec deux fonctions différentes : isANewSerie et isANewObject. 
        Faire tout cela avec une seule fonction qui renvoie le nom de la nouvelle serie et son type (donc l'indice du tube concerne par ce message).)
    - Pour l'instant aucune différence entre la rencontre d'un message de wait ou de notify. Traitement fait par isALink
    - Reflechir au deplacement de ces fonctions au niveau du Sample
2: Dans LOG4JReader : 
    - Faire l'algo permettant de determiner la valeur d'un sample. Pour l'instant c'est effectue grace a Random().
    - ATTENTION avant chaque lecture d'une ligne du fichier, il y a un wait, cela est pour voir la construction 
        progressive du tube. Ce n'est pas obligatoire!
3: Gestion des couleurs, lumieres, ombre, fond...
    - Les paramètres de lumieres, ombres sont initialises dans le JMEAdapter (simpleInitGame()).
        Probleme : La coloration des facettes et des Links est fait via la methode des vertexs (cf: JMEFacet.java ligne 60). 
        cette methode ne permet PAS la gestion des lumieres et ombres. Pour voir les couleurs avec cette methode
        il faut desactiver tout eclairage (lightState.setEnabled(false);).
        Pour avoir une gestion des lumieres/ombres il faut utiliser l'objet MaterialState pour definir la couleur
        et l'appliquer au différents objets de la scene 3D via la methode setRenderState. : cf : http://www.jmonkeyengine.com/wiki/doku.php/starter:hello_states
        En appliquant cette methode il devient necessaire d'activer les lumières et de placer des "spots" dans l'espace 3D : cf: lien precedent.
        
    - En ce qui concerne le fond: il est aussi initialise dans la methode simpleInitGame(). L'objet correspondant au mieu
         a ce travail est la SkyBox. Il faut creer les 6 JPEG qui correspondront aux 6 faces du cube pour les "plaquer" sur la SkyBox.
         Problemes rencontres : Si la skybox est trop grande, on ne voit plus les faces, elles sont trop loin. Lorsque je cree une SkyBox non-cubique
         le plaquage des images sur les faces devient etrange...
    - Il n'y a aucun gestion de la transparence des couleurs dans JMEAdapter.
4: Construction des JMEFacet :
    - Aujourd'hui nous utilisons la methodes reconstruct(...) de l'objet TriMesh pour construire nos facette.
        Elle prend en paramètre le tableau des points, les indexs de contruction, les couleurs et les normals.
        Si nous n'utilisons plus la coloration par les vertexs, il serait plus simple de declarer seulement un tableau de points
        et un tableau d'index et d'utiliser les methodes :
                ** mesh.setVertexBuffer(BufferUtils.createFloatBuffer(points));
                ** mesh.setIndexBuffer(BufferUtils.createIntBuffer(indexs));
        cf: Fichier TestTriangleStrip.java (wiki jme)
5: JMELink.java : 
    - Traiter les cas particuliers de lien :
            Lien entre deux facettes opposees
            Lien entre deux facettes dont l'angle est le même mais pas le rayon.
6: TubeView :
    - Dans la fonction update() beaucoup de if else imbriques... trouver une structure plus elegante?
    - Toujours dans update() :
            C'est dans cette fonction que je determine la couleur d'un lien en fonction de sa provenance et de
            son arrivee. Est-ce vraiment le bon endroit? De plus c'est aussi a cet endroit que je dessine le trait
            entre la facette d'un objet en cours et la derniere dessine. Bon endroit aussi?
7: Recherche  d'un objet a geometrie variable.
    - en fouillant dans l'api de JME j'ai trouver un object :  
                com.jme.scene.MorphingTriMesh;
    Le nom m'a interpele, mais je n'ai pas eu le temps de me plonger serieusement dans la doc.

Comments

1 - to be completed
2 - done
3, 4, 5, 7 - for now canceled, all JME stuff may be canceled too.
6 - to be completed : need serious refactoring, may be related to CR#1056

Schedule

History