IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Projets Discussion :

Splotch - representation d'une boule de gelatine


Sujet :

Projets

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Points : 22
    Points
    22
    Par défaut Splotch - representation d'une boule de gelatine
    Salut,

    Je bosse sur un modeste projet perso, tout seul. Il s'agit d'une espece de jeu de plate forme en fausse 3D( graphisme en 3D, mais tout se joue sur un plan 2D).
    Le personnage controlé par le jouer s'appelle Splotch, c'est une boule de gelatine, munie de tentacules.
    Mon moteur de jeu fonctionne bien (ie, j'arrive obtenir en chaque instant la coordonnées de mon point central et les coordonnées des extremités des tentacules). Je pensais pouvoir representer l'aspect gelatine en utilisant des metaballs. Simplement, compte tenu du nombre de metaball a implementer les calculs sont tres longs, et meme apres plusieurs optimisation, c'est tres loin d'estre jouable..

    qqn aurait une idee pour representer ma petite boule de gelatine a moindre frais?

    merci!

    Z.

  2. #2
    Membre averti Avatar de Remizkn
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 322
    Points : 338
    Points
    338
    Par défaut
    Ca pourrait être drôle avec une prise en stop-motion de pate â modeler sur fond vert que tu redecoupe sous toshop...enfin moi je trouve...
    « N'est pas mort ce qui à jamais dort, et au long des ères peut mourir même la mort. »
    H.P Lovecraft

    « À l'heure actuelle, tout être vivant est potentiellement un membre actif de 4chan...sans même le savoir lui-même. »
    Anonymous

    Le site où se développe le jeu Blackmud et où le bon goût côtoie l'information inutile : ici

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Points : 22
    Points
    22
    Par défaut
    ouais, pourquoi pas... mais je me represente pas bien comment faire ca...
    parce qu'en gros ma boule de gelatine a 3 tentacules principales et des tentacules annexes qui peuvent partir dans toutes les directions possible, independamment les unes des autres.
    avec ta methode, je me dis qu'il faudrait probablement enormement d'images pour arriver a qqchose, ou sinon on perd le coté continu de la gelatine

    en tout cas merci pour la proposition...!

  4. #4
    Membre régulier

    Profil pro
    Inscrit en
    Juin 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 92
    Points : 115
    Points
    115
    Par défaut
    Par effet gelatine, tu veux dire, une boule avec les bords qui "gigotent" un peu ? Si c'est bien ça j'ai peut être une idée.

    Tu commence par rendre le corps de ta pieuvre, en affichant un simple rond. Puis, tu fais se déplacer des métaballes sur les contours du rond, en les faisant osciller. Tu vois ce que je veux dire ?

    Pour cela, rien de plus simple. Tu définis la position d'une métaballe par un angle de rotation, qui va la localiser sur un point du cercle, et un décalage par rapport a un axe qui passe par le centre du corps, et par la point sur le cercle sur lequel se trouve la métaballe, pour créer les oscillations.

    Tu en génère pleins que tu place aléatoirement autour du cercle, et tu fais varier aléatoirement la vélocité, le sens de rotation, la rapidité d'oscilation, la taille de la métaballe.

    Je n'ai pas éssayé, mais avec un certain calibrage des variables cités précédement, cela devrait rendre pas trop mal ce que tu recherche.

  5. #5
    Membre expérimenté

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2006
    Messages : 450
    Points : 1 630
    Points
    1 630
    Par défaut
    Il y a un article de 2008 qui arrive a representer une fontaine d'eau avec des meta-balls (100k a environ 5 fps) :

    http://www.cs.tsukuba.ac.jp/~kanamor..._metaballs.pdf

    Un de mes profs m'a dit que ca pouvait etre optimise en choisissant un autre modele de meta-balls ou en utilisant l'arithmetique d'intervalle. Dans tous les cas le cours est ici :

    http://www.irit.fr/~Loic.Barthe/Ense.../siframes.html

    Mais bon c'est loin d'etre simple, mais tres interessant a implementer . Bon courage
    Je ne réponds à aucune question par MP, posez vos questions sur le forum adéquat.
    Profils : G+ - LinkedIn

  6. #6
    Membre régulier

    Profil pro
    Inscrit en
    Juin 2008
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 92
    Points : 115
    Points
    115
    Par défaut
    Ah oui, tu gère ça en 3D, j'avais mal lu, je croyais que par fausse 3D, tu entendais que c'était gérer en 2D, mais que ça donnait un effet visuel 3D.
    Ca ne change rien à ma proposition, il suffit de remplacer le cercle par une sphère, au lieu de coordonnées polaire, ça te donne des coordonnées sphériques, mais puisque le rayon de la sphère initiale est toujours le même, il n'y a que l'angle de rotation qui change, il faut biensure 2 angles ducoup. Pour l'oscilation, elle sera faite selon un axe 3D, qui passe par le centre de la sphère, et par le point de coordonnée sphérique de ta sphère. Et ensuite tu calibre la vitesse de déplacement des deux angles, la vitesse d'oscillation, aléatoirement.
    Cette techniques permet de n'avoir a gérer que des métaballes à la surface d'une sphère, et pas toutes celles qui en constituent le corps, que de toute façon, on ne pourra pas voir, car masquer par celles en surface. ( J'ai oublié de le préciser car ça me paraissait évident, mais il faut le corps soit également une grosse métaballe )

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Points : 22
    Points
    22
    Par défaut
    Merci à tous les deux!

    TanEk, je vais lire attentivement la doc que tu m'as envoyée.
    Idrakis, par effet gelatine, je veux dire que je veux obtenir un volume dont la surface est continument dérivable entre ma boule de gelatine et les tentacules qui en sortent.
    Je tiens pas forcement a obtenir un effet gigotement.

    J'ai donc implementé des metaballs.... et pour etre honnete, ca marche pas terrible, notamment pour l'algo de generation de l'isosurface, j'utilise un algo des marching cubes, optimisé a ma sauce......... et c'est un peu l'echec.

    pour info - algo des marching cubes:
    http://local.wasp.uwa.edu.au/~pbourk...ry/polygonise/

    mon optimisation consiste à considerer a ne pas parcourir chacun des sommets de mon espace discretisé, mais trouver une cellule de mon maillage point faisant parti de la surface, et considerer que toutes les cellules autour de celui ci font parti contiennent potentiellement une partie de mon isosurface.
    du coup je parcours de proche en proche, et je suis supposé trouver toute ma surface.
    Mais ca marche pas du tout pour le moment...

    Z.

  8. #8
    Membre éprouvé Avatar de oxyde356
    Homme Profil pro
    Ingénieur Recherche Imagerie
    Inscrit en
    Février 2006
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Recherche Imagerie

    Informations forums :
    Inscription : Février 2006
    Messages : 797
    Points : 1 087
    Points
    1 087
    Par défaut
    Sinon tu pourrai utiliser des bones, tu fais une sorte de cage toracique à ta boule et tu fais des bones pour tes tentacules que tu relis au bones de la boule. Après tu n'a plus qu'à paramétrer le comportement des articulations des bones pour obtenir un effet visqueux. Bon après je suis toujours pas bien sûr de ce que tu veux obtenir, tu veux qu'il y est un effet collant avec le sol quand ton perso avance ? essaye de reexpliquer parce que je vois pas bien ce que tu essaye de faire, donne un exemple.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Points : 22
    Points
    22
    Par défaut Explications détaillées du projet
    Merci pour les reponses. C'est vrai que ma description est pas limpide.
    Je bosse sur une espece de jeu de plateforme en fausse 3D (graphisme 3D, mais action du jeu en 2D)

    Le personnage, Splotch, est une boule de slime, donc tres deformable. Le but du jeu est tout simple: recolter toutes les pieces d'un niveau le plus rapidement possible.
    Splotch se deplace de plusieurs manieres:
    - au sol, il roule, il vas pas vite du tout, et il galere un peu (beaucoup en fait...)
    - dans les airs: Splotch peut faire jaillir de lui un ou plusieurs bras pour saisir des poignees, en l'air. Une fois accroché a une, ou plusieurs de ces poignées, il peut se balancer, prendre de l'elan et avoir des trajectoires rapides.

    pour l'instant, j'ai bien avancé le moteur de jeu, par contre la partie graphique est extremement sommaire, comme vous le verrez dans le screenshot suivant:


    http://www.imagup.com/imgs/1246070799.html

    - le fond mauve horrible, c'est l'air de jeu.
    - le petit carre vert, c'est le Splotch, le centre de la boule de gelatine.
    - les croix bleues, ce sont les poignées
    - les toutes petites croix noir representent un bras, qui s'accroche a une poignee
    - les croix jaunes, sont les "pieces" a ramasser.
    - les lignes blanches et la ligne rouge en bas, sont des aides a la visualisation. elles n'ont aucune importance.

    donc, tout ceci bouge plutot bien, et Splotch virevolte, de poignée en poignée. Je m'attelle donc a la partie graphique.
    Les decors seront en 3D classique, mais c'est la representation de ma boule de gelatine qui pose probleme.

    Quand elle n'utilise pas c'est bras, c'est une boule. Quand elle utilise ses bras, c'est une boule avec une excroissance qui sort. Dans l'ideal, la taille de la boule centrale diminue lorsqu'une tentacule en sort (conservation du volume total de gelatine).

    Du coup, Je pensais mettre une grosse metaball, pour le centre et des petites metaballs sur chacune des petites croix noires du bras.
    Mais comme expliqué plus haut... je galere avec les metaballs:
    - c'est hyper lent
    - ca affiche pas du tout le resultat attendu

    --> je vais etudier le doc sur le rendu des metaballs avec le GPU et continuer a bosser ca, mais si qqn a une idee toute simple, je suis preneur!

    merci!

    Z.

    mais si vous avez une idee d'implementation

  10. #10
    Membre éprouvé Avatar de oxyde356
    Homme Profil pro
    Ingénieur Recherche Imagerie
    Inscrit en
    Février 2006
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Recherche Imagerie

    Informations forums :
    Inscription : Février 2006
    Messages : 797
    Points : 1 087
    Points
    1 087
    Par défaut
    Moi je vois bien une structure en bones pour ton perso, tu fais une sphère avec certains points groupés autour d'une articulation, les articulations subissent la gravité mais ont aussi une force de resistance à l'étirement (porté par les os) et une force de resistance à la rotation, si on peut dire, en somme si un os est orienté par défaut dans un sens par rapport a une articulation il ne pourra être tordu que jusqu'à un certain degrés. Si tu met que c'est très resistant à la rotation, ton perso conservera sa forme sphérique, sinon il se déformera et tu peux rajouter la resistance à l'étirement ou à la contraction pour un effet plus réaliste, je ne pense pas que ça soit particulièrement difficile à implémenter. Tu met un petit sphere map à ton perso pour faire bien liquide et visqueux. Pour les tentacules tu devrais les mettre à l'intérieur de ton perso (ou les laisser trainer à l'arrière ça peut être simpa). Tu fais des bones pareils que tu rattache à ta structure principale, et selon que les tentacules se trouvent à l'intérieur ou à l'extérieur de ton perso tu change sa taille en fonction de la taille des bones des tentacules. Voila je sais pas si j'ai été très clair alors si tu as des questions n'hésite pas

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Points : 22
    Points
    22
    Par défaut
    Merci oxyde,

    est ce que tu saurais ou je peux trouver de la doc sur l'implementation des bones.
    Je comprends l'idee que tu me proposes, mais j'en sais pas encore assez sur ce sujet pour imaginer comment implementer tout ca.

    Z.

  12. #12
    Membre éprouvé Avatar de oxyde356
    Homme Profil pro
    Ingénieur Recherche Imagerie
    Inscrit en
    Février 2006
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Recherche Imagerie

    Informations forums :
    Inscription : Février 2006
    Messages : 797
    Points : 1 087
    Points
    1 087
    Par défaut
    Non désolé je ne connais aucun didacticiel ou document dessus.
    Je pense que tu trouvera ton bonheur sur google mais j'ai rien de précis.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 429
    Points : 60
    Points
    60
    Par défaut
    je sais que Blender gère les effets de 'gélatine', 'jello' lui-même. J'avais déjà vu un tutoriel là-dessus. Mais tu n'es pas en blender. 3dsm ne fais pas la même chose? M'étonnerais!

    En tout cas, pour blender, y a ca:
    http://forum.ubuntu-fr.org/viewtopic.php?id=180608
    http://wiki.blender.org/index.php/Do...cs/Soft_Bodies

    et là je sais pas, mais j'avais vu quelque part sur ce site une tuto vidéo:
    http://www.tuto-blender.com/

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 43
    Points : 22
    Points
    22
    Par défaut
    Merci pour toutes ces reponses, je vais esszayer de voir les differentes pistes (notamment bones ou rendu de metaball avec le GPU)
    Ivady--> sous Blender, ok, mais je vois mal comment integrer ca dans mon appli

  15. #15
    Membre éprouvé Avatar de oxyde356
    Homme Profil pro
    Ingénieur Recherche Imagerie
    Inscrit en
    Février 2006
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Recherche Imagerie

    Informations forums :
    Inscription : Février 2006
    Messages : 797
    Points : 1 087
    Points
    1 087
    Par défaut
    Tu peux essayer de voir du coté de moteurs 3D comme Ogre ou la dernière version d'OGS, ils implémentent la gestion des bones

Discussions similaires

  1. Representation d'une arborescence
    Par Seth77 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 27/09/2006, 16h32
  2. Représentation d'une arborescence
    Par Seth77 dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 12/06/2006, 17h21
  3. Représentation d'une vue dans un MCD
    Par fredhali2000 dans le forum Schéma
    Réponses: 8
    Dernier message: 16/02/2006, 09h45
  4. [Images] représentation d'une carte pour jeu en php
    Par maniaco_jazz dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 29/11/2005, 10h41
  5. Algo de positionnement de aprticule pour une boule de feu .
    Par Clad3 dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 02/09/2005, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo