I remember what I did now in more detail. At root pose, for each control I
mirrored it's transform across the mirror plane. Then I compared the XYZ
axes of the mirrored transform to the control's mirror partner transform
(using itself if there was no mirror partner). That gave me the mirror data
vector that was something like (-1,1,1).
My vector class's reflection method is here (sorry it's for Maya, but maybe
it will help you get the idea, it's pretty agnostic):

https://github.com/ZombieAcademy/MayaMath/blob/master/rigMath.py#L141

This was after a few days of trying to mirror pose when the character was
far away from origin, like your case. My best guess then was to always use
some sort of "reference" transform to mirror across. Like, for a face, it
would be the head bone. I ultimately abandoned this solution because it
required a lot of custom setup, and I wanted something that would always
work on every character without TDs having to constant set "mirror
reference transforms" for every weird case.


On Mon, Feb 24, 2014 at 2:57 PM, Ben Barker <ben.bar...@gmail.com> wrote:

> I solved this issue in Maya by adding an attribute to every control that
> mapped it's local SRTs to it's "mirror partner". This was done when the rig
> was at root pose. I think I just did a dot product on the local X,Y,and Z
> axis of the control, and compared it to the partner's XYZ axes. If they
> faced away I assigned a -1, and if they faced the same direction I did a 1.
> So I ended up with a vector attribute like [-1,1,1] (or whatever) on each
> control.
>
> Then it was just a matter of copying the local SRT values to the neighbor,
> and flipping them based on if the mirror info attribute was -1 or 1.
> If an object had no mirror partner (like the spine ctrls) the mirror info
> was only negative on the cross axis, so it only ended up flipping those
> values and putting them back onto the same control.
>
> Since it was stored when the character was at root pose it gave the
> animators the behavior they desired in any pose. And they didn't want a
> true mirror across a plane anyway. Sorry I haven't tried in SI, it's been
> awhile, but the logic should be the same. I found storing the "mirror info"
> at root pose was the key, since that is the only time the character had a
> good reference pose. Trying to decypher a "mirror plane" for each control
> when the character is posed in an animation scene is a nightmare.
>
>
> On Mon, Feb 24, 2014 at 2:24 PM, Eric Thivierge <ethivie...@hybride.com>wrote:
>
>> Good luck with those symmetry constraints. They are nothing if not flaky
>> at best.
>>
>>
>> On Monday, February 24, 2014 2:05:36 PM, Grahame Fuller wrote:
>>
>>> The following isn't elegant but it could be scripted:
>>>
>>> 1. Symmetry-constrain the left side to the right side.
>>> 2. Plot the left side to an action source.
>>> 3. Remove the constraints.
>>> 4. Repeat steps 1 to 3 for right-to-left.
>>> 5. Apply the two actions.
>>>
>>> gray
>>>
>>> From: softimage-boun...@listproc.autodesk.com [mailto:softimage-bounces@
>>> listproc.autodesk.com] On Behalf Of Eric Turman
>>> Sent: Monday, February 24, 2014 1:52 PM
>>> To: softimage@listproc.autodesk.com
>>> Subject: Re: How to mirror a rig pose
>>>
>>> Olivier Ozoux made a script for me at Raven Software back in 2001 when
>>> we were using a beta version of XSI 1.5 to do Star Wars:Jedi Knight:Outcast
>>> that did this. Olivier was head of special projects at that time. The
>>> script handled arbitrary orientations mirrored and otherwise like a champ.
>>> Unfortunately I do not have that script anymore. The script was not owned
>>> by Raven or Activision as it was neither paid for nor commissioned by the
>>> aforementioned entities.
>>>
>>> Does anyone have information of the existence of this script? DId it
>>> even survive the turnover? Is Olivier even on this list anymore? It would
>>> be great to get that script back into circulation for the benefit of the
>>> Softimage community.
>>>
>>> Cheers,.
>>>
>>> -=Eric
>>>
>>> On Mon, Feb 24, 2014 at 11:58 AM, Eric Thivierge <ethivie...@hybride.com
>>> <mailto:ethivie...@hybride.com>> wrote:
>>> Not sure how ICE would solve this at all... anyhow, it's a scripting
>>> exercise with some intermediate matrix math involved. So, no not an easy
>>> thing to solve but it's doable. Not sure if there are any tools out there
>>> though.
>>>
>>> Eric T.
>>>
>>>
>>> On Monday, February 24, 2014 12:03:10 PM, Nicolas Esposito wrote:
>>> Hi guys,
>>>
>>> I'm having a problem which I thought it was easier to solve, but right
>>> now I'm not sure which approach should I choose
>>>
>>> Lets say I have a rigged character with a pose, he's holding a gun
>>> using his right hand to shoot, so basically the entire body is slightly
>>> Now I would like to mirror that pose, means that I would like to
>>> mirror all the bones position, or better yet find a way to swap the
>>> bones position/orientation from left to right, so that the pose will
>>> be mirrored...
>>>
>>> I was thinking to use ICE to store all the bones position in the
>>> original pose, then to use ( not sure ) a switch context to copy the
>>> values from the left bones to the correspondent right bone, using the
>>> stored values, same thing for the right bones position
>>>
>>> Is there an easy way to do that or an existing tool to allow this kind
>>> of mirroring?
>>>
>>>
>>>
>>>
>>> --
>>>
>>>
>>>
>>>
>>> -=T=-
>>>
>>
>>
>

Reply via email to