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

3D Java Discussion :

[java3D][collision]


Sujet :

3D Java

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2002
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 9
    Points : 10
    Points
    10
    Par défaut [java3D][collision]
    bonjour,

    je m'adresse uniquement aux mordus de l'API 3D:

    je dois gérer les collisions possibles entre plusieurs shape3D.
    Mon besoin est dans un premier temps, récupérer les shapes en collision - pas de pb - et ensuite plus dur, récupérer les parties de géometrie commune - voici mon pb -

    si qq a une idée, merci de bien vouloir me mettre au courant.

    bonne journée à tous


  2. #2
    Membre confirmé
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Points : 499
    Points
    499
    Par défaut
    je n'utilise pas l'API java3D, donc je ne sais pas si il existe des fontionnalités pour la détection de collisions. Je sais simplement que l'API utilise un graphe de scene qui représente une scène de manière hiérarchique en utilisant des volumes englobants (sphère ou boite)

    Donc il est probable qu'une fonction existe permettant de tester si deux volumes englobant se collisionnent, mais à mon avis tu ne pourras pas descendre au niveau des éléments de ton objet. Vérifie dans la doc de l'API.

    Si tu dois développer ton propre algorithme :

    La méthode la plus simple, mais aussi la moins performantes consiste à déterminer les collisions dans cet ordre : face/sommet, face/arête, arête/arête,face/face, arête/point, point/point. du plus fréquent au moins fréquent...

    Un algorithme plus performant et numériquement très robuste mais limité aux polyhèdres convexe, est l'algorithme V-Clip (Voronoi-Clip).
    En fait pour utiliser cet algo dans tous les cas, tu devras trouver l'enveloppe convexe (plus petit polyhedre convexe englobant) de chaque objet mobile de ta scène. Pour ca, utilise l'algo QHull (Quick-Hull).

    j'espère que ca pourras t'aider

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 115
    Points : 509
    Points
    509
    Par défaut
    getCollisionBounds() et bounds ne te satisfont pas?

  4. #4
    Membre à l'essai
    Inscrit en
    Décembre 2002
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    en fait, je ne veux pas de collision sur bound mais sur géométries et de plus, je désire récupérer la géométrie résultante!!!! et ça c'est pas donné!!!

  5. #5
    Membre averti
    Avatar de JHelp
    Inscrit en
    Octobre 2002
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 185
    Points : 444
    Points
    444
    Par défaut
    Si mes souvenir sont corrects, on ne peut pas le faire avec l'API 3D.
    Il faut le faire toi même, ce qui est loin d'être simplesi tu veux fabriquer de maniére visuelle l'itersection. Par contre d'un point de vue mémoire, pour faire des tests, là tu peux toujours crée ta classe volume, faire des volumes héritant, par exemple les plus classique, paralllépipède rectangle, sphére, ovoïde, cilyndre, ... et dire que ton volume resultant est en fait l'intersection, union, privation, de ces volumes de base. Il devient alors aisé de calculer l'intersection.

    JHelp

  6. #6
    Membre confirmé
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Points : 499
    Points
    499
    Par défaut
    au fait tu cherche à déterminer le volume représentant l'intersection de objets, ou bien déterminer les éléments géométriques (face, arête, sommet) des objets à l'instant précis de la collision, c'est à dire lorsqu'il n'y a pas encore d'intersection?

    Si tu est dans le premier cas, c'est surement pour faire de la modélisation par opérations booléenne, sinon je vois pas à quoi ca sert. Le deuxième cas est plutot utilisé dans les simulations de physique. Car pour calculer la quantité de mouvement et le moment cinétique après le choc, tu as besoin de l'élément géométrique de chaque polyhèdre en collision.

    Dans le premier cas, le calcul de volumes par opérations booléenne se fait avec les arbres BSP (constructing solid geometry) . Dans le deuxième cas, il vaut mieux faire l'approximation par un polyhèdre convexe englobant si un parallélépipède ou une sphère englobante ne te suffit pas. Ainsi tu es certain que seulement un élément geo entre en collision avec un seul autre. l'algo v-clip par exemple est utilisé, mais il y en a d'autres plus ou moins complexes, robustes, et performants...

    bref, t'as pas fini de codé !!

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 24
    Points : 22
    Points
    22
    Par défaut
    Je pense qu'il est dans le premier cas. Voir un autre de ses posts:

    http://www.developpez.net/forums/viewtopic.php?t=71872

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 78
    Points : 49
    Points
    49
    Par défaut
    Bonjour,
    Je suis à la recherche de la même information que Geofun. Je cherche à obtenir le volume résultant de l'intersection de deux volumes.
    Sauf erreur de ma part, Java3D ne permet pas de réliser ce type d'opération
    Ce topic m'a l'air un peu abandonné, mais si qqun (voire Geofun lui-même) possède des infos à ce sujet, je suis preneur

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

Discussions similaires

  1. [Java3D] Collision puis deuxieme collision
    Par akito dans le forum 3D
    Réponses: 4
    Dernier message: 17/06/2009, 11h57
  2. [Java3D] Détection de collision
    Par akito dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 25/04/2007, 20h32
  3. [Java3D] Collision : Récuperer le UserData
    Par akito dans le forum 3D
    Réponses: 3
    Dernier message: 19/04/2007, 23h17
  4. [Java3D] Probleme avec les collisions
    Par akito dans le forum 3D
    Réponses: 1
    Dernier message: 17/04/2007, 20h41
  5. test collisions
    Par tatakinawa dans le forum OpenGL
    Réponses: 5
    Dernier message: 08/06/2002, 07h03

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