← retour à la page principale du projet
Rapport du mercredi 10 août 2005

Matin:
J'ai essayé une méthode pour écrire dans un fichier un noeud donné. cf http://doc.coin3d.org/Coin/classSoWriteAction.html
Cette méthode marche bien dans des tests séparés, mais l'architecture orientée objet de notre code semble lui poser problèmes, notamment au niveau de l'utilisation d'un nom de méthode en paramètre. Je ne suis pas arrivé à utiliser cette méthode quand même...

Après-midi:
Après une manipulation regrettable sous Windows (Partition Magic 7), je n'ai plus réussi à monter ma partition /home sous Linux. Elle contenait toutes mes données, que je n'avais malheureusement pas sauvegardé depuis à peu près une semaine.
J'ai, après pas mal de déboires, réussi à remonter temporairement cette partition & à effectuer très rapidement un backup. Je n'ai donc pas perdu de fichier (manifestement). Je pense que je vais faire des backups plus souvent (genre quotidiennement)!
Pour Thunderbird sur les machines de l'ISIA, j'ai désinstallé & réinstallé les packages, tout marche maintenant.
Léger nettoyage du code (suppression du code d'anciens tests).
J'ai enfin réussi à écrire un noeud (SoSeparator) complet dans un fichier. Effectivement, l'objet est bien sauvegardé. Néanmoins, lors de l'import (que ce soit celui d'un organe ou d'un outil), si j'ai par exemple sauvegardé au préalable root, seul le premier objet est importé. Je pense que c'est tout-à-fait normal compte tenu du code de Nicolas & Loïc.
Comparons les fichiers générés.
ciseaux_v1.t.iv original:
#Inventor V2.1 ascii
Separator {
  Separator {
    Transform {}
    Separator {
      Material {}
      ShapeHints {}
      Coordinate3 {[longue série de points]}
      IndexedFaceSet {[longue série de points]}
    }
  }
  Separator {
    Transform {}
    Separator {
      Material {}
      ShapeHints {}
      Coordinate3 {[longue série de points]}
      IndexedFaceSet {[longue série de points]}
    }
  }
}
fichier généré:
#Inventor V2.1 ascii
Separator {
  Separator {
    Separator {
      Transform {}
      Separator {
        Material {}
        ShapeHints {}
        Coordinate3 {[longue série de points]}
        IndexedFaceSet {[longue série de points]}
      }
    }
    Separator {
      Transform {}
      Separator {
        Material {}
        ShapeHints {}
        Coordinate3 {[longue série de points]}
        IndexedFaceSet {[longue série de points]}
      }
    }
  }
}
Pas grand chose à signaler, les fichier généré crée simplement un SoSeparator de trop, pas de quoi fouetter un chat. Il y a une légère différence lors de la définition de ComposeRotation (dans Transform), tout le reste me parait strictement identique.
Format de l'organe uterus.o.iv:
#Inventor V2.1 ascii
Separator {
  Material {}
  ShapeHints {}
  Coordinate3 {[longue série de points]}
  IndexedFaceSet {[longue série de points]}
}
Ici encore, le fichier enregistré est rigoureusement identique, si ce n'est qu'il ajoute un Separator de trop.
Format de la scene entière:
#Inventor V2.1 ascii
Separator {  // SoSeparator *scene
  PerspectiveCamera {}  // SoCamera *cameraSc
  Separator {
    EventCallback {}  // SoSeparator *containCB
  }
  Separator { // SoSeparator *geometryObjects
    Separator { // SoSeparator *containTool
      Translation {} // SoTranslation *topToolTranslation, manifestement de 78.933502 20.434299 47.121201
      Transform {} // SoTransform *manipulatorTransform
      Separator { // SoSeparator *tool
        Separator {
          Separator { // 1ère partie des ciseaux
            Transform {}
            Separator {
              Material {}
              ShapeHints {}
              Coordinate3 {}
              IndexedFaceSet {}
            }
          }
           Separator { // 2onde partie des ciseaux
             Transform {}
             Separator {
               Material {}
               ShapeHints {}
               Coordinate3 {}
               IndexedFaceSet {}
            }
          }
        }
      }
    }
    Separator {} // SoSeparator *containDragger
  }
  Separator {
    Separator {  // SoSeparator *organ
      Material {}
      ShapeHints {}
      Coordinate3 {}
      IndexedFaceSet {}
    }
  }
}
La topToolTranslation correspond bien au chiffre calculé lundi.
Seuls les 2 parties du ciseau contiennent une partie Transform. Les organes & les autres outils monobloc n'en ont pas. Je ne sais pas du tout comment translater autrement qu'en utilisant un objet SoTransform, ou en utilisant un manipulateur. Si tu as une idée Nicolas.
Ce serait aussi sympa de pouvoir le faire par animation, pour avoir le temps de visualiser la différence... Peut-être que Coin intègre ce genre de possibilité, mais apparemment qu'en utilisant un objet SoAction.
J'ai le fichier de l'indenteur au format .dou, je suppose que l'un des scripts python permet de le convertir au format .iv (du genre /src/objects/convert.py), mais je ne sais pas comment faire. Nicolas, peux-tu m'aider?

À effectuer prochainement:
recherches autour de l'objet SoAction
Valid XHTML 1.0 Transitional