| | Dessin avancé... | |
| | Auteur | Message |
---|
ClaudeARDILLER Débutant
Messages : 13
| Sujet: Dessin avancé... Dim 16 Mar 2008 - 19:19 | |
| Bonjour à tous. Je suis actuellement à la recherche d'un spécialiste en dessin avancé, c'est à dire quelqu'un qui saurait manipuler la fonction suivante: draw_set_blend_mode_ext(src,dest); Afin de m'in diquer la façon d'obtenir un sprite monocolorisé et transparent. Je m'explique, mon sprite est normalement colorisé, avec une couleur transparente, et je cherche à obtenir sa silhouette (un peu comme une ombre du sprite), celle-ci pouvant avoir la couleur de mon choix, et la partie transparente étant toujours transparente. J'ai fait plusieurs essais mais je ne suis arrivé à rien, entre tous les possibilité des différents modes (il y en a 11), et les différentes couleurs du sprite (le mien en a 10). Ce qui nous ferait 11x11x10 possibilités soit ... euh ... beaucoup : . Pour l'instant, j'utilise une méthode plutot rustre, mais qui marche, je crée un double du sprite et remplace toutes les couleurs autres que noire ou transparent par du noir, grâce à la procédure récupérée lors de mon sujet précédent intitulé: "Comment changer les couleurs d'un sprite ?", ici: http://zone-freegames.forumactif.com/gm-problemes-niveau-moyen-f1/comment-changer-les-couleurs-d-un-sprite-t6452.htm(J'espère qu'il n'est pas interdit de mettre des liens vers d'autres sites, si c'est la cas, je vous prie de m'en excuser.) En attendant mieux... Si l'un d'entre vous s'y connait suffisament, je lui serait reconnaisant de son aide. Amicalement, Claude. PS: J'ai testé: draw_sprite_ext() avec blend=c_black mais cela laisse des zones gris clair. |
| | | nicoulas *Excellent utilisateur*
Messages : 6030 Localisation : Dordogne Projet Actuel : Croustaface Tower Defense
| Sujet: Re: Dessin avancé... Dim 16 Mar 2008 - 19:30 | |
| et avec un draw_set_color(c_black) puis un draw_set_alpha ça le ferait pas ? |
| | | M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: Dessin avancé... Dim 16 Mar 2008 - 20:31 | |
| si j'ai bien compris, tu veux ton sprite en niveau de gris (+noir, tous les gris + blanc). c'est bien ça? Il existe dans ce cas une solution. - Code:
-
temp=sprite_duplicate(ton_sprite) sprite_set_alpha_from_sprite(temp,temp) w=sprite_get_width(temp) h=sprite_get_height(temp) stemp=surface_create(w,h) surface_set_target(stemp) draw_clear(0) draw_sprite_ext(temp,-1,0,0,1,1,0,c_white,1) surface_reset_target() sprite_delete(temp) temp=sprite_create_from_surface(stemp,0,0,w,h,1,1,1,1,0,0) surface_free(stemp) Ton sprite niveau de gris se trouve dans temp _________________ Tous les icones de gm utilisables sur le cbna ICI |
| | | master47 Utilisateur confirmé: Rang *****
Messages : 2368 Projet Actuel :
-------------------
> PacWars
> The Perfect Pattern Studio
| Sujet: Re: Dessin avancé... Dim 16 Mar 2008 - 21:01 | |
| |
| | | M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: Dessin avancé... Lun 17 Mar 2008 - 9:09 | |
| Argl c'est faux, je corrige : - Code:
-
ton_sprite=argument0; w=sprite_get_width(ton_sprite); h=sprite_get_height(ton_sprite); stemp=surface_create(w,h);
surface_set_target(stemp); draw_clear(c_white); surface_reset_target(); temp=sprite_create_from_surface(stemp,0,0,w,h,1,0,1,1,0,0);
sprite_set_alpha_from_sprite(temp,ton_sprite);
surface_set_target(stemp); draw_clear(0); draw_sprite_ext(temp,-1,0,0,1,1,0,c_white,1); surface_reset_target(); sprite_delete(temp); temp=sprite_create_from_surface(stemp,0,0,w,h,1,1,1,1,0,0); surface_free(stemp); return temp; C'est un script . tu l'appelle, exemple : sprite_gris(nom_du_sprite_normal) et sa te sort le sprit en niveau de gris. Ca s'utilise une seule fois (genre dans create) et comme ça : spr_gris=nom_du_script(nom_du_sprite_normal) spr_gris est le sprite en grayscale. Voila un exemple : http://lecbna.org/mad_doc/gm6/grayscale.gm6_________________ Tous les icones de gm utilisables sur le cbna ICI |
| | | ClaudeARDILLER Débutant
Messages : 13
| Sujet: Merci Lun 17 Mar 2008 - 11:24 | |
| Merci, à tous. Hélas, je me suis peut-être mal exprimé, mais je ne cherche pâs à faire un sprite en niveaux de gris, mais un sprite à une seule couleur (plus la couleur transparente), un peu comme un cache.
M@d_Doc: Mrci pour le script, ça pourra surement m'être utile. nicoulas: Merci aussi, je teste dès ce soir. master47: Merci par ricochet ... |
| | | M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: Dessin avancé... Lun 17 Mar 2008 - 11:42 | |
| ok, pas de problème : - Code:
-
ton_sprite=argument0; w=sprite_get_width(ton_sprite); h=sprite_get_height(ton_sprite); stemp=surface_create(w,h);
surface_set_target(stemp); draw_clear(0); draw_sprite_ext(temp,-1,0,0,1,1,0,c_white,1); surface_reset_target();
temp=sprite_create_from_surface(stemp,0,0,w,h,1,1,0,1,0,0); surface_free(stemp); return temp; pareil, tu rentre le sprite, ca te sort un sprite transparent uniquement blanc, donc en utilisant image_blend, tu peux lui donner la couleur que tu veux... EDIT Finalement ca marche pas. J'ai la solution théorique, mais on dirait que le blend mode marche pas dans les surfaces. _________________ Tous les icones de gm utilisables sur le cbna ICI |
| | | ClaudeARDILLER Débutant
Messages : 13
| Sujet: Re: Dessin avancé... Mer 19 Mar 2008 - 11:05 | |
| Progrès dans la résolution de mon problème. La ligne: - Code:
-
draw_sprite_ext(sprite_index, 0, x, y, 1, 1, 0, c_black, 1); fonctionne (seulement pour le noir). Mes sprites avaient la case "Smooth edges" cochées, ce qui laissait apparaître des zones grises. Je cherche toujours à coloriser cette "ombre" dans le "Draw event", sans créer un sprite supplémentaire dans le jeu... |
| | | M@d_Doc Modérateur
Messages : 6600 Localisation : 47°44'8.04 Projet Actuel : aucun
| Sujet: Re: Dessin avancé... Mer 19 Mar 2008 - 12:38 | |
| bon, mes derniers tests ont pas marché, mais je te donne la marche à suivre : tu fait une surface, fond blanc, tu dessine dedans le sprite en noir, puis normalement : - Code:
-
draw_set_blend_mode_ext(bm_inv_dest,bm_inv_src) draw_rectangle //couleur : blanc normalement dans ce blend mode, dessiner du blanc revient à faire apparaitre l'inverse de l'image qu'il y avait avant... Après,tu enregistre ca dans un nouveau sprite, qui sera donc blanc sur fond noir. Tu t'en sers, et le blend du sprite définira sa couleur... _________________ Tous les icones de gm utilisables sur le cbna ICI |
| | | Contenu sponsorisé
| Sujet: Re: Dessin avancé... | |
| |
| | | | Dessin avancé... | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |