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
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;
	}
Avantages :
- 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
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();
	}
Avantages :
- 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 )