CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

2500 récursions... trop ?

tbop2
tbop2
Niveau 10
22 mars 2012 à 09:53:49

Ton but c'est d'obtenir la bouding box d'un sprite c'est ca ? Cet algorithme est trivial et ne necessite aucunement de la recursion (j'arrive meme pas trop a voir comment tu l'as casee dans l'histoire d'ailleurs cette affaire de recursion.

Pourrais-tu un peu nous expliquer qu'est-ce que tu cherches a faire et quelles sont les contraintes qui te sont imposees ? :)

godrik
godrik
Niveau 30
22 mars 2012 à 17:35:34

Je pense que ce qu'il fait est similaire a de la detection de contour semi automatique. La fonction inBounds() te permet de savoir si un pixel est dans l'image ou non.

Apres, en fonction de ce qu'il cherche VRAIMENT a faire, il peut y avoir plus simple.

VisionElf
VisionElf
Niveau 10
22 mars 2012 à 18:51:22

Bah je cherche a trouver une "bounding box" comme tu dis, d'un sprite sur une image :(

L'image n'est pas assez explicite pour vous ? :(

J'ai aucunes contraintes, et tu dis que c'est trivial et que ça peux se faire sans récursion, alors ok je veux bien ton algo trivial :ok:

Au départ je suis partis sur le fait que le seul moyen de voir ce qui délimite un sprite sur une image c'est le transparent, donc j'ai tout simplement fait une liste de tous les pixels qui sont contigus et qui sont pas transparents... ça marche très bien, j'étais très fier, jusqu'au moment ou sur les sprites beaucoup plus grands ça fait un StackOverflow :(

Mon but : passer ce StackOverflow :(

Je suis en train d'essayer d'optimiser mon algo, mais rien n'y fait, je n'y arrive pas trop :(
Mais noproblem j'ai trouver un autre truc que je testerais plus tard :ok:

Si quelqu'un a un algo "trivial" je le veux bien, ça m'apprendra des choses au moins :ok:

tbop2
tbop2
Niveau 10
22 mars 2012 à 19:22:41

Non l'image n'est pas assez explicite et même tes explication ne le sont toujours pas. Tout comme ta motivation. Donc si tu pouvais nous dire ce que tu cherches à faire, pourquoi tu cherches à le faire et quelles sont les contraintes et l'espace de complexité sur lesquels se basent ta recherche de bounding box (plusieurs sprites sur une meme page ? un seul sprite en particulier ? dans une region approximative ?).

Oui trouver la bouding box d'un sprite c'est trivial et rien que la description de ton algorithme actuelle montre que tu vas vraiment chercher. Rien que la première étape est certainement plus couteuse qu'un algorithme trivial... Mais encore une fois tout dépend du sujet et de la complexité du problème en entier... Donc si tu pouvais donner ces détails ça serait super pour nous :ok:

tbop2
tbop2
Niveau 10
22 mars 2012 à 19:26:05
  • tu vas vraiment chercher loin
VisionElf
VisionElf
Niveau 10
22 mars 2012 à 19:33:27

"Oui trouver la bouding box d'un sprite c'est trivial"

Attendez, je vous suis pas.

Vous me dites que vous savez pas ce que je veux, mais d'un autre cote vous me dites qu'un tel algorithme est trivial...

Donnez le moi alors, je vous dirais si c'est ça...

Je vais chercher loin ?
Bah je suis partis du fait que de toute façon pour savoir où est l'image, faut regarder ses pixels... peut être que je ne connais pas un truc qui permet de faire ça en 2sec mais je vois pas en quoi c'est "chercher loin" :(

Y'a pas de sujet, c'est pas un TP ou jenesaisquoi, c'est pour mon programme.

Je sais que j'ai beaucoup de mal a m'exprimer/expliquer quelque chose par écrit, donc je vous ai fournis une image de ce que fait mon algorithme. Mais si même avec ça vous voyez pas, cherchez même pas à comprendre ce que j'écris c'est pire :(
Donc au pire laissez tomber j'essaierai mon dernier truc tout à l'heure.

caelacanthe
caelacanthe
Niveau 10
22 mars 2012 à 19:40:30

l'algorithme est si trivial que justement, tout le monde imagine que tu cherches à faire autre chose que simplement chercher la bounding box d'un sprite... :peur:

non car pour faire ça, il suffit simplement de parcourir les pixels de son image, retenir l'ordonnée du premier pixel et du dernier pixel rencontrés dans le sens descendant, retenir l'abcisse du pixel le plus à gauche et le plus à droite rencontrés dans le sens transversal, et tu as ta bounding box \ :hap: /

tbop2
tbop2
Niveau 10
22 mars 2012 à 20:01:02

Bon ben si en plus de t'entêter à ne pas vouloir donner ni le sujet, ni les éventuelles contraintes, ni l'espace de complexité de ton exercice et tout cela à cause d'un stupide égo bien facilement irritable à travers l'écran...
... Et bien - en tout bien tout honneur - tu peux aller te foutre un pixel mort dans ta bounding sphere de ma part.

Non mais.

VisionElf
VisionElf
Niveau 10
22 mars 2012 à 20:23:49

Okayyyy je me suis mal exprimé...

C'est pas la bounding box d'une image que je cherche, mais d'une PARTIE d'une image (Comme sur l'image que j'ai posté quoi :( )

Après, je sais pas si tu l'avais compris, mais avec ton algo, je ne comprends pas c'est quoi ton "premier pixel"

Et sinon tbop c'est pas un exercice, y'a pas de sujet, y'a pas de contraintes, y'a pas de complexité et y'a pas d'égo non plus...

C'est toi qui est parano et qui pense que n'importe qui qui "gueule" à l'écrit possède forcément "un égo facilement irritable à travers l'écran"

D'ailleurs je gueulais pas, et mon post n'était en aucunnement négatif...

J'insulte personne mais toi tu m'insulte, j'en conclus que c'est toi le "facilement irritable" :ok:

caelacanthe
caelacanthe
Niveau 10
22 mars 2012 à 20:51:41

"C'est pas la bounding box d'une image que je cherche, mais d'une PARTIE d'une image (Comme sur l'image que j'ai posté quoi :( ) "

:d) la bounding box d'un sous-sprite d'une fiche de sprites? en théorie, pour exploiter cette image en jeu, tu es supposé connaître la manière de la découper pour en extraire chacune des images, il serait facile de faire un parcours d'image à partir de là... :(

VisionElf
VisionElf
Niveau 10
22 mars 2012 à 20:52:52

Oui mais justement, je pars du principe que je prends des sprites sur internet, et du coup je ne connais absolument pas comment c'est découpé.

Mais surtout j'aimerais pouvoir les personnaliser au maximum, donc même si je savais comment c'était découpé... :o))

Aldebran
Aldebran
Niveau 10
22 mars 2012 à 20:54:15

Comme définis-tu la partie de l'image pour laquelle tu veux définir la bouding-box ?

Personnellement face à ton problème, voilà une solution que je propose :

1ère étape :
- On part d'un pixel appartenant à la partie de l'image pour laquelle on veut trouver la bounding-box
- On met dans une liste ce pixel, puis on place dans une pile les quatre pixels autour de ce pixel à condition qu'ils n'appartiennent pas à la liste et qu'il ne soient pas de la couleur qui sépare deux objets de l'image
- Tant que la pile n'est pas vide, on réapplique cette opération sur l'élément au sommet de la pile (c'est un parcours de type depth-first)

2ème étape (une fois que tu as isolé les pixels appartenant à l'objet en question) :
- Tu parcours l'ensemble des pixels de la liste, tu récupères les pixels les plus à gauche, à droite, en haut et en bas et tu as ta bounding-box.

Après, tu peux (voire dois) aussi optimiser cet algorithme en fusionnant ces deux étapes, c'est-à-dire en mettant à jour les pixels extremums en même temps que tu construit la liste des pixels de l'objet.
Ici je sépare les deux étapes pour que ça paraisse plus clair.

Ensuite il y a encore pas mal d'optimisations qu'on pourrait apporter à l'algorithme que je présente, mais comme on dit, "premature optimization is the root of all evil". Essaye d'abord d'implémenter cet algo et ensuite on verra pour l'optimisation.

caelacanthe
caelacanthe
Niveau 10
22 mars 2012 à 20:59:28
  1. VisionElf Voir le profil de VisionElf
  2. Posté le 22 mars 2012 à 20:52:52 Avertir un administrateur
  3. Oui mais justement, je pars du principe que je prends des sprites sur internet, et du coup je ne connais absolument pas comment c'est découpé.

:d) et si chaque image d'une animation a une bounding box de forme différente? :hap:

non mais sérieux, fais le découpage toi-même au lieu de passer un temps considérable à programmer un truc qui le fera (forcément mal) à ta place, là, ça devient presque ridicule. :oui:

tbop2
tbop2
Niveau 10
22 mars 2012 à 21:32:34

Et si tes sprites ont la malheureusement chanc d'être "creux" ou en deux parties ça n'a juste plus aucun sens et de toute façon je peine toujours à voir une finalité exploitable dans un jeu.

Donc la réponse est : n'essaye même pas à moins que tu veuilles te lancer dans du traitement du signal de niveau Licence voire Master. On a ansi comme je le pressentais bien tous perdus notre temps à vouloir aider quelqu'un pour un problème sans sa raison.
Or un problème sans raison n'a pas de raison.

Alors omme je veux avoir le dernier mot et que je suis très content de pouvoir le prononcer :
ça t'apprendra à faire le plus mauvaise-foi que les autres la prochaine fois et à clairement expliquer ton problème dès le début afin d'éviter à tout le monde de :

1) perdre son temps.
2) ses précieux neuronnes.
3) son calme.

Car petite leçon d'humilité n°2 de la journée : l'irritabilité ne nait pas forcément avec l'énervement (humoristique de mon côté dans tous les cas).
Médite ça la prochaine fois avant de jeter aux requins sans aucune raison ceux qui passent du temps à lire tes lignes et à essayer d'y répondre.

Non mais (le retour) :ok:

tbop2
tbop2
Niveau 10
22 mars 2012 à 21:32:54
  • ont la malheureuse chance
godrik
godrik
Niveau 30
22 mars 2012 à 21:50:19

Sinon il me semblait avoir donner un code (probablement non fonctionnel) pour faire exactement ce dont OP parlait.

tbop2
tbop2
Niveau 10
22 mars 2012 à 21:56:45

Ca gérait le cas de motifs en deux parties aussi ?

godrik
godrik
Niveau 30
22 mars 2012 à 21:58:13

Evidement que non, ca fait exactement la meme chose que le code d'OP, mais sans stack overflow. C'est basiquement la meme chose que le pot de peinture de MSpaint.

tbop2
tbop2
Niveau 10
22 mars 2012 à 21:59:58

Ah d'accord ok tu parlais de son code original, au temps pour moi.

VisionElf
VisionElf
Niveau 10
22 mars 2012 à 22:12:01

Aldebran :d) J'ai exactement cet algo.
Seulement, lorsque les "PARTIES" de l'images sont trop grandes, j'ai un StackOverflow.

"Et si tes sprites ont la malheureusement chanc d'être "creux" ou en deux parties ça n'a juste plus aucun sens et de toute façon je peine toujours à voir une finalité exploitable dans un jeu."

Voilà ce que j'en fait : http://img825.imageshack.us/img825/8452/supersmash2.png

Bien sur, comme c'est une image on voit pas les sprites animés, mais en fait ils sont animés grâce à mon logiciel (qui permet entre autres de faire des sprites avec ce fameux algo...)

Mais bon apparemment toi t'es pas chaud pour m'aider, alors m'aide pas :ok:

"notre temps"
Es-tu sûr que tout le monde est de tout avis ? :(

"1) perdre son temps.
2) ses précieux neuronnes.
3) son calme."

Mais lol, cite moi UNE SEULE AUTRE PERSONNE sur ce topic qui a fait ça...

A part toi, y'a personne.
Conclusion : Tu n'aurais pas du poster, et tu n'aurais pas :
1) perdu ton temps
2) tes précieux neuronnes
3) ton calmes

Non mais, c'est n'importe quoi tu rejette tous sur les autres alors que c'est clairement toi qui a perdu ton calme... :ok:

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment