Bonjour, c'est encore moi!
J'ai décidément des problèmes avec les transformations dans l'API.
Je veux insérer un .OBJ dans ma scène.
J'aimerai qu'il soit positionner dans le cube suivant : [0, 0, 0], [Max, Max, Max]
J'utilise la méthode suivante pour l'insérer :
D'après ce que j'ai compris, cela me positionne mon objet dans le cube [-1, -1, -1], [1, 1, 1]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 FileReader reader = DataManager.getBattleObjReader( objPath ); ObjectFile objfile = new ObjectFile( ObjectFile.LOAD_ALL | ObjectFile.RESIZE ); BranchGroup branch = objfile.load( reader).getSceneGroup(); branch.setName( "ground" );
( Flag ObjectFile.RESIZE )
Je veux donc lui appliquer une homothétie et une translation
Je crée donc mes deux transformations :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Transform3D translate = new Transform3D(); translate.set(new Vector3d( 1.0f, 1.0f, 1.0f)); Transform3D scale = new Transform3D(); scale.setScale( scalecoeff );
La ou j'ai besoin d'une confirmation c'est pour la suite :
J'aimerai appliquer a mon objet la translation puis homothétie.
Mes souvenirs des matrices de transformation étant loin, je ne me rappelle plus exactement comment il faut procéder :
- Manifestement, il ne faut pas faire une addition des matrices :
Renvoie une erreur : Non-affine transformation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 scale.add( translate );
- Si mes souvenirs sont bons, il faut faire une multiplication des deux matrices
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 scale.mul( translate );
Le truc c'est que je ne me rappelle plus dans quel ordre il faut le faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 translate .mul( scale);
Dans mon code, les deux me donnent le même résultat. ( Ce qui ne me rassure pas )
Donc, je voulais bien m'assurer que c'est la bonne méthode pour le faire.
Merci d'avance !
PS :
J'ai aussi essayer d'utiliser un MultiTranformGroup mais je n'ai pas su comment l'insérer comme BranchGroup par la suite![]()
Partager