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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 4
    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 émérite

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    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
    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.

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 4
    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 émérite

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    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
    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é.

  5. #5
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 19
    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
    Futur Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 4
    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é.

+ 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