PDA

Voir la version complète : Movement Z



base80
06/04/2005, 16h44
Je suis vraiment null, j'aurais du terminer l'école quant j'était petit.
Voila le prob; J'ai un null dans un autre null et il avance sur son axe Z. j'aimerais en connaître l'avancement en Z uniquement.
Si je demande le pion local il serras 0.0.0 et en global il me dit ou il est par rapport au zero global.
Comme on vois dans le gif la flèche bleu avance et je veux savoir combien.
http://www.base80.com/xpresso-files/BaseCar/KnowZ.gif

Je pense que je pose mal ma question mais j'espère que qq un comprend

padawa
06/04/2005, 17h27
En gros si j'ai compris, tu veux faire un genre de compteur kilometrique pour l'objet sur son axe Z :?

Ben je sais pas non plus :mrgreen:

base80
06/04/2005, 17h30
Oui un truc du style

base80
06/04/2005, 17h31
Une valeur positive si il avance et négative si il recul...

padawa
06/04/2005, 18h10
Sinon avec un peu de coffee au milieu...

Steph3D ::.
06/04/2005, 19h16
Voilà un exemple de base pour connaître la distance de l'objet par rapport à l'origine du monde (ou d'un autre objet)

main(doc,op)
{
var GlobalPosition=op->GetMg()->GetV0();
var WorldOrigine=vector(0,0,0);

var Distance=vlen(GlobalPosition-WorldOrigine);
op->SetName(tostring(Distance));
}

base80
06/04/2005, 19h19
Oui ca ca va aussi avec le noeud distance
moi je veux savoir son avancement. sa distance parcourue quoi...

Steph3D ::.
06/04/2005, 19h27
Ben vue comme ça rapidement, je dirais prend la valeur de l'ancienne position et de la nouvelle position entre chaque image pour savoir la distance parcourue, style Parcourt=Parcourt + vlen(NewPosition-OldPosition);

base80
06/04/2005, 20h05
Ben non ça va me rendre des x,y et z.

Prenons une voiture, elle avance et elle monte et elle descend, elle vas a gauche et a droite... ben le compteur kilométrique ne compte que l'avancement dans le sens de la route quel que soit son orientation.

C'est tellement con que j'arrive pas a m'expliquer.

Pascal
06/04/2005, 20h21
Un nœud "distance" entre "previous position" et "position", ça te va pas ?

quinn
06/04/2005, 20h26
Ben non ça va me rendre des x,y et z.

Prenons une voiture, elle avance et elle monte et elle descend, elle vas a gauche et a droite... ben le compteur kilométrique ne compte que l'avancement dans le sens de la route quel que soit son orientation

Sur une voiture si je ne m’abuse le compteur se base sur les rotations des roues, tu peux toujours reproduire le même principe.

base80
06/04/2005, 20h53
Oui et non Pascal c'est pas accumulatif et tout ce qui se base sur un truc précèdent ou un noeud mémoire a une instabilité. Mais je vais tout de même essayer.

Le plus gros problème se pose en franchissant les axes du monde, le système s'inverse et ça foire tout en l'air.

Ca a l'air si simple pourtant.

quinn euh hein stp.

base80
06/04/2005, 20h56
Pour reference j'ai fait ca avant.
http://www.base80.com/xpresso-files/BaseCar/base-wheel.gif

http://www.base80.com/xpresso-files/BaseCar/Base-Wheel1.c4d.zip

Et ca a l'air de marcher mais une fois que ca franchis les axes du monde ça tourne en arrière voir pire.

http://www.frenchcinema4d.com/phpBB2/viewtopic.php?p=177729#177729

Pascal
06/04/2005, 20h57
Oui, je cherchais justement à mémoriser la distance d'une frame à l'autre pour les aditionner, mais je ne sais pas faire, je suis très limité en Xpresso.

quinn
06/04/2005, 21h42
quinn euh hein stp.
J'te jure les Hollandais.

J'vais sûrement dire une connerie.

Tu connais le rayon de ta roue, par conséquent tu connais le périmètre.

Tu peux facilement récupérer le nombre de tour/seconde de ta roue a un instant t.
( la distance parcouru en un tour de roue est égal au périmètre )

Donc ta vitesse est égal a :

V[métre*s(-1)]= [Tour*s(-1)]* Périmétre


Non ?

base80
06/04/2005, 22h08
Ben oui quinn tu dit des conneries.
Comment veux tu faire tourner la roue si tu ne connais pas la distance parcourue...
Tu me prends pour un oeuf ou quoi.

base80
07/04/2005, 03h39
J'ai tout essayé avec la position précédente et c'est en effet instable comme je l'avais prévus.
Donc la question reste ouverte.

J'ai essayé un truc avec un plan de travail (construction plane), je le tourne toujours dans la direction du mouvement et je fait mes mesures dessus, mais c'est pas faisable.

Donc je reste avec le problème que j'arrive pas a mesurer le mouvement en avant (z) d'un objet. Tout bêtement.

Je pense que c'est une histoire de matrices ou de vecteur mais je ne comprend pas suffisamment cette matière.

Thierry HL
07/04/2005, 08h52
Je pense que la solution reste celle de créer ta propre variable
n = 1 rotation de roue

peu importe ou se trouve la roue dans l'espace ensuite puisque a chaque fois que ta roue fera 1 tour ta variable fera
n+1

Il faut ensuite gérer le faite qu'elle rique de rouler en Arrière aussi

base80
07/04/2005, 12h46
Bon j'ai trouvé un truc chez 3d-meier.
la page traduite par google http://translate.google.com/translate?hl=fr&sl=de&u=http://www.3d-meier.de/&prev=/search%3Fq%3Dhttp://www.3d-meier.de/%26hl%3Dfr%26lr%3D%26sa%3DG

Il fait le truc comme le disait Pascal (position précédente vs position actuelle) et il arrive a déduire la direction de marche avec un truc compliqué. Résultat ça marche pour faire tourner une roue correctement sans déduire sa rotation d'une spline.

Je n'ai toujours pas exactement ce que je cherche mais bon ça m'aide déjà énormément. Faudrait accumuler les chiffres pour savoir la distance parcourue.

Majoul
07/04/2005, 22h26
Pour le cumul passe par un nœud coffee c’est plus simple à réaliser surtout si tu veut incrémenter ou décrémenter selon le sens de déplacement de ton objet.
Pour tester le sens de déplacement de ton objet. par rapport à la position précédente il te suffit de convertir ta position global actuelle dans la matrice global précédente, si ton z est positif tu incrémente la distance sinon tu décrémente.

v.montel
07/04/2005, 22h36
Hello base

Je n'y connais pas grand chose en Xpresso, mais ton sujet m'a fait penser à une vieille expression de Tengaal, qui permet de calculer automatiquement la longueur d'une spline... Dans ton cas, n'est-il pas possible de coupler ça avec ton début d'expression (en générant automatiquement une spline invisible le long de la trajectoire que tu fais faire à ton objet référent, et par là même d'en ressortir la distance parcourue)??

Voici le lien :
http://www.frenchcinema4d.com/index.php?p=xpression_detail&id=15

bye, et dis-moi si ça peut marcher.. :idea:

Majoul
07/04/2005, 22h46
Voici mon fichier de test http://perso.wanadoo.fr/archizone/images/xpresso.jpg (http://perso.wanadoo.fr/archizone/DIVERS/xpresso/compteur_trajet.c4d)

base80
08/04/2005, 04h00
merci beaucoup

Il prend cependant en compte les mouvements latéraux mai je peux m'en sortir , merci majoul

sinclairzxfr
08/04/2005, 10h21
Bonjour à tous,

Sinon, il y a le plug "caranim" qui gère :
-la rotation d'une roue en rapport avec la longueur de la spline (route)
-le pivot de la roue "braquage" suivant la courbure de la spline
-la gestion de l'attelage ( loco+wagon+wagon+.... )

Il manque les suspensions...

http://www.erik-kinting-grafikdesign.de/downloads/caranim.zip

PP
08/04/2005, 18h53
La longueur d'un arc, c'est alpha*r (angle en radians x rayon de l'arc) ; donc si tu connais la valeur angulaire de ton mouvement (rotation en radians), tu connais forcément la distance parcourue par ton cube.

Si c'est pas ça qui t'intéresse, j'ai rien compris à ton problème ! :o

Guedinouff
09/04/2005, 22h45
Base, est-il possible que tu nous montres le résultat de ton système pour calculer le déplacement en Z, parce que je n'ai pas tout compris ce qui a été expliqué précédemment et puisque tu as l'air d'avoir trouvé une solution au petit défaut du fichier de Majoul (le déplacement est aussi compté sur les autres axes). J'avais en effet laissé de côté une idée d'expression coffee car je n'arrivais pas à résoudre le même problème que toi (enfin au début du post !)...

base80
09/04/2005, 22h52
Sur le site de 3d-meyer il y a une car2 qui fait des calculs d'angles pour savoir ou il est et dans quel direction il va. C'est assez compliqué a expliquer. (le lien est dans un post plus haut)
Si je combine ça au truc de majoul j'ai un compteur.
Mais l'essentiel du truc de 3d-meier est que la roue tourne toujours correctement. (c'est le seul a y parvenir apparemment, du jamais vu, pourtant ça a l'air simple)