Joined: Mar 15, 2010
Post Count: 62
Status:
Offline
Re: Écrire un plugin pour simuler l'éclairage de la course du soleil
Bon, j'avance tout doucement. J'ai donc créé un nouveau plugin, et copié le code des fichiers HomeImageRenderer.java et CreatePhotoPlugin.java.
J'ai omis le package org.SunFlow, comme tu m'a indiqué, mais ça gueule sur les import relatifs à ce package. De même, ça gueule sur les import javax.xxx.
J'ai pourtant bien mis le jar de SweetHome3D...
Pour info, j'ai chargé le source de SweetHome3D dans eclipse, et j'arrive à le lancer correctement. Je me demande si je n'irais pas plus vite en modifiant directement le source... Il sera toujours temps de faire un plugin propre après, non ? Qu'en penses-tu ?
----------------------------------------
Frédéric
France
Joined: Nov 7, 2005
Post Count: 9430
Status:
Offline
Re: Écrire un plugin pour simuler l'éclairage de la course du soleil
Tes erreurs sont simplement dues au fait qu'il faille ajouter aussi les bibliothèques utilisées par Sweet Home 3D à ton projet de plug-in (SweetHome3D.jar ne contient pas les classes de ces bibliothèques mais leur fichier jar).
Mais tu as probablement raison (j'y ai pensé après mon message) : si tu arrives à reprendre le projet Sweet Home 3D dans son ensemble dans Eclipse, autant modifier directement le code source du projet lui-même. La création d'un plug-in te permettra ensuite de partager tes trouvailles avec d'autres utilisateurs.
----------------------------------------
Emmanuel Puybaret, Sweet Home 3D creator
Joined: Mar 15, 2010
Post Count: 62
Status:
Offline
Re: Écrire un plugin pour simuler l'éclairage de la course du soleil
Bon, ben c'est bon pour les modifes dans le code source : ça tourne ! Je vois bien que les fenêtres sont maintenant transparentes...
Reste à voir les éclairages :
- que représente exactement 'sundir' ? Est-ce la position du soleil ? Quel est le référentiel ? À quoi correspond une unité dans le code, par rapport aux distances sur le plan ?
- comment donner les coordonnées du soleil, dans un premier temps via un GUI (on verra plus tard pour un truc automatique) ?
- comment supprimer (ou modifier le niveau) des éclairages intérieur (plafond et aux 4 coins) ? Là, je vois surtout les ombres des fenêtres projetées sur la pelouse, mais quasiment pas les ombres des fenêtres projetées sur les murs intérieurs...
En tout cas, bien content d'avancer aussi vite C'est top ! J'ai bien fait de ne pas m'embarquer dans blender, un peu overkill pour ce que je veux faire...
----------------------------------------
Frédéric
Joined: Mar 15, 2010
Post Count: 62
Status:
Offline
Re: Écrire un plugin pour simuler l'éclairage de la course du soleil
Bon, effectivement, mettre une texture pour le ciel empèche le calcul des ombres en mode visite virtuelle (mais pas en mode aérien).
Par contre, dans tous les cas, je n'ai pas le calcul des ombres dans le meilleur rendu : uniquement au niveau 3 ('illumination globale rapide...').
----------------------------------------
Frédéric
Joined: Mar 15, 2010
Post Count: 62
Status:
Offline
Re: Écrire un plugin pour simuler l'éclairage de la course du soleil
Voici le rendu, en qualité 3, d'une pièce comportant 4 fenêtres (une sur chaque mur), en mode virtuel, en se mettant au plafond et en regardant vers le bas :
Voici le même rendu, dans la qualité la plus haute :
Y'a plein de choses qui disparaissent ! Visiblement, la gestion des éclairages n'est pas du tout la même... Tu peux m'en dire plus ?
France
Joined: Nov 7, 2005
Post Count: 9430
Status:
Offline
Re: Écrire un plugin pour simuler l'éclairage de la course du soleil
Je ne peux pas t'en dire bien plus sur la qualité 3 car je ne suis pas le programmeur de SunFlow. J'ai mis la qualité 3 surtout parce qu'elle est plus rapide et donne un aperçu de ce que pourrait donner la qualité 4.
"sundir" spécifie les coordonnées du vecteur représentant la direction des rayons du soleil. En jouant sur les valeurs des 3 coordonnées tu changeras la direction des rayons, sachant que la seconde valeur représente la verticale. Tu comprendras vite en essayant, à moins que toi et la trigo soyez des ennemis jurés.
Dans le GUI, je mettrai un slider pour l'heure de la journée et un spinner pour la latitude. Il doit bien y avoir sur Internet une formule qui te donnera la direction ou les angles du soleil en fonction de ces valeurs.
Les lumières aux plafonds sont calculées aux lignes 176 à 217 de PhotoRenderer. En diminuant la valeur de power à la ligne 207, tu auras des lumières moins puissantes.
----------------------------------------
Emmanuel Puybaret, Sweet Home 3D creator
Joined: Mar 15, 2010
Post Count: 62
Status:
Offline
Re: Écrire un plugin pour simuler l'éclairage de la course du soleil
Ok, je vais essayer de trouver plus d'infos sur sunflow ; j'ai remarqué que le truc est sioux, car il tient compte de la position par rapport à l'horizon pour déterminer l'intensité lumineuse. Il joue en particulier sur la lumière diffuse du ciel (on le voit bien au halo au pied des fenêtres, dans la capture ci-dessous)... Mais dans mon cas, ça ne m'arrange pas trop, car lorsque le soleil est bas, je ne vois plus l'ombre projetée... Il faudrait que j'arrive à jouer sur le ratio des 2 types de lumière.
J'ai commencé à bricoler dans le GUI (PhotoPanel), et ajouté 2 spinner, pour l'azimuth et l'élévation (pour l'instant, je calcule ça dans un petit programme python ; je l'intégrerai après dans SweetHome3D, avec, comme tu le suggères, quelque chose pour changer la date et l'heure).
Par contre, j'ai des soucis avec le GUI : l'un des spinner ne fonctionne pas avec les petites flèches. Et aucun des 2 ne conserve sa valeur, ni même n'a la bonne valeur par défaut. J'ai pourtant en principe ajouté tout ce qu'il fallait dans les classes PhotoController et HomeEnvironment...
Est-ce que je peux déposer les classes modifiées quelques part, pour que tu y jettes un oeil, et me dire où je me plante ?
Joined: Mar 15, 2010
Post Count: 62
Status:
Offline
Re: Écrire un plugin pour simuler l'éclairage de la course du soleil
J'ai oublié de préciser que je suis parti des sources de la version 2.2, et non pas du dépôt. J'aurais peut-être dû récupérer la 2.3-béta...
----------------------------------------
Frédéric
France
Joined: Nov 7, 2005
Post Count: 9430
Status:
Offline
Re: Écrire un plugin pour simuler l'éclairage de la course du soleil
Le spinner de l'azimuth est initialisé avec une valeur 0 qui est en dehors des bornes que tu lui as fixées, et ça ne plait pas au spinner.
Pour corriger, les valeurs des angles par défaut que tu as données dans le constructeur de HomeEnvironment doivent l'être aussi dans le constructeur précédent (désolé je n'ai simplifié l'enchaînement les constructeurs que dans la version 2.3). Il faut aussi recopier les valeurs des angles de l'objet HomeEnvironment dans l'objet PhotoController en ajoutant à la méthode updateProperties de PhotoController les instructions suivantes :
Tu peux rester sur la version 2.2 pour l'instant bien que la version 2.3 gère mieux l'arrêt du rendu.
----------------------------------------
Emmanuel Puybaret, Sweet Home 3D creator