Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Est-ce 3d_chain ou 3d_collision qui pose problème? | |
| | Auteur | Message |
---|
bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Est-ce 3d_chain ou 3d_collision qui pose problème? Ven 8 Mar 2013 - 23:58 | |
| Bonsoir à tous, J'ai repris mon vieux code du labyrinthe en 3d https://panoramic.1fr1.net/t1784-labyrinth que j'ai adapté à mon module de déplacement que j'ai publié il n'y a pas si longtemps. https://panoramic.1fr1.net/t2850-vue-subjective-3d.Cela donne des vues du labyrinthe et des déplacements sympas! J'ai donc eu ensuite l'idée d'essayer de chainer tous les murs du labyrinthe à un 3d_box que j'ai placé en dessous du sol et du labyrinthe de manière à ce qu'on ne le voit pas. Ce qui est marrant, c'est que dès que l'on déplace cet objet 3d, tout le labyrinthe se déplace, si on le cache avec 3d_hide, tous le labyrinthe disparait, etc.... Ça ne fait que me donner plein d'idées pour la suite ce truc là. Mais l'idée au début de chainer tous les murs ce n'était pas pour faire ces choses là, mais pour utiliser 3d_collision! En effet, tous les murs chainés à un 3d_box, et mon cone représentant un personnage que je déplace où je veux dans le labyrinthe, ça me donne un seul test pour savoir si il est en collision avec un mur! génial! Oui, mais, ça ne marche pas comme je l'attendais! Dans le code exemple, seul ces 4 lignes peuvent donner un résultat de collision, les autres manières ne déclenchent aucune action: ' 3d_collision_as_cube 3:3d_collision_as_cube p ' 3d_collision_as_cube 3:3d_collision_as_faces p ' 3d_collision_as_faces 3:3d_collision_as_cube p 3d_collision_as_faces 3:3d_collision_as_faces p Le problème, c'est que le personnage cone, n'a même pas besoin de toucher les murs, la collision est déjà détectée par panoramic et s'affiche dans le caption 0, et quand il recule en dehors des murs d'enceintes du labyrinthe, il n'y a plus de collision détectée. Alors je me pose la question de savoir si un grand nombre d'objets chainés à un seul, ne modifient pas le comportement de 3d_collision? Pourtant 3d_collision est une instruction que j'utilise régulièrement et qui fonctionne très bien habituellement. (A ce propos, 3d_collision_as_faces n'a pas de coloration syntaxique dans l'éditeur encore Jack. Merci.) Donc je suis bloqué dans mon programme pour le moment. Et je ne vois pas de solutions. - Code:
-
' ****************************************************************************** ' ***************************** COMMANDES CLAVIER ****************************** ' ****************************************************************************** dim esc :' * TOUCHE ESC ==> MET FIN AU PROGRAMME:................... CASE 27 * dim tpu :' * TOUCHE "page up" ==> DÉCOLLER (vision aérienne):....... CASE 33 * dim tpd :' * TOUCHE "page down" ==> REDESCENDRE (vision aérienne):.. CASE 34 * dim tfg :' * TOUCHE FLÈCHE GAUCHE ==> PIVOTER À GAUCHE personnage... CASE 37 * dim tfh :' * TOUCHE FLÈCHE HAUTE ==> AVANCER personnage............. CASE 38 * dim tfd :' * TOUCHE FLÈCHE DROITE ==> PIVOTER À DROITE personnage... CASE 39 * dim tfb :' * TOUCHE FLÈCHE BASSE ==> RECULER personnage............. CASE 40 * dim tcb :' * TOUCHE "B" ==> REGARDER VERS LE BAS:................... CASE 66 * dim tch :' * TOUCHE "H" ==> REGARDER VERS LE HAUT:.................. CASE 72 * ' ****************************************************************************** ' ****************************** PAVÉ NUMÉRIQUE ******************************** ' ****************************************************************************** dim pn1 :' * TOUCHE "1" ==> RECULER VERS LA GAUCHE:................. CASE 97 * dim pn2 :' * TOUCHE "2" ==> RECULER:................................ CASE 98 * dim pn3 :' * TOUCHE "3" ==> RECULER VERS LA DROITE:................. CASE 99 * dim pn4 :' * TOUCHE "4" ==> DÉPLACEMENT LATÉRAL VERS LA GAUCHE:..... CASE 100 * dim pn5 :' * TOUCHE "5" ==> RETOUR AU POINT D'ORIGINE:.............. CASE 101 * dim pn6 :' * TOUCHE "6" ==> DÉPLACEMENT LATÉRAL VERS LA DROITE:..... CASE 102 * dim pn7 :' * TOUCHE "7" ==> AVANCER VERS LA GAUCHE:................. CASE 103 * dim pn8 :' * TOUCHE "8" ==> AVANCER:................................ CASE 104 * dim pn9 :' * TOUCHE "9" ==> AVANCER VERS LA DROITE:................. CASE 105 * dim pnp :' * TOUCHE "+" ==> MONTER:................................. CASE 107 * dim pnm :' * TOUCHE "-" ==> DESCENDRE:.............................. CASE 109 * ' ****************************************************************************** dim rot,chy,phy,bh:rot=180:chy=1.7:phy=1.7 dim d,h,i,j,k,n,p,r,s,v,prot,nob h=21:v=20:n=h*v-1:h=h+1:v=v+1:d=1 dim a(h+1,v+1),mur(h+1,v+1),c(4)
label r1,r2,r3,r4,r5,r6,r7,t1,t2,bouge on_key_down 0,t1 on_key_up 0,t2 lab():scene()
timer 200:timer_interval 200,1:on_timer 200,bouge end
bouge: timer_off 200 deplace() timer_on 200 return
sub deplace() dim_local vrot,vd,vhy,i,mv,pv,x,z,a$,p$ vrot=1:vd=0.2:vhy=0.5:mv=6:pv=7 if esc=1 then fin() if tpu=1 if chy<300 then for i=chy to 200 step 05:cam_position o3d_x_position(mv),i,o3d_z_position(mv):display:next i:chy=300 end_if if tpd=1 if chy>phy then for i=200 to phy step -5:cam_position o3d_x_position(mv),i,o3d_z_position(mv):display:next i:chy=phy end_if if tfg=1 then prot=prot+vrot:3d_y_rotate 3,prot if tfd=1 then prot=prot-vrot:3d_y_rotate 3,prot if tfh=1 then 3d_move 3,vd if tfb=1 then 3d_move 3,vd-(2*vd) if tcb=1 then bh=bh+.2:if bh>11 then bh=11 if tch=1 then bh=bh-.2:if bh<-11 then bh=-11 if pn1=1 then 3d_move mv,vd-(2*vd):3d_x_position mv,o3d_x_position(mv)+(cos(rot*3.1415/180)*vd):3d_z_position mv,o3d_z_position(mv)-(sin(rot*3.1415/180)*vd) if pn2=1 then 3d_move mv,vd-(2*vd) if pn3=1 then 3d_move mv,vd-(2*vd):3d_x_position mv,o3d_x_position(mv)-(cos(rot*3.1415/180)*vd):3d_z_position mv,o3d_z_position(mv)+(sin(rot*3.1415/180)*vd) if pn4=1 then 3d_x_position mv,o3d_x_position(mv)+(cos(rot*3.1415/180)*(vd*2)):3d_z_position mv,o3d_z_position(mv)-(sin(rot*3.1415/180)*(vd*2)) if pn5=1 then bh=0:rot=180:chy=1.7:phy=1.7:3d_position mv,0,chy,0:3d_y_rotate mv,rot:3d_move mv,-13 if pn6=1 then 3d_x_position mv,o3d_x_position(mv)-(cos(rot*3.1415/180)*(vd*2)):3d_z_position mv,o3d_z_position(mv)+(sin(rot*3.1415/180)*(vd*2)) if pn7=1 then 3d_move mv,vd:3d_x_position mv,o3d_x_position(mv)+(cos(rot*3.1415/180)*vd):3d_z_position mv,o3d_z_position(mv)-(sin(rot*3.1415/180)*vd) if pn8=1 then 3d_move mv,vd if pn9=1 then 3d_move mv,vd:3d_x_position mv,o3d_x_position(mv)-(cos(rot*3.1415/180)*vd):3d_z_position mv,o3d_z_position(mv)+(sin(rot*3.1415/180)*vd) if pnp=1 then phy=phy+vhy:chy=chy+vhy if pnm=1 then phy=phy-vhy:chy=chy-vhy
3d_position pv,o3d_x_position(mv),o3d_y_position(mv),o3d_z_position(mv):3d_rotate pv,o3d_x_rotate(mv),o3d_y_rotate(mv),o3d_z_rotate(mv):3d_move pv,1 cam_position o3d_x_position(mv),sin(bh/6.28)+chy,o3d_z_position(mv):point_position o3d_x_position(pv),phy,o3d_z_position(pv)
' ****************************************************************************** if o3d_collision(p,3)=1 caption 0,"Collision !!!" else caption 0,"" end_if ' ******************************************************************************
' affichage des positions de x, y et z ainsi que de l'angle de rotation x=o3d_x_position(mv):z=o3d_z_position(mv) p$="X= "+str$(int(x*100)/100)+" Y= "+str$(int(chy*100)/100)+" Z= "+str$(int(z*100)/100):a$="Angle= "+str$(wrap_value(prot))+"°" 3d_position 4,o3d_x_position(pv),phy+0.3,o3d_z_position(pv):3d_text_change 4,p$ 3d_position 5,o3d_x_position(pv),phy-0.7,o3d_z_position(pv):3d_text_change 5,a$ 3d_rotate 4,o3d_x_rotate(mv),o3d_y_rotate(mv)+180,o3d_z_rotate(mv) 3d_rotate 5,o3d_x_rotate(mv),o3d_y_rotate(mv)+180,o3d_z_rotate(mv) end_sub
' sub de création de la scene3d sub scene() full_space 0:scene3d 1:hide 1:full_space 1:light_position 0,1500,0
' création des objets de la scène en 3d ' le décor 3D_SKYBOX 1 ' sol de notre scene 3D_PLANE 2:3d_u_tile 2,100:3d_v_tile 2,100:3d_rotate 2,90,0,0:3d_scale 2,100,100,1 ' personnage jaune 3D_CONE 3,5,3:3d_color 3,250,200,0:3d_position 3,0,2,0:3d_y_rotate 3,180 ' objets textes d'affichage des positions de x et de z ainsi que de l'angle de rotation 3d_text 4,"":3d_scale 4,.1,.1,.1:3d_text 5,"":3d_scale 5,.1,.1,.1
3d_cube 6,1:3d_y_rotate 6,rot:3d_move 6,-13:3d_hide 6 3d_mesh 7
creation() ' ****************************************************************************** ' IL n'y a que ces 4 types d'instructions qui détectent une collision, tous les ' autres n'affichent rien dans le caption 0. ' ****************************************************************************** ' 3d_collision_as_cube 3:3d_collision_as_cube p ' 3d_collision_as_cube 3:3d_collision_as_faces p ' 3d_collision_as_faces 3:3d_collision_as_cube p 3d_collision_as_faces 3:3d_collision_as_faces p ' ****************************************************************************** show 1 end_sub
sub creation() ' cube en dessous du sol donc invisible qui nous sert à chainer tous les murs 3d_box number_3d_objects+1,1,1,1 p=number_3d_objects 3d_y_position p,-5
for i=1 to h:a(i,1)=8:next i:for j=1 to v:a(1,j)=1:next j for j=2 to v for i=2 to h if (i=(int(h/2)+1) and j=2) then a(i,j)=a(i,j)-8 if (i=(int(h/2)+1) and j=v) then a(i,j)=a(i,j)-2
select a(i,j) case 1:pan1() case 2:pan2() case 3 if a(i-1,j)<4 or (a(i-1,j)>7 and a(i-1,j)<12) then pan1() pan2() case 4:pan4() case 5 if a(i-1,j)<4 or (a(i-1,j)>7 and a(i-1,j)<12) then pan1() pan4() case 6:pan2():pan4() case 7 if a(i-1,j)<4 or (a(i-1,j)>7 and a(i-1,j)<12) then pan1() pan2():pan4() case 8:pan8() case 9 if a(i-1,j)<4 or a(i-1,j)>7 and a(i-1,j)<12 then pan1() if a(i,j-1)=1 or a(i,j-1)=4 or a(i,j-1)=5 or a(i,j-1)=8 or a(i,j-1)=9 or a(i,j-1)=12 or a(i,j-1)=13 then pan8() case 10 pan2() if a(i,j-1)=1 or a(i,j-1)=4 or a(i,j-1)=5 or a(i,j-1)=8 or a(i,j-1)=9 or a(i,j-1)=12 or a(i,j-1)=13 then pan8() case 11 if a(i-1,j)<4 or (a(i-1,j)>7 and a(i-1,j)<12) then pan1() pan2() if a(i,j-1)=1 or a(i,j-1)=4 or a(i,j-1)=5 or a(i,j-1)=8 or a(i,j-1)=9 or a(i,j-1)=12 or a(i,j-1)=13 then pan8() case 12 pan4() if a(i,j-1)=1 or a(i,j-1)=4 or a(i,j-1)=5 or a(i,j-1)=8 or a(i,j-1)=9 or a(i,j-1)=12 or a(i,j-1)=13 then pan8() case 13 if a(i-1,j)<4 or (a(i-1,j)>7 and a(i-1,j)<12) then pan1() pan4() if a(i,j-1)=1 or a(i,j-1)=4 or a(i,j-1)=5 or a(i,j-1)=8 or a(i,j-1)=9 or a(i,j-1)=12 or a(i,j-1)=13 then pan8() case 14 pan2():pan4() if a(i,j-1)=1 or a(i,j-1)=4 or a(i,j-1)=5 or a(i,j-1)=8 or a(i,j-1)=9 or a(i,j-1)=12 or a(i,j-1)=13 then pan8() end_select next i next j end_sub ' CRÉATION DES MURS DU LABYRINTHE sub pan1() 3d_box number_3d_objects+1,20.9,20,2:3d_position number_3d_objects,(i*20)-250,10,(j*20)-440:3d_y_rotate number_3d_objects,90:3d_color number_3d_objects,0,0,100:3d_chain number_3d_objects,p end_sub
sub pan2() 3d_box number_3d_objects+1,20.9,20,2:3d_position number_3d_objects,(i*20)-240,10,(j*20)-430:3d_color number_3d_objects,100,0,0:3d_chain number_3d_objects,p end_sub
sub pan4() 3d_box number_3d_objects+1,20.9,20,2:3d_position number_3d_objects,(i*20)-230,10,(j*20)-440:3d_y_rotate number_3d_objects,90:3d_color number_3d_objects,0,0,100:3d_chain number_3d_objects,p end_sub
sub pan8() 3d_box number_3d_objects+1,20.9,20,2:3d_position number_3d_objects,(i*20)-240,10,(j*20)-450:3d_color number_3d_objects,100,0,0:3d_chain number_3d_objects,p end_sub
' GÉNÉRATION DU LABYRINTHE sub lab() for j=1 to v+1:a(1,j)=4:a(h+1,j)=1:next j for i=2 to h:a(i,v+1)=8:a(i,1)=2:for j=2 to v:a(i,j)=15:next j:next i r=int(h/2+1):s=int(v/2+1):a(r,s)=15 for k=1 to n r1: i=0 if a(r-1,s)=15 then i=i+1 :c(i)=1 if a(r,s-1)=15 then i=i+1 :c(i)=2 if a(r+1,s)=15 then i=i+1 :c(i)=3 if a(r,s+1)=15 then i=i+1 :c(i)=4 if i=0 then goto r2 if i<>1 then i=int(rnd(i)+1) select c(i) case 1 :a(r,s)=a(r,s)-(int(a(r,s))-int(int(a(r,s))/2)*2):r=r-1:a(r,s)=a(r,s)-(int(a(r,s)/4)-int(int(a(r,s)/4)/2)*2)*4 case 2 :a(r,s)=a(r,s)-(int(a(r,s)/8)-int(int(a(r,s)/8)/2)*2)*8:s=s-1:a(r,s)=a(r,s)-(int(a(r,s)/2)-int(int(a(r,s)/2)/2)*2)*2 case 3 :a(r,s)=a(r,s)-(int(a(r,s)/4)-int(int(a(r,s)/4)/2)*2)*4:r=r+1:a(r,s)=a(r,s)-(int(a(r,s))-int(int(a(r,s))/2)*2) case 4 :a(r,s)=a(r,s)-(int(a(r,s)/2)-int(int(a(r,s)/2)/2)*2)*2:s=s+1:a(r,s)=a(r,s)-(int(a(r,s)/8)-int(int(a(r,s)/8)/2)*2)*8 end_select goto r7 r2: if d=-1 then goto r3 if r<>h then goto r5 if s<>v then goto r4 r=2:s=2:goto r6 r3: if r<>2 then goto r5 if s<>v then goto r4 r=h:s=2: goto r6 r4: s=s+1:d=-1*d:goto r6 r5: r=r+d r6: if a(r,s)=15 then goto r2 goto r1 r7: mur(r,s)=int(rnd(6)+1) if mur(r,s)=mur(r-1,s) or mur(r,s)=mur(r+1,s) or mur(r,s)=mur(r,s-1) or mur(r,s)=mur(r,s+1) then goto r7 next k end_sub
t1: if key_down_code=27 then esc=1 if key_down_code=33 then tpu=1 if key_down_code=34 then tpd=1 if key_down_code=37 then tfg=1 if key_down_code=38 then tfh=1 if key_down_code=39 then tfd=1 if key_down_code=40 then tfb=1 if key_down_code=66 then tcb=1 if key_down_code=72 then tch=1 if key_down_code=97 then pn1=1 if key_down_code=98 then pn2=1 if key_down_code=99 then pn3=1 if key_down_code=100 then pn4=1 if key_down_code=101 then pn5=1 if key_down_code=102 then pn6=1 if key_down_code=103 then pn7=1 if key_down_code=104 then pn8=1 if key_down_code=105 then pn9=1 if key_down_code=107 then pnp=1 if key_down_code=109 then pnm=1 return t2: if key_down_code=27 then esc=0 if key_down_code=33 then tpu=0 if key_down_code=34 then tpd=0 if key_down_code=37 then tfg=0 if key_down_code=38 then tfh=0 if key_down_code=39 then tfd=0 if key_down_code=40 then tfb=0 if key_down_code=66 then tcb=0 if key_down_code=72 then tch=0 if key_down_code=97 then pn1=0 if key_down_code=98 then pn2=0 if key_down_code=99 then pn3=0 if key_down_code=100 then pn4=0 if key_down_code=101 then pn5=0 if key_down_code=102 then pn6=0 if key_down_code=103 then pn7=0 if key_down_code=104 then pn8=0 if key_down_code=105 then pn9=0 if key_down_code=107 then pnp=0 if key_down_code=109 then pnm=0 return
sub fin() for i=number_3d_objects to p+1 step -1:3d_chain_break i,p:next i
terminate end_sub
Si Jack ou quelqu'un peut me donner une explication... Là, je met un exemple de ce que l'on peut faire avec ce genre de chainage: - Code:
-
dim i,j,rot,vrot label prog,fin full_space 0:scene3d 1:full_space 1:color 1,240,240,240
3d_box 1,.75,.5,.5:3d_collision_as_faces 1
for i=2 to 500 3d_box i,.75,.5,.5:3d_position i,250-i,0,-5:3d_color i,i/4,i/8,i/2 3d_chain i,1 next i
message "on déplace l'objet 1 et tous les autres suivent!" 3d_position 1,-3,1,-5:pause 2000:3d_position 1,-3,0,-5 message "on cache" 3d_hide 1 message "coucou, nous revoilà!" 3d_show 1 message "une petite rotation!" for i=0 to 360 step 10:3d_y_rotate 1,i:wait 50:next i message "transparence!" 3d_transparent 1,128:pause 2000:3d_transparent 1,0
3d_box 501,.75,.5,.5:3d_collision_as_faces 501
timer 2 : timer_interval 2,1 : on_timer 2,prog end prog: timer_off 2 if scancode=27 then goto fin if scancode=37 then rot=rot+1:3d_y_rotate 501,rot if scancode=38 then 3d_move 501,0.1 if scancode=39 then rot=rot-1:3d_y_rotate 501,rot if scancode=40 then 3d_move 501,0.1-(2*0.1) if o3d_collision(1,501)=1 caption 0,"collision" else caption 0,"" end_if timer_on 2 return fin: 3d_delete 501 for i=number_3d_objects to 2 step -1:3d_chain_break i,1:next i terminate
A+ Edit: Suis trop fatigué ce soir A demain... | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Est-ce 3d_chain ou 3d_collision qui pose problème? Sam 9 Mar 2013 - 12:41 | |
| Bon, Jack est passé ce matin sur le forum, espérons qu'il a vu le problème que j'ai! J'ai essayé en mettant (dans les subs pan(1), pan(2), pan(4) et pan( ) les murs de mon labyrinthe 3d_box number_3d_objects+1,1,1,1 et en mettant ensuite un 3d_scale number_3d_objects,20.9,20,2 car je me suis dit que cela était peut-être dû aux dimensions de mes objets 3d, mais cela n'a rien changé! A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Est-ce 3d_chain ou 3d_collision qui pose problème? Sam 9 Mar 2013 - 13:13 | |
| Dis Bignono, tu peux faire des animation à partir de fichiers 3ds max ? Je t'explique, j'en ai récupéré des très sympas pour peupler un labyrinthe 3D, mais je ne sais pas faire les animations... Je voudrais voir ce que ça donne. Je vais te faire un répertoire 3DSMAX sur mon webdav pour si tu peux. Idéalement, il faudrait au moins l'animation de la marche et de l'attaque. Si possible aussi celle de quand il est touché et quand il meurt.
Sinon, j'avais pensé mettre un objet 3D en mettant dessus l'animation d'un monstre en 2D, mais je ne crois pas que l'on puisse avoir une box ou autre qui gère une couleur transparente. (On peut rendre un objet 3D transparent, mais du coup, on ne verrait plus la texture ce qui renderait la manipulation inutile). Est-ce que je me trompe ou quelque chose pourrait être fait ? | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Est-ce 3d_chain ou 3d_collision qui pose problème? Sam 9 Mar 2013 - 14:58 | |
| Voilà Bignono (ou toute autre personne intéressée et douée en 3D ...) j'ai mis les fichiers 3DS max sur mon webdav (répertoire 3DSmax). Tiens moi au courant. | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Est-ce 3d_chain ou 3d_collision qui pose problème? Sam 9 Mar 2013 - 17:12 | |
| Bonjour Jicehel Je suis désolé, mais tous les fichiers max ou 3ds max sont inaccessibles pour moi! A moins d'acheter le logiciel qui permet de les ouvrir et de les travailler! Hélas ce logiciel est très cher (3ds max 2013 coûte environ 3700€ HT), et de plus il n'existe aucun convertisseur pour ce genre de fichier à part Deep Exploration qui est en évaluation 30 jours et après il faut payer je ne sais plus combien, mais assez cher si je me souviens bien! Et encore avec ce logiciel, les fichiers max ne s'ouvraient pas tous! Les seuls fichiers d'animation que je peux ouvrir c'est les fichiers md2 avec un petit logiciel gratuit, "biturn" qui peut lire le déroulement des frames en boucle ou pas à pas, ce qui permet de les convertir en fichier 3ds. Je met sur mon web dav un fichier biturn.zip à télécharger. Tu installes tout dans le dossier c:\program files (X86)\biturn, et tu crées un raccourci sur le bureau de biturn.exe. Normalement avec ce petit logiciel, on peut ouvrir de nombreux formats 3d et les convertir en 3ds. Toutefois, attention aux fichiers images représentant les textures, il les transforme et ils ne sont plus utilisables, donc vous perdez votre texture. Moi ce que je fais, soit je déplace fichier texture dans un autre répertoire, soit j'en fais avant une copie! Mais je vous préviens, extraire les frames d'un fichier md2, c'est fastidieux et source d'erreur, surtout quand il y a plus de 200 frames par exemple! C'est pourquoi j'ai laissé tomber ce genre de procédé! Il serait bien plus simple que Jack nous mette une instruction du genre ANIMATE N,20,100 qui jouerait en boucle les frames 20 à 100 d'un objet md2 N et ANIMATE_STOP N,50 pour arrêter la lecture à la frame 50. Bon courage! A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Est-ce 3d_chain ou 3d_collision qui pose problème? Sam 9 Mar 2013 - 17:16 | |
| Merci pour ta réponse Bignono. | |
| | | Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: Est-ce 3d_chain ou 3d_collision qui pose problème? Sam 9 Mar 2013 - 18:08 | |
| - Citation :
- J'ai donc eu ensuite l'idée d'essayer de chainer tous les murs du labyrinthe à un 3d_box que j'ai placé en dessous du sol et du labyrinthe de manière à ce qu'on ne le voit pas. Ce qui est marrant, c'est que dès que l'on déplace cet objet 3d, tout le labyrinthe se déplace, si on le cache avec 3d_hide, tous le labyrinthe disparait, etc....
C'est le fonctionnement normal de 3D_CHAIN : lier tous les objets pour les déplacements et les rotations. - Citation :
- tous les murs chainés à un 3d_box, et mon cone représentant un personnage que je déplace où je veux dans le labyrinthe, ça me donne un seul test pour savoir si il est en collision avec un mur
Non. 3D_CHAIN ne sert qu'à déplacer ou pivoter un ensemble d'objets 3D comme s'ils ne faisaient qu'un. Les calculs de collision sont individuels, pour chaque objet. - Citation :
- je me pose la question de savoir si un grand nombre d'objets chainés à un seul, ne modifient pas le comportement de 3d_collision?
Je ne peux pas te répondre. Il y a peut-être un bug. Il faudrait que je regarde en détail. - Citation :
- 3d_collision_as_faces n'a pas de coloration syntaxique dans l'éditeur
Je corrigerai cela pour la prochaine version. - Citation :
- Il serait bien plus simple que Jack nous mette une instruction du genre ANIMATE N,20,100 qui jouerait en boucle les frames 20 à 100 d'un objet md2 N et ANIMATE_STOP N,50 pour arrêter la lecture à la frame 50
J'ai déjà fait les commandes et fonctions suivantes, mais je les ai desactivées car elles utilisent en interne la même gestion d'événements que les objets système et perturbent en particulier le clic sur un SUB_MENU. Je pourrai les réintroduire temporairement, en avertissant qu'elles peuvent perturber les menus. Commandes: 3D_FRAME_NEXT N : se positionne à la trame suivante de l'animation courante du 3D_ACTOR numéro N 3D_ANIMATION_LOOP N,A$ : joue en boucle l'animation de nom A$ du 3D_ACTOR numéro N 3D_ANIMATION_STOP N : arrête l'animation d'un objet 3D de type MD2 3D_ANIMATION_PLAY N,A$ : joue l'animation de nom A$ du 3D_ACTOR numéro N puis s'arrête à la dermière trame 3D_FRAME_POSITION N,P : se positionne sur la trame P de l'animation courante du 3D_ACTOR numéro N 3D_ANIMATION_POSITION N,A$ : se positionne sur l'animation de nom A$ du 3D_ACTOR numéro N ANIMATION_NAMES_ADD N,M : ajoute à l'objet système de numéro N (MEMO, COMBO, LIST, DLIST) les noms des animations du 3D_ACTOR de numéro M Fonctions : O3D_ANIMATION_COUNT(N) : retourne le nombre d'animation(s) pour le 3D_ACTOR numéro N O3D_FRAME_COUNT(N) : retourne le nombre total de trames des animations pour le 3D_ACTOR numéro N O3D_ANIMATION_FRAME_COUNT(N,A$) : retourne le nombre de trames que contient l'animation de nom A$ pour le 3D_ACTOR numéro N O3D_ANIMATION_FRAME_END(N,A$) : retourne le numéro de la trame qui termine l'animation de nom A$ pour le 3D_ACTOR numéro N O3D_ANIMATION_FRAME_START(N,A$) : retourne le numéro de la trame qui commence l'animation de nom A$ pour le 3D_ACTOR numéro N | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Est-ce 3d_chain ou 3d_collision qui pose problème? Sam 9 Mar 2013 - 18:43 | |
| @Jack: serait-ce envisageable d'avoir une directive à placer au début du programme, et qui permettrait de sélectionner l'un ou l'autre de ces comportements, de façon définitive pour le programme ? Je veux dire, rien qui soit modifiable dynamiquement, mais qui serait mis en place une fois, tout comme les #INCLUDE ? | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Est-ce 3d_chain ou 3d_collision qui pose problème? Sam 9 Mar 2013 - 18:46 | |
| Merci Jack de ta réponse! Même si les instructions que tu nous promet perturbe le système avec un sub_menu, je ne me vois pas faire un jeu 3d avec un main_menu et un sub_menu, et quand bien même il faudrait ajouter un menu, on peut certainement contourner le problème avec un container et des button pour faire un menu. Oui, je vois où peut-être le problème, si je veux faire un petit utilitaire avec un main_menu dans lequel on voudrait tester les frames et les animations de l'objet 3d_actor dans une scene 3d avant de s'en servir dans un programme. Tout comme un 3ds_viewer! Le principal, c'est de savoir qu'il y a un bug. En tout cas, si tu nous met à disposition ces commandes-là pour la prochaine version, la 3d de panoramic va faire un sérieux bond en avant! Je ne peux dire qu'une chose: Merci JACK! A+ | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 9 Mar 2013 - 18:55 | |
| même si il y a un menu, à partir du moment ou on lance le jeu par play, on peut le désactiver et le réactiver par stop...non? | |
| | | Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: Est-ce 3d_chain ou 3d_collision qui pose problème? Dim 10 Mar 2013 - 21:21 | |
| - Citation :
- Il serait bien plus simple que Jack nous mette une instruction du genre ANIMATE N,20,100 qui jouerait en boucle les frames 20 à 100 d'un objet md2 N et ANIMATE_STOP N,50 pour arrêter la lecture à la frame 50.
En attendant que je résolve le problème de perturbation des animations 3D avec les clics sur les SUB_MENUs, voici une version spéciale de PANORAMIC qui possède des fonctionnalités sur les animations, sous forme de simple exécutable PANORAMIC_ANIMATION.exe Cette version correspond à la dernière version instantanée du 14 février 2013, mais sans les objets systèmes ! C'est une version particulière que j'utilise pour le codage et la mise au point de la 3D. Cette version n'a qu'un seul objet système: le SCENE3D numéro 1 avec une caméra et une lumière. De plus, lorsqu'on charge un source, cette version prépare un "contexte" qui fait qu'on peut directement tester son source, sans avoir besoin de créer un SCENE3D. Car cette version exécute en interne les commandes suivantes: FULL_SPACE 0 SCENE3D 1 FULL_SPACE 1 BORDER_SMALL 0 PRINT_TARGET_IS 1 Comme événement, on peut utiliser ON_CLICK et ON_DOUBLE_CLICK sur le SCENE3D créé automatiquement. On ne peut donc utiliser cette version que pour des sources 3D, mais on peut utiliser TOUTES les fonctionnalités de la 3D. J'ai codé dans cette version 3 commandes sur les animations: 3D_ANIMATION_LOOP N,M : joue en boucle l'animation numéro M du 3D_ACTOR numéro N 3D_ANIMATION_STOP N : arrête l'animation du 3D_ACTOR numéro N 3D_ANIMATION_PLAY N,M : joue l'animation numéro M du 3D_ACTOR numéro N puis s'arrête à la dermière trame de l'animation et une fonction pour connaitre le nombre d'animations d'un 3D_ACTOR: O3D_ANIMATION_COUNT(N) : retourne le nombre d'animations du 3D_ACTOR numéro N Une animation est un ensemble de trames. La première animation d'un 3D_ACTOR a le numéro 0. il faut bien comprendre que l'animation d'un 3D_ACTOR est complètement asynchrone du déroulement de l'exécution du programme. La commande 3d_animation_loop 3,5 doit être comprise comme: "à partir de ce moment, le 3D_ACTOR numéro 3 va jouer en boucle toutes les trames de son animation numéro 5"Si l'exécution du programme s'arrête, par exemple par END pour que seuls les événements soient traités, l'animation continue néanmoins à se dérouler. Les animations sont donc difficilement compatibles de la programmation séquentielle; car les commandes d'animation LOOP et PLAY ne sont qu'une mise en route d'une animation qui va ensuite se débrouiller de façon autonome. La programmation événementielle est toute indiquée pour gérer les animations. Voici quelques exemples sur un personnage contenant 17 animations (seules 10 sont actives): 1 - on joue une fois l'animation numéro 7 - Code:
-
3D_actor 1 3D_load_object 1,"tris.md2" cam_z_position 30 light_z_position 30 3D_x_rotate 1,90 3d_load_texture 1,"alita2.jpg" 3d_animation_play 1,7 2 - on joue en boucle l'animation numéro 0 - Code:
-
3D_actor 1 3D_load_object 1,"tris.md2" cam_z_position 30 light_z_position 30 3D_x_rotate 1,90 3d_load_texture 1,"alita2.jpg" 3d_animation_loop 1,0 3 - en cliquant avec la souris sur l'écran (clic gauche) on effectue les 10 animations - Code:
-
dim anim%
label change_animation
3D_actor 1 3D_load_object 1,"tris.md2" cam_z_position 30 light_z_position 30 3D_x_rotate 1,90 3d_load_texture 1,"alita2.jpg"
3d_text 2,"Model with "+str$(o3d_animation_count(1))+" animations" 3d_scale 2,5,5,5
on_click 1,change_animation anim%=0 3d_animation_loop 1,anim%
end
change_animation: anim%=anim%+1 if anim%=11 then anim%=0 3d_text_change 2,"Playing animation #"+str$(anim%) 3d_animation_loop 1,anim% return Voici un ZIP qui contient: PANORAMIC_ANIMATION.exe, les 3 exemples ci-dessus, le personnage MD2 : un 3D_ACTOR avec des animations et sa texture. Télécharger ce fichierBignono, tu peux commencer à utiliser les animations d'objets MD2 (3D_ACTOR) ! D'autres commandes sur les animations suivront ... | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Est-ce 3d_chain ou 3d_collision qui pose problème? Dim 10 Mar 2013 - 22:19 | |
| Merci Jack. j'ai hâte que ce soit intégré dans Panoramic ne serait-ce que pour voir ce que Bignono nous pondera avec ces jolies possibilités. Si ça marche bien, je pense que l'on reverra des anciens adeptes de la 3D. Encore merci et bon courage | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Est-ce 3d_chain ou 3d_collision qui pose problème? Dim 10 Mar 2013 - 23:42 | |
| Merci beaucoup JACK! J'ai bidouillé pendant une dizaine de minutes pour voir comment ouvrir et lancer les programmes et finalement j'y suis arrivé! Ma première impression, c'est que les animations me semblent un peu rapide, et donc dans l'avenir, mais je suis sûr que tu y as déjà pensé, ce serait de coder une commande du genre "SPEED_ANIMATION N,V" avec V variant de 0 à 255. Ma seconde impression, c'est que là ça m'ouvre de grand horizon! Donc dans un premier temps, en reprenant ton 3ème programme que je vais un peu transformer, c'est de visionner toutes les animations de tous mes fichiers md2 que je possède dans mon ordi! J'ai vu que j'avais 72 dossiers contenant des 3d_actor et parfois il y en a plusieurs dans certains dossiers. J'ai du pain sur la planche! Bon aussi si quelqu'un a un ou des liens vers un site ou je pourrais télécharger des fichiers md2. Mais je veux des gentils personnages, des animaux, des fées, ... etc... Vous savez, je me vois mal faire un jeu pour mes filles avec un méchant ogre, ou un truc de ce genre [img] [/img]je ne veux pas qu'elles fassent des cauchemars! Encore Merci JACK! A+ | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 11 Mar 2013 - 1:25 | |
| @ Bignono, Je suis bien d'accord avec toi, c'est un coup à passer une nuit blanche. Quoique les jeunes de nos jours, plus c'est moche et dégueulasse et plus ils aiment | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Est-ce 3d_chain ou 3d_collision qui pose problème? Mer 13 Mar 2013 - 8:29 | |
| En tout cas, j'ai commencé à bosser avec la version de 30 jours 3DSMax et du coup j'ai mis sur mon webdav un répertoire MD2 avec les animations tirées des fichiers 3DSMax (7 animations: 4 pour un archer et 3 pour un mage - marche, reste immobile et tire + mort pour l'archer). J'en ferais d'autres (il me reste 28 jours ...) | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Est-ce 3d_chain ou 3d_collision qui pose problème? Mer 13 Mar 2013 - 19:51 | |
| Un petit coucou pour dire que désormais les "objets" MD2 sont séparés: il y a toujours le mage et l'archer mais il y a un chevalier avec 20 animations et un gobelin avec 20 animations Si vous voulez il y a aussi un champignon (non animé en MD2) J'essayerais d'en rajouter d'autres plus tard | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Est-ce 3d_chain ou 3d_collision qui pose problème? Lun 18 Mar 2013 - 1:25 | |
| Fichiers MD2 type "Médiéval fantastique" sur mon Webdav Archer Chevalier Cube DemonA2pattes Ettin Fees Gobelin Imp Mage Minotaure Ogre Test
A la fin j'ajouterais aussi un répertoire avec les MD2 qui fonctionnent sous 3DS Max mais pas sur Panoramic En stock aussi et qui augmentent: des objets en MD2 que je partagerais plus tard
| |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Est-ce 3d_chain ou 3d_collision qui pose problème? Lun 18 Mar 2013 - 11:59 | |
| Petite question à Jack. Sais-tu pourquoi certains fichier MD2 ne passent pas ? (Ils sont lus dans 3DS max et "fonctionnennt", mais il ne passent pas dans Panoramic) Il y a sans doute des choses à faire à moins que cela ne vienne d'un problème de lecture ou d'un bug pour un cas particulier sur les MD2, mais j'aimerais bien savoir si je peux faire quelque chose. Si besoin Jack, je peux mettre des exemple de MD2 qui ne passent pas.
Autre question, certains fichiers 3DS fait par 3DS max ne s'ouvrent pas dans Panoramic. C'est certainement dû à une évolution de ce format. Jack, penses-tu améliorer ou accroitre la compatibilité de Panoramic avec ce format. Je sais qu'à un moment tu parlais d'autres formats supportés. Je ne sais plus, mais je crois que tu parlais des BLEND entre autre. Peut être aussi des fichiers ASC ou OBJ ? Ou les 5 format qui sont gérés par Toonic: X, 3DS, MDL, MD2, MD3 (voir MD5 ?) (D'ailleurs, si les format 2D PCX,PNG et TGA gérés par Toonic étaient intégrés aussi, ce serait pratique, bref avoir les apports de Toonic dans Panoramic, si cela est techniquement possible)
La 3D reviens en ce moment, d'où mes questions pour faire le point sur tes projets sur ce point comme tu as commencé à nous en parler un peu | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Est-ce 3d_chain ou 3d_collision qui pose problème? Lun 18 Mar 2013 - 13:23 | |
| Après la question à Jack, la question pour Bignono... Bignono, tu as ta base d'objet MD2. Pourrais-tu la mettre sur ton Webdav, histoire que je complète ma bibliothèque aussi ? | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Est-ce 3d_chain ou 3d_collision qui pose problème? Lun 18 Mar 2013 - 18:41 | |
| Bonjour Jicehel Il y a un fichier mes_actors.zip sur mon web dav. J'espère que tu pourras le télécharger malgré que je télétransmet d'autres fichiers volumineux en ce moment sur mon web dav pour un généalogiste dans le dossier "AUVERS". A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Est-ce 3d_chain ou 3d_collision qui pose problème? Lun 18 Mar 2013 - 21:48 | |
| Merci Bignono. Je commence à trier | |
| | | Contenu sponsorisé
| Sujet: Re: Est-ce 3d_chain ou 3d_collision qui pose problème? | |
| |
| | | | Est-ce 3d_chain ou 3d_collision qui pose problème? | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |