Fri, Apr 19, 7:51 PM CDT

Welcome to the Poser 11 / Poser Pro 11 OFFICIAL Technical Forum

Forum Moderators: nerd

Poser 11 / Poser Pro 11 OFFICIAL Technical F.A.Q (Last Updated: 2024 Apr 15 3:14 am)

banner

Welcome to the Poser Forums! Need help with these versions, advice on upgrading? Etc...you've arrived at the right place!


Looking for Poser Tutorials? Find those HERE



Subject: Calculating speeds/exporting head position in the global coordinates


evanhem ( ) posted Fri, 31 July 2020 at 7:51 PM · edited Sun, 31 March 2024 at 5:09 PM

I have an application where I need head speed. I am able to get hip speed by making every frame a key frame, copying the frames, and then pasting in Excel. This gives my the hip X Y Z positions in PNUs. Now I need to do the same for the head. The problem is, the head is defined relative to the neck which is defined relative to the chest, which is defined relative to.... etc, until we get down to the hip root.

Is there a way where I can directly get the head XYZ coordinates?

Thank you.


ironsoul ( ) posted Fri, 31 July 2020 at 9:26 PM · edited Fri, 31 July 2020 at 9:36 PM

I'm not at my pc to test but if you parent a prop to the head maybe you extract the xyz from the prop? The other thought is a python script, there is a call to get the xyz of an body part origin (can't recall if returned in PNU or scene coords)



adp001 ( ) posted Sat, 01 August 2020 at 6:41 AM

Use Python.

actor = poser.Scene().CurrentActor()
print actor.WorldDisplacement()




evanhem ( ) posted Mon, 03 August 2020 at 5:06 PM · edited Mon, 03 August 2020 at 5:07 PM

Thanks. After a lot of research, I was able to create the following code:

import poser

actor = scene.Actor("Hip")
for frame in range(scene.NumFrames()):
    scene.SetFrame(frame)
    print actor.WorldDisplacement()

I wanted to validate this process with what I had done before. That is, copy from the Animation Palette and paste into Excel. The first couple of frames match with what I had before. However, later keyframes do not match. I multiply the values by 8.6 to get from PNU to feet, but there is a discrepancy between this value and the dials in the Poser GUI.

Do the xTran yTran zTran dials for the Hip in the Poser GUI correspond to the WorldDisplacement for the Hip actor? Apparently not.


evanhem ( ) posted Wed, 05 August 2020 at 1:23 PM · edited Wed, 05 August 2020 at 1:24 PM

Hi,

I am still trying to understand the difference between WorldDisplacement() and xTran, yTran, zTran for the hip. I have an animation with 59 frames. WorldDisplacement() matches xTran, yTran, zTran for the first 20 frames. Here is the 20th frame:

image.png

Note that the 20th frame from Poser should be compared to the 19th frame in the text box. You can see that the xTran, yTran, zTran values match with the WorldDisplacement() print out. This is the case for the first 20 frames.

Now, if I go to the 21st frame, they begin to disagree:

image.png

Please compare the Poser dials with the 20th frame in the text box.

I am having a really difficult time wrapping my head around why there is such a disagreement. Is there a way to visualize the global origin and global X Y Z in Poser?


FVerbaas ( ) posted Thu, 06 August 2020 at 5:32 AM
Forum Coordinator

In your animation, what happens at the 20th frame onwards? Maybe your body actor is moving off the zero position? World transform = body transform + hip transform.


evanhem ( ) posted Thu, 06 August 2020 at 11:48 AM

Thanks for your reply. Here is a sampling of the frames:

image.png

image.png

image.png

image.png

image.png

I've had such a tough time with the coordinates in Poser compared to other programs. How do I find the body transform? My impression was that the body is placed into the space via the hip, because when I rotate the hip the whole body rotates rigidly. Then, every other body part is defined relative to it. Are there any good sources for the coordinates that are used? I find the Poser manual to be cryptic in this regard.


FVerbaas ( ) posted Thu, 06 August 2020 at 12:49 PM
Forum Coordinator

The body actor has its own transformation dials that you can use to move the whole body, hip and children around in the scene. You usually let the figure strike a pose using the hip actor and its children. You translate the body actor only to let the figure take its place in the scene, and you use the y-rotation to let the figure turn around. The xrotate and z-rotate dials of the figure normally are not used.


evanhem ( ) posted Thu, 06 August 2020 at 7:07 PM

Ah, yes, I see that the Body xTran, yTran, zTran suddenly change when I move to the problematic frame. I don't know how, because I always put the actor into the space by translating and rotating the hip; maybe I used the "Body" coordinates by accident once. Thank you, I am happy to have been guided to this clue. Now I just need to back out what all the coordinate systems are in Poser. I wish there was a way to display all the coordinate systems for visualization.


Richard60 ( ) posted Thu, 06 August 2020 at 9:26 PM

The Body moves all the parts of a figure. That includes the IK Targets. If you have IK on and move the figure up by the Hip you can see the Toes point down to the IK Targets. However if you move the Body then the Feet stay flat. Moving the Body is a really BAD idea especially in animations. If you make a Walk Design and it moves forwards towards you and you like the movements but wish it was walking towards the Right instead. You can just rotate the BODY by 90 degrees and the figure will now start walking to the right.

Poser 5, 6, 7, 8, Poser Pro 9 (2012), 10 (2014), 11, 12, 13


evanhem ( ) posted Fri, 07 August 2020 at 12:15 AM

I see, thanks.


FVerbaas ( ) posted Fri, 07 August 2020 at 3:00 PM · edited Fri, 07 August 2020 at 3:02 PM
Forum Coordinator

evanhem posted at 9:30PM Fri, 07 August 2020 - #4396185

... Now I just need to back out what all the coordinate systems are in Poser. I wish there was a way to display all the coordinate systems for visualization.

It is nothing special actually; plain classroom textbook math on Euler angles in a cartesian system. Every object by definition has its own local coordinates system that moves and rotates with its parent, and it in addition has its own system. . It will never get simple of course.

One more tip: If you activate the 'direct manipulation' tool you can see and play with the rotation axis: Aantekening 2020-08-07 215942.jpg


pyposer ( ) posted Thu, 12 November 2020 at 3:35 PM

Hi! So you finally managed to figure out how to get the current global coordinates of a given actor via Python? I tried with WorldDisplacement but it does not seems to work (i tried with a hand and a ball placed at the same height but is completely different).


Privacy Notice

This site uses cookies to deliver the best experience. Our own cookies make user accounts and other features possible. Third-party cookies are used to display relevant ads and to analyze how Renderosity is used. By using our site, you acknowledge that you have read and understood our Terms of Service, including our Cookie Policy and our Privacy Policy.