[Java3D] Succession de transformations
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 :
Code:
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" ); |
D'après ce que j'ai compris, cela me positionne mon objet dans le cube [-1, -1, -1], [1, 1, 1]
( Flag ObjectFile.RESIZE )
Je veux donc lui appliquer une homothétie et une translation
Je crée donc mes deux transformations :
Code:
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 :
Code:
1 2
|
scale.add( translate ); |
Renvoie une erreur : Non-affine transformation
- Si mes souvenirs sont bons, il faut faire une multiplication des deux matrices
Code:
1 2
|
scale.mul( translate ); |
ou
Code:
1 2
|
translate .mul( scale); |
Le truc c'est que je ne me rappelle plus dans quel ordre il faut le faire.
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 :cry: