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 :

Déterminer les personnes qui peuvent voir quelqu'un


Sujet :

Développement 2D, 3D et Jeux

  1. #21
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Tu gère une foule de plusieurs milliers d'individu ?
    Potentiellement oui.

    En fait j'ai deux choix :
    - pour chaque personne potentiellement visible, synthétiser quelques rayons vers A. La synthèse peut se résumer à des rayons vers les extrémités, ce qui devrait suffire.
    - synthétiser un grand nombre de rayons depuis A dans l'espace potentiellement visible. La synthèse de rayons doit être intelligente (on part d'une distribution aléatoire et si on intersecte un truc, on ré-essaye sur le bord du truc en question, etc).

    Pour les foules rapprochées, le deuxième algo est mieux, mais dans le cas général le premier algo doit être plus performant.
    Dans le cas où il y a foule, une solution toute bête avec l'algo 1 c'est que si le nombre de gens dans l'espace potentiellement visible est trop grand de le réduire, tout simplement.
    Boost ftw

  2. #22
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 104
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par loufoque Voir le message
    Donc en fait, pour toutes les personnes, je lance plusieurs rayons vers A (suffisamment pour que l'écart entre deux rayons soit inférieur à la taille minimum d'un objet) et je regarde s'ils arrivent jusqu'au bout.
    Ça, ça va être très lent.
    tu peux aussi lancer une sphere plutot qu'un rayon

    pour limiter les tests :
    - utiliser la distance max au carré et enlever ceux qui sont trop loin
    - faire le produit scalaire entre un vecteur partant tout droit depuis la camera et un vecteur partant de la cam vers le perso. sans normaliser les vecteurs si <0 perso derriere la camera.

    apres deux possibilitées supplémentaires :
    a - normaliser les vecteurs et refaire le calcul si cos-1(produitscalair)>FOV/2 (avec FOV == angle de vue en diagonal) perso en dehors du champ de vision
    b - calculer les quatres equations plan de clipping (ax+by+cz+d=0) gauce,droit, haut et bas (frustrum culling, a faire une seul fois) et calculer la distance à ces plan pour chaque perso d=a*xperso+b*yperso+c*zperso+d si un seul resultat <0 ou plutot <rayonperso , le perso est en dehors du champ de vision.

    une autre solution peu consister à rendre le zbuffer en basse résolution sans ou avec les persos, et a convertir les position des perso en 2d sur l'ecran pour tester si il sont visible en z.

    cela dit il me semble que le lancer de rayon est la meilleur solution, ca depent du moteur 3d que tu utilisera.

  3. #23
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    tu peux aussi lancer une sphere plutot qu'un rayon
    Un rayon, ça peut facilement ignorer des parties de l'espace lorsqu'un cherche les objets intersectés. Une sphère, ça intersecte tout l'espace.
    Avec un rayon, ce qu'on cherche, c'est l'objet qu'on intersecte le plus proche. Avec une sphère, ça n'a pas de sens : il nous faudrait trouver
    La sphère, elle intersecte tout l'espace. Et en plus, on devrait trouver tous les objets intersectés qui ne sont pas les uns derrière les autres.

    Franchement, je comprends pas du tout cette proposition.
    Si c'est juste pour déterminer les objets à portée, y'a bien plus efficace...
    Boost ftw

  4. #24
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 104
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par loufoque Voir le message
    Un rayon, ça peut facilement ignorer des parties de l'espace lorsqu'un cherche les objets intersectés. Une sphère, ça intersecte tout l'espace.
    Avec un rayon, ce qu'on cherche, c'est l'objet qu'on intersecte le plus proche. Avec une sphère, ça n'a pas de sens : il nous faudrait trouver
    La sphère, elle intersecte tout l'espace. Et en plus, on devrait trouver tous les objets intersectés qui ne sont pas les uns derrière les autres.

    Franchement, je comprends pas du tout cette proposition.
    Si c'est juste pour déterminer les objets à portée, y'a bien plus efficace...
    en fait c'est juste que ca permet de lancer un rayon qui a une certaine epaisseur. par exemple si on veut considerer visibles les perso sdont on peu voir entierement la tete on peut lancer une sphere avec un rayon égale au rayon de la tete, si la sphere passe toute la tete est visible.

    NB: je trouve que le lancer de rayon est un cas particulier du lancer de sphere avec rayon==0

  5. #25
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    C'est pas une sphère alors, mais un rayon épais ou un cylindre demi-infini.
    Je vois ce que tu veux dire alors. Mais du coup, ça ne trouvera comme visible que si c'est visible intégralement.
    Boost ftw

  6. #26
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 104
    Points : 95
    Points
    95
    Par défaut
    oui, dsl, je me suis mal exprimé, et en ce moment je bosse bcp sur les sphere c'est pour ca , disons que dans le cas du rayon on lance un point dans le cas du rayon epais on lance une sphere.

    c'etait juste une suggestion suivant ce que l'on veut faire le rayon simple peu renvoyer vrai alors qu'un seul pixel est visible, un rayon epais demande pas bcp plus de calcul et permet de renvoyer vrai si il y'a un partie que l'on veu visible entierement, exemple le visage, le tshirt etc... les deux sont à utiliser suivant ce qu l'on veu faire

  7. #27
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Idéalement ce serait bien de connaître à quel point le personnage est vu, donc ça peut être utile.
    Boost ftw

Discussions similaires

  1. Réponses: 30
    Dernier message: 19/03/2015, 14h12
  2. Réponses: 2
    Dernier message: 13/06/2011, 16h29
  3. Comment limiter les personnes qui apparaissent dans l'annuaire?
    Par gabkeystone dans le forum SharePoint
    Réponses: 0
    Dernier message: 03/01/2008, 18h05
  4. Réponses: 3
    Dernier message: 16/06/2007, 19h47
  5. [Requête]Déterminer les articles qui ont plus de 6 mois
    Par soso78 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 18/04/2007, 14h43

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