*On 01/09/2010 at 05:59, xxxxxxxx wrote:*

Hello everyone,

although this topic was discussed formerly, i'd like to share some thoughts on it. Perhaps someone can point me to errors in my thoughts I do not see:

It is clear that you cannot use the HPB-values of Cinema-Bones to derive Eurler-values from them, as they always refer to the local coordiate-system of a bone, not to a world-system. So the only way to proceed to a solution must be something like invers-motion-capturing. It should be possible to calculate the world-coordinates of each bones top-point. If we imagine this point as a moving white ball on a mocap-video (although we have much more information about it already, like its 3d-coordinates), it should be possible to calculate euler values for its position the following:

After the transformatiosn needed to get the bone-top's world-coordinates (Always transform the point values to the parent-bones-system while moving the objecthierarchie up until we do not find any parent-object above, then we got its world-xyz, right?), we create 3 vectors from it by zeroing one of three axis-values in the coordinates to get vectors lying on each axis-plane between 2 world-axis. We can now determine the angle between axis and this plane-vector, right? So it should be possible, to get 3 World-euler-values. Well of course bhv-Format takes the second and third euler-angle from a coordinate-system rotated by the previous euler-value. But what, if we use a zero-object as world-axis-proxy, initialized at world-zero on start a new bone in the frame and rotated on determining the first euler with it? Then we would use the rotated system to create the next plane-vector (eg: rotate the world-coordinates of the system (and the point?)) and retrieve the next euler until we got all 3 eulers for the bone.

Should this get us bvh-conform angles and coordinates for a bone-skeleton? Even if we must assume an aligment alon the x-axis?

If there is a mistake in my thoughts, I would be grateful for a hint, because if this would work, it could be possible to export BVH-file-animation from a C4d-Bone-animated object. Of course you would have to use quarternations to avoid Gimblocks and perhaps modify the rotation-order for the axes from bone to bone, but BHV-Format allows you to to so, as long as the euler-values match the hierarchy-values, as I understood.

I would be grateful if someone could give me a hint where I might be mistaken. I really wonder why nobody, not even maxon did this before, so I assume, there must be a great problem with it I did not encounter yet.

Thanks in advance and many greets,

Coffeejunkie

]]>*On 01/09/2010 at 05:59, xxxxxxxx wrote:*

Hello everyone,

although this topic was discussed formerly, i'd like to share some thoughts on it. Perhaps someone can point me to errors in my thoughts I do not see:

It is clear that you cannot use the HPB-values of Cinema-Bones to derive Eurler-values from them, as they always refer to the local coordiate-system of a bone, not to a world-system. So the only way to proceed to a solution must be something like invers-motion-capturing. It should be possible to calculate the world-coordinates of each bones top-point. If we imagine this point as a moving white ball on a mocap-video (although we have much more information about it already, like its 3d-coordinates), it should be possible to calculate euler values for its position the following:

After the transformatiosn needed to get the bone-top's world-coordinates (Always transform the point values to the parent-bones-system while moving the objecthierarchie up until we do not find any parent-object above, then we got its world-xyz, right?), we create 3 vectors from it by zeroing one of three axis-values in the coordinates to get vectors lying on each axis-plane between 2 world-axis. We can now determine the angle between axis and this plane-vector, right? So it should be possible, to get 3 World-euler-values. Well of course bhv-Format takes the second and third euler-angle from a coordinate-system rotated by the previous euler-value. But what, if we use a zero-object as world-axis-proxy, initialized at world-zero on start a new bone in the frame and rotated on determining the first euler with it? Then we would use the rotated system to create the next plane-vector (eg: rotate the world-coordinates of the system (and the point?)) and retrieve the next euler until we got all 3 eulers for the bone.

Should this get us bvh-conform angles and coordinates for a bone-skeleton? Even if we must assume an aligment alon the x-axis?

If there is a mistake in my thoughts, I would be grateful for a hint, because if this would work, it could be possible to export BVH-file-animation from a C4d-Bone-animated object. Of course you would have to use quarternations to avoid Gimblocks and perhaps modify the rotation-order for the axes from bone to bone, but BHV-Format allows you to to so, as long as the euler-values match the hierarchy-values, as I understood.

I would be grateful if someone could give me a hint where I might be mistaken. I really wonder why nobody, not even maxon did this before, so I assume, there must be a great problem with it I did not encounter yet.

Thanks in advance and many greets,

Coffeejunkie

]]>