## MakeHead

### Introduced

v4.0

### Description

Creates a spine or skeleton head rig from three guide objects. The guide objects position the base of the head, the neck and the head. Optionally guide objects can also be passed to generate ears (a form of tail, see MakeTail ).
Optionally a shadow rig can be attached to the head. Shadow objects are created for each chain element or spine vertebra in the head, and pose-constrained to these objects. Shadow rigs can be used to plot animation off of a rig.
A jaw can be generated using MakeHead by duplicating the neck guide object (the second object in the guide collection). A minimum of 2 neck guide duplicates are needed to generate a jaw (see the example).
If a skeleton style head is used, extra bones can be added to the neck by duplicating the head guide object (the third object in the guide collection). An extra bone will be created for each duplicate (see the example).

### Scripting Syntax

    oHead = MakeHead( Parent, GuideObjectCollection, [Prefix], [AssemblyType], [HeadType], [NbDivisions], [StretchType], Sliders, EarGuideCollection, [ShadowType], [ShadowParent] );

### Return Value

Returns a Head JScript object.

### Parameters

Parameter | Type | Description
--- | --- | ---
Parent | String | The object to which the new head will be parented.
GuideObjectCollection | String | An collection of 3 guide objects, consisting of the base of the head, the neck, and the head.
Prefix | String | The prefix used to name new objects when making the new head. Example "L", "R".
AssemblyType | Integer | The style of head assembly to be used. Default Value: 0
Possible Values: | Description:
0 | Skeleton head and neck.
1 | Spine head and neck.
HeadType | Integer | The type of head, used in the creation of box shadows. Default Value: 0
Possible Values: | Description:
0 | Biped head.
1 | Quadruped head.
NbDivisions | Integer | The number of divisions on the neck if a spine head assembly is choosen. Default Value: 2
StretchType | Integer | Whether the neck spine should stretch automatically to follow the head, or try to maintain a constant length. Default Value: 0
Possible Values: | Description:
0 | Stretches by spine scale slider.
1 | Stretches to meet the head controller.
Sliders | String | A slider PPG to put the spine parameters on. If none is supplied a slider page is added on the spine Curve.
EarGuideCollection | String | Collection of starting objects for ear spring chains. If empty, no ears are created.
ShadowType | Integer | The type of shadow rig to attach. Shadow rigs can be used to transfer or remap animation. Default Value: 0
Possible Values: | Description:
0 | No shadow
1 | SI|3D Skeleton shadow rig
2 | XSI Skeleton shadow rig
3 | Null shadow rig
4 | Box shadow rig
ShadowParent | String | Parent of the shadow rig hiearchy. If empty, no shadow rig is generated.

### Examples

#### JScript Example

    /*

    	This example makes two heads using the same three

    	guide objects. The first head uses a spine, the

    	second head uses a skeleton.

    */

    var guidecoll = new ActiveXObject("XSI.Collection");

    guidecoll.Add( GetPrim("Null", "Guide_Base") );

    guidecoll.Add( GetPrim("Null", "Guide_Neck") );

    guidecoll.Add( GetPrim("Null", "Guide_Head") );

    //

    // Can duplicate the neck guide to generate a jaw.

    // At least two duplicates are required to create a jaw.

    //

    jaw0 = GetPrim("Null", "Guide_Neck1");  //duplicated neck for jaw

    jaw1 = GetPrim("Null", "Guide_Neck2");  //duplicated neck for jaw

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

    lXfm.SetTranslationFromValues(0,0,0);

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

    lXfm.SetTranslationFromValues(0,2,0);

    guidecoll(1).Kinematics.Global.Transform = lXfm;

    lXfm.SetTranslationFromValues(0,4,0);

    guidecoll(2).Kinematics.Global.Transform = lXfm;

    lXfm.SetTranslationFromValues(1,2,0);

    jaw0.Kinematics.Global.Transform = lXfm;

    lXfm.SetTranslationFromValues(2,2,0);

    jaw1.Kinematics.Global.Transform = lXfm;

    //

    // Make the heads.

    //

    var Head= MakeHead(	ActiveSceneRoot,//parent

    					guidecoll,			//guide objects

    					"ABC",				//prefix

    					1,					//spine head and neck

    					0,					//biped head

    					3,					//nb of spine divisions

    					0);					//stretch using spine scale

    lXfm.SetTranslationFromValues(-4,0,0);

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

    lXfm.SetTranslationFromValues(-4,2,0);

    guidecoll(1).Kinematics.Global.Transform = lXfm;

    lXfm.SetTranslationFromValues(-4,4,0);

    guidecoll(2).Kinematics.Global.Transform = lXfm;

    lXfm.SetTranslationFromValues(-3,2,0);

    jaw0.Kinematics.Global.Transform = lXfm;

    lXfm.SetTranslationFromValues(-2,2,0);

    jaw1.Kinematics.Global.Transform = lXfm;

    //

    // Can duplicate the head guide to make a longer head.

    //

    head0= GetPrim("Null", "Guide_Head1");

    head1= GetPrim("Null", "Guide_Head2");

    head2= GetPrim("Null", "Guide_Head3");

    head3= GetPrim("Null", "Guide_Head4");

    head4= GetPrim("Null", "Guide_Head5");

    lXfm.SetTranslationFromValues(-4,5,0); head0.Kinematics.Global.Transform = lXfm;

    lXfm.SetTranslationFromValues(-4,6,0); head1.Kinematics.Global.Transform = lXfm;

    lXfm.SetTranslationFromValues(-4,7,0); head2.Kinematics.Global.Transform = lXfm;

    lXfm.SetTranslationFromValues(-4,8,0); head3.Kinematics.Global.Transform = lXfm;

    lXfm.SetTranslationFromValues(-4,9,0); head4.Kinematics.Global.Transform = lXfm;

    //

    // Make the skeleton head with extended neck

    //

    Head = MakeHead(	ActiveSceneRoot,	//parent

    					guidecoll,			//guide objects

    					"123",				//prefix

    					0,					//skeleton neck

    					0,					//biped head

    					3,					//nb of spine divisions

    					0);					//stretch using spine scale

### See Also

MakeTorso MakeSpine