PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → Hors-sujet → Image 2D en 3D (projet GDImage)
Image 2D en 3D (projet GDImage)
Débuté par Patrice TERRIER, 09 jan. 2015 15:54 - Aucune réponse
Membre enregistré
150 messages
Popularité : +15 (15 votes)
Posté le 09 janvier 2015 - 15:54
Ce projet WD17, transforme n'importe quelle image 2D en un nuage de particules 3D.
Le nuage de particules est composé de 131072 points qui peuvent être animés en temps réel.

Vous pouvez choisir l'une des images dont le nom figure dans la liste qui se trouve en bas à droite.
Ou utiliser le tiré déplacé depuis l'explorateur, avec une image de type .png, .jpg, .gif, .tif, .bmp de n'importe quelle taille.

Le code WinDev est l'exacte transposition d'un projet C++ écrit avec Visual Studio (source disponible sur demande).
A l'exception du nuage de particule dont le rendu est effectué par l'API GDImage "GL_DrawCloud", l'ensemble du traitement temps réel est effectué dans la procédure "gl_DrawScene".

Les performances de la version WinDev sont identiques à celles du C++, car les traitements critiques sont effectués par GDImage qui utilise les extensions OpenGL implantées au niveau du GPU (carte graphique).
Avec un I7 multi cœur et une bonne carte graphique, l'utilisation CPU est inférieure à 1%, même lorsque l'option animation est cochée.

Capture d'écran:



(application "skinnée" avec le thème "Scaff" de WinLIFT)

Utilisation du zoom :
Vous pouvez utiliser indifféremment la molète centrale de la souris, ou le potentiomètre vertical.

Utilisation de la souris :
Le bouton gauche permet de voir l'image sous tous les angles.
Le bouton droit permet d'effectuer une translation selon l'axe horizontal ou vertical.

Changement de palette :
Choisir dans liste l'un des noms préfixé par "pal_".
Sélectionner "pal_image.png" pour revenir aux couleurs d'origine de l'image.
Note : le changement de palette concerne uniquement le nuage de particules.

A propos du code source :
Il est destiné aux programmeurs qui connaissent la syntaxe du SDK Windows bas niveau,
Il utilise directement la "Flat API" pour privilégier la vitesse et limiter la taille en utilisant le framework WinDev minimum.
A savoir uniquement 3 DLL(s) :
1 - "Machine virtuelle"
2 - "Fonctions mathématiques"
3 - "Fonctions standard"
Le point d'entrée du programme se trouve dans la procédure dont le nom est "MainWindow" qui est appelé directement depuis le code du projet.
Il n'y a ni fenêtre ni aucun champ WinDev, la fenêtre principale et les fenêtres filles sont créées directement avec l'API "CreateWindowEx".
Le conteneur GDImage/OpenGL est subclassé dans la fonction "gl_WndProc" afin de pouvoir interagir avec la souris et gérer le "drag and drop".
Le traitement temps réel est effectué à une fréquence de 60Hz compatible avec celle de DirectDraw.
Le "SkinEngine" "WinLIFT"fonctionne en mode DWM composé (visible au niveau du dégradé dessiné autour de la fenêtre principale lorsqu'on la déplace sur un fond blanc).
Le déplacement ou le redimensionnement de la fenêtre principale ne bloque pas l'animation lorsque celle-ci est active.

A quoi çà sert :
Outre son aspect ludique, le nuage de point peut servir dans le cadre de rendu de surfaces géodésiques, ou pour représenter des niveaux de températures avec une finesse plus précise que celle des cartes météo classiques.
Il est également possible d'utiliser des vecteurs à la place du nuage de points, ou d'utiliser des points de tailles variables.

Lien de téléchargement :
http://www.zapsolution.com/preview/pix3D_32.zip

Note : Le projet a été créé avec WD17, mais il devrait fonctionner sans problème avec les versions supérieures.
Vous devez débloquer le ZIP avant de décompresser les fichiers pour éviter tout problème d'UAC.

--
Patrice Terrier
www.zapsolution.com