Sujet n°12489
Posté par Suicune31 le 21 Mar - 16:26 (2013)
Titre : Créer une zone Viewport à partir d'une image
Bonjour :p comme l'indique le titre, je cherche à crée un viewport mais uniquement sur une image.

En gros, j'ai un sprite (ex : @1) que je voudrais afficher avec un viewport "spécial"
qui n'afficherai l'image que sur les pixels visibles (zone rose de l'image ci-dessous)
d'un autre sprite (ex : @2) qu'on aurait indiqué lors de l'appel du viewport.

Le sprite @1 ne doit donc pas être affiché dans la partie jaune (de l'image ci-dessous, toujours) qui représente l'extérieur du sprite @2.



j’espère que vous avez compris :p merci d'avance ^^.

Posté par Nuri Yuri le 21 Mar - 20:55 (2013)
C'est plutôt hard, il faudrait faire du traitement de bitmap là :/
Je suis pas à la maison donc pour le moment, je ne peux rien faire.

Posté par Suicune31 le 25 Mar - 16:45 (2013)
Voici un exemple plus explicite.


Posté par Sphinx le 26 Mar - 17:52 (2013)
Un viewport au sens RGSS du terme est un rectangle, c'est donc impossible de cette facon.

Utiliser une transition (avec ton masque coloré en noir et un fond blanc / transparent - j'ai testé -) ne permet pas non plus de garder très longtemps affichée à l'écran (l'image complète apparait assez rapidement :/)

Je suppose que tu ne peux pas non plus avoir une version de ton image correspondant au résultat attendu (après application de ton masque donc), ce qui, si le nombre d'images / de masques n'est pas trop élevé, pourrait être très simple.

Des idées qui me viennent à l'esprit, reste plus que l'application à l'affichage de l'image : une simple condition ou une simple opération binaire (pixel_masque & pixel_image) pr modifier l'alpha de chaque pixel selon, mais si ca doit être fait en Ruby, ca sera extrêmement couteux en ressources. A voir donc si ca peut être accéléré en passant par une DLL externe par ex (voire un remaniement de RGSS100J directement si ce n'est pas impossible) mais là ca dépasse mes compétences :/

Posté par Nuri Yuri le 27 Mar - 17:49 (2013)
J'ai pensé à recoder ça dans une DLL, ça serait bien plus rapide et ce n'est pas dur à faire, il faut juste avoir le temps... J'essaierais de retrouver mon code de loadbitmap pour avoir accès directement au bitmap via son object_id.
Sinon Sphinx, c'est impossible d'implémenter ça dans le RGSS pour deux raisons : La DLL est encodée et les fonctions du ruby (rb_define_chose) ne sont pas exportés. Il faudrait étudier la position de ces fonctions pour faire un call prt assembleur pour définir ce qu'il faut mais ça risque d'être limité qu'à une DLL et pourra souvent provoquer des Game.exe a cessé de fonctionner. (Unknown Instruction / Segmentation Fault / Bad registry value etc...)