3D Forum > Python-Scripting: Probleme mit move()

Python-Scripting: Probleme mit move()

03.05.2014 13:44
 
Let0n3Sa. 03 Mai. 2014, 13:44 Uhr
Hallo,
ich bin neu hier im Forum und habe momentan im Rahmen meines Studiums ein Praxisprojekt zu erledigen. Es geht um ein Motion Capturing mit Hilfe der MS Kinect, Processing und Maya.

Meine Daten werden von der Kinect in Processing in Empfang genommen, daraufhin via UDP an Maya geschickt. In Maya nehme ich über den Python Editor die Daten in Empfang. Das funktioniert auch alles soweit. Jetzt müssen die Werte die ich von Processing entgegennehme, noch auf die einzelnen Joints meines Skeletts zugewiesen werden.
Ich habe dies mit move(x,y,z) probiert. Eben habe ich testweise von Hand einen joint ausgewählt und dessen Position via move(1,1,1) verändert. Die Position ändert sich, allerdings nicht auf x=1, y=1 und z=1 sondern auf x= -3.88... y= -1,2... z=1,26...

Wodran kann das liegen?


Ein weiterer Versuch von mir die Koordinaten der einzelnen Joints zu ändern, war über Python mit TranslateX, TranslateY, TranslateZ. Da hat alles wunderbar funktioniert, bis darauf, dass mein Torso (root) sich nicht bewegt hat, das Skelett sah also so aus, als hätte es Arme und Beine ständig von sich nach vorne gestreckt.

Ich bin da mittlerweile ratlos. Vielleicht ist es auch möglich, dass der Fehler mit dem Anlegen des Skeletts (bzw. der Hierarchie) zu tun hat. Sobald ich nämlich die Bones lösche und nur die Joints habe, funktioniert (mit translateX, translateY,...) alles wunderbar. Sobald ich dann aber probiere die Joints an ein 3D-Modell zu binden (Smooth Bind) springt sobald das Programm läuft, das Skelett "raus" und es bewegt sich nur das Skelett, das 3D-Modell bleibt aber unverändert stehen.

Also alle fragen nochmal zusammengefasst (hab meinen Problemen freien Lauf gelassen, daher wurde es etwas unübersichtlich ) :

1. Warum werden bei der move()-Methode die Koordinaten des Joints auf so krumme Werte gesetzt und nicht auf die, die ich angebe?
2. Wodran könnte es liegen, dass sich der Torso nicht bewegt, bzw. auf der X-Achse rund 5 Einheiten weiter hinten liegt als Schultern und Hüften?
3. Warum funktioniert die Zuweisung der einzelnen Werte, wenn ich nur die Joints (ohne Bones) habe einwandfrei? und warum "springt" das Skelett trotz Smooth Bind aus dem 3D-Modell raus und bewegt sich alleine weiter?
4. Gibts vielleicht eine allgemeine Anleitung, wie ich ein Skelett erstelle, sodass es eigentlich keine Probleme gibt? (habe bisher nicht besonders viel mit Skeletons gearbeitet)


So, sind viele Fragen, ich hoffe der ein oder andere hat vielleicht ein paar nützliche Hinweise.

Besten Gruß!
 
TilesSa. 03 Mai. 2014, 18:17 Uhr
Ich denke mal das haut deswegen nicht hin weil der Joint Teil eines Skeletts ist. Und das hat seine eigenen Berechnungen für Position und Rotation. Das dürfte sich dann mit den Move Anweisungen ins Gehege kommen. Eine Lösung habe ich aber auch nicht parat, sorry.
 
Let0n3So. 04 Mai. 2014, 12:41 Uhr
Ja, das wird denke ich wegen der Inversen Kinematik so sein.
Besteht denn die Möglichkeit ein Skelett ohne Kinematik anzulegen? Oder anders gefragt, ist es möglich ein Skelett ohne Hierarchie anzulegen?
 
TilesSo. 04 Mai. 2014, 18:21 Uhr
Wie willst du das denn anstellen? Das ist immer FK oder IK smile
 
Let0n3Mo. 05 Mai. 2014, 13:15 Uhr
das war ja meine frage

wenn ich die Hierarchie umgehe und nur die Joints ohne Bones habe, funktioniert alles super. Wenn ich die dann mit smooth bind an das 3D Modell binde und per hand einen Joint verschiebe, bewegt sich das 3D Modell richtig mit.
Warum das aber sobald ich von der Kinect die Daten empfange aus dem Modell "rausspringt" weiß ich nicht. Gibt's vielleicht eine andere Möglichkeit zu binden, oder wüsste jemand eine Einstellung die ich beim Smooth Bind vornehmen muss, damit das klappen könnte?

Besten Dank schonmal für die Hilfe!
 
 

 


 
 
© 3D-Ring - deutsche 3D Software Community, Archiv 2001 - 2006