Nombre de messages : 2747 Date d'inscription : 13/09/2009
Sujet: Des paysages qui flottent Ven 2 Sep 2022 - 15:14
Bon, ça ne sert pas potentiellement à rien, mais pour le moment, si :
Imaginez que vous entendiez le chant des oiseaux, et pendant ce temps, des images s'évadent sur votre écran (s'évadent = s'éloignent, se rapprochent, dérivent vers le côté...) Cela vous fait rêver... (on trouve cela facilement sur Internet).
J'ai essayé de faire un essai dans ce genre en Panoramic, et voilà ce que cela peut donner :
Code:
rem ' Essai paysage flottant dim A% , V% label clic width 0,1000 height 0,600
button 50 left 50,700 top 50,50 width 50,150 height 50,80 font_bold 50 font_size 50,20 font_name 50,"Arial" caption 50,"Arrêter" on_click 50,clic
panel 100 left 100,100 top 100,40 width 100,550 height 100,275
picture 200 parent 200,100 left 200,-110 top 200,-55 width 200,768 height 200,384 if file_exists("Oiseaux.jpg")=1 file_load 200,"Oiseaux.jpg" V%=1 end_if
for A% = 1 to 3 pause 500 petit() pause 500 grand() next A% beep
end
clic: terminate return
sub grand() dim_local g% if V%=1 for g% = 1 to 55 left 200,left(200)-2 top 200,top(200)-1 width 200,width(200)+4 height 200,height(200)+2 file_load 200,"Oiseaux.jpg" stretch_on 200 display pause 50 next g% end_if end_sub
sub petit() dim_local p% if V%=1 for p% = 1 to 55 left 200,left(200)+2 top 200,top(200)+1 width 200,width(200)-4 height 200,height(200)-2 file_load 200,"Oiseaux.jpg" stretch_on 200 display pause 50 next p% end_if end_sub
Avec l'image que voici :
Le problème, c'est que ça clignote un peu, ce qui n'est pas si joli que sur Internet. J'ai essayé d'utiliser display, mais ça ne fait pas grand chose de plus. J'ai essayé aussi en utilisant plutôt un objet image, mais là, le stretch_on ne marche pas. Quelqu'un est peut-être capable de faire mieux, je ne sais pas.
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
Sujet: Re: Des paysages qui flottent Ven 2 Sep 2022 - 16:52
Bonjour à tous !
@JJN4 Une scène 3D pourrait peut-être faire l’affaire ?
Explications : - Tu crées une scène 3d ; - Tu y mets un objet 3d_plane ; - Tu réduis le 3d_plane à une seule tuile avec les commandes 3d_u_tile et 3d_v_tile ; - Tu charges l’image sur la tuile avec la commande 3d_load_texture ; Ensuite, avec les différentes commandes 3D, tu peux déplacer l’image (la tuile) tout en douceur dans la direction souhaitée, tu peux zoomer, déformer…
Voilà pour mon idée à tester... Pour te donner un aperçu de la fluidité et la vélocité d'un objet 3d_plane dans une scène 3d, tu peux tester la boussole de cet article : https://panoramic.1fr1.net/t5912-boussole
Bonne continuation !
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
Sujet: Re: Des paysages qui flottent Ven 2 Sep 2022 - 18:30
@JJN4
Suite à mon précédent post, pour démonstration des commandes 3d, voici un petit programme utilisant ton image oiseaux.jpg.
Code:
' ------------------------------------------------------------------------------ ' Démo 3D ' Marc - Septembre 2022 ' Ecrit en langage Panoramic 0.9.29.i9 ' ------------------------------------------------------------------------------ dim Mem_cam_move% dim Mem_cam_pitch% dim Mem_cam_roll% dim Mem_cam_turn% dim Mem_3D_move%
label Request
width 0,1360 height 0,680 scene3d 1 width 1,550 height 1,275 top 1,20 left 1,20
Control_panel() Object_3D() Action() end ' ------------------------------------------------------------------------------ Request: Action() return ' ------------------------------------------------------------------------------ sub Action() select number_change case 2 if position(2)=1 caption 3,"axes_show" axes_show else caption 3,"axes_hide" axes_hide end_if case 4 cam_x_position position(4) caption 5, "cam_x_position : " + str$(position(4))+" " case 6 cam_y_position position(6) caption 7, "cam_y_position : " + str$(position(6))+" " case 8 cam_z_position position(8) caption 9, "cam_z_position : " + str$(position(8))+" " case 10 off_change 10 if Mem_cam_move% < position(10) then cam_move 1 if Mem_cam_move% > position(10) then cam_move -1 Mem_cam_move%=position(10) on_change 10,Request caption 11, "cam_move : " + str$(Mem_cam_move%)+" " case 12 off_change 12 if Mem_cam_pitch% < position(12) then cam_pitch 1 if Mem_cam_pitch% > position(12) then cam_pitch -1 Mem_cam_pitch%=position(12) on_change 12,Request caption 13, "cam_pitch : " + str$(Mem_cam_pitch%)+" " case 14 off_change 14 if Mem_cam_roll% < position(14) then cam_roll 1 if Mem_cam_roll% > position(14) then cam_roll -1 Mem_cam_roll%=position(14) on_change 14,Request caption 15, "cam_roll : " + str$(Mem_cam_roll%)+" " case 16 off_change 16 if Mem_cam_turn% < position(16) then cam_turn 1 if Mem_cam_turn% > position(16) then cam_turn -1 Mem_cam_turn%=position(16) on_change 16,Request caption 17, "cam_turn : " + str$(Mem_cam_turn%)+" " case 18 point_x_position position(18) caption 19, "point_x_position : " + str$(position(18))+" " case 20 point_y_position position(20) caption 21, "point_y_position : " + str$(position(20))+" " case 22 point_z_position position(22) caption 23, "point_z_position : " + str$(position(22))+" " case 24 3d_x_position 1,position(24)/50 caption 25, "3d_x_position : " + str$(position(24)/50)+" " case 26 3d_y_position 1,position(26)/50 caption 27, "3d_y_position : " + str$(position(26)/50)+" " case 28 3d_z_position 1,position(28)/50 caption 29, "3d_z_position : " + str$(position(28)/50)+" " case 30 3d_x_rotate 1,position(30) caption 31, "3d_x_rotate : " + str$(position(30))+" " case 32 3d_y_rotate 1,position(32) caption 33, "3d_y_rotate : " + str$(position(32))+" " case 34 3d_z_rotate 1,position(34) caption 35, "3d_z_rotate : " + str$(position(34))+" " case 54 3d_x_scale 1,(position(54)/10) caption 55, "3d_x_scale : " + str$((position(54)/10))+" " case 56 3d_y_scale 1,(position(56)/10) caption 57, "3d_y_scale : " + str$((position(56)/10))+" " case 58 3d_z_scale 1,(position(58)/10) caption 59, "3d_z_scale : " + str$((position(58)/10))+" " case 60 off_change 60 if Mem_3D_move% < position(60) then 3d_move 1,1 if Mem_3D_move% > position(60) then 3d_move 1,-1 Mem_3D_move%=position(60) on_change 60,Request caption 61, "3d_move : " + str$(Mem_3D_move%)+" " case 62 light_x_position position(62) caption 63, "light_x_position : " + str$(position(62))+" " case 64 light_y_position position(64) caption 65, "light_y_position : " + str$(position(64))+" " case 66 light_z_position position(66) caption 67, "light_z_position : " + str$(position(66))+" " end_select end_sub ' ------------------------------------------------------------------------------ sub Control_panel() scroll_bar 2 top 2,20 left 2,650 width 2,70 min 2,0 max 2,1 position 2,0 on_change 2,Request alpha 3 top 3,23 left 3, 730 caption 3, "axes_show"
scroll_bar 4 top 4,55 left 4,650 min 4,-10 max 4,10 position 4,1 on_change 4,Request alpha 5 top 5,58 left 5, 780 caption 5, "cam_x_position : " + str$(position(4))+" "
scroll_bar 6 top 6,80 left 6,650 min 6,-10 max 6,10 position 6,2 on_change 6,Request alpha 7 top 7,83 left 7, 780 caption 7, "cam_y_position : " + str$(position(6))+" "
scroll_bar 8 top 8,105 left 8,650 min 8,-10 max 8,10 position 8,5 on_change 8,Request alpha 9 top 9,108 left 9, 780 caption 9, "cam_z_position : " + str$(position(8))+" "
scroll_bar 10 top 10,140 left 10,650 min 10,-10 max 10,10 on_change 10,Request alpha 11 top 11,143 left 11, 780 caption 11, "cam_move : " + str$(position(10))+" "
scroll_bar 12 top 12,175 left 12,650 min 12,-10 max 12,10 on_change 12,Request alpha 13 top 13,178 left 13, 780 caption 13, "cam_pitch : " + str$(position(12))+" "
scroll_bar 14 top 14,200 left 14,650 min 14,-10 max 14,10 on_change 14,Request alpha 15 top 15,203 left 15, 780 caption 15, "cam_roll : " + str$(position(14))+" "
scroll_bar 16 top 16,225 left 16,650 min 16,-10 max 16,10 on_change 16,Request alpha 17 top 17,228 left 17, 780 caption 17, "cam_turn : " + str$(position(16))+" "
scroll_bar 18 top 18,260 left 18,650 min 18,-10 max 18,10 on_change 18,Request alpha 19 top 19,263 left 19, 780 caption 19, "point_x_position : " + str$(position(18))+" "
scroll_bar 20 top 20,285 left 20,650 min 20,-10 max 20,10 on_change 20,Request alpha 21 top 21,288 left 21, 780 caption 21, "point_y_position : " + str$(position(20))+" "
scroll_bar 22 top 22,310 left 22,650 min 22,-10 max 22,10 on_change 22,Request alpha 23 top 23,313 left 23, 780 caption 23, "point_z_position : " + str$(position(22))+" "
scroll_bar 24 top 24,345 left 24,650 min 24,-10 max 24,10 on_change 24,Request alpha 25 top 25,348 left 25, 780 caption 25, "3d_x_position : " + str$(position(24))+" "
scroll_bar 26 top 26,370 left 26,650 min 26,-10 max 26,10 on_change 26,Request alpha 27 top 27,373 left 27, 780 caption 27, "3d_y_position : " + str$(position(26))+" "
scroll_bar 28 top 28,395 left 28,650 min 28,-10 max 28,10 on_change 28,Request alpha 29 top 29,398 left 29, 780 caption 29, "3d_z_position : " + str$(position(28))+" "
scroll_bar 30 top 30,430 left 30,650 min 30,-180 max 30,180 on_change 30,Request alpha 31 top 31,433 left 31, 780 caption 31, "3d_x_rotate : " + str$(position(30))+" "
scroll_bar 32 top 32,455 left 32,650 min 32,-180 max 32,180 on_change 32,Request alpha 33 top 33,458 left 33, 780 caption 33, "3d_y_rotate : " + str$(position(32))+" "
scroll_bar 34 top 34,480 left 34,650 min 34,-180 max 34,180 on_change 34,Request alpha 35 top 35,483 left 35, 780 caption 35, "3d_z_rotate : " + str$(position(34))+" "
' *************** 2ème colonne scroll_bar 54 top 54,55 left 54,1000 min 54,1 max 54,20 position 54,10 on_change 54,Request alpha 55 top 55,58 left 55, 1130 caption 55, "3d_x_scale : " + str$((position(54)/10))+" "
scroll_bar 56 top 56,80 left 56,1000 min 56,1 max 56,20 position 56,5 on_change 56,Request alpha 57 top 57,83 left 57, 1130 caption 57, "3d_y_scale : " + str$((position(56)/10))+" "
scroll_bar 58 top 58,105 left 58,1000 min 58,1 max 58,20 position 58,10 on_change 58,Request alpha 59 top 59,108 left 59, 1130 caption 59, "3d_z_scale : " + str$((position(58)/10))+" "
scroll_bar 60 top 60,140 left 60,1000 min 60,-10 max 60,10 on_change 60,Request alpha 61 top 61,143 left 61, 1130 caption 61, "3d_move : " + str$(position(60))+" "
scroll_bar 62 top 62,175 left 62,1000 min 62,-10 max 62,10 position 62,0 on_change 62,Request alpha 63 top 63,178 left 63, 1130 caption 63, "light_x_position : " + str$(position(62))+" "
scroll_bar 64 top 64,200 left 64,1000 min 64,-10 max 64,10 position 64,0 on_change 64,Request alpha 65 top 65,203 left 65, 1130 caption 65, "light_y_position : " + str$(position(64))+" "
scroll_bar 66 top 66,225 left 66,1000 min 66,-10 max 66,10 position 66,5 on_change 66,Request alpha 67 top 67,228 left 67, 1130 caption 67, "light_z_position : " + str$(position(66))+" " end_sub ' ------------------------------------------------------------------------------ sub Object_3D() 3d_plane 1 3d_u_tile 1,1 3d_v_tile 1,1 3d_y_scale 1,0.5 3d_load_texture 1,"oiseaux.jpg" end_sub ' ------------------------------------------------------------------------------
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
Sujet: Re: Des paysages qui flottent Ven 2 Sep 2022 - 19:11
Bonjour Jjn4, Marc et toute la communauté !
Ben là je suis bluffé, je ne croyais pas que l'on pouvait faire autant de choses en Panoramic sur une photo ! C'est génial et le tout en temps réel !!
Bon j'avoue que je n'ai pas encore décortiqué le code et n'étant pas spécialiste des fonctions 3D, je risque d'être vite perdu !!
En tout cas bravo Marc pour cette démonstration et merci à Jjn4 pour avoir ouvert cette discussion. Au moins j'aurai appris quelque chose aujourd'hui !!!
Ouf_ca_passe aime ce message
jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
Sujet: Re: Des paysages qui flottent Sam 3 Sep 2022 - 14:38
Je confirme ce que dit Minibug : c'est absolument magnifique !!!!!!!!!!!! Je ne connaissais pas, car je m'aventure rarement dans la 3d. Mais c'est vraiment superbe, et ça efface bien tous les clignotements. Bravo, Marc !!!
Comme c'est vrai que les multiples solutions offertes par le pg de Marc peuvent donner un ensemble ardu, et au cas où Minibug craindrait de s'y perdre, voici le même programme que celui que j'avais fait, mais dans la version 3d de Marc :
Code:
rem ' Paysage flottant version 2 dim A% , V V=5 label clic width 0,1000 height 0,600
button 50 left 50,700 top 50,50 width 50,150 height 50,80 font_bold 50 font_size 50,20 font_name 50,"Arial" caption 50,"Arrêter" on_click 50,clic
panel 100 left 100,100 top 100,40 width 100,550 height 100,275
sub petit() dim_local v1pe% , v2pe% v2pe%=even(time_second) for v1pe% = 1 to 72 V=V+0.2 cam_z_position V if v1pe%>42 if v2pe%=1 W=W+3 else W=W-3 end_if 3d_y_rotate 200,W end_if pause 5 next v1pe% end_sub
Comment faire pour que l'image qui s'éloigne et disparaît le fasse par dessus une autre image (pour l'instant, la même) (celle-ci ne bougeant pas, tant que l'autre n'a pas disparu) sans qu'il y ait de blanc entre les deux ? J'ai essayé quelques trucs, mais je suis vraiment nul, en 3d. Pourtant d'après les perspective fabuleuses que nous a révélées Marc, peut-être que ça devrait être possible en Panoramic ?
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
Sujet: Re: Des paysages qui flottent Dim 4 Sep 2022 - 16:48
Salut JJN4 !
Utilise une deuxième tuile pour l'autre image.
Regarde le programme "Qui fait quoi ?". Il utilise seize 3d_plane (tuiles) qui s'enchainent pour former une roue.
Dernière édition par Marc le Dim 4 Sep 2022 - 17:47, édité 1 fois
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
Sujet: Re: Des paysages qui flottent Dim 4 Sep 2022 - 17:37
@JJN4 Suite de mon post précédent. Je viens de jeter un œil sur ton code-source ci-dessus. J’ai vu que tu avais utilisé le même numéro d’objet pour la scene3d et pour le 3d_plane. - scene3d 200 - 3d_plane 200
Bien que cela ne pose pas de problème fonctionnel, afin d’éviter une confusion entre les deux objets, tu pourrais utiliser des numéros qui ne sont pas déjà pris par des objets usuels de Panoramic dans ton source. Tout comme les sprites dans une scène 2d, les objets 3d ont leur propre numérotation qui n’interfère pas avec les numéros d’objets classiques de Panoramic. Chaque 3d_plane a son propre numéro d'objet. Deux 3d_plane ne peuvent pas avoir le même numéro.
Dans l’espace 3d, tu peux faire évoluer les 3d_plane individuellement. Les possibilités artistiques sont infinies.
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
Sujet: Re: Des paysages qui flottent Dim 4 Sep 2022 - 18:15
@JJN4 Encore une précision : Les différentes commandes CAM_xxxxxxxxx sont utilisées pour déplacer la caméra qui observe la scène 3d. La caméra est ce que notre œil observe. Elle filme tous les objets d’une scène 3d. Si tu bouges la caméra, tous les objets bougeront simultanément.
Si tu veux déplacer un seul objet 3d dans la scène 3d, utilise les commandes 3D_..._POSITON N,V. N étant le numéro de l’objet 3d à mouvoir. V étant la valeur à lui appliquer.
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
Sujet: Re: Des paysages qui flottent Dim 4 Sep 2022 - 18:15
@JJN4 Encore une précision : Les différentes commandes CAM_xxxxxxxxx sont utilisées pour déplacer la caméra qui observe la scène 3d. La caméra est ce que notre œil observe. Elle filme tous les objets d’une scène 3d. Si tu bouges la caméra, tous les objets bougeront simultanément.
Si tu veux déplacer un seul objet 3d dans la scène 3d, utilise les commandes 3D_..._POSITON N,V. N étant le numéro de l’objet 3d à mouvoir. V étant la valeur à lui appliquer.
jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
Sujet: Re: Des paysages qui flottent Dim 4 Sep 2022 - 18:53
Je n'ai pas tout compris, mais dans le pg qui-fait-quoi, les tuiles sont l'une à côté des autres, pas l'une sur l'autre. Si je mets un 3d_plane sous celui qui y est déjà, il n'apparaît pas.
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
Sujet: Re: Des paysages qui flottent Dim 4 Sep 2022 - 20:41
Tu places et orientes les tuiles dans l’espace 3d comme tu veux. Elles peuvent être l’une dernière l’autre si l’on souhaite. Elles ne sont pas transparentes.
L’espace 3d est représenté suivant 3 axes que l’on peut afficher sous Panoramic avec la commande AXES_SHOW. La visualisation de ces axes permet de mieux comprendre l’action des différentes commandes.
Par défaut, l’axe des X est orienté droite-gauche, l’axe Y : haut-bas et l’axe Z est en profondeur.
Prenons l’exemple de 2 tuiles représentées par tes mains. Ta main droite représente une tuile et ta main gauche, une autre tuile. Tu tends les bras devant toi, et tu orientes tes mains comme tu le souhaites. Tu regardes tes mains.
La « caméra » est ce que voient tes yeux. C’est l’aperçu que l’on verra à l’écran.
Si ta main droite passe devant ta main gauche, la main gauche sera partiellement voire totalement cachée par ta main droite.
Si tu réduis la distance entre tes mains et tes yeux, ce qui correspond à avancer la caméra sur l’axe Z, tes mains paraitront plus grosses. Si tu les éloignes, elles seront plus petites. Cela correspond à l’instruction CAM_MOVE.
Si tu penches la tête à gauche ou à droite, ce qui qui consiste à pivoter la caméra autour de l’axe Z, cela correspond à l’instruction CAM_ROLL.
Etc.
Toutes les instructions CAM…….. correspondent à la manière dont on observe la scène 3D en totalité.
Si j’ai bien compris ce que tu souhaites faire, dans ton cas précis, il faut placer la caméra dans une position fixe et ne plus y toucher. Il faut agir individuellement sur chaque 3d_plane avec les commandes 3D_..._POSITION, 3D_..._ROTATE et 3D_..._SCALE.
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
Sujet: Re: Des paysages qui flottent Dim 4 Sep 2022 - 22:24
@JJN4
Je ne connais pas la "chorégraphie" que tu souhaites exactement.
Voici un exemple de ce que l'on peut faire avec ton programme :
Code:
rem ' Paysage flottant version 3 dim A% , V , W V=5 label clic width 0,1000 height 0,600
button 50 left 50,700 top 50,50 width 50,250 height 50,80 font_bold 50 font_size 50,20 font_name 50,"Arial" caption 50,"Déclancher" on_click 50,clic
panel 100 left 100,100 top 100,40 width 100,550 height 100,275
scene3d 200 parent 200,100 left 200,-110 top 200,-55 width 200,768 height 200,384
3d_plane 201 3d_u_tile 201,1 3d_v_tile 201,1 3d_y_scale 201,0.5 3d_load_texture 201,"oiseaux.jpg" ' positionnement de l'image 201 en arrière-plan sur l'axe Z 3d_z_position 201,-15 ' zoom de l'image 201 pour remplir la fenêtre de visualisation 3d_x_scale 201,4 3d_y_scale 201,2
sub petit() dim_local v1pe% , v2pe% v2pe%=even(time_second) for v1pe% = 1 to 72 V=V-0.2 3d_z_position 202,V if v1pe%>42 if v2pe%=1 W=W+3 else W=W-3 end_if 3d_y_rotate 202,W end_if pause 5 next v1pe% end_sub
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
Sujet: Re: Des paysages qui flottent Lun 5 Sep 2022 - 12:55
Bonjour les amis !
Merci pour ce dernier exemple Marc.
Je tente de me familiariser avec les commandes 3D mais j'ai vraiment du mal !! Et pourtant j'avoue que le potentiel est immense...
Je comprends mieux maintenant pourquoi Jack tenait tant à mettre en avant les capacités graphiques de Panoramic ! Je tenterai bien un programme en 3D mais je ne sais même pas par ou commencer...
J'ai l'idée de modéliser le Rubik's cube et les faces 3 X 3 mais rien que la création du cubes va certainement me demander un certain temps... Aller je vais tenter ! J'ouvre un nouveau fil de discussion...
Désolé Jjn4 pour ce petit hors sujet.
jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
Sujet: Re: Des paysages qui flottent Lun 5 Sep 2022 - 14:17
C'est exactement ce que je voulais faire. Merci Marc, pour les explications également, car ce n'est vraiment pas simple !
Jean Claude aime ce message
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
Sujet: Re: Des paysages qui flottent Jeu 8 Sep 2022 - 16:09
Bonjour à tous,
Je fais un petit tour par ici. Je vais bien... A+
jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
Sujet: Re: Des paysages qui flottent Ven 9 Sep 2022 - 13:53