Bonjour a tous,
Afin de tester une collision "Pixel Perfect", je souhaite retrouver la valeur en alpha d'un pixel précis de mon objet.
Le soucis c'est que la fonction getVertexAlpha prend en valuer l'Id du vertex cible et que moi, je ne possède que les coordonnées en x et en y de ce dernier.
Y a-t-il un moyen de retrouver l'Id d'un pixel en fonction de sa position?
Merci !


Starling : Comment utiliser getVertexAlpha?
Débuté par draad, Aug 29 2013 00:36 AM
CODE Actionscript
#1
Posté 29 August 2013 - 00:36 AM
Jeux IOS :
Nefertiti's Quest
Slot Adventure Atlantis
Slot Adventure Maya
O.G.A. Bullet Hell Shooter
Go Postal
Darkness Rising
Jeux Android
Nefertiti's Quest
Slot Adventure Atlantis
Slot Adventure Maya
O.G.A. Bullet Hell Shooter
Go Postal
Darkness Rising
Website
Doodah Productions
Nefertiti's Quest
Slot Adventure Atlantis
Slot Adventure Maya
O.G.A. Bullet Hell Shooter
Go Postal
Darkness Rising
Jeux Android
Nefertiti's Quest
Slot Adventure Atlantis
Slot Adventure Maya
O.G.A. Bullet Hell Shooter
Go Postal
Darkness Rising
Website
Doodah Productions
#2
Posté 29 August 2013 - 04:56 AM
Hello !
Apriori, je dis bien apriori - comme tu sais, je n'utilise pas Starling donc... - getVertexAlpha ne sert pas à ça.
En fait, quand tu bosse avec le GPU, colorTransform n'existe pas mais tu peux appliquer un équivalent qui agit au niveau des Vertex.
Concretement, un Quad contient 4 vertex ; Avec le CPU on était obligé d'appliquer le ColorTransform sur tout le Quad, mais avec le GPU on pourrait mettre le coin en haut à gauche (par exemple) transparent, et uniquement celui la.
Bref, apriori get/setVertexAlpha sert à modifier le ColorTransform à l'échelle des Vertex plutot qu'à l'échelle des Quads
L'id d'un pixel ?
Sinon, d'après ce que je vois dans la doc, tu peux faire Atlas.hittest
Bon courage !
Apriori, je dis bien apriori - comme tu sais, je n'utilise pas Starling donc... - getVertexAlpha ne sert pas à ça.
En fait, quand tu bosse avec le GPU, colorTransform n'existe pas mais tu peux appliquer un équivalent qui agit au niveau des Vertex.
Concretement, un Quad contient 4 vertex ; Avec le CPU on était obligé d'appliquer le ColorTransform sur tout le Quad, mais avec le GPU on pourrait mettre le coin en haut à gauche (par exemple) transparent, et uniquement celui la.
Bref, apriori get/setVertexAlpha sert à modifier le ColorTransform à l'échelle des Vertex plutot qu'à l'échelle des Quads
Citation
Y a-t-il un moyen de retrouver l'Id d'un pixel en fonction de sa position?
Sinon, d'après ce que je vois dans la doc, tu peux faire Atlas.hittest
Bon courage !
#3
Posté 29 August 2013 - 05:44 AM
Salut, merci pour ta réponse.
En fait dans la classe Image de starling, il y a une fonction "getVertexAlpha" et une fonction "getVertexColor" qui prennent toutes deux une variable "vertexId" de type int.
La doc donne : Returns the alpha value of a vertex at a certain index. J'imagine donc que si j'arrive a cibler le bon vertex, il me renvoie sa valeur d'alpha.
J'ai pensé que le vertexId en question aurait un rapport avec se position dans l'image (imaginons une image de 8x8, le premier pixel en haut a gauche aurait donc l'id 0 et le dernier en bas a droite l'id 63) mais ca n'a pas l'air de fonctionner
En fait dans la classe Image de starling, il y a une fonction "getVertexAlpha" et une fonction "getVertexColor" qui prennent toutes deux une variable "vertexId" de type int.
La doc donne : Returns the alpha value of a vertex at a certain index. J'imagine donc que si j'arrive a cibler le bon vertex, il me renvoie sa valeur d'alpha.
J'ai pensé que le vertexId en question aurait un rapport avec se position dans l'image (imaginons une image de 8x8, le premier pixel en haut a gauche aurait donc l'id 0 et le dernier en bas a droite l'id 63) mais ca n'a pas l'air de fonctionner
Jeux IOS :
Nefertiti's Quest
Slot Adventure Atlantis
Slot Adventure Maya
O.G.A. Bullet Hell Shooter
Go Postal
Darkness Rising
Jeux Android
Nefertiti's Quest
Slot Adventure Atlantis
Slot Adventure Maya
O.G.A. Bullet Hell Shooter
Go Postal
Darkness Rising
Website
Doodah Productions
Nefertiti's Quest
Slot Adventure Atlantis
Slot Adventure Maya
O.G.A. Bullet Hell Shooter
Go Postal
Darkness Rising
Jeux Android
Nefertiti's Quest
Slot Adventure Atlantis
Slot Adventure Maya
O.G.A. Bullet Hell Shooter
Go Postal
Darkness Rising
Website
Doodah Productions
#4
Posté 29 August 2013 - 12:16 PM
non, tu n'as pas compris ce que je t'ai dit plus haut...
Un vertex = un point dans ta géométrie3D
Dans Starling, les élément 3D sont des Planes vu de haut.
Chaque plane (ou Quad si tu préfères) est construit a partir de 4 points, parce qu'un carré à toujours 4 coins (même s'il fait 2000x2000).
Ensuite, comme dit plus haut, les opérations équivalent au ColorTransform coté GPU ne s'appliquent pas par DisplayObject mais par vertex.
Les méthodes dont tu parles servent à gérer le ColorTransform (couleur et alpha) pour chaque vertex.
Essaye peut etre de dessiner un seul quad et d'appeler setVertexAlpha(0,0) pour rendre transparent un seul point du maillage. Normalement, l'un des coins de ton quad devrait tirer vers le transparent.
Par contre, j'ai vu qu'il y avait une fonction hittest dans la classe Atlas, et je pense que c'est ca que tu veux non ?
EDIT : et d'ailleurs, je suppose que c'est à ca que sert le bitmapData gardé en mémoire de la classe Atlas
Un vertex = un point dans ta géométrie3D
Dans Starling, les élément 3D sont des Planes vu de haut.
Chaque plane (ou Quad si tu préfères) est construit a partir de 4 points, parce qu'un carré à toujours 4 coins (même s'il fait 2000x2000).
Ensuite, comme dit plus haut, les opérations équivalent au ColorTransform coté GPU ne s'appliquent pas par DisplayObject mais par vertex.
Les méthodes dont tu parles servent à gérer le ColorTransform (couleur et alpha) pour chaque vertex.
Essaye peut etre de dessiner un seul quad et d'appeler setVertexAlpha(0,0) pour rendre transparent un seul point du maillage. Normalement, l'un des coins de ton quad devrait tirer vers le transparent.
Par contre, j'ai vu qu'il y avait une fonction hittest dans la classe Atlas, et je pense que c'est ca que tu veux non ?
EDIT : et d'ailleurs, je suppose que c'est à ca que sert le bitmapData gardé en mémoire de la classe Atlas
#5
Posté 29 August 2013 - 19:20 PM
Haaaa d'accord, je comprends mieu.
Je vais donc me pencher sur cette piste de la classe Atlas, merci pour ta patience.
Je vais donc me pencher sur cette piste de la classe Atlas, merci pour ta patience.
Jeux IOS :
Nefertiti's Quest
Slot Adventure Atlantis
Slot Adventure Maya
O.G.A. Bullet Hell Shooter
Go Postal
Darkness Rising
Jeux Android
Nefertiti's Quest
Slot Adventure Atlantis
Slot Adventure Maya
O.G.A. Bullet Hell Shooter
Go Postal
Darkness Rising
Website
Doodah Productions
Nefertiti's Quest
Slot Adventure Atlantis
Slot Adventure Maya
O.G.A. Bullet Hell Shooter
Go Postal
Darkness Rising
Jeux Android
Nefertiti's Quest
Slot Adventure Atlantis
Slot Adventure Maya
O.G.A. Bullet Hell Shooter
Go Postal
Darkness Rising
Website
Doodah Productions
1 utilisateur(s) li(sen)t ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)