IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement 2D, 3D et Jeux Discussion :

Vtk avec Java est-ce faisable ?


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Vtk avec Java est-ce faisable ?
    Bonjour,

    Je débute avec la programmation 3D, je suis deja initié au langage java et j'ai choisi la bibliothèque Vtk vu que c'est celle qui convient le plus à ce que je voudrais réaliser.
    Je suis encore dans la phase apprentissage j'arrive pas à visualiser un objet 3D de format ply Voici le code:



    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    import vtk.*;
     
    public class LecturePly {
     
     
    	static { 
    	 System.loadLibrary("vtkCommonJava"); 
    	 System.loadLibrary("vtkFilteringJava"); 
    	 System.loadLibrary("vtkIOJava"); 
    	 System.loadLibrary("vtkImagingJava"); 
    	 System.loadLibrary("vtkGraphicsJava"); 
    	 System.loadLibrary("vtkRenderingJava"); 
    	}
     
    	// now the main program
    	public static void main (String []args) throws Exception {
     
    		vtkPLYReader elli=new vtkPLYReader();
    		elli.SetFileName("C:/Users/SUE/Desktop/GL3/mini projet/contenu de la base de données/buddha50K.ply");
    		elli.Update();
    		elli.UpdateInformation();
     
     
     
    	 vtkPolyDataMapper elliMapper = new vtkPolyDataMapper();
    	 elliMapper.SetInputConnection(elli.GetOutputPort());
     
    	 vtkActor elliActor = new vtkActor();
    	 elliActor.SetMapper(elliMapper);
     
    	 vtkRenderer ren1 = new vtkRenderer();
    	 ren1.AddActor(elliActor);
    	 ren1.SetBackground(0.1, 0.2, 0.4);
    	 vtkRenderWindow renWin = new vtkRenderWindow();
    	 renWin.AddRenderer( ren1 );
    	 renWin.SetSize(300, 300);
     
    	 //
    	 // Make one camera view 90 degrees from other.
    	 //
    	 ren1.ResetCamera();
    	 ren1.GetActiveCamera().Azimuth(90);
     
    	 vtkRenderWindowInteractor iren = new vtkRenderWindowInteractor();
    	 iren.SetRenderWindow(renWin);
     
    	 vtkInteractorStyleTrackballCamera style = 
    	     new vtkInteractorStyleTrackballCamera();
    	 iren.SetInteractorStyle(style);
    	 iren.Initialize();
    	 iren.Start();
    	}
    	}
    Et voici l'erreur:

    ERROR: In ..\..\IO\vtkPLYReader.cxx, line 118
    vtkPLYReader (0445FF38): Could not open PLY file

    ERROR: In ..\..\Filtering\vtkExecutive.cxx, line 757
    vtkStreamingDemandDrivenPipeline (0445FF88): Algorithm vtkPLYReader(0445FF38) returned failure for request: vtkInformation (04477078)
    Debug: Off
    Modified Time: 83
    Reference Count: 1
    Registered Events: (none)
    Request: REQUEST_DATA
    ALGORITHM_AFTER_FORWARD: 1
    FROM_OUTPUT_PORT: 0
    FORWARD_DIRECTION: 0


    Est-ce que quelqu'un pourrais me dire comment corriger cela ?
    et si quelqu'un a deja travaillé avec vtk et java ensemble qu'il me conseille Please.

  2. #2
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 450
    Points : 1 630
    Points
    1 630
    Par défaut
    A mon avis c'est un bête problème d'encodage de chaîne. Essaye de lui donner un chemin vers ton fichier sans espace ni accents.
    Je ne réponds à aucune question par MP, posez vos questions sur le forum adéquat.
    Profils : G+ - LinkedIn

  3. #3
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Oui c'est vraiment con de ma part mais c'est le cas c'était juste un problème d'encodage. Mais il me reste à savoir s'il vaut mieux utiliser Java ou C++ avec Vtk sachant que ce que je voudrais réaliser comme projet est un démonstrateur web de comparaison des techniques d'indexation de maillages triangulaires par descripteurs de forme.

    PS: Si quelqu'un n'a pas compris le sujet qu'il me damande je peux le lui expliquer.

  4. #4
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 450
    Points : 1 630
    Points
    1 630
    Par défaut
    Perso j'ai utilisé VTK en Java pour l'affichage de gros maillages de CAO et ça marchait niquel. Quelques problèmes avec le garbage collector qui ne sait pas exactement la taille de la mémoire allouée et qui ne désalloue jamais pensant qu'il reste beaucoup de mémoire (suffit de faire un System.gc() de temps en temps). L'appli que j'ai développée en Java est ici :

    http://jcae.sourceforge.net

    Sachant qu'on utilise une version patchée. Tu auras besoin d'un patch si tu veux utiliser des classes/méthodes avec des underscore (voir dans les patchs celui appelé underscore il me semble). T'en auras peut-être pas besoin, pour savoir : si un jour t'as un genre de "PROP_ID() n'est pas trouvé" c'est que t'as besoin du patch

    En plus si c'est pour intégrer dans du web le java est encore plus conseillé.
    Je ne réponds à aucune question par MP, posez vos questions sur le forum adéquat.
    Profils : G+ - LinkedIn

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 19
    Points : 17
    Points
    17
    Par défaut
    salut,
    j'essaie de lire des fichiers de différentes extensions (ply,vrml,off) à l'aide de la bibliothèque VTK.
    voila pour :
    -le ply j'ai pris ton code susuze
    -le off j'ai pas encore trouver comment le lire avec VTK(et si qlq peut m'aider!!! ça sera génial )
    -le vrml j'ai essai mon code mais il y une erreur que je n'arrive pas à la resoudre:
    voici mon code:
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    import java.awt.Color;
    import vtk.*;
    public class lirewrml {
     
     
        static { 
    	 System.loadLibrary("vtkCommonJava"); 
    	 System.loadLibrary("vtkFilteringJava"); 
    	 System.loadLibrary("vtkIOJava"); 
    	 System.loadLibrary("vtkImagingJava"); 
    	 System.loadLibrary("vtkGraphicsJava"); 
    	 System.loadLibrary("vtkRenderingJava"); 
    	}
     
    public static void main(String [] args)
    {
     
    vtkRenderer ren =new vtkRenderer();
     
     
    vtkRenderWindow renWin=new vtkRenderWindow();
     
    vtkVRMLImporter importer=new vtkVRMLImporter();
     
    	importer.SetRenderWindow(renWin);
    	importer.SetFileName("fichiers.WRL");
    	importer.Read();
     
     
    	vtkAppendPolyData appendData=new vtkAppendPolyData();
    //	vtkActorCollection collection=renWin.GetRenderer().GetActors();
    vtkActorCollection collection=ren.GetActors();
            int count =collection.GetNumberOfItems();
    	collection.InitTraversal();
    	vtkProperty prop=null;
    	for(int i=0;i< count ;i++){
    		vtkActor actor=collection.GetNextActor();
    		actor.InitPartTraversal();
    		int count1=actor.GetNumberOfParts();
    		for(int j=0;j< count1 ;j++){
    			vtkActor actorNew=actor.GetNextPart();
    			prop=actor.GetProperty();
    			vtkPolyData data=(vtkPolyData) actorNew.GetMapper().GetInputAsDataSet();
    			appendData.AddInput(data);
    		}
    	}
    	vtkPolyDataNormals normals=new vtkPolyDataNormals();
    	normals.SetInput(appendData.GetInput());
    	normals.ConsistencyOn();
    	normals.SplittingOff();
    	vtkActorCollection collection1=ren.GetActors();
    	int count1 =collection.GetNumberOfItems();
    	collection.InitTraversal();
    	for(int i=0;i< count ;i++){
    		vtkActor actor=collection.GetNextActor();
    		ren.RemoveActor(actor);
    	}
    	vtkPolyDataMapper clipMapper = new vtk.vtkPolyDataMapper();
    	clipMapper.SetInput(normals.GetOutput());
    	clipMapper.ScalarVisibilityOff();
    	vtkActor clipActor = new vtk.vtkActor();
    	clipActor.SetMapper(clipMapper);
    	prop.SetDiffuse(0.7);
    	clipActor.SetProperty(prop);
    	ren.AddActor(clipActor);
    	//ren.setBackground(Color.yellow);
            ren.SetBackground(0.1, 0.2, 0.4); 
    	ren.SetBackground(30,30,30);
    	ren.ResetCameraClippingRange();
    	renWin.Render();
     
    }
    }
    et voici l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Exception in thread "main" java.lang.UnsatisfiedLinkError: vtk.vtkVRMLImporter.VTKInit()J
            at vtk.vtkVRMLImporter.VTKInit(Native Method)
            at vtk.vtkObject.<init>(vtkObject.java:96)
            at vtk.vtkImporter.<init>(vtkImporter.java:80)
            at vtk.vtkVRMLImporter.<init>(vtkVRMLImporter.java:71)
            at lirewrml2.main(lirewrml2.java:32)

    En fait, je voulais savoir si je peut les lire tous avec le même code (donc peut importe l'extension) ou chacun séparément??!!
    merci d'avance ..

  6. #6
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse Tanek je n'ai pas encore rencontré d'underscore mais merci pour l'info.
    hamta je ne sais pas pour les formats vrml et off mais je crois que ce sont tous des vtkPolyData donc tu pourras les lire avec vtkPolyDataReader mais ce n'est qu'une suggestion je ne l'ai jamais essayé.

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 19
    Points : 17
    Points
    17
    Par défaut
    merci Susuze pour t'as réponse mais j'ai pas trouvé comment convertir ces formats en vtkPolyData alors si quelqu'un peut m'aider et sur tout me dire si c'est bien faisable ou non?
    Aussi si quelqu'un peut me secourir en trouvant le problème de mon code parce que j'ai rien trouvé sur le net qui peut vraiment m'aider
    Merci d'avance

  8. #8
    Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bon,j'ai résolu mon problème de lecture, je commence a me familiariser avec vtk. cependant, j'ai trouvé pleins de difficultés à reconnaitre une classe dont j'ai besoin quand j'en vois une ça doit etre a cause de la "Documentation" . Mon problème est que je cherche à calculer l'index de forme qui est calculer à partir des courbures moyennes et gaussiennes qui je peux calculer dans la classe vtkCurvature. Après l'avoir fait, j'ai des resultats qui sont faux. je suppose que ça doit être a cause du maillage qui n'est peut être pas orienté . donc si quelqu'un parmi vous connais une classe qui permet d'orienter le maillage qu'il m'en fait part et merci .
    Si quelqu'un veux le code qu'il m'envoie un mp je le lui enverrais.

    Hamta----->J'espère que t'as résolu ton problème Hamta,

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 19
    Points : 17
    Points
    17
    Par défaut
    Salut,
    non Susuze,malheureusement j'ai pas encore résolu mon problème
    alors si vraiment quelqu'un peut m'aider je serai très reconnaissant
    merci d'avance..

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par hamta Voir le message
    Salut,
    non Susuze,malheureusement j'ai pas encore résolu mon problème
    alors si vraiment quelqu'un peut m'aider je serai très reconnaissant
    merci d'avance..
    Si je comprends bien, la JVM ne trouve pas les DLL et/ou les JAR utilisés par VTK, pourquoi ne mets-tu pas les JARs nécessaires dans jre/lib/ext et les DLL dans jre/bin en attendant de trouver une solution plus propre? Es-tu sûr que tu mets bien les bons noms de bibliothèques quand tu utilises loadLibrary? Tes DLL sont-elles dans ton library path?

  11. #11
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 450
    Points : 1 630
    Points
    1 630
    Par défaut
    Cela veut dire que tu n'importes pas une bibliothèque donc dans ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        static { 
    	 System.loadLibrary("vtkCommonJava"); 
    	 System.loadLibrary("vtkFilteringJava"); 
    	 System.loadLibrary("vtkIOJava"); 
    	 System.loadLibrary("vtkImagingJava"); 
    	 System.loadLibrary("vtkGraphicsJava"); 
    	 System.loadLibrary("vtkRenderingJava"); 
    	}
    il manque un loadLibrary(quelquechose). Regarde dans quelle bibliothèque se trouve la classe "VRMLImport".
    Je ne réponds à aucune question par MP, posez vos questions sur le forum adéquat.
    Profils : G+ - LinkedIn

  12. #12
    Invité
    Invité(e)
    Par défaut
    Il y a 1 JAR et 34 DLL pour faire marcher VTK sous Windows. Pour faire tourner son exemple, il n'a peut-être pas besoin de tout mettre mais il faut au moins que le chemin soit dans le java.library.path sinon la JVM ne va rien trouver. Par exemple, je ne vois pas vtkHybridJava dans son code.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Est-ce faisable avec BO?
    Par Adrienchey dans le forum Débuter
    Réponses: 5
    Dernier message: 10/06/2008, 00h01
  2. Quel est le meilleur SGBD utilisé avec JAVA
    Par osma_1978 dans le forum JDBC
    Réponses: 6
    Dernier message: 08/06/2007, 20h17
  3. Réponses: 4
    Dernier message: 13/04/2007, 14h15
  4. [Plugin checkStyle 4.3.0] Est-il compatible avec Java 5.0 ?
    Par 17mounir dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 02/02/2007, 15h26
  5. mon projet est il faisable avec webdev ?
    Par M@XflY dans le forum WebDev
    Réponses: 2
    Dernier message: 24/11/2006, 16h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo