Moteur physique 2D ( Verlet )
Re: Moteur physique 2D ( Verlet )
After a few days of pain, I still haven't got it any faster, I think it's due to cache hits / page faulting.
Changing to a body centric view has made it easier to manage and construct compound bodies but without the speed it's not really an improvement.
Après quelques jours de la douleur, je n'ai pas encore l'ai eu plus vite, Je pense que c'est à cause de hits cache / page failles.
Modification à une vue centrée sur le corps il est plus facile à gérer et à construire des corps composés, mais sans la vitesse, il n'est pas vraiment une amélioration.
http://www.idlearts.com/verlet.zip
Changing to a body centric view has made it easier to manage and construct compound bodies but without the speed it's not really an improvement.
Après quelques jours de la douleur, je n'ai pas encore l'ai eu plus vite, Je pense que c'est à cause de hits cache / page failles.
Modification à une vue centrée sur le corps il est plus facile à gérer et à construire des corps composés, mais sans la vitesse, il n'est pas vraiment une amélioration.
http://www.idlearts.com/verlet.zip
Re: Moteur physique 2D ( Verlet )
Made some improvements to the spatial map, it appears to run marginally faster when the objects aren't clumped together, though it still takes a performance hit when the objects are clumped together. (may still be something to fix)
Added a quick sprite test on F1
should we be including texture coordinates into a body and if so how to transform them?
http://www.idlearts.com/verlet.zip
Google Translate
Apporté quelques améliorations à la carte spatiale, elle semble aller un peu plus rapidement quand les objets ne sont pas agglutinées, si elle prend encore une baisse de performance lorsque les objets sont agglutinées. (peut-être encore quelque chose à corriger)
Ajout d'un test rapide sur sprite F1
devrions-nous y compris les coordonnées de texture dans un corps et si oui, comment les transformer?
Added a quick sprite test on F1
should we be including texture coordinates into a body and if so how to transform them?
http://www.idlearts.com/verlet.zip
Google Translate
Apporté quelques améliorations à la carte spatiale, elle semble aller un peu plus rapidement quand les objets ne sont pas agglutinées, si elle prend encore une baisse de performance lorsque les objets sont agglutinées. (peut-être encore quelque chose à corriger)
Ajout d'un test rapide sur sprite F1
devrions-nous y compris les coordonnées de texture dans un corps et si oui, comment les transformer?
Re: Moteur physique 2D ( Verlet )
Great,
ça m'a pas l'air trop mal, je regarde mieux ce soir !!
A first small test this mornig
i look more this evening !!
ça m'a pas l'air trop mal, je regarde mieux ce soir !!
A first small test this mornig

i look more this evening !!
Only PureBasic makes it possible
Re: Moteur physique 2D ( Verlet )
I dropped the Spatial map and went back to the original structure.
I'm trying to work out how to go about adding texture coords so it can be used directly with PB 3Dsprites.
I've added sprites to the f1 test but need to figure out how to make it work for arbitrary shapes
1) calculate the objects rotation when you go to draw it and then work out how to deform the body if it's compressed.
or
2) add four more points to the body and let the verlet the business, setting a flag to skip the bounds and collisions for those points
sloppy but avoids some potentially fiddly maths
Any Ideas?
google Translate
J'ai laissé tomber la Spaitial map et est retourné à la structure originale.
J'essaie de trouver comment aller sur l'ajout de texture coords si elle peut être utilisée directement avec 3Dsprites PB.
J'ai ajouté sprites à l'épreuve f1, mais besoin de savoir comment le faire fonctionner pour des formes arbitraires
1) calculer la rotation des objets quand vous allez à la dessiner, puis à déterminer la façon de déformer le corps si il est compressé.
ou
2) ajouter quatre points de plus pour le corps et laisser le Verlet l'entreprise, l'établissement d'un drapeau pour sauter les limites et les collisions pour les points
bâclé, mais permet d'éviter certains maths potentiellement facile
Des idées?
I'm trying to work out how to go about adding texture coords so it can be used directly with PB 3Dsprites.
I've added sprites to the f1 test but need to figure out how to make it work for arbitrary shapes
1) calculate the objects rotation when you go to draw it and then work out how to deform the body if it's compressed.
or
2) add four more points to the body and let the verlet the business, setting a flag to skip the bounds and collisions for those points
sloppy but avoids some potentially fiddly maths
Any Ideas?
google Translate
J'ai laissé tomber la Spaitial map et est retourné à la structure originale.
J'essaie de trouver comment aller sur l'ajout de texture coords si elle peut être utilisée directement avec 3Dsprites PB.
J'ai ajouté sprites à l'épreuve f1, mais besoin de savoir comment le faire fonctionner pour des formes arbitraires
1) calculer la rotation des objets quand vous allez à la dessiner, puis à déterminer la façon de déformer le corps si il est compressé.
ou
2) ajouter quatre points de plus pour le corps et laisser le Verlet l'entreprise, l'établissement d'un drapeau pour sauter les limites et les collisions pour les points
bâclé, mais permet d'éviter certains maths potentiellement facile
Des idées?
Re: Moteur physique 2D ( Verlet )
donné sur la carte spatiale ne pouvait pas l'obtenir de meilleurs résultats que la structure d'origine.
Correction de quelques bugs dans le Verlet.
Ont commencé à en ajouter le support des textures PB et changé les routines de dessin pour créer des polygones convexes n côtés
Il ya encore quelques bugs dans l'alignement, semble être le numéro impair formes face et de la cartographie est actuellement uniquement symétrique.
Ajouté forces Attracteur et se repoussent, se généraliser plus tard, de fournir des puits multiples et repousse avec une variété de fonctions vigueur
il peut être possible de les utiliser pour créer des chemins au lieu d'interpoler une spline.
Gave up on the Spatial map couldn't get it to perform better than the original structure.
Fixed some bugs in the verlet.
Have started adding support for PB textures and changed the drawing routines to create n sided convex polygons
There's still some bugs with alignment, seems to be the odd numbered sided shapes and the mapping is currently only symmetric.
Added Attractor and Repel forces, will generalize it later to provide multiple sinks and repels with a variety of force functions
it may be possible to use them to create paths instead of interpolating a spline.

Shape tests keys 3,4,5,6,8,9
http://www.idlearts.com/verlet.zip
Correction de quelques bugs dans le Verlet.
Ont commencé à en ajouter le support des textures PB et changé les routines de dessin pour créer des polygones convexes n côtés
Il ya encore quelques bugs dans l'alignement, semble être le numéro impair formes face et de la cartographie est actuellement uniquement symétrique.
Ajouté forces Attracteur et se repoussent, se généraliser plus tard, de fournir des puits multiples et repousse avec une variété de fonctions vigueur
il peut être possible de les utiliser pour créer des chemins au lieu d'interpoler une spline.
Gave up on the Spatial map couldn't get it to perform better than the original structure.
Fixed some bugs in the verlet.
Have started adding support for PB textures and changed the drawing routines to create n sided convex polygons
There's still some bugs with alignment, seems to be the odd numbered sided shapes and the mapping is currently only symmetric.
Added Attractor and Repel forces, will generalize it later to provide multiple sinks and repels with a variety of force functions
it may be possible to use them to create paths instead of interpolating a spline.

Shape tests keys 3,4,5,6,8,9
http://www.idlearts.com/verlet.zip
Re: Moteur physique 2D ( Verlet )
@Kelebrindae
Je découvre ce code. C'est bien fait. Bravo!
Vu les possibilités de PureBASIC, l'optimisation est faisable.
@Idle
Is it possible to post directly the code? Or is it too long?
Ollivier
Je découvre ce code. C'est bien fait. Bravo!
Vu les possibilités de PureBASIC, l'optimisation est faisable.
@Idle
Is it possible to post directly the code? Or is it too long?
Ollivier
Re: Moteur physique 2D ( Verlet )
It's to long to post directly and there are test images in the folder.
The link is in my last post.
The link is in my last post.
Re: Moteur physique 2D ( Verlet )
Generalized the Attractors and Repellers so they can be added to objects, F3 tests them
http://www.idlearts.com/verlet.zip
http://www.idlearts.com/verlet.zip
-
- Messages : 579
- Inscription : ven. 11/mai/2007 15:21
Re: Moteur physique 2D ( Verlet )
@Ollivier: Merci, j'apprécie le compliment.
Comme j'ai beaucoup de travail en retard, je n'ai plus trop le temps d'aller plus loin. Heureusement, Idle a repris le code à son compte, et je trouve qu'il a vraiment fait un boulot formidable.
Notez bien l'effort qu'il fait de poster ses améliorations sur le forum français à chaque fois, ce qui est très sympa de sa part, je trouve.
"Two thumbs up!", comme on dit chez lui.

Comme j'ai beaucoup de travail en retard, je n'ai plus trop le temps d'aller plus loin. Heureusement, Idle a repris le code à son compte, et je trouve qu'il a vraiment fait un boulot formidable.
Notez bien l'effort qu'il fait de poster ses améliorations sur le forum français à chaque fois, ce qui est très sympa de sa part, je trouve.
"Two thumbs up!", comme on dit chez lui.

Les idées sont le souvenir de choses qui ne se sont pas encore produites.
Re: Moteur physique 2D ( Verlet )
mercie, sauf mon style de codage ressemble à Gaston la Gaffe
There are numerous issues that need fixing though I'm working out how to add the rest of the things that should be added.
I'm currently working on joining bodies, pinning objects, adding motive forces and resistance in joints.
There are two issues that someone may be able to help with.
Update constraints:
This could be replaced with a logarithmic function or using a pressure equation (gas)
or some change to the current method by working out the inverse mass based on the mass and length of the constraint
a constraint inverts when the force exceeds the rigidity or the other way? So rather than it being Xa<---->Xb it inverts to Xb>-----<Xa
it's sensitive to length and strength. Using a pressure equation could make sense or a logarithmic function so it won't invert.
Texture mapping:
How to make it work for shapes with different width heights
in the drawsprite it is using the texture coordinates N W S E (0,1 : -1,0 : 0,-1 : 1,0) so the 1's could be scaled from the aspect ratio of the object but this will only result in fitting the texture to within the bounds of the shape it still needs to be scaled.
There is also the issue of the orientation but that's more due to CreatePoly and choosing the right offset to plot the points from.
While I used to be fine with the trig and liner algebra, it all a big confusing puzzle to me these days.
So there may well be much better solutions.
google translate
Il ya de nombreuses questions qui ont besoin de fixation si je suis en train de voir comment ajouter le reste des choses qui devraient être ajoutés.
Je travaille actuellement sur l'adhésion à des organismes, épinglant les objets, l'ajout des forces motrices et de la résistance dans les articulations.
Il ya deux questions que quelqu'un peut être en mesure d'aider.
contraintes de mise à jour:
Cela pourrait être remplacée par une fonction logarithmique ou en utilisant une équation de pression (gaz)
ou un changement de la méthode actuelle en travaillant sur la masse inverse basée sur la masse et la durée de la contrainte
une contrainte inverse lorsque la force est supérieure à la rigidité ou l'autre sens? Donc, plutôt que ce soit Xa<---->Xb il s'inverse pour Xb >-----<Xa
il est sensible à la longueur et la force. En utilisant une équation de la pression pourrait avoir un sens ou une fonction logarithmique afin de ne pas inverser.
mappage de texture:
Comment le faire fonctionner pour les formes avec des hauteurs différentes largeurs
dans le drawsprite il utilise les coordonnées de texture NWSE (0,1: -1,0: 0, -1: 1,0) alors les 1 pourrait être mis à l'échelle du rapport d'aspect de l'objet, mais cela ne fera que conduire à l'installation texture à l'intérieur des limites de la forme qu'elle doit encore être réduit.
Il ya aussi la question de l'orientation, mais c'est plus en raison de CreatePoly et choisir le bon décalage pour tracer les points de.
Alors que j'étais très bien avec l'algèbre de trigo et de ligne, tout un grand puzzle déroutant pour moi ces jours-ci.
Il ya donc peut-être de meilleures solutions.

There are numerous issues that need fixing though I'm working out how to add the rest of the things that should be added.
I'm currently working on joining bodies, pinning objects, adding motive forces and resistance in joints.
There are two issues that someone may be able to help with.
Update constraints:
This could be replaced with a logarithmic function or using a pressure equation (gas)
or some change to the current method by working out the inverse mass based on the mass and length of the constraint
a constraint inverts when the force exceeds the rigidity or the other way? So rather than it being Xa<---->Xb it inverts to Xb>-----<Xa
it's sensitive to length and strength. Using a pressure equation could make sense or a logarithmic function so it won't invert.
Texture mapping:
How to make it work for shapes with different width heights
in the drawsprite it is using the texture coordinates N W S E (0,1 : -1,0 : 0,-1 : 1,0) so the 1's could be scaled from the aspect ratio of the object but this will only result in fitting the texture to within the bounds of the shape it still needs to be scaled.
There is also the issue of the orientation but that's more due to CreatePoly and choosing the right offset to plot the points from.
While I used to be fine with the trig and liner algebra, it all a big confusing puzzle to me these days.
So there may well be much better solutions.
google translate
Il ya de nombreuses questions qui ont besoin de fixation si je suis en train de voir comment ajouter le reste des choses qui devraient être ajoutés.
Je travaille actuellement sur l'adhésion à des organismes, épinglant les objets, l'ajout des forces motrices et de la résistance dans les articulations.
Il ya deux questions que quelqu'un peut être en mesure d'aider.
contraintes de mise à jour:
Cela pourrait être remplacée par une fonction logarithmique ou en utilisant une équation de pression (gaz)
ou un changement de la méthode actuelle en travaillant sur la masse inverse basée sur la masse et la durée de la contrainte
une contrainte inverse lorsque la force est supérieure à la rigidité ou l'autre sens? Donc, plutôt que ce soit Xa<---->Xb il s'inverse pour Xb >-----<Xa
il est sensible à la longueur et la force. En utilisant une équation de la pression pourrait avoir un sens ou une fonction logarithmique afin de ne pas inverser.
mappage de texture:
Comment le faire fonctionner pour les formes avec des hauteurs différentes largeurs
dans le drawsprite il utilise les coordonnées de texture NWSE (0,1: -1,0: 0, -1: 1,0) alors les 1 pourrait être mis à l'échelle du rapport d'aspect de l'objet, mais cela ne fera que conduire à l'installation texture à l'intérieur des limites de la forme qu'elle doit encore être réduit.
Il ya aussi la question de l'orientation, mais c'est plus en raison de CreatePoly et choisir le bon décalage pour tracer les points de.
Alors que j'étais très bien avec l'algèbre de trigo et de ligne, tout un grand puzzle déroutant pour moi ces jours-ci.
Il ya donc peut-être de meilleures solutions.