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

Composants FMX Delphi Discussion :

Problème Tlight en mode Spot


Sujet :

Composants FMX Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 11
    Par défaut Problème Tlight en mode Spot
    Bonjour,

    vieux programmeur en VCL je profite du confinement pour suivre le #Bootcamp (https://www.youtube.com/playlist?lis...Z4O_YvVgl_1nOp) et j'ai voulu testé la 3D dans fmx

    je crée un nouveau projet
    je place un viewport et align client

    je place un TLightMaterialSource en laissant tout par défaut
    je place un TRectangle3D position X0 Y0 Z0 et propriété MaterialSource sur LightMaterialSource1

    je place un Tlight position X0 Y0 Z-3

    la face avant du TRectangle3D devient bien blanche
    je met rotationAngle.Y à 45 et la face est bien moins lumineuse comme attendu.

    Nom : 45deg directionnal ok.png
Affichages : 266
Taille : 4,6 Ko

    par contre en mode lighttype = spot ça ne marche pas du tout :
    Angle 45 on voit bien un effet :
    Nom : 45deg spot ok.png
Affichages : 250
Taille : 7,0 Ko
    Angle 0 l'effet attendu serait une zone centrale blanche et quand on joue avec le plot rouge cela ne marche pas du tout comme on voudrait.
    Nom : 0 deg spot Nok.png
Affichages : 254
Taille : 2,6 Ko

    Pensez vous que j'ai fait une erreur ou c'est un bug de fmx ?


    J'ai refait ce week end l'application sur mon téléphone qui était une simple vue de dessus basique pour gérer ma maison domotisée,
    j'ai de l'animation de la caméra pour visualiser les étages cela rend bien, et je pensais pouvoir du coup gérer des halos de lumières là où les lumières étaient allumées mais ça ne marche pas comme je veux...
    si j'arrive à faire marcher cela, alors elle sera vraiment top comme appli

    Nom : multispot.png
Affichages : 242
Taille : 138,8 Ko

  2. #2
    Membre Expert
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 543
    Billets dans le blog
    10
    Par défaut
    Voici un petit exemple qui peut te donner des idées
    Nom : Annotation 2020-04-21 085104.png
Affichages : 249
Taille : 39,5 Ko

    Je n'utilise jamais de caméra mais un TDummy (ici dummy2) que je déplace ou je tourne
    Fichiers attachés Fichiers attachés

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 11
    Par défaut
    Merci pour la réponse et cela me conforte dans mon idée : il y a bien un truc bizarre mais peut être que sur les surface planes.

    dans ton exemple si on modifie la valeur SpotExponent on voit très nettement l'effet sur de disque du bas.
    si dans ton exemple tu remplace la sphere applati du bas par un TRectangle3D, on voit bien qu'il n'y a plus l'effet spot.
    je me suis dit que peut être la forme arrondi arrangeait mais même sur le Troundcube3D on a le problème


    Nom : Annotation 2020-04-21 134835.png
Affichages : 327
Taille : 12,2 KoNom : Annotation 2020-04-21 134634.png
Affichages : 345
Taille : 12,3 Ko
    Nom : Annotation 2020-04-21 134424.png
Affichages : 329
Taille : 13,5 KoNom : Annotation 2020-04-21 134614.png
Affichages : 329
Taille : 12,4 Ko

    sur la roundcube je lui ai mis le spot en plein dessus et il a pas de lumière.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 11
    Par défaut
    sinon pour l'utilisation de la TCamera j'ai du coup utiliser la propriété Target sur un TDummy qui permet de ne gérer que les positions X Y et Z et pas besoin de recalculer les angles pour la visée.

  5. #5
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par Brainema Voir le message
    Merci pour la réponse et cela me conforte dans mon idée : il y a bien un truc bizarre mais peut être que sur les surface planes.

    dans ton exemple si on modifie la valeur SpotExponent on voit très nettement l'effet sur de disque du bas.
    si dans ton exemple tu remplace la sphere applati du bas par un TRectangle3D, on voit bien qu'il n'y a plus l'effet spot.
    je me suis dit que peut être la forme arrondi arrangeait mais même sur le Troundcube3D on a le problème


    Nom : Annotation 2020-04-21 134835.png
Affichages : 327
Taille : 12,2 KoNom : Annotation 2020-04-21 134634.png
Affichages : 345
Taille : 12,3 Ko
    Nom : Annotation 2020-04-21 134424.png
Affichages : 329
Taille : 13,5 KoNom : Annotation 2020-04-21 134614.png
Affichages : 329
Taille : 12,4 Ko

    sur la roundcube je lui ai mis le spot en plein dessus et il a pas de lumière.
    c'est un phénomène normal qui est lié au nombre de facettes de la figure.

    un cercle est constitué d'un éventail de triangles alors que le RoundCube est composé de 2 triangles (plus des petites sur les bords pour l'arrondir)

    voici ce que ça donne avec un TPlane de base et un TPlane avec SubidivisionWidth et Height à 10 (c'est donc une grille de 10x10 carrés)

    Nom : plane.png
Affichages : 234
Taille : 86,1 Ko

    j'avais fait la même chose il y a fort longtemps sous OpenGL
    http://tothpaul.free.fr/sources.php?opengl.spotlight

    à noter aussi qu'il est possible (pas de base sous FMX) de jouer sur des textures éclairées
    http://tothpaul.free.fr/sources.php?opengl.lightmap
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Membre Expert
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 543
    Billets dans le blog
    10
    Par défaut
    Je confirme tes recherches. Je vais explorer d'autre pistes et je te tiens informé

  7. #7
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    686
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 686
    Billets dans le blog
    2
    Par défaut
    Bonsoir,

    En regardant rapidement, la surface est bien légèrement éclairée. Elle l'est de plus en plus lorsqu'on éloigne la source de lumière de l'objet.
    A voir...
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  8. #8
    Membre Expert
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 543
    Billets dans le blog
    10
    Par défaut
    Oui Paul je confirme. Je n'avais pas pensé à TPlane avec SubidivisionWidth et j'avais réalisé une solution similaire avec le logciel meshlab (freeware) et un export DAE.

  9. #9
    Membre Expert
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 543
    Billets dans le blog
    10
    Par défaut
    Voici la production du matin
    Nom : i1.png
Affichages : 198
Taille : 376,9 Ko
    Fichiers attachés Fichiers attachés
    • Type de fichier : zip D4.zip (811,4 Ko, 50 affichages)

  10. #10
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    686
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 686
    Billets dans le blog
    2
    Par défaut
    Bonjour Alain,

    Pourquoi avoir mis 2 TPlane dans ton dernier exemple ?
    Un seul TPlane associé au TLightMaterialSource suffit. Il faut par contre ajouter ta texture au TLightMaterialSource.
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  11. #11
    Membre Expert
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 543
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par gbegreg Voir le message
    Bonjour Alain,

    Pourquoi avoir mis 2 TPlane dans ton dernier exemple ?
    Un seul TPlane associé au TLightMaterialSource suffit. Il faut par contre ajouter ta texture au TLightMaterialSource.
    La solution que j'ai choisi permet d'avoir une lumière plus diffuse (ce qui peut aussi être fait en multipliant les TLigth je pense)

  12. #12
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    686
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 686
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par ALWEBER Voir le message
    La solution que j'ai choisi permet d'avoir une lumière plus diffuse (ce qui peut aussi être fait en multipliant les TLigth je pense)
    J'aurais plutôt joué sur la propriété "Ambient" du TLightMaterialSource : ça évite de dupliquer un objet 3D et du coup de gérer moins de mailles (le TPlane subdivisé en 30x40 c'est 1200 mailles, 2400 triangles...).
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  13. #13
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par gbegreg Voir le message
    J'aurais plutôt joué sur la propriété "Ambient" du TLightMaterialSource : ça évite de dupliquer un objet 3D et du coup de gérer moins de mailles (le TPlane subdivisé en 30x40 c'est 1200 mailles, 2400 triangles...).
    2400 triangles c'est considéré comme LowPoly de nos jours

    mais ceci dit la subdivision sur l'image ne sert à rien dans cet exemple si je ne m'abuse
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 11
    Par défaut
    Citation Envoyé par ALWEBER Voir le message
    La solution que j'ai choisi permet d'avoir une lumière plus diffuse (ce qui peut aussi être fait en multipliant les TLigth je pense)
    Merci à vous tous
    en augmentant le subdivision de mes planes de mon projet domotique, effectivement ca marche
    Cependant cela reste un problème pour les TRectangle3D qui n'ont pas cette option.
    Le plane opacity 0.5 peut être la solution pour les TRectangle3D

    Malheureusement on ne peut pas multiplier les TLight comme on voudrait :

    au dela de 8 TLight Enabled en même temps ça ne passe plus, il choisi uniquement les 8 premières

    Nom : Annotation 2020-04-22 115329.png
Affichages : 194
Taille : 46,1 KoNom : Annotation 2020-04-22 115413.png
Affichages : 207
Taille : 45,7 Ko

    dans ma maison du coup cela permettra de faire des économie d'énergie, je vais programmer la domotique pour que je n'aie que 8 lampes allumées en même temps

    le point manquant maintenant, c'est de savoir si je peux bloquer un faisceau de spot par un objet pour que mon étage 1 ne soit pas allumé par un TLight Spot à l'étage2

    Ca marche très bien pour le sous sol,
    Nom : Annotation 2020-04-22 120954.png
Affichages : 193
Taille : 32,8 KoNom : Annotation 2020-04-22 120807.png
Affichages : 196
Taille : 37,2 Ko

    parfait aussi en vue de dessus,
    Nom : Annotation 2020-04-22 121420.png
Affichages : 194
Taille : 34,7 Ko

    mais en vue 3D je voudrais que la lumière soit stoppé pour les étages inférieurs. Je ne sais pas si c'est faisable.

    Nom : Annotation 2020-04-22 121008.png
