Mean Rotation, object filps 180



  • On 16/07/2014 at 23:48, xxxxxxxx wrote:

    Could some one please help me with why the object keeps flipping around to -180 when finding the mean rotation between two objects and how I could prevent it?

    import c4d
    from c4d import utils
      
    def SetGlobalRotation(obj, rot) :
        m = obj.GetMg()
        pos = m.off
        scale = c4d.Vector( m.v1.GetLength(),
                            m.v2.GetLength(),
                            m.v3.GetLength())
      
        m = utils.HPBToMatrix(rot)
      
        m.off = pos
        m.v1 = m.v1.GetNormalized() * scale.x
        m.v2 = m.v2.GetNormalized() * scale.y
        m.v3 = m.v3.GetNormalized() * scale.z
      
        obj.SetMg(m)
      
    def main() :
        a = op[c4d.ID_USERDATA,1]
        b = op[c4d.ID_USERDATA,2]
        c = op[c4d.ID_USERDATA,3]
        
        aRot = utils.MatrixToHPB(a.GetMg())
        bRot = utils.MatrixToHPB(b.GetMg())
        cRot = utils.MatrixToHPB(c.GetMg())
        
        x = [aRot,bRot]
        mean_rot = sum(x)/2
        SetGlobalRotation(c, mean_rot)
    

    https://dl.dropboxusercontent.com/u/2802779/mean_rotation.c4d


Log in to reply