Bonjour, c'est encore moi !
Maintenant que j'arrive a me débrouiller 'correctement' avec l'API, je passe a la vitesse supérieure!
J'essaie d'intégrer une scene 3D dans mon canvas.
Pour l'instant, j'ai essayé plusieurs solutions - mais rien de tout a fait satisfaisant :
** Sauvegarde en .obj et récupération du .obj dans Java
Avantages :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 public static TransformGroup importObjObject( String fileObj, float size, Vector3f toPoint ) throws Exception { //-------------------------------------------------------- //---------------------- Load Model -------------------- //-------------------------------------------------------- File file = new File( fileObj ); if( ! file.exists() ) throw new Exception( "Unable to retrieve file " + fileObj ); String dir = file.getParentFile().getAbsolutePath(); String path = file.getAbsolutePath(); ObjectFile objfile = new ObjectFile( ObjectFile.LOAD_ALL | ObjectFile.RESIZE); objfile.setBasePath( dir ); Scene scene = objfile.load(new FileReader( path )); BranchGroup modelBranch= scene.getSceneGroup(); // 1 : translate to [0,0,0] [2,2,2] Transform3D translate = new Transform3D(); translate.set(new Vector3f( 1.0f, 1.0f, 1.0f ) ); // 2 : scale object [0,0,0] float coeff = size / 2.0f; Transform3D scale = new Transform3D(); scale.setScale( coeff ); scale.mul( translate ); // 3 : translate object to desired point translate = new Transform3D(); translate.set( toPoint ); translate.mul( scale ); //Add ground to the 3D scene TransformGroup transformGrp = new TransformGroup( translate ); transformGrp.addChild( modelBranch );; return transformGrp; }
- Possibilité de redimensionner les objet à la taille désirée
- J'ai réussi à appliquer une texture a l'objet importé!
Inconvénients :
- Impossible d'intégrer des lumières dans les objets intégrés
- Lors du redimensionnement - il se peut que certains objets soit déformés
** Utilisation du format 3ds
Pour cela j'utilise le package com.microcrowd.loader.java3d.max3ds
Avantages :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public static BranchGroup import3dsObject( String file3ds ) throws Exception { Loader3DS loader3DS = new Loader3DS(); Scene scene = loader3DS.load( file3ds ); return scene.getSceneGroup(); }
- Possibilité d'ajouter des lumières dans la scène importée.
Inconvénients :
- Erreur lorsque l'objet possède une texture : Can't load texture: schwert7.jpg Make sure it is located in the same server and directory with the model file. the loader's base path is: .\
- Je n'arrive pas a rajouter la texture lors de l'export au format .3ds par mon logiciel de modélisation 3D ( Mais pour ce point la, je suis pas sur le bon forum)
Du coup, soit j'importe les textures , soit j'importe les lumières, mais je n'arrive pas à avoir les deux
J'aimerai donc connaitre les expériences de chacun dans le domaine.
Ce dont j'ai besoin, c'est un format qui puisse :
- Importer les textures
- Importer les lumières
- Le must si possible : Pouvoir gérer des mini animations.
Merci d'avance!
Edit : Contrainte supplémentaire :
- J'aimerai que l'objet soit pickable ( que la methode BranchGroup.pickClosest fonctionne sur l'élément )
Partager