AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez
 

 Position d'un point dans l'espace - 3D

Aller en bas 
AuteurMessage
Shurigame
Habitué
Shurigame

Messages : 83
Localisation : Tours
Projet Actuel : Développez le monde parallèle

Position d'un point dans l'espace - 3D Empty
MessageSujet: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D EmptyMer 20 Fév 2013 - 16:17

Bonjour,

Nouveau post relatif au 3d ; je travaille essentiellement sur des mondes 3D.
J'ai élaboré des système de collision, mangeant peut de RAM, avec des models 3D .gmmod. gnii
Système 1

Mais voilà je teste un nouveau système, permettant des gérer les collision ( plus precis ) avec
des models diverses et varie, et maintenant animées(et ça lag pas gnii ), via ceci : EGF animator. gnii

La question est : comment tester mathématiquement si oui ou non mon instance eft_bullet ce trouve entre deux boules jaunes comme si dessous :
Spoiler:
 
avec les coordonnées des boules ( i change )

  • x2[i]
  • y1[i]
  • z1[i]

J'a aussi les coordonnée de l'instance eft_bullet
  • x
  • y
  • z

Si quelqu'un a une idées, merci de m'en faire part. Merci d'avance. gnii
Sans que ça soit un truc de 20 lignes, si possible sweat
Revenir en haut Aller en bas
http://Shurigame41.wix.com/home
onilink_
Modérateur
onilink_

Messages : 9104
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Position d'un point dans l'espace - 3D Empty
MessageSujet: Re: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D EmptyMer 20 Fév 2013 - 16:25

Que veux tu dire par entre?

Sinon pour connaitre la distance entre 2 points dans l'espace:
distance: sqrt( sqr(x1 - x2) + sqr(y1 - y2) + sqr(z1 - z2) )

Pour vérifier s'il y a intersection entre deux sphères (ou si l'une est dans l'autre):
sqrt(sqr(x1 - x2) + sqr(y1 - y2) + sqr(z1 - z2)) <= r1 + r2
soit, plus optimisé:
sqr(x1 - x2) + sqr(y1 - y2) + sqr(z1 - z2) <= sqr(r1 + r2)

Avec ça déjà tu peut faire pas mal de choses.

_________________
Position d'un point dans l'espace - 3D Runningpotato1Position d'un point dans l'espace - 3D TvF6GED Position d'un point dans l'espace - 3D MdetltS
Revenir en haut Aller en bas
Shurigame
Habitué
Shurigame

Messages : 83
Localisation : Tours
Projet Actuel : Développez le monde parallèle

Position d'un point dans l'espace - 3D Empty
MessageSujet: Re: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D EmptyMer 20 Fév 2013 - 16:29

Désolé apparemment je me suis mal exprimé, en fait je voudrait si mon point(instance en réalité) se trouve sur la ligne de la boule A à la boule B .

J'espère que tu comprend mieux sweat
Revenir en haut Aller en bas
http://Shurigame41.wix.com/home
Shurigame
Habitué
Shurigame

Messages : 83
Localisation : Tours
Projet Actuel : Développez le monde parallèle

Position d'un point dans l'espace - 3D Empty
MessageSujet: Re: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D EmptyMer 20 Fév 2013 - 16:40

J'ai commencé par des condition mais, cela me restreignait l’espace en x y et z de cette façon :
tout les rond bleu dans la zone dans les pointillés vert répondrait vrai.
Spoiler:
 
J'espère que ça pourra aider
Revenir en haut Aller en bas
http://Shurigame41.wix.com/home
onilink_
Modérateur
onilink_

Messages : 9104
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Position d'un point dans l'espace - 3D Empty
MessageSujet: Re: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D EmptyMer 20 Fév 2013 - 16:44

http://www.games-creators.org/wiki/Intersection_dans_l'espace_entre_une_sph%C3%A8re_et_une_droite

Ça reste quand même plutôt lourd comme calcul.
Je te conseille vivement de mettre ton perso dans une AABB pour faire des tests préliminaires avant d'utiliser ça x)

_________________
Position d'un point dans l'espace - 3D Runningpotato1Position d'un point dans l'espace - 3D TvF6GED Position d'un point dans l'espace - 3D MdetltS
Revenir en haut Aller en bas
Shurigame
Habitué
Shurigame

Messages : 83
Localisation : Tours
Projet Actuel : Développez le monde parallèle

Position d'un point dans l'espace - 3D Empty
MessageSujet: Re: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D EmptyMer 20 Fév 2013 - 16:54

Ta raison là ça commence à faire lourd surtout que j'ai pas que 1os à tester, il va falloir que je trouve une manière rapide de faire exécuter ça.
Sinon j’avais pensé a déterminer l'équation de la droite en x,y et x,z et y,z, mais ça aurait été encore plus galère.

Après je te pose une suggestion d'un ami, qui me demande si il serait possible de faire tourner à coté, sans le voir, le monde vue de x,z et y,z.

En fait, il propose de faire le test standard de collision sprite sur 3 système.
J'espère que tu as compris l’idée.

Merci déjà de l'aide apportée
Revenir en haut Aller en bas
http://Shurigame41.wix.com/home
-Coco-
Utilisateur confirmé: Rang ***
-Coco-

Messages : 545
Localisation : Grenoble - Montpellier
Projet Actuel : Orion VII - 0%

Position d'un point dans l'espace - 3D Empty
MessageSujet: Re: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D EmptyMer 20 Fév 2013 - 17:00

Surtout qu'il y a une différence entre appartenir à une droite et se trouver dans une zone, y'en a un où il faut de l'approximation.
Mais (je sais pas où tu en es niveau études), tu peux en effet facilement calculer l'équation d'une droite entre 2 points, puis calculer la distance du point à la droite à partir de l'équation (y'a des formules pas si lourdes que ça). En gros tu fais que si cette distance est inférieure à un seuil (diamètre du bras par exemple), eh bien il y a collision... Je te laisse rechercher les formules, j'en ai qui traînent dans un des mes 7 cahiers de maths de l'année mais j'avoue avoir la flemme de chercher... Mais si tu trouves pas au pire je chercherai.
(Cherche "distance point droite" pour la formule, et je te laisse te débrouiller pour l'équation). Les calculs sont pas si lourds que ça par rapport à ce que fait un moteur physique classique...

_________________
Oh, snap.


Dernière édition par -Coco- le Mer 20 Fév 2013 - 17:03, édité 2 fois
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_

Messages : 9104
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Position d'un point dans l'espace - 3D Empty
MessageSujet: Re: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D EmptyMer 20 Fév 2013 - 17:02

Que ce soit en 2d ou en 3d y a quasiment autant de calculs a faire. Ce seras aussi lent, voir même plus.

Ce que j'aurais fait a ta place, c'est un truc du genre:

1) Tu définis une AABB pour ton perso, et une AABB pour la balle qui doit tester la collision.
Tu teste avant tout s'il y a collision entre les deux AABB.

S'il y a collision, tu fait les tests dont les calculs sont plus lourd pour vérifier.

L'idéal serais de trouver comment optimiser le test du calcul un peu plus lourd. Tu pourrais par exemple calculer la distance entre ta sphère et ta droite

Edit: La formule de coco c'est un truc du genre d'après mes souvenirs:
Pour une droite d'équation ax + by + cz + d = 0
La distance est (a*x + b*y + c*z + d)/sqrt(a*a + b*b + c*c)

_________________
Position d'un point dans l'espace - 3D Runningpotato1Position d'un point dans l'espace - 3D TvF6GED Position d'un point dans l'espace - 3D MdetltS
Revenir en haut Aller en bas
Shurigame
Habitué
Shurigame

Messages : 83
Localisation : Tours
Projet Actuel : Développez le monde parallèle

Position d'un point dans l'espace - 3D Empty
MessageSujet: Re: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D EmptyMer 20 Fév 2013 - 17:09

Oui coco c'est une bonne idée ( pour l'info je suis en 1ere ), mais il y a toujour le même probleme c'est qu'il faut le faire 3 fois par os pour x y z et en plus j'ai 19 os.

Merci pour l'aide quand même
Revenir en haut Aller en bas
http://Shurigame41.wix.com/home
-Coco-
Utilisateur confirmé: Rang ***
-Coco-

Messages : 545
Localisation : Grenoble - Montpellier
Projet Actuel : Orion VII - 0%

Position d'un point dans l'espace - 3D Empty
MessageSujet: Re: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D EmptyMer 20 Fév 2013 - 17:14

En fait non, ma super formule donne la valeur absolue de la distance dans l'espace (en gros c'est la distance entre le point et le projeté du point sur la droite = le point le plus proche) et non seulement selon les composantes x, y et z. Donc une seule formule Smile
Par contre le problème que tu risques d'avoir c'est qu'une droite se prolonge à l'infini, donc si le point est DERRIERE les boules c'est possible que la détection se fasse quand même. Soit tu allourdis la formule pour éviter ça (par exemple en vérifiant la position du projeté et vérifier que ça se situe bien entre les 2 boules), soit comme oni l'a dit, tu fais une AABB autour et tu estimes que si c'est dans la boîte, même si la collision a lieu derrière l'os c'est pas si grave.

