| | créer un sprite à partir d'un autre sprite | |
|
+4glcraft Wargamer onilink_ blendman 8 participants | |
Auteur | Message |
---|
blendman Utilisateur confirmé: Rang **
Messages : 433 Projet Actuel : Crée des jeux, logiciels, BD, Romans et nouvelles.
| Sujet: créer un sprite à partir d'un autre sprite Sam 25 Déc 2010 - 18:52 | |
| salut peut-on créer un sprite (A) à partir d'un ou plusieurs autres sprites (B, C,D...), mais pas tout l'écran ? Je voudrais quelque chose qui gère aussi la transparence (par exemple, si les sprites B, C ou D ont de la transparence, le sprite A aurait leur transparence. C'est possible ? Merci si vous avez des infos là-dessus . |
| | | onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: créer un sprite à partir d'un autre sprite Sam 25 Déc 2010 - 18:59 | |
| ben y a sprite_duplicate pour dupliquer un sprite. Sinon si tu veux y faire des modifs a ton sprite tu fait :
draw_sprite(monsprite, 0,0,0) draw_.... //tes modifs new_spr = sprite_create_from_screen(0,0,sprite_get_width(monsprite), sprite_get_height(monsprite),0, 1, 0, 0, 0, 0)
voila voila |
| | | blendman Utilisateur confirmé: Rang **
Messages : 433 Projet Actuel : Crée des jeux, logiciels, BD, Romans et nouvelles.
| Sujet: Re: créer un sprite à partir d'un autre sprite Sam 25 Déc 2010 - 19:10 | |
| - onilink_ a écrit:
- ben y a sprite_duplicate pour dupliquer un sprite.
Sinon si tu veux y faire des modifs a ton sprite tu fait :
draw_sprite(monsprite, 0,0,0) draw_.... //tes modifs new_spr = sprite_create_from_screen(0,0,sprite_get_width(monsprite), sprite_get_height(monsprite),0, 1, 0, 0, 0, 0)
voila voila yep, mais le pb c'est que ça crée un sprite qui prend tout le screen, et moi, je ne veux que certains éléments du screen :p (genre pas le fond) |
| | | onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: créer un sprite à partir d'un autre sprite Sam 25 Déc 2010 - 19:15 | |
| essaye de faire un draw_clear_alpha avant , sinon tu le fait dans une surface et tu la convertie en sprite |
| | | blendman Utilisateur confirmé: Rang **
Messages : 433 Projet Actuel : Crée des jeux, logiciels, BD, Romans et nouvelles.
| Sujet: Re: créer un sprite à partir d'un autre sprite Sam 25 Déc 2010 - 19:51 | |
| - onilink_ a écrit:
- essaye de faire un draw_clear_alpha avant , sinon tu le fait dans une surface et tu la convertie en sprite
oui, la surface j'y ai pensé, mais il ya ce problème avec les alpha justement. Si on copie plusieurs sprites (avec alpha) elle prend l'alpha du groupe ? EDIT : en fait, il faudrait un truc genre create_surface_from_sprite mais visiblement, ça n'existe pas |
| | | Wargamer *Excellent utilisateur*
Messages : 6938 Projet Actuel : Bataille de cake au fruits
| Sujet: Re: créer un sprite à partir d'un autre sprite Sam 25 Déc 2010 - 22:12 | |
| tu fait un set_alpha_from_sprite(monsprite,monsprite) et devrais marcher si GM fait bien son travail avec les surfaces(je dit ca si jamais le create_sprite copy que le RGB alors comme ca tu peux chercher un simili alpha) |
| | | blendman Utilisateur confirmé: Rang **
Messages : 433 Projet Actuel : Crée des jeux, logiciels, BD, Romans et nouvelles.
| Sujet: Re: créer un sprite à partir d'un autre sprite Dim 26 Déc 2010 - 10:22 | |
| - Wargamer a écrit:
- tu fait un set_alpha_from_sprite(monsprite,monsprite) et devrais marcher si GM fait bien son travail avec les surfaces(je dit ca si jamais le create_sprite copy que le RGB alors comme ca tu peux chercher un simili alpha)
je vais tester ça, merci . Sinon, sur GMC, j'ai trouvé un exemple très intéressant qu'un gars a fait : http://gmc.yoyogames.com/index.php?showtopic=485658&st=0&p=3599448&hl=+create%20+surface%20+from%20+sprite&fromsearch=1&#entry3599448EDIT / j'ai testé ce fichier, il est intéressant lorsque qu'on n'a pas de view, mais dès qu'on met des view (comme pour mon logiciel), ça ne marche plus, car dès qu'on bouge la view, ça efface ce qu'on a dessiné. Si quelqu'un peut y jeter un oeil et voir si on peut corriger le problème, ça m'intéresse (car je n'ai pas réussi).
Dernière édition par blendman le Dim 26 Déc 2010 - 15:02, édité 1 fois |
| | | 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: créer un sprite à partir d'un autre sprite Dim 26 Déc 2010 - 14:05 | |
| lol, pour quelqu'un qui poste sur le GMC, c'est vachement bien développer ! maintenant, dans son cas, il prend un partie de l'ecran pour faire un sprite (meme tout l'ecran !), toi ce que tu voulais c'est un sprite a partir un autre sprite, non ? |
| | | blendman Utilisateur confirmé: Rang **
Messages : 433 Projet Actuel : Crée des jeux, logiciels, BD, Romans et nouvelles.
| Sujet: Re: créer un sprite à partir d'un autre sprite Dim 26 Déc 2010 - 15:50 | |
| - gabin49 a écrit:
- lol, pour quelqu'un qui poste sur le GMC, c'est vachement bien développer !
maintenant, dans son cas, il prend un partie de l'ecran pour faire un sprite (meme tout l'ecran !), toi ce que tu voulais c'est un sprite a partir un autre sprite, non ? en fait, ce que je souhaiterai, c'est trouvé une méthode plus générale, qui permette de dessiner des sprites (et draw_circle, draw_line, etc..) sur une surface, avec les alpha correct. Pour le moment, les surfaces bugguent en ce qui concerne l'alpha. Une image pour comprendre ce que j'aimerai obtenir (en fait, le même résultat qu'en créant des instance d'un sprite transparent, mais en utilisant une surface) : le gmk : http://blendman.free.fr/2D/GM/surfaceAlphaBug.gmkJ'ai testé avec des blend mode, mais je n'ai pas encore réussi à obtenir l'effet que je voulais. j'aimerai pouvoir gérer l'opacité (brush et surface), ainsi que la couleur (brush et éventuellement surface). si vous avez une idées, je suis preneur :p. |
| | | [TheDarkTiger] Modérateur
Messages : 7420 Localisation : Essonne
| Sujet: Re: créer un sprite à partir d'un autre sprite Dim 26 Déc 2010 - 16:34 | |
| |
| | | onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: créer un sprite à partir d'un autre sprite Dim 26 Déc 2010 - 16:49 | |
| oui, le fameux alpha prémultiplié. Sauf que pour les couleurs y a des blems je crois :/ La seule solution a mon avis est de faire une dll qui gère les surface grâce a GMAPI. |
| | | [TheDarkTiger] Modérateur
Messages : 7420 Localisation : Essonne
| Sujet: Re: créer un sprite à partir d'un autre sprite Dim 26 Déc 2010 - 16:51 | |
| Bha je vais faire quelques tests ... |
| | | blendman Utilisateur confirmé: Rang **
Messages : 433 Projet Actuel : Crée des jeux, logiciels, BD, Romans et nouvelles.
| Sujet: Re: créer un sprite à partir d'un autre sprite Dim 26 Déc 2010 - 16:58 | |
| - [TheDarkTiger] a écrit:
- Bha je vais faire quelques tests ...
tu pourrais poster le gmk de ton image du dessus pour que je teste aussi de mon coté ? En tout cas, merci pour tes tests |
| | | [TheDarkTiger] Modérateur
Messages : 7420 Localisation : Essonne
| Sujet: Re: créer un sprite à partir d'un autre sprite Dim 26 Déc 2010 - 17:01 | |
| Tu préfère pas celui là ? |
| | | blendman Utilisateur confirmé: Rang **
Messages : 433 Projet Actuel : Crée des jeux, logiciels, BD, Romans et nouvelles.
| Sujet: Re: créer un sprite à partir d'un autre sprite Dim 26 Déc 2010 - 17:10 | |
| |
| | | [TheDarkTiger] Modérateur
Messages : 7420 Localisation : Essonne
| Sujet: Re: créer un sprite à partir d'un autre sprite Dim 26 Déc 2010 - 17:13 | |
| J'upload Par contre, je vais rien te cacher, y a un petit bug pour l'affichage pendant que l'on dessine ... tu verra bien. Rien de bien grave, mais j'ai la flème de le corriger ... http://www.megaupload.com/?d=E37U6Z90 |
| | | onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: créer un sprite à partir d'un autre sprite Dim 26 Déc 2010 - 17:38 | |
| Ça marche plutot bien, bien joué |
| | | blendman Utilisateur confirmé: Rang **
Messages : 433 Projet Actuel : Crée des jeux, logiciels, BD, Romans et nouvelles.
| Sujet: Re: créer un sprite à partir d'un autre sprite Dim 26 Déc 2010 - 17:39 | |
| - [TheDarkTiger] a écrit:
- J'upload
Par contre, je vais rien te cacher, y a un petit bug pour l'affichage pendant que l'on dessine ... tu verra bien. Rien de bien grave, mais j'ai la flème de le corriger ... http://www.megaupload.com/?d=E37U6Z90 J'ai regardé ton fichier, et c'est vraiment pas mal du tout . Pour le petit bug lors de l'affichage (ce qu'on dessine est blanc), je suppose que ça doit être corrigeable . Sinon, il y a un autre petit "bug" : les couleurs se superposent avec les alphas, je voudrais que si l'alpha est plein (blanc), il reste "plein" (blanc), quelque soit l'alpha de la nouvelle couche. En gros : - un alpha blanc au dessus d'un autre (noir ou nuance de gris)donne du blanc. - un alpha noir au dessus d'un autre reste de la couleur de l'autre pour l'outil "pinceau" et devient noir pour l'outil eraser (gomme) - un alpha gris moyen (appelons alpha "Gm") au d'un gris plus clair reste gris plus clair, et au dessus d'un gris plus foncé devient de la couleur du gris "Gm". un exemple pour mieux comprendre : Ici, la croix au centre ne devrait pas être visible, car l'alpha aurait du resté blanc . Je ne sais pas si on peut corriger ça. on peut récupérer la couche alpha peinte de la surface et la "remettre", avec une sorte de multiplication par rapport aux nouveaux coups de brushes :p ? Cela dit, je garde ce ficher et je l'inclurai en tant qu'outil dans mon logiciel, car le résultat, même avec ce changement d'alpha est très intéressant niveau peinture . Un grand merci à toi . Edit : pour le 1er bug, tu avais mis toi-même la solution il faut remplacer ça (dans le draw), juste avant le draw_text: - Code:
-
draw_surface(Surface2, 0, 0); draw_surface_ext(Buffer, 0,0,1,1, 0,global.color,1);
EDIT 2 : ah oui, mais non en fait, lol, si on fait la couleur change à chaque fois qu'on change de couleur :p. Sinon, j'ai enregistré un png (donc avec couche alpha) de la surface et le problème vient bien de la couche alpha qui n'est pas prémultipliée (comme l'avait soulignait Onilink ). Donc, ma question : - est-il possible de récupérer la couche RGB et de la passer en tant que couche alpha pour la surface ? JE pense qu'on doit pouvoir le faire avec les blend_mode, mais je n'ai pas encore trouvé .
Dernière édition par blendman le Dim 26 Déc 2010 - 18:20, édité 1 fois |
| | | [TheDarkTiger] Modérateur
Messages : 7420 Localisation : Essonne
| Sujet: Re: créer un sprite à partir d'un autre sprite Dim 26 Déc 2010 - 18:08 | |
| Je vois ce que tu veux, il faut faire une troisième surface 'Alpha' et l'appliquer en tant qu'alpha à la surface 'Surface2'. Je vais tenter de le faire . Et pour le bug, il me semblait que le résultat était un peu différent ... Bon, je vais tenter de coder tout ça EDIT : ha c'est con, y a pas d'équivalent à background_set_alpha_from_background(); |
| | | blendman Utilisateur confirmé: Rang **
Messages : 433 Projet Actuel : Crée des jeux, logiciels, BD, Romans et nouvelles.
| Sujet: Re: créer un sprite à partir d'un autre sprite Dim 26 Déc 2010 - 18:21 | |
| - [TheDarkTiger] a écrit:
- Je vois ce que tu veux, il faut faire une troisième surface 'Alpha' et l'appliquer en tant qu'alpha à la surface 'Surface2'.
Je vais tenter de le faire .
Et pour le bug, il me semblait que le résultat était un peu différent ...
Bon, je vais tenter de coder tout ça oui, c'est exactement ça que je cherche à faire !! - Citation :
- EDIT :ha c'est con, y a pas d'équivalent à background_set_alpha_from_background();
bah, s'il faut transférer tout ça dans un background (sil gère la transparence), ça me va aussi . EDIT : enfin, si on mettre plusieurs BG les uns au dessus des autres et leur appliquer des fx, et les envoyer dans une surface, etc.. Sinon : - on crée la surface>on transfère dans un BG pour l'alpha>et on re-transfère le résultat dans une surface :p EDIT 2 : voilà ce qu'on obtient avec GM (png avec couche alpha) On voit bien que c'est la couche alpha qui "bug". En fait, en y réfléchissant, je me demande si je ne dois pas utiliser 4 surfaces : - une pour la peinture RGB qu'on va utiliser pour l'alpha de la surface finale - une pour la couche RGB qu'on devrait mettre sur la surface RGB finale (sur laquelle on peint avec le sprite sans l'alpha (un carré blanc par exemple). - une pour l'alpha finale de la surface finale - une surface pour le RGB finale de la surface finale. Et comme ça, ça devrait être nickel . Maintenant, reste à comprendre si on peut faire ça et comment on peut le faire :p. |
| | | blendman Utilisateur confirmé: Rang **
Messages : 433 Projet Actuel : Crée des jeux, logiciels, BD, Romans et nouvelles.
| Sujet: Re: créer un sprite à partir d'un autre sprite Lun 27 Déc 2010 - 13:22 | |
| en suivant les conseils d'un sujet sur les alphas premultipliés (sur GMC), j'ai fait ce fichier : http://blendman.free.fr/2D/GM/surface_premul_sprite.gmkMais ce n'est toujours pas correct . On n'est pas loin, amis c'est pas encore ça :p. Donc, si quelqu'un passe par là et a une idée de la solution, ça m'intéresse toujours . |
| | | blendman Utilisateur confirmé: Rang **
Messages : 433 Projet Actuel : Crée des jeux, logiciels, BD, Romans et nouvelles.
| Sujet: Re: créer un sprite à partir d'un autre sprite Mar 28 Déc 2010 - 18:31 | |
| Bon, ben, j'ai un peu les boulettes quand même, parce que ça fait 3 ou 4 jours que je cherche le moyen d'avoir de l'alpha prémultiplié avec GM pour le canvas (autrement dit de résoudre le problème énoncé sur ce sujet). Et en quelques minutes, j'ai réussi à faire ce que je voulais avec construct : alpha prémultiplié et gestion de la pression de la tablette graphique. Avec en plus, plein d'effets pour les calques, etc... J'ai encore espoir de trouver avec GM, mais c'est quand même vraiment dommage que ce soit buggué à ce point |
| | | onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: créer un sprite à partir d'un autre sprite Mar 28 Déc 2010 - 18:35 | |
| Lol, je crois que tu devrais rester sous construct xD |
| | | blendman Utilisateur confirmé: Rang **
Messages : 433 Projet Actuel : Crée des jeux, logiciels, BD, Romans et nouvelles.
| Sujet: Re: créer un sprite à partir d'un autre sprite Mar 28 Déc 2010 - 18:58 | |
| - onilink_ a écrit:
- Lol, je crois que tu devrais rester sous construct xD
bah oui, mais le gml c'est quand même très pratique , avec Construct, si on veut un peu utiliser un langage de programmation, c'est du python (c'est très bien aussi hein, mais je suis plus habitué au gml :p) |
| | | [TheDarkTiger] Modérateur
Messages : 7420 Localisation : Essonne
| Sujet: Re: créer un sprite à partir d'un autre sprite Mar 28 Déc 2010 - 19:27 | |
| Ho a gad ! Je viens de voir ce qui plante O.O
Mais, GM8 est buggé ! (Déjà que j'aimais pas le 7...)
Bref, j'ai re-codé sous le 6, ça passe nikel ...
Enfin, non. Il y a un autre blem, du à GM6, le draw_ext avec les surfaces les affiche deux fois trop grandes >_< Mais bon, une fois la bidouille faite, ça passe nickel ...
EDIT : Oubliez ce que je vient de dire, ça pue autant sous GM8 que 6... Le blend_mode_add, fait planter les surfaces >_< |
| | | Invité Invité
| Sujet: Re: créer un sprite à partir d'un autre sprite Mar 28 Déc 2010 - 19:54 | |
| Juste par curiosité, pourquoi faire un logiciel de dessin avec gm ? j'ai pas tout lu btw, flemme et manque de temps. |
| | | 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: créer un sprite à partir d'un autre sprite Mer 29 Déc 2010 - 1:45 | |
| il ne l'a pas dit et je suis du meme avis que shm : pourquoi faire un logiciel de dessin sous GM. |
| | | blendman Utilisateur confirmé: Rang **
Messages : 433 Projet Actuel : Crée des jeux, logiciels, BD, Romans et nouvelles.
| Sujet: Re: créer un sprite à partir d'un autre sprite Mer 29 Déc 2010 - 15:36 | |
| - shm3A012B42FE3 a écrit:
- Juste par curiosité, pourquoi faire un logiciel de dessin avec gm ?
j'ai plusieurs raisons 1. Tout d'abord, pour mon travail, j'ai besoin d'un logiciel de dessin (je fais de la BD, du jeux vidéo et bientôt du dessin animé/de l'animation). J'utilise en général photoshop element. J'ai acheté les versions 3, 5 et 7 (j'ai aussi la licence d'un vieux photoshop 5). je n'ai pas les moyens d'acheter un CS5 et je suis contre le piratage , donc, je dois trouver des logiciels pas trop cher. J'ai donc aussi : The Gimp, artweaver, mypaint, twisted brush open studio, painter essential3 ou encore serif photoplus standard edition, qui sont soit gratuits ou open-source soit vraiment pas cher (genre 20-50€). Mais à part photoshop elements, aucun des autres logiciels ne dispose de toutes les fonctions dont j'ai besoin : fonctions de dessins, de retouches et de calques. Le seul à avoir les fonctions que je cherche c'est serif photoplus. Par contre, il a un gros défaut : c'est la réalisation du trait n'est pas interpolé. Donc, je ne peux pas non plus travailler avec. Et j'avoue que ça commence à m'embêtre de devoir faire des updates avec elements et de payer 40€ à 70€ pour avoir juste une ou deux fonctions qui m'intéresse. 2. Ainsi, je me suis demandé si, avec ce que je connais en terme de "dev", j'arriverai à réaliser un logiciel de dessin, comportant les fonctions que je souhaite. A savoir : - fonctions avancées de dessin : gestion de brush, avec brush editor (taille, rotation, couleur, opacité, random, scatter...), preset de brush.. - fonctions de calques : création, suppressions, ordre, opacité, et options de visibilité ou d'écriture - calques de réglages (niveau, couleur, saturation, luminosité..) - outils de transformations : sélection, inversion , remplacement de couleur, lasso, baguette magique.. - Sortie en png avec canal alpha, ou en bmp ou autre, etc.. Vu que je ne connais pas assez le C/C++ et que je n'ai pas trop le temps ni l'envie de m'y consacrer -pour le moment- ni apprendre un autre langage, j'ai essayé de voir ce que je pouvais faire avec GM. Je sais que je pourrais avoir des résultats peut être meilleur avec un langage comme le c++ et quelque comme Qt, mais pour le moment, je veux essayer de le faire avec GM. Et j'ai alors commencé à faire des essais avec GM8. J'ai réussi à créer quelques fonctions comme les calques, et quelques outils de dessins. Je rencontre juste 2 interrogations : comment utiliser des brushs png convenablement, et comment utilise rla pression d'une tablette graphique. Pour la tablette, il y a une dll qui existe (tablet.dll), mais je ne l'ai pas encore trouvé. Et pour le problème lié aux surface, je compte bien y parvenir . L'idée étant que si je parviens à utiliser correctement les surfaces (ou s'ils corrigent le problème dans l'une des prochaines versions de GM), cela me permettra de créer un petit logiciel avec comme particularité de pouvoir utiliser certains fonctions qu'on trouve dans les jeux, comme les particules, ou d'autres fonctions de "transformations" d'images (shaders), et ce logiciel répondra en plus à la plupart de mes attentes, pour peu que j'arrive à le développer avec GM . voiloutch, j'espère que ça répondra à ta question . Sinon, pour revenir au sujet, j'ai continué mes essais et en trouvant quelques fichiers, je suis parvenu à comprendre ce qu'il fallait faire pour que cela marche : - il faut que le png (pour le brush) soit lui-même prémultiplié. Autrement dit que la couche en couleur ait le noir de l'alpha prémultiplié avec sa couleur (qu'on appelle diffuse en 3D). Donc, pour les couleurs assez sombres, ça passe nickel. Mais pour les couleurs plus claires (et encore plus pour le blanc), on voit légèrement la bordure noire. Mais bon, c'est déjà mieux que rien . Je posterai bientôt un exemple de mon début de logiciel PS : finalement, pour construct, ça ne va pas être possible, car le canvas (l'équivalent des surfaces) est hyper buggué et inutilisable dans mon cas . Dommage. |
| | | [TheDarkTiger] Modérateur
Messages : 7420 Localisation : Essonne
| Sujet: Re: créer un sprite à partir d'un autre sprite Mer 29 Déc 2010 - 16:29 | |
| pour la tablette, j'ai une DLL ... |
| | | blendman Utilisateur confirmé: Rang **
Messages : 433 Projet Actuel : Crée des jeux, logiciels, BD, Romans et nouvelles.
| Sujet: Re: créer un sprite à partir d'un autre sprite Mer 29 Déc 2010 - 17:42 | |
| - [TheDarkTiger] a écrit:
- pour la tablette, j'ai une DLL ...
hou, mais fais péter Dis donc, toi t'es vraiment mon sauveur (avec Onilink, Bibi et d'autres ) |
| | | Contenu sponsorisé
| Sujet: Re: créer un sprite à partir d'un autre sprite | |
| |
| | | | créer un sprite à partir d'un autre sprite | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |