MakeBelly

Introduced

4.0

Description

Creates a belly rig consisting of two springs attached to a rectangular rod. The rod is a one-bone chain created using two guide objects. The guide objects determine the top and bottom position of the rod. One spring connects the base of the rod to the given hip object, the other spring connects the top of the rod to the vertebra object. The ForwardRotationPerc argument can be used to move the spring connection points away from the hip and vertebra closer to the rod.

Scripting Syntax

    MakeBelly( HipObject, VertebraObject, GuideObjectCollection, [ForwardRotationPerc] )

Parameters

Parameter | Type | Description
HipObject | String | The rigging parent that makes up the lower part of the belly assembly.
VertebraObject | String | The rigging parent for the upper part of the assembly. Typically the first vertebra after the hip.
GuideObjectCollection | String | A collection of two objects in the order: the lower stomach guide marker; the upper stomach guide marker.
ForwardRotationPerc | Double | The percentage the rotation points of the belly mass are forward from the spine and hip plate. Default Value: 0.25

Return Value

Returns a Belly JScript object.

Examples

JScript Example

    /*
       This example creates a belly attached to a hip icon.
       As the hip is rotated or translated the belly will
       swing with it.
           */

    //
    // Create and position the hip
    //
    var guide = GetPrim("Null", "Guide_Hip")
    var hip = MakeHip(guide,
           0,3,-1.5, //top  XYZ
           4,0,0); //side XYZ

    var lXfm = hip.Kinematics.Global.Transform;
    lXfm.SetTranslationFromValues(0,0,-4);
    hip.Kinematics.Global.Transform = lXfm;

    //
    // Create a null to act as the base of the spine
    // parent it to and position it above the hip
    //
    var Vertebra = GetPrim("Null", "Vertebra");
    var lXfm = Vertebra.Kinematics.Global.Transform;
    lXfm.SetTranslationFromValues(0,4,-5);
    Vertebra.Kinematics.Global.Transform = lXfm;
    hip.AddChild(Vertebra);

    //
    // Position the stomach guides
    //
    var guidecoll = new ActiveXObject("XSI.Collection");

    guidecoll.Add( GetPrim("Null", "LowerStomach") );
    guidecoll.Add( GetPrim("Null", "UpperStomach") );

    var lXfm = guidecoll(0).Kinematics.Global.Transform;

    lXfm.SetTranslationFromValues(0,0,0);
    guidecoll(0).Kinematics.Global.Transform = lXfm;

    lXfm.SetTranslationFromValues(0,4,0);
    guidecoll(1).Kinematics.Global.Transform = lXfm;

    var Belly = MakeBelly(hip, Vertebra , guidecoll);
    DumpBelly(Belly);

    function DumpBelly(inBelly)
    {
       logmessage ("Data in the returned belly object:");
       logmessage ("---------------------------------");
       logmessage ("BellyRoot :"+ inBelly.BellyRoot  );
       logmessage ("BellyBone :"+ inBelly.BellyBone  );
       logmessage ("BellyEff  :"+ inBelly.BellyEff   );

       logmessage ("UpperRoot :"+ inBelly.UpperRoot  );
       logmessage ("UpperBone :"+ inBelly.UpperBone  );
       logmessage ("UpperEff  :"+ inBelly.UpperEff   );

       logmessage ("LowerRoot :"+ inBelly.LowerRoot  );
       logmessage ("LowerBone :"+ inBelly.LowerBone  );
       logmessage ("LowerEff  :"+ inBelly.LowerEff   );

       logmessage ("Hidden    :"+ inBelly.Hidden     );
       logmessage ("Envelope  :"+ inBelly.Envelope   );
    }

    //results of running this script:
    //INFO : "Data in the returned belly object:"
    //INFO : "---------------------------------"
    //INFO : "BellyRoot :BellyRoot"
    //INFO : "BellyBone :Belly"
    //INFO : "BellyEff  :BellyEff"
    //INFO : "UpperRoot :UpperBellyRoot"
    //INFO : "UpperBone :UpperBellyBone"
    //INFO : "UpperEff  :UpperBellyEff"
    //INFO : "LowerRoot :LowerBellyRoot"
    //INFO : "LowerBone :LowerBellyBone"
    //INFO : "LowerEff  :LowerBellyEff"
    //INFO : "Hidden    :BellyRoot,UpperBellyRoot,LowerBellyRoot,BellyEff,UpperBellyEff,LowerBellyEff"
    //INFO : "Envelope  :Belly"

See Also

MakeTorso | MakeSpine | MakeTail | Make2PointSlide

Autodesk Softimage v7.5