Je veux créer une corde qui peut entrer en collision avec des objets comme dans la vidéo YouTube suivante:
Je pense que vous implémentez l'intégration de verlet qui utilise des points et connecte ces points avec des lignes. J'essaie de comprendre quel type de détection de collision vous appliqueriez à la corde pour obtenir l'effet dans la vidéo.
Je pense que tu devrais faire un cd sur chaque point. Je voudrais utiliser box2D, donc je me demande si chaque point serait un corps rigide? Tout avis sera le bienvenu.
collision-detection
box2d
rope-physics
Joey Green
la source
la source
Réponses:
Puisque vous utilisez Box2D, vous pouvez créer une série de rectangles et utiliser les joints de Box2D pour les joindre. Voilà votre corde.
Afin d'éviter que les coins ne sortent d'une corde pliée, je peux imaginer deux options:
Avertissement: je n'ai jamais essayé cela moi-même, mais je ne vois pas comment une série de rectangles joints peut échouer lorsque la vidéo que vous avez publiée affiche pratiquement la même chose déguisée.
Edit: Je viens de voir PaulZ et j'ai réalisé la même chose. Allez lire également son commentaire sur la question.
la source
Un rapide Google l'a lancé ici . Une démo, une description et un code (en Flash) utilisant Box2D pour implémenter une simple corde. La corde entre en collision avec elle-même et le bloc en haut de la scène.
la source
Voici ce que je ferais, faire de chaque point de la ligne un cercle, faire suffisamment de points pour que les cercles se chevauchent. Attachez chaque point à son voisin, plutôt que de collision standard, cette attache devrait faire en sorte que les points restent à une distance fixe les uns des autres.
Je ne connais pas Box2D, mais je suppose que la fonctionnalité requise est là.
la source
À l'origine, Box2D avait une démonstration de pont de corde faite de boîtes minces jointes à des contraintes point à point; ce serait un bon endroit pour commencer (je ne sais pas s'il est toujours livré avec cette démo, mais il serait simple de recréer).
Il est assez facile d'implémenter une corde sous forme de particules avec des contraintes de distance indépendamment d'un simulateur de corps rigide (comme vous le mentionnez, en utilisant un schéma d'intégration et de résolution de contraintes Verlet comme celui décrit dans cet article: http://www.gamasutra.com/resource_guide/ 20030121 / jacobson_pfv.htm ), mais si vous voulez que les corps rigides réagissent à votre corde (comme dans la vidéo, avec la boîte pendante), cela devient beaucoup plus compliqué. Je commencerais par une suite complète d'outils comme Box2D et travaillerais en arrière plutôt que d'essayer de construire à partir de particules.
la source
Je me souviens de ce jeu Allegro: Cupidon , de SpeedHack 2002. Il contient une implémentation pour des cordes qui entrent en collision avec le paysage. Voir les classes PhysParticles et HeartTrails dans le fichier heart_tails.cpp dans son code source .
la source