brachius Bavard
Messages : 105 Localisation : Belgique Projet Actuel : XyD
| Sujet: effet distorsion Ven 8 Jan 2010 - 11:29 | |
| Bonjour tous voila je recherche un tuto ou un exemple montrant comment réalisé un effet de distorsion (style effet de lentille). Bien le merci |
|
jo *Excellent utilisateur*
Messages : 4879 Localisation : CENSURE T_T Projet Actuel : FAC
| Sujet: Re: effet distorsion Sam 9 Jan 2010 - 9:54 | |
| J'ai pas de lien mais va voir sur les surfaces. c'est le seul moyen de créer une distorsion. _________________ http://viciousslugs.sup.fr/ <- Des imbéciles en action. Venez visiter, on recherche des lecteurs, des auteurs, et ça paye mal. En fait ça paye pas, mais ya moyen de se marrer. |
|
glcraft Utilisateur confirmé: Rang *****
Messages : 1698 Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P Projet Actuel : Jeu de survie avancé
||--------
| Sujet: Re: effet distorsion Sam 9 Jan 2010 - 17:11 | |
| excusez moi mais qu'est que c'est une distortion ? |
|
Wargamer *Excellent utilisateur*
Messages : 6938 Projet Actuel : Bataille de cake au fruits
| Sujet: Re: effet distorsion Sam 9 Jan 2010 - 18:43 | |
| déformation de l'iamge, voir ton avatar _________________ Règle #1 du CBNA, ne pas chercher à faire dans la subtilité; personne comprend |
|
Invité Invité
| Sujet: Re: effet distorsion Sam 9 Jan 2010 - 19:45 | |
| sprites, backgrounds, surfaces, polygones texturés, ou les deux.
enfaite l'élément le plus important, c'est COMMENT faire pour capturer l'image ou l'élément de l'image à déformer ?
Il suffit d'une mauvaise manipulation des différentes fonctions et ressources pour que ton jeu "lag comme l'enfer." |
|
brachius Bavard
Messages : 105 Localisation : Belgique Projet Actuel : XyD
| Sujet: Re: effet distorsion Dim 10 Jan 2010 - 19:22 | |
| je vois merci je vais regarder cette piste pour avancer dans mon projet. Merci à tous. Pas evident du tout ce systeme de surface ... |
|
CoDeAVE Utilisateur confirmé: Rang **
Messages : 408 Localisation : Québec
| Sujet: Re: effet distorsion Lun 11 Jan 2010 - 8:50 | |
| Bon voila, j'ai bidouiller un peu et je suis arriver à ce résultat: Le script n'est pas parfait... Quand la lentille touche au bord de la vue, elle ne rend plus comme il faut. De plus, il n'est vraiment mais vraiment pas optimisé, c'est une ébauche! Il serait facile de faire un effet de distorsion à partir de ce script... jouer avec les angles aux lieux des distances des vertex. Mettre cette ligne dans le draw d'un objet qui est par dessus les autres: draw_lens(mouse_x, mouse_y, 100, 0.75, 30); - Spoiler:
//draw_lens(x, y, r, deformation, precision) //deformation entre 0 et 1.0 rend un effet de lentille qui zoom //deformation plus grand que 1.0 fait le contraire //deformation = 0 fait rien // //precision est le nombre d'itération pour le rendu de //la lentille
var xx; xx = argument0; var yy; yy = argument1; var r; r = argument2; var d; d = argument3; var p; p = argument4;
var dim; dim = (2*r);
var u; u = (dim/p);//Cellule var c; c = (p/2);//Centre
var src; src = sprite_create_from_screen(xx - r, yy - r, dim, dim, false, false, 0, 0); var tex; tex = sprite_get_texture(src, 0);
var oc; oc = draw_get_color(); var oa; oa = draw_get_alpha();
draw_set_color(c_white); draw_set_alpha(1.0);
d3d_transform_add_translation(xx - r, yy - r, 0);
d3d_primitive_begin_texture(pr_trianglelist, tex); for(h = 0; h < p; h += 1) { for(w = 0; w < p; w +=1) { var x1; x1 = w*u; var y1; y1 = h*u; var x2; x2 = (w+1)*u; var y2; y2 = h*u; var x3; x3 = (w+1)*u; var y3; y3 = (h+1)*u; var x4; x4 = w*u; var y4; y4 = (h+1)*u; var cu; cu = c*u; var tx1; tx1 = w/p; var ty1; ty1 = h/p; var tx2; tx2 = (w+1)/p; var ty2; ty2 = (h+1)/p; if (point_distance(x1, y1, cu, cu) <= r){ x1 = lengthdir_x((power(point_distance(x1, y1, cu, cu)/r, d))*r, point_direction(cu, cu, x1, y1)) + cu; y1 = lengthdir_y((power(point_distance(x1, y1, cu, cu)/r, d))*r, point_direction(cu, cu, x1, y1)) + cu; } if (point_distance(x2, y2, cu, cu) <= r){ x2 = lengthdir_x((power(point_distance(x2, y2, cu, cu)/r, d))*r, point_direction(cu, cu, x2, y2)) + cu; y2 = lengthdir_y((power(point_distance(x2, y2, cu, cu)/r, d))*r, point_direction(cu, cu, x2, y2)) + cu; } if (point_distance(x3, y3, cu, cu) <= r){ x3 = lengthdir_x((power(point_distance(x3, y3, cu, cu)/r, d))*r, point_direction(cu, cu, x3, y3)) + cu; y3 = lengthdir_y((power(point_distance(x3, y3, cu, cu)/r, d))*r, point_direction(cu, cu, x3, y3)) + cu; } if (point_distance(x4, y4, cu, cu) <= r){ x4 = lengthdir_x((power(point_distance(x4, y4, cu, cu)/r, d))*r, point_direction(cu, cu, x4, y4)) + cu; y4 = lengthdir_y((power(point_distance(x4, y4, cu, cu)/r, d))*r, point_direction(cu, cu, x4, y4)) + cu; } d3d_vertex_texture(x1, y1, 0, tx1, ty1); d3d_vertex_texture(x2, y2, 0, tx2, ty1); d3d_vertex_texture(x4, y4, 0, tx1, ty2); d3d_vertex_texture(x2, y2, 0, tx2, ty1); d3d_vertex_texture(x4, y4, 0, tx1, ty2); d3d_vertex_texture(x3, y3, 0, tx2, ty2);
} } d3d_primitive_end();
d3d_transform_set_identity();
draw_set_alpha(oa); draw_set_color(oc);
sprite_delete(src);
Dernière édition par CoDeAVE le Lun 11 Jan 2010 - 22:18, édité 1 fois |
|
Wargamer *Excellent utilisateur*
Messages : 6938 Projet Actuel : Bataille de cake au fruits
| Sujet: Re: effet distorsion Lun 11 Jan 2010 - 21:58 | |
| mes yeux _________________ Règle #1 du CBNA, ne pas chercher à faire dans la subtilité; personne comprend |
|
CoDeAVE Utilisateur confirmé: Rang **
Messages : 408 Localisation : Québec
| Sujet: Re: effet distorsion Mar 12 Jan 2010 - 22:51 | |
| |
|