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: 9219
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 developer
Joined: Mar 15, 2010
Post Count: 62
Status:
Offline
Re: Écrire un plugin pour simuler l'éclairage de la course du soleil
Ok, vu ! Ça marche mieux, effectivement...
Bon, j'ai porté en java la classe python qui calcule les coordonnées azimutales du soleil en fonction de la date et de l'heure.
Comment coderais-tu la récupération de la date et de l'heure ? Quel widget utiliser ? Existe-t-il quelque chose de haut niveau, ou faut-il passer par des spinner ?
----------------------------------------
Frédéric
Est-ce que l'orientation de la caméra est aussi mémorisée ? Si oui, ça va permettre de faire des visites virtuelles : il suffit de générer autant d'images qu'il faut pour couvrir la sphère complète, en tournant simplement la caméra autour d'un point fixe, puis d'utiliser un logiciel comme Autopano Pro (ou Hugin) pour assembler les images, et Pano2Vr pour générer le flash.
Je coderai bien un truc pour générer automatiquement ces images, moi. Je vais transférer mes modifes vers la version 2.3...
----------------------------------------
Frédéric
France
Joined: Nov 7, 2005
Post Count: 9219
Status:
Offline
Re: Écrire un plugin pour simuler l'éclairage de la course du soleil
Comme toi sûrement, j'ai un peu cherché sur Internet des composants Swing pour gérer la date et l'heure, mais n'ai rien trouvé de convaincant aussi.
Le module de vidéo gère les 6 caractéristiques de la caméra (coordonnées + angles), et assemble les images avec JMF.
Tu fais bien de passer sous la version 2.3, car j'ai corrigé un bug majeur dans la classe PhotoRenderer hier.
----------------------------------------
Emmanuel Puybaret, Sweet Home 3D developer
Joined: Mar 15, 2010
Post Count: 62
Status:
Offline
Re: Écrire un plugin pour simuler l'éclairage de la course du soleil
Concernant le GUI, as-tu pensé à utiliser QtJambi (le binding Java pour Qt) ? Je développe en PyQt (Python Qt), et je peux t'assurer que c'est un vrai bonheur ! Entre le builder (Designer), et le haut niveau des Widgets et classes disponibles, faire le GUI est un jeu d'enfant.
Concernant le module vidéo, je viens de me rendre compte que tu génères directement la vidéo ; ce n'est pas tout à fait ce que je pense faire : j'ai juste besoin de générer un certain nombre d'images à une position fixe, en faisant juste tourner la caméra...
D'ailleurs, où donnes-tu le ratio pour le rendu final ? Je ne le vois pas dans la classe Camera.
----------------------------------------
Frédéric
France
Joined: Nov 7, 2005
Post Count: 9219
Status:
Offline
Re: Écrire un plugin pour simuler l'éclairage de la course du soleil
Même si la séparation vue / contrôleur devrait faciliter grandement le passage d'un toolkit à l'autre, on va éviter de changer l'interface dans un avenir proche.
De quel ratio parles-tu?
----------------------------------------
Emmanuel Puybaret, Sweet Home 3D developer
Joined: Mar 15, 2010
Post Count: 62
Status:
Offline
Re: Écrire un plugin pour simuler l'éclairage de la course du soleil
Même si la séparation vue / contrôleur devrait faciliter grandement le passage d'un toolkit à l'autre, on va éviter de changer l'interface dans un avenir proche.
C'est clair que ce ne serait pas trivial...
De quel ratio parles-tu?
Du ratio de l'image finale calculée ; en fait, j'ai trouvé : c'est donné directement à SunFlow.
Par contre, à quoi correspond la focale donnée ? Est-ce la diagonale ? La largeur ? La doc de SunFlow n'est vraiment pas terrible...
J'ai fait des essais en générant des images pour couvrir toute la sphère, mais aucun des logiciels d'assemblage n'arrive à quoi que ce soit. Je ne sais pas si c'est dû à la mauvaise focale (que je force un peu au pif, pour avoir l'angle de champ utilisé), ou si c'est un problème plus sioux, dû au type de la caméra utilisée (pinhole) ? En sais-tu un peu plus, là dessus ? Je viens de relancer des calculs en utilisant la caméra fisheye... On va voir si c'est mieux.
À vue de nez, est-ce que ce serait compliqué de faire un plugin qui générerait les images en se basant sur les réglages effectués dans le PhotoPanel ? Je n'aurais pas besoin de rendu en temps réel, mais juste savoir l'avancement (à quelle photo on en est), et quand c'est fini. Faudrait-il refaire une partie de ce qui est fait dans PhotoPanel (computePhoto, en fait) ? Ou peut-on juste partir sur l'utilisation de PhotoRenderer ? Je n'ai pas tout pigé à quoi servait OffScreenImage, et BufferedImage...
----------------------------------------
Frédéric