Affichages : 200
Taille : 35,8 Ko

  15. #15
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    Citation Envoyé par Brainema Voir le message

    au dela de 8 TLight Enabled en même temps ça ne passe plus, il choisi uniquement les 8 premières
    c'est une limitation hardware

    pour gérer plus de lumière il y a des stratégies, mais rien de standard sous Delphi

    une des approches, par exemple, est qu'au moment du rendu d'un des objets de la scène, on n'active que les 8 lumières les plus proches de l'objet (ou les plus pertinentes, car la lumière qui est juste à côté mais de l'autre côté d'un mur ne sert à rien) ...je ne sais pas si c'est possible de le faire sous FMX sans trop de code...faudrait voir ce que ça donne sur ton exemple, en basculant à la main les lumières qui vont bien dans le OnRender des objets (si ça existe, j'ai pas vérifié)

    sinon il faut passer par un éclairage par texture...c'est à dire que par dessus des textures non éclairées tu colles des surfaces avec un alphablending en forme de spot lumineux qui vient éclairer, voir obscurcir l'image...c'est plus compliqué à mettre en oeuvre mais c'est sans aucune limite du nombre de source de lumière.

    il existe aussi des algorithme de calcul de lightmap qui va pour une scène donnée calculer une texture qui correspond aux sources d'éclairage...mais c'est un processus un peu long qu'on ne fait généralement pas en temps réel
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  16. #16
    Membre émérite
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Par défaut
    Bonjour,

    Citation Envoyé par Brainema Voir le message
    Bonjour,

    J'ai refait ce week end l'application sur mon téléphone qui était une simple vue de dessus basique pour gérer ma maison domotisée,
    j'ai de l'animation de la caméra pour visualiser les étages cela rend bien, et je pensais pouvoir du coup gérer des halos de lumières là où les lumières étaient allumées mais ça ne marche pas comme je veux...
    si j'arrive à faire marcher cela, alors elle sera vraiment top comme appli
    Juste pour info, quelle solution domotique as tu installé ? Est ce une installation propriétaire ou normalisée comme knx/eib ( par exemple ) ?

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 11
    Par défaut
    Citation Envoyé par free07 Voir le message
    Bonjour,



    Juste pour info, quelle solution domotique as tu installé ? Est ce une installation propriétaire ou normalisée comme knx/eib ( par exemple ) ?
    Mon installation a été documentée dans le blog ci dessous.

    https://www.framboise314.fr/la-domot...-raspberry-pi/

    je pense mettre mon application fmx sur GitHub car elle me parait pas mal en 3D par rapport à ce que j'avais avant.

    elle communique en REST à un simple serveur Python/Flask que je mettrai avec.
    une passerelle REST vers JeeDOM ou Domoticz est du coup faisable.

  18. #18
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    j'ai fait un test rapide sur le OnRender...ça marche pas bien
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 11
    Par défaut
    Alors voila

    j'ai mis la subdivision de mes Tplanes à 30 pour avoir les effets spots en vue d'un seul étage.
    en mode multi étage cela bascule sur un affichage avec une Tsphere applati transparente

    j'ai fait une version qui fonctionne en simulation offline si vous voulez tester, en vrai cela fonctionne avec des requetes Rest en Json

    un affichage des courbes températures et conso électrique est aussi accessible avec le bouton i
    il fonctionne en mode simulation en Windows si vous placer le fichier TempJsonSample.json dans le répertoire de l'application.
    cette partie est pas terminée.

    bien sur le projet complet nécessite plus de points mais c'est une base d'idée.

    https://github.com/6lv1-blr/Maisoid

    Merci à tous

  20. #20
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    hello, je ne sais pas si c'est voulu, mais il manque un bout dans ton projet fMain et DMRest ne sont pas sur Github

    tu as modifié la gestion des lumières où c'est ma carte graphique qui supporte plus de 8 lumières ?
    Nom : Presse-papiers-1.png
Affichages : 174
Taille : 334,0 Ko

    à non ! j'ai compris c'est dans la vue de dessus que tu utilises des lumières...mais du coup tu pourrais utiliser une texture en alphablending...peut-être même une texture via un Shader..je ne suis pas expert en shading language mais il doit être possible de calculer une valeur alpha en fonction de la distance aux différents points lumineux sur une texture plaquée sur tout l'écran comme un masque filtrant.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

Discussions similaires

  1. [TP] Problème avec le mode VESA
    Par dectroo dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 29/01/2007, 13h44
  2. problème avec setsockopt() mode RAW
    Par poporiding dans le forum Windows
    Réponses: 20
    Dernier message: 25/04/2006, 14h41
  3. problème avec setsockopt() mode RAW
    Par poporiding dans le forum C++
    Réponses: 15
    Dernier message: 24/04/2006, 17h17
  4. [VB.NET] Problème exécution en mode release.
    Par leSeb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/01/2005, 17h39

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