_________________
Oh, snap.
Revenir en haut Aller en bas
Shurigame
Habitué
Shurigame

Messages : 83
Localisation : Tours
Projet Actuel : Développez le monde parallèle

Position d'un point dans l'espace - 3D Empty
MessageSujet: Re: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D EmptyMer 20 Fév 2013 - 17:16

J'ai testé l'équation pour l'intersection d'une sphère avec une droite dans l'espace
onilink_ a écrit:
http://www.games-creators.org/wiki/Intersection_dans_l'espace_entre_une_sph%C3%A8re_et_une_droite

Ça reste quand même plutôt lourd comme calcul.
Je te conseille vivement de mettre ton perso dans une AABB pour faire des tests préliminaires avant d'utiliser ça x)

Code:

  // A 
  Ax = squelette.x2[1]
  Ay = squelette.y1[1]
  Az = squelette.z1[1]
  //B
  Bx = squelette.x2[2]
  By = squelette.y1[2]
  Bz = squelette.z1[2]
  //C
  Cx = xt
  Cy = yt
  Cz = zt
 
  //ax²+bx+C
  a = (Bx - Ax) * (Bx - Ax) + (By - Ay) * (By - Ay) + (Bz - Az) * (Bz - Az);
  b  = 2 * ((Bx - Ax) * (Ax - Cx) + (By - Ay) * (Ay - Cy) + (Bz - Az) * (Az - Cy));
  c = Ax * Ax + Ay * Ay + Az * Az + Cx * Cx + Cy * Cy + Cz * Cz - 2 * (Ax * Cx + Ay * Cy + Az * Cz) - Rayon * Rayon;
 
  if (b * b - 4 * a * c) >= 0 then {touch=true;show_message('touch')}

Mais ça me répond constament, à peine lancé, "touch".

_________________
01100011011011110110111001101110011001010110001101110100011001010010000001110100011011110110100100100000011100110111
010101110010001000000110110001100001001000000110110101100001011101000111001001101001011100110010000001100101011101000010
000001110100011101010010000001100100011001010110001101101111011101010111011001110010011010010111001001100001001000000111
010101101110001000000110110101101111011011100110010001100101001000000111000001100001011100100110000101101100011011000110
0101011011000110010100100000011001100110000101110011011100110110100101101110011000010110111001110100
Revenir en haut Aller en bas
http://Shurigame41.wix.com/home
D-z
Utilisateur confirmé: Rang *****
D-z

Messages : 1611
Localisation : Montpellier

Position d'un point dans l'espace - 3D Empty
MessageSujet: Re: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D EmptyMer 20 Fév 2013 - 19:52

Calculer la distance de la balle aux deux articulations, faire leur somme, et comparer avec la distance entre les articulations ? En-dessous d'un seuil, tu considères que ça touche.

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
Shurigame
Habitué
Shurigame

Messages : 83
Localisation : Tours
Projet Actuel : Développez le monde parallèle

Position d'un point dans l'espace - 3D Empty
MessageSujet: Re: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D EmptyMer 20 Fév 2013 - 20:07

Bonsoir D-z,

En effet ça parait une bonne idée : "peu" de calcul a effectuer, mais le problème c'est qu'il faut le faire 2 fois par os et j'ai 19 os.

Ceci semble quand même une des meilleur option,merci
Revenir en haut Aller en bas
http://Shurigame41.wix.com/home
onilink_
Modérateur
onilink_

Messages : 9104
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Position d'un point dans l'espace - 3D Empty
MessageSujet: Re: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D EmptyMer 20 Fév 2013 - 20:13

Si t'utilise des AABB avant tes calculs pour vérifier que la balle est dans la zone du joueur, ça devrais passer tranquille.

_________________
Position d'un point dans l'espace - 3D Runningpotato1Position d'un point dans l'espace - 3D TvF6GED Position d'un point dans l'espace - 3D MdetltS
Revenir en haut Aller en bas
Shurigame
Habitué
Shurigame

Messages : 83
Localisation : Tours
Projet Actuel : Développez le monde parallèle

Position d'un point dans l'espace - 3D Empty
MessageSujet: Re: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D EmptyMer 20 Fév 2013 - 20:14

