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

3D Java Discussion :

[JMonkey Engine] Utiliser des NURBS


Sujet :

3D Java

  1. #1
    Futur Membre du Club
    [JMonkey Engine] Utiliser des NURBS
    Bonjour,

    Je développe sur mon temps libre un simulateur de train disponible sur Source Forge :
    http://sourceforge.net/projects/jtrainsimulator/

    J'essaie actuellement de remplacer Java3D par Java Monkey Engine en tant que moteur de rendu 3D du monde extérieur.
    J'ai un problème de rendu sur mes sections de voies ferrées courbes qui était déjà présent avec Java 3D : l'objet 3D que j'affiche dans la scène est discrétisé. J'ai une sorte de patron qui représente le ballast et les rails que "j'extrude" en arc de cercle avec un pas discrétisé (degré par degré). Quand je circule sur cet élément de voie ferrée, je calcule la position de la caméra "parfaitement" sur un arc de cercle. En roulant sur l'élément, j'ai du coup l'impression que les rails dansent devant moi de gauche à droite.

    J'ai l'impression que j'ai deux solutions :
    - discrétiser à plus petits pas jusqu'à ne plus ressentir cette "danse" (mais je vais également multiplier le nombre de facettes à afficher)
    - utiliser un objet graphique plus puissant dont je lis qu'il peut modéliser parfaitement des cercles en 3 dimensions : les NURBS

    Et là je regarde le code de JME et j'ai l'impression que les NURBS sont gérés. Je vois qu'il y a une classe com.jme3.scene.shape.Surface et une méthode
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    public static final Surface createNurbsSurface(List<List<Vector4f>> controlPoints, List<Float>[] nurbKnots, int uSegments, int vSegments, int basisUFunctionDegree, int basisVFunctionDegree)


    Mais deux problèmes se posent à moi :
    - je ne sais pas exactement comment appeler concrètement cette méthode (je n'ai pas trouvé d'exemple de code dans les tutos de JME)
    - je ne suis pas très fort en NURBS et je ne connais même pas de jeu de valeur qui soit susceptible de printer quelquechose de pas trop bête à l'écran, histoire de pouvoir commencer à manipuler pour appréhender la "physique" des NURBS

    Merci de votre aide

  2. #2
    Modérateur

    Tu n'as pas essayé un truc du genre ?

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    com.jme3.scene.shape.Surface surface = Surface.createNurbsSurface(null, null, 0, 0, 0, 0);
    Geometry nurbs = new Geometry("sphere", surface);
    nurbs.setMaterial(solidColor);
    nurbs.setLocalTranslation(0 * 2, 0, 0 * 2);
    rootNode.attachChild(nurbs);


    En mettant les bon paramètre a la méthode static createNurbsSurface() bien entendu ...
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java