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

WebGL Discussion :

WebGL pour affichage de nuage de points en temps réel


Sujet :

WebGL

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 22
    Points : 18
    Points
    18
    Par défaut WebGL pour affichage de nuage de points en temps réel
    Bonjour,

    J'ai commencé les tutos du site sur WebGL (http://jeux.developpez.com/tutoriels...e-carre-webgl/), mais avant de continuer (pour savoir si je continue), j'aurais besoin d'un éclaircissement technique sur l'affichage temps réel :
    J'affiche des nuages de points en temps réel acquis par un lidar mobile.
    Je souhaite compléter mon affichage au fur et à mesure de l'acquisition, sans supprimer les points déjà affichés, et surtout sans les recharger.
    Par exemple si je reçois un nuage de points toutes les secondes sur une durée de 10 secondes, je ne veux pas que mon 1er nuage de points soit traité 10 fois (sinon je perds beaucoup en performance, alors que c'est un critère clé de choix de technologie pour mon application) !! Je voudrais avoir à traiter toutes les secondes uniquement mon nouveau nuage de points et qu'il vienne compléter le nuage existant (nuage global que je souhaite pouvoir manipuler à travers la souris avec zoom, rotations, translations).

    Qu'en pensez-vous ?

    Merci pour vos commentaires !

  2. #2
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Hello,

    Sur une image fixe (sans rotation / translation / zoom), tu peux te permettre de simplement dessiner les nouveaux points par dessus (sans effacer l'image donc).

    Mais au moindre mouvement il faudra redessiner l'image complète (là tu n'as pas le choix, la 3D ça marche comme ça).

    De combien de points on parle ici ? Quelques centaines ? Milliers ? Plus ?
    Tant qu'il n'y à pas trop de points, tout redessiner ne devrait pas poser de problèmes.

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Merci pour ta réponse Iradrille.
    Il s'agit d'une dizaine de millions de points. ca risque de faire beaucoup pour se ballader dedans.
    Je pense que je vais supprimer cette option de déplacement.
    Et partir aussi sur une autre idée : un affichage d'un échantillon du nuage global relatif à l'acquisition à l'instant t.
    c'est à dire je garde le nuage de t-2 et t-1 en ajoutant celui de t. à t+1, je garde celui de t et t-1. Celui de t-2 disparait et celui de t+1 apparait.
    Du coup je garde beaucoup moins de points (environ 100 000 voire beaucoup moins) , par contre je réactualise l'affichage régulièrement: à t j'ai 3 blocs de nuages de points :tout en haut celui de t, au milieu celui de t-1, en bas celui de t-2 ; à t+1 le nuage de t passe au milieu, celui de t-1 en bas et celui de t+1 en haut.
    Avec glBufferSubData ça m'a l'air faisable. peut etre aussi three.js ? je vais explorer.

  4. #4
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    Citation Envoyé par olap75 Voir le message
    Merci pour ta réponse Iradrille.
    Il s'agit d'une dizaine de millions de points. ca risque de faire beaucoup pour se ballader dedans.
    Je pense que je vais supprimer cette option de déplacement.
    Çà fait beaucoup trop pour avoir un rendu fluide (i.e. 60 fps lors de translation / zoom / etc..).
    Mais il est toujours possible d'afficher un rendu simplifié lors d'un déplacement (par exemple quelques dizaines / centaines de milliers de points - soit choisis au hasard, soit ceux qui représentent le mieux l'objet, mais ça demande pas mal de calculs de trouver les meilleurs points à afficher). Ou même une simple bounding box.

    Tu peux aussi réduire le nombre de points : si 2 points sont trop proches tu n'en garde qu'un (soit le premier, soit tu fais une moyenne pondérée pour replacer le point unique au centre des points qu'il remplace -> ajout de nouveaux points plus lent, mais affichage plus rapide).
    Avec un nombre aussi important de points (plus de points que de pixels à-priori), si tu ne les regroupes pas de manière trop agressive tu ne devrais pas voir de différence visuelle.

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Oui j'ai ça en tête de simplifier l'affichage si déplacement avec la prise en compte d'une fraction du nuage global.
    Effectivement plus de points a l'affichage que de pixels, ca n'a pas de sens.

    comme j'ai besoin d'avoir un truc qui marche dans un premier temps, je vais me concentrer sur la 2eme méthode que j'envisageais :
    un affichage fidèle à l'acquisition locale de mon nuage de points. Beaucoup moins de points, pas de déplacement via la souris, mais un rafraichissement régulier de l'affichage de manière à afficher une fraction de la nouvelle acquisition, tout en gardant le contexte, c'est à dire une fraction de l'acquisition précédente qu sera déplacée plus bas dans l'affichage (je garde en haut de l'affichage l'acquisition la plus récente, et je décale vers le bas les anciennes).

    En fait je me demandais si je ne devrais pas utiliser PCL (Point Cloud Library) pour ce genre de traitement. Mais j'ai peur de devoir maintenir à jour plusieurs versions selon l'environnement (linux, windows). Et je ne connais pas non plus bien PCL.

    L'intérêt que je vois avec webGL est d'avoir une seule version. Mais je n'aurais pas besoin spécifiquement d'un échange réseau, via internet. Ca se fera en local, sur une machine de type PC (je ne pourrai pas implémenter cela sur tablette ou autre terminal plus léger because j'ai besoin de récupérer les data via un signal radio, et ce serait un peu lourd de gérer ça autrement que sur PC).
    Si tu connais PCL Iradrille ou que tu vois d'autres avantages pour webGL , je suis preneur de toute info. Aussi , je vais jeter un oeil sur three.js.
    Je vais peut etre ouvrir une nouvelle question pour un comparatif PCL/webGL

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/05/2013, 11h43
  2. Réponses: 3
    Dernier message: 23/11/2012, 11h45
  3. Réponses: 2
    Dernier message: 27/06/2012, 06h30
  4. Réponses: 10
    Dernier message: 05/03/2010, 14h37
  5. affichage d'un nuage de points
    Par ryma87rh dans le forum C++Builder
    Réponses: 6
    Dernier message: 19/03/2009, 17h54

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