Mais depuis le début onilink_ tu parle de AABB et j'ai beau chercher dans le forum je voit pas de quoi tu parle
Revenir en haut Aller en bas
http://Shurigame41.wix.com/home
Shurigame
Habitué
Shurigame

Messages : 83
Localisation : Tours
Projet Actuel : Développez le monde parallèle

Position d'un point dans l'espace - 3D Empty
MessageSujet: Re: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D EmptyMer 20 Fév 2013 - 20:42

Je pense avoir trouvé une solution, dites-moi ce que vous en pensez :
J'ai créé un sprite en plaçant un screen_save_part() dans le code de l'animation : sweat
Position d'un point dans l'espace - 3D Sprite10
Ensuite je vait faire la collision en 3 partie : sweat
  1. collision sprites
  2. chercher le sphère ( en jaune ) la plus proche
  3. comparaison entre obj_bullet.z et z1[i] ( z de la sphère la plus proche )


Alors ? Qu'est ce que vous en pensez, j'ai un peu d'expérience mais pas autant que vous gnii
Revenir en haut Aller en bas
http://Shurigame41.wix.com/home
onilink_
Modérateur
onilink_

Messages : 9104
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Position d'un point dans l'espace - 3D Empty
MessageSujet: Re: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D EmptyMer 20 Fév 2013 - 21:45

AABB c'est Axis Aligned Bounding Box.
En gros une boite, et les collisions entre 2 boites sont super simples a gérer, juste quelques conditions.

Sinon pour ton truc la c'est du bricolage, ça a pas l'air très pratique...

_________________
Position d'un point dans l'espace - 3D Runningpotato1Position d'un point dans l'espace - 3D TvF6GED Position d'un point dans l'espace - 3D MdetltS
Revenir en haut Aller en bas
Shurigame
Habitué
Shurigame

Messages : 83
Localisation : Tours
Projet Actuel : Développez le monde parallèle

Position d'un point dans l'espace - 3D Empty
MessageSujet: Re: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D EmptyMer 20 Fév 2013 - 21:51

Oui je sais que c'est un peut du bricolage, mais normalement ça marche
mais là justement j'ai un problème, voici mon code :
Code:

Other = instance_position(xt,yt,squelette)
        if Other!=-4 then {
        test=2
        for (i=0; i<19; i+=1)
        {
            if point_distance(x,y,squelette.x2[i],squelette.y1[i])<=1 then {
            test=3
            if point_distance(x,z,squelette.x2[i],squelette.z1[i])<=1 then {
            test=4
            if point_distance(y,z,squelette.y1[i],squelette.z1[i])<=1 then {
            test=5
            instance_create(xf,yf,eft_impact)
            touch = true}}};
        };     
        }
Mais alors que je regarde en plein dedans il s’arrête à test=2, en clair il me dit qu'il traverse le sprite sans rencontrer aucune sphère.
Je vois pas l'incohérence dans ce code. Est ce que tu voit ?

De plus je voudrait bien en apprendre plus sur tes
onilink_ a écrit:
Axis Aligned Bounding Box
, stp.
Revenir en haut Aller en bas
http://Shurigame41.wix.com/home
Shurigame
Habitué
Shurigame

Messages : 83
Localisation : Tours
Projet Actuel : Développez le monde parallèle

Position d'un point dans l'espace - 3D Empty
MessageSujet: Re: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D EmptyMer 20 Fév 2013 - 22:03

C'est bon j'ai corrigé mais erreur de variable, x au lieu de xt ...etc
Voilà ça marche sans laguer mais il reste un petit problème c'est qu'il detecte qu'au niveau des articulation donc de mes sphère.
Revenir en haut Aller en bas
http://Shurigame41.wix.com/home
Shurigame
Habitué
Shurigame

Messages : 83
Localisation : Tours
Projet Actuel : Développez le monde parallèle

Position d'un point dans l'espace - 3D Empty
MessageSujet: Re: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D EmptyMer 20 Fév 2013 - 22:04

Voilà le code corrigés pour voir : gnii
Citation :

Other = instance_position(xt,yt,squelette)
if Other!=-4 then {
test=2
for (i=0; i<19; i+=1)
{
if point_distance(xt,yt,squelette.x2[i],squelette.y1[i])<=1 then {
test=3
if point_distance(xt,zt,squelette.x2[i],squelette.z1[i])<=1 then {
test=4
if point_distance(yt,zt,squelette.y1[i],squelette.z1[i])<=1 then {
test=5
instance_create(xf,yf,eft_impact)
touch = true}}};
}
}
Revenir en haut Aller en bas
http://Shurigame41.wix.com/home
onilink_
Modérateur
onilink_

Messages : 9104
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

Position d'un point dans l'espace - 3D Empty
MessageSujet: Re: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D EmptyMer 20 Fév 2013 - 22:13

Shurigame alias triplepostman.
T'as un bouton editer en haut a droite.

_________________
Position d'un point dans l'espace - 3D Runningpotato1Position d'un point dans l'espace - 3D TvF6GED Position d'un point dans l'espace - 3D MdetltS
Revenir en haut Aller en bas
Shurigame
Habitué
Shurigame

Messages : 83
Localisation : Tours
Projet Actuel : Développez le monde parallèle

Position d'un point dans l'espace - 3D Empty
MessageSujet: Re: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D EmptyMer 20 Fév 2013 - 22:18

Ah oui sorry
Revenir en haut Aller en bas
http://Shurigame41.wix.com/home
-Coco-
Utilisateur confirmé: Rang ***
-Coco-

Messages : 545
Localisation : Grenoble - Montpellier
Projet Actuel : Orion VII - 0%

Position d'un point dans l'espace - 3D Empty
MessageSujet: Re: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D EmptyJeu 21 Fév 2013 - 16:43

Tu sais que 100 calculs par frame (ou même le triple) c'est absolument rien pour un processeur de base ?
C'est la principale différence entre un ordi et une Ti 83 x)

_________________
Oh, snap.
Revenir en haut Aller en bas
Shurigame
Habitué
Shurigame

Messages : 83
Localisation : Tours
Projet Actuel : Développez le monde parallèle

Position d'un point dans l'espace - 3D Empty
MessageSujet: Re: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D EmptyJeu 21 Fév 2013 - 17:02

Ca je le voit bien, j'aurai fait ça sur ma caltos elle aurait grillée gnii

PN : J'ai fait des prog sous Casio
Revenir en haut Aller en bas
http://Shurigame41.wix.com/home
Térence
Utilisateur confirmé: Rang *****
Térence

Messages : 2213
Localisation : Oui

Position d'un point dans l'espace - 3D Empty
MessageSujet: Re: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D EmptyJeu 21 Fév 2013 - 17:46

Shurigame a écrit:
Ca je le voit bien, j'aurai fait ça sur ma caltos elle aurait grillée gnii

PN : J'ai fait des prog sous Casio
J'ai fait un mario : 5-10s de chargement pour le niveau, pareil si tu veux changer de niveau (mais faut encore le charger après...) et de nouveau 5-10 secondes si tu veux enlever les caisses....
Donc, si je veux faire un niveau avec mon éditeur de map, il faut charger le niveau dans la matrice de l'éditeur, attendre qu'il la charge (2secondes), recharger la map dans le jeu, attendre le chargement de la map le premier pour mettre la map dans la matrice et le deuxième pour l'afficher), et a la fin nettoyer la map...
Donc en gros, quand je fait un niveau, je passe environ 40s a chaque test...
Donc qu'on arrête de se plaindre de la vitesse de GM guns
Revenir en haut Aller en bas
-Coco-
Utilisateur confirmé: Rang ***
-Coco-

Messages : 545
Localisation : Grenoble - Montpellier
Projet Actuel : Orion VII - 0%

Position d'un point dans l'espace - 3D Empty
MessageSujet: Re: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D EmptyJeu 21 Fév 2013 - 18:41

En fait c'était pour dire que t'as pas trop d'inquiétude à avoir au niveau quantité de calculs à effectuer.
Et sinon je ne dénie pas les capacités de la TI (ou casio), c'est juste qu'elle a un processeur à 60 hz (pour avoir programmé en assembleur dessus, je peux garantir qu'on peut tout de même réussir à en sortir des programmes franchement intéressants)

_________________
Oh, snap.
Revenir en haut Aller en bas
Contenu sponsorisé




Position d'un point dans l'espace - 3D Empty
MessageSujet: Re: Position d'un point dans l'espace - 3D   Position d'un point dans l'espace - 3D Empty

Revenir en haut Aller en bas
 
Position d'un point dans l'espace - 3D
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» savoir la position de l'enfant dans son ventre
» Stopper un hoquet tenace.
» Chaussures "Qui courait dans l'herbe"
» Position des jambes en Manduca
» les objets nécessaires à l'homme....et dans la vraie vie

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide confirmés-
Sauter vers: