Skin : Modifier

Skin - superclass: modifier; super-superclass:MAXWrapper - 91:0 - classID: #(9815843, 87654) 

Constructor

Skin ... 

Properties

<Skin>.enableDQ     BooleanClass    default: true   --  boolean

Get/Set the state of the "Dual Quaternion" > "DQ Skinning Toggle" checkbox.

Available in 3ds Max 2016 and higher.

<Skin>.Effect Float default: 0.0 

Absolute weight of selected vertices.

<Skin>.filter_vertices Boolean default: false 

Turn vertex selection on/off.

<Skin>.filter_cross_sections Boolean default: true 

Turn cross-section selection on/off.

<Skin>.filter_envelopes Boolean default: true 

Turn envelope selection on/off.

<Skin>.draw_all_envelopes Boolean default: false 

When turned on, displays all envelopes. When off, only the selected envelopes are displayed.

<Skin>.draw_vertices Boolean default: true 

Turn on/off the display of weighted vertices.

<Skin>.ref_frame Integer default: 0 

Sets the frame where the bones and the mesh are in a reference position.

<Skin>.paint_radius Float default: 24.0 

Sets the brush radius.

<Skin>.paint_feather Float default: 0.7 

Sets the brush falloff.

<Skin>.cross_radius Float default: 10.0 

Scales the selected envelope cross-section.

<Skin>.always_deform Boolean default: true 

Always deforms the skin when the bones are moved. The Animate button does not have to be turned on to move bones and deform the skin.

<Skin>.paint_str Float default: 0.1 

Sets the brush strength.

<Skin>.localSquash Array default: #() -- float array 

Amount of squash applied to each bone.

<Skin>.initialSquash Array default: #() -- float array 

Array containing initial squash values for a bone.

<Skin>.initialStaticEnvelope Boolean default: false 

When turned on, an initial static envelope size is used when a bone is added. When off, the initial envelope size is determined by the object bounding box.

<Skin>.initialInnerEnvelopePercent Float default: 0.75 

The multiplier used to find the inner cross-section size when initialStaticEnvelope is false .

<Skin>.initialOuterEnvelopePercent Float default: 3.5 

The multiplier used to find the outer cross-section size when initialStaticEnvelope is false .

<Skin>.initialEnvelopeInner Float default: 10.0 

The inner cross-section size when initialStaticEnvelope is true .

<Skin>.initialEnvelopeOuter Float default: 50.0 

The outer cross-section size when initialStaticEnvelope is true .

<Skin>.draw_all_gizmos Boolean default: true 

Turn on/off the display off all gizmos.

<Skin>.draw_all_vertices Boolean default: false 

Turns on/off the display of all vertices as small dots.

<Skin>.shadeweights Boolean default: true 

Turn on/off display of weighted vertices using vertex colors.

<Skin>.envelopesAlwaysOnTop Boolean default: true 

Turn on/off display of envelopes on top of the mesh.

<Skin>.crossSectionsAlwaysOnTop Boolean default: true 

Turn on/off display of cross-sections on top of the mesh.

<Skin>.rigid_vertices Boolean default: false 

When turned on, a single vertex can only be affected by one bone.

<Skin>.rigid_handles Boolean default: false 

When turned on, all handles have the same weights as the knot that owns them.

<Skin>.fast_update Boolean default: false 

When turned on, the system uses only rigid vertices for the viewport display.

<Skin>.gizmos Array default: #() -- max object array 

Array containing all gizmos assigned to skin.

The following properties have been added to the skin modifier in 3ds Max 5

<Skin>.backTransform Boolean default: true -- boolean; Back_Transform_Verts 

Get/Set the state of the "Back Transform Vertices" checkbox in the Advanced Parameters rollout

<Skin>.bone_Limit Integer default: 20 -- integer 

Get/Set the value of the "Bone Affect Limit" control in the Advanced Parameters rollout

<Skin>.debugMode Boolean default: true -- boolean 

Get/Set the Debug mode for the modifier.

Not exposed to the UI, for internal use only.

When enabled, data will be output to the Listener window which may be useful for tracking bugs.

<Skin>.shortenBoneNames Boolean default: true -- boolean; Shorten_Bone_Names 

Get/Set the Shorten Bone Names mode state.

When set to true, bone names longer than the width of the bone list will be shortened by adding "..." in the middle of the name and displaying only the start and end characters.

<Skin>.showNoEnvelopes Boolean default: false -- boolean; Shade_Weights 

Get/Set the state of the "Show No Envelopes" checkbox in the Display rollout

<Skin>.updateOnMouseUp Boolean default: false -- boolean; Update_On_Mouse_Up 

Get/Set the state of the "Update on mouse up" checkbox in the Advanced Parameters rollout

<Skin>.wt_activeVertexSet Integer default: 0 -- integer; Active_Vertex_Set 

Get/Set the index of the Active Vertex Set drop-down list in the Weight Table dialog.

0 - All Vertices

1 - Selected Vertices

2 - Selected Bone

<Skin>.wt_affectSelected Boolean default: false -- boolean; Affect_Selected 

Get/Set the Weight Table Affect Selected mode.

When set to true, the "Affect Selected" option will be selected in the drop-down list in the Weight Table dialog.

When false, "Affect All Verts" will be selected instead.

To see the drop-down list, Options>Show Global should be checked.

<Skin>.wt_attribLabelHeight Integer default: 1 -- integer; Attrib_Label_Height 

Get/Set the Weight Table Height of the attribute labels.

<Skin>.wt_dragLeftRightMode Boolean default: true -- boolean; Drag_Left_Right_Mode 

Get/Set the Weight Table Drag direction mode.

When set to true, dragging the mouse left-right will increase/decrease the value.

When false, dragging up/down will change the value.

<Skin>.wt_flipUI Boolean default: false -- boolean; Flip_UI 

Get/Set the Weight Table UI Flip mode.

When set to true, the bone names will be displayed at the left side.

When false, the bone names will be displayed on top.

<Skin>.wt_fontSize Integer default: 14 -- integer; FontSize 

Get/Set the Weight Table font size.

<Skin>.wt_markerColor Color default: (color 255 0 255) -- Marker_Color 

Get/Set the Weight Table marker color.

<Skin>.wt_markerType Integer default: 6 -- integer; Marker_Type 

Get/Set the Weight Table marker type.

<Skin>.wt_precision Float default: 0.01 -- float; Precision 

Get/Set the Weight Table precision when dragging a field.

<Skin>.wt_shortenLabels Boolean default: true -- boolean; Shortern_Labels 

When set to true, the Weight Table labels will be shortened.

<Skin>.wt_showAffectedBones Boolean default: false -- boolean; Show_Affected_Bones 

Get/Set the Show Affected Bones mode state.

When enabled, it will filter out any bones that do not have any influence on the currently displayed vertices.

<Skin>.wt_showAttributes Boolean default: true -- boolean; Show_Attributes 

Get/Set the Show Attributes mode state.

Corresponds to the item in the Weight Table’s Options menu.

When set to true will show the vertex attribute in the window, when set to false will remove the vertex attribute from the window.

<Skin>.wt_showCopyPasteUI Boolean default: true -- boolean; Show_Copy_and_Paste_UI 

Controls the visibility of the Copy and Paste buttons in the Weight Table UI.

<Skin>.wt_showExclusions Boolean default: false -- boolean; Show_Exclusions 

Gets/Sets the visibility of the exclusion toggle boxes.

Corresponds to the item in the Weight Table’s Options menu.

<Skin>.wt_showGlobal Boolean default: false -- boolean; Show_Global 

Get/Set the Show Global mode state.

Corresponds to the item in the Weight Table’s Options menu.

When set to true the global fields will be shown.

When set to false, the global fields will be hidden.

<Skin>.wt_showLocks Boolean default: false -- boolean; Show_Locks 

Gets/Sets the visibility of the Locks toggle boxes.

Corresponds to the item in the Weight Table’s Options menu.

<Skin>.wt_showMarker Boolean default: true -- boolean; Show_Weight_Table_Marker 

Controls the marker visibility in the viewport for the selected vertices in the Weight Table.

<Skin>.wt_showMenu Boolean default: true -- boolean; Show_Menu 

Controls the menu visibility. Takes effect after re-opening the Weight Table.

<Skin>.wt_showOptionsUI Boolean default: false -- boolean; Show_Options_UI 

Controls the Options panel visibility of the Weight Table dialog.

This is not exposed to the standard UI.

<Skin>.wt_showSetUI Boolean default: false -- boolean; Show_Set_Sets_UI 

Controls the Vertex Selection sets panel visibility of the Weight Table dialog.

<Skin>.wt_tableY Integer default: 10 -- integer; Top_Border 

Controls the Y position of the top of the Weight Table.

In other words it defines the height of the additional options panel on top of the Weight Table dialog.

<Skin>.wt_updateOnMouseUp Boolean default: false -- boolean; Update_On_Mouse_Up 

Controls the state of the "Update On Mouse Up" item the Weight Table’s Options menu.

When set to true, the viewport and stack will be updated only when the mouse is released.

<Skin>.wt_winHeight Integer default: 500 -- integer; Height 

Get/set the Weight Table’s window height.

Setting takes effect after re-opening the Weight Table.

<Skin>.wt_winWidth Integer default: 800 -- integer; Width 

Get/set the Weight Table’s window width. Setting takes effect after re-opening the Weight Table.

<Skin>.wt_winXPos Integer default: 0 -- integer; Xpos 

Get/set the Weight Table’s window horizontal position in pixels relatively to the upper left corner of the Windows desktop. Setting takes effect after re-opening the Weight Table.

<Skin>.wt_winYPos Integer default: 0 -- integer; YPos 

Get/set the Weight Table’s window vertical position in pixels relatively to the upper left corner of the Windows desktop. Setting takes effect after re-opening the Weight Table.

The following properties have been added to the Skin modifier in 3ds Max 6

<Skin>.mirrorPlane Integer default: 0 -- integer; Mirror_Plane 

Get/Set the mirror plane axis. Possible values are:

0 - X (default)

1 - Y

2 - Z

<Skin>.mirrorOffset Float default: 0.0 -- float; Mirror_Offset 

Get/Set the mirror offset value.

<Skin>.mirrorUseInitialTM BooleanClass default: true -- boolean; Use_Initial_TM 

When set to true , the mirror will use the initial transformation matrix.

<Skin>.mirrorEnabled BooleanClass default: false -- boolean; Mirror_Enabled 

When set to true , mirror mode will be enabled. Corresponds to the "Mirror Mode" checkbutton in the Skin Modifier's UI.

<Skin>.mirrorThreshold Float default: 0.5 -- float; Mirror_Threshold 

Get/Set the mirror treshold value.

<Skin>.mirrorProjection Integer default: 0 -- integer; Mirror_Projection 

Get/Set the mirror projection mode. Possible values are:

0 - Default Display

1 - Positive Direction

2 - Negative Direction

3 - None

<Skin>.manualUpdate BooleanClass default: false -- boolean; Manual_Update 

Controls the state of the "Manual Update" checkbox in the Skin Modifier's UI, "Mirror Parameters" rollout.

<Skin>.mirrorFast BooleanClass default: true -- boolean; Fast_Engine 

When set to false , disables the fast mirror mode.

<Skin>.ignoreBoneScale BooleanClass default: false -- boolean; Ignore_Bone_Scale 

Controls the state of the "Ignore Bone Scale" checkbox in the "Advanced Parameters" rollout of the Skin Modifier's UI.

<Skin>.rightJustifyBoneText BooleanClass default: true -- boolean; Right_Justify_Bone_Names 

When set to true (default), bone text in the Weight Table dialog will be right-justified.

The following property has been added to 3ds Max 6 but is not officially supported.

Use at your own risk:

<Skin>.paintBlendMode BooleanClass default:false 

Lets you paint Skinweights in Blend mode when set to true.

The following properties have been added to the Skin modifier in 3ds Max 8

<Skin>.selectElement BooleanClass default: false -- boolean; Select_Element 

Get/Set the state of the Select Element checkbox in the Select group of controls in the Parameters rollout.

<Skin>.backFaceCull BooleanClass default: true -- boolean; Backface_Cull 

Get/Set the state of the Backface Cull Vertices checkbox in the Select group of controls in the Parameters rollout.

<Skin>.colorAllWeights BooleanClass default: false -- boolean; Shade_Weights 

Get/Set the state of the Color All Weights checkbox in the Display rollout.

<Skin>.showHiddenVertices BooleanClass default: false -- boolean; Show_Hidden_Vertices 

Get/Set the state of the Show Hidden vertices checkbox in the Display rollout.

<Skin>.animatableEnvelopes BooleanClass default: false -- boolean; Animatable_Envelopes 

Get/Set the state of the Animatable Envelopes checkbox in the Advanced Parameters rollout.

<Skin>.weightAllVertices BooleanClass default: true -- boolean; Weight_All_Vertices 

Get/Set the state of the Weight All vertices checkbox in the Advanced Parameters rollout.

<Skin>.clearZeroLimit Float default: 0.0 -- float; Clear_Zero_Weights_Limit 

Get/Set the Remove Zero Limit value in the Advanced Parameters rollout.

<Skin>.weightColors ArrayParameter default: #([0.9,0,0], [0,0.9,0], [0,0,0.9], [0.9,0.9,0], [0,0.9,0.9], [0.9,0,0.9], [0.49,0,0], [0,0.49,0], [0,0,0.49], [0.49,0.49,0], [0,0.49,0.49], [0.9,0.49,0], [0,0.49,0.9], [0.49,0.9,0], [0,0.9,0.49], [0.49,0,0.49], [0.9,0,0.49], [0.49,0,0.9], [0.49,0.49,0.9], [0.9,0.49,0.49], [0.9,0.49,0.9], ...) -- point3 array; Weight_Colors 

Get/Set the colors to be used to display the weights.

<Skin>.weightTool_scale Float default: 0.95 -- float; Scale 

Get/Set theWeight Tool'sscale value.

<Skin>.weightTool_tolerance Float default: 0.1 -- float; Tolerance 

Get/Set theWeight Tool'stolerance value.

<Skin>.weightTool_weight Float default: 0.5 -- float; Weight 

Get/Set theWeight Tool'sweight value.

Methods

In previous versions, some of these methods required the target object be selected, and that the Skin modifier be active in the Modify panel. Available in 3ds Max 2019.2 Update and higher. These methods now take an optional node:<node> or name:<string> argument, and are applied to that node or named node. These arguments may be a single node or name, or an array of nodes or names. If no node is specified, the methods require that the Skin modifier be the displayed modifier in the Modify panel, and that the Modify panel is active.

In previous versions these methods always required that the target object is selected, the Skin modifier be the displayed modifier in the Modify panel, and that the Modify panel is active.

Add...

skinOps.addbone <Skin> <Bone_node> <Update_integer>  [(node:<node> | name:<string>)]

Adds a bone to the current system.

For Update_integer , - 1 forces a complete update and redraw, 0 does not update the system.

This allows you to add a bunch of bones to a system and then update once at the end.

skinOps.addBoneFromViewEnd <Skin> 

Ends the addBoneFromViewStart command mode.

skinOps.addBoneFromViewStart <Skin> 

Puts you in a command mode where you can select bones from the viewport by clicking on them.

You can exit this mode by right clicking or calling addBoneFromViewEnd .

skinOps.addCrossSection <Skin> <BoneID_integer> <U_float> <InnerRadius_float> <OuterRadius_float> \
    [node:<node>] 

Adds a cross section to the bone whose index matches BoneID_integer.U_float , which ranges from 0.0-1.0, defines where along the bone to add the cross-section.

skinOps.addCrossSection <Skin> <U_float> 

Adds a cross section to the current selected bone.

The inner and outer radii are computed based on the neighboring cross sections .U_float , which ranges from 0.0-1.0, defines where along the bone to add the cross-section.

skinOps.addCrossSection <Skin> <U_float> <InnerRadius_float> <OuterRadius_float> 

Adds a cross section to the current selected bone.U_float , which ranges from 0.0-1.0, defines where along the bone to add the cross-section.

Vertex Selection

skinOps.growSelection <Skin> 

Grows the current vertex selection of the specified Skin modifier.

Equivalent to pressing the Grow button in the Parameters rollout > Select group of controls in the modifier's UI.

skinOps.shrinkSelection <Skin> 

Shrinks the current vertex selection of the specified Skin modifier.

Equivalent to pressing the Shrink button in the Parameters rollout > Select group of controls in the modifier's UI.

skinOps.loopSelection <Skin> 

Performs Loop Selection using the current vertex selection of the specified Skin modifier as base.

Equivalent to pressing the Loop button in the Parameters rollout > Select group of controls in the modifier's UI.

skinOps.ringSelection <Skin> 

Performs Ring Selection using the current vertex selection of the specified Skin modifier as base.

Equivalent to pressing the Ring button in the Parameters rollout > Select group of controls in the modifier's UI.

skinOps.bakeSelectedVerts <Skin> 

Bake the selected vertices.

skinOps.blendSelected <Skin> 

Blends the selected vertices.

skinOps.getSelectedVertices <Skin> [(node:<node> | name:<string>)]

Gets an array of selected vertices.

Button Commands

skinOps.buttonAdd <Skin> 

Presses the add bone button.

skinOps.buttonAddCrossSection <Skin> 

Presses the add cross section button.

skinOps.buttonAddGizmo <Skin> 

Presses the add gizmo button in the gizmo rollout.

skinOps.buttonCopyGizmo <Skin> 

Presses the copy gizmo button in the gizmo rollout.

skinOps.buttonExclude <Skin> 

Presses the exclude vertices button.

skinOps.buttonInclude <Skin> 

Presses the include vertices button.

skinOps.buttonPaint <Skin> 

Presses the paint button.

skinOps.buttonPasteGizmo <Skin> 

Presses the paste gizmo button in the gizmo rollout.

skinOps.buttonRemove <Skin> 

Presses the remove bone button.

skinOps.buttonRemoveGizmo <Skin> 

Presses the remove gizmo button in the gizmo rollout.

skinOps.buttonSelectExcluded <Skin> 

Presses the select excluded vertices button.

skinOps.paintOptionsButton <Skin> 

Presses the Paint Options button and opens the Paint Options dialog.

EXAMPLE

   skinOps.paintOptionsButton $.skin
skinOps.paintWeightsButton <Skin> 

Presses the Weights button and enters the Paint Weights mode.

Weight Table & Tool

skinOps.buttonWeightTable <Skin> 

Brings up the Skin Weight Table for the specified modifier.

skinOps.isWeightTableOpen <Skin> 

Returns 1 if the Skin Weight Table is open for the specified modifier, 0 if it is closed.

skinOps.closeWeightTable <Skin> 

Closes the Skin Weight Table of the specified modifier.

skinOps.WeightTool <Skin> 

Opens the Weight Tool of the specified Skin modifier.

skinOps.isWeightToolOpen <Skin> 

Returns 1 if the Weight Tool of the specified Skin modifier is open, 0 if it is closed.

skinOps.closeWeightTool <Skin> 

Closes the Weight Tool of the specified Skin modifier if it is already open.

Remove Bone

skinOps.removebone <Skin> 

Removes the current selected bone from the bones system.

skinOps.removebone <Skin> <BoneID_integer> [(node:<node> | name:<string>)]

Removes the BoneID from the bones system.

skinOps.multiRemove <Skin> 

Brings up a list box where the user can delete multiple bones instead of one at a time.

skinOps.replaceBone <Skin> <BoneID_integer> [(node:<node> | name:<string>)] vertices:<list>

Replaces the specified bone with a bone defined by the vertices list.

skinOps.removeUnusedBones <Skin> threshold:<float> [(node:<node> | name:<string>)]

Removes bones with weights below the specified threshold.

Copy and Paste

skinOps.copySelectedBone <Skin <Skin> 

Copies current selected bone properties to the copy buffer.

skinOps.pasteAllBones <SkinModifier> <boolean> 

This method will paste all bones across the mirror plane going in the direction defined by the Bool parameter - if true , it pastes from blue to green, otherwise from green to blue.

skinOps.pasteToAllBones <Skin> 

Pastes the copy buffer to all the bones.

skinOps.pasteToBone <Skin> <BoneID_int> 

Pastes the copy buffer to bone id supplied.

skinOps.pasteToSelectedBone <Skin> 

Pastes the copy buffer to the current selected bone.

skinOps.copyWeights <Skin> 
skinOps.pasteWeights <Skin> 
skinOps.pasteWeightsByPos <Skin> 
skinOps.pasteAllVerts <SkinModifier> <boolean> 

This method will paste all vertices across the mirror plane going in the direction defined by the Bool parameter - if true , it pastes from blue to green, otherwise from green to blue.

Dual Quaternions

skinOps.enableDQOverrideWeighting
skinOps.getVertexDQWeight
skinOps.setVertexDQWeight

Bone Properties

skinOps.GetSelectedBone <Skin> 

Returns the index of the current selected bone in the Bone list.

skinOps.GetNumberBones <Skin> 

Returns the number of bones in the system.

skinOps.GetBoneName <Skin> <bone_index> <nameflag_index> 

Returns the bone name or node name of a bone specified by ID.

bone_index is the bone system ID for the bone.

nameflag_index can be 0 or 1:

If a Bones system is used for the Skin bones, the transform for a bone is held by its parent.

skinOps.GetBoneIDByListID <Skin> <ListID_integer>

Returns the BoneID index given the ListID index value.

The ListID index is the index into the name-sorted bone listbox.

The BoneID index is the non-sorted index, and is the index used by other methods that require a bone index.

Available in 3ds Max 2015 and higher.

skinOps.GetListIDByBoneID <Skin> <BoneID_integer>

Returns the ListID index given the BoneID index value.

The ListID index is the index into the name-sorted bone listbox.

The BoneID index is the non-sorted index, and is the index used by other methods that require a bone index.

Available in 3ds Max 2015 and higher.

skinOps.GetBoneNodes <Skin>

Returns an array of bone nodes in the same order they exist in the skin modifier.

skinOps.GetBoneNode <Skin> <BoneIndex_integer>

Returns the bone node specified by index.

skinOps.getBonePropFalloff <Skin> <BoneID_integer> 

Returns the falloff parameter of the bone.

1 - linear

2 - sinual

3 - fast out

4 - slow out

skinOps.setBonePropFalloff <Skin> <BoneID_integer> <Falloff_integer> 

Sets the falloff parameter of the bone.

For Faloff_integer , the fall off of the bone is:

1 - linear

2 - sinual

3 - fast out

4 - slow out

skinOps.getBonePropRelative <Skin> <BoneID_integer> 

Gets the relative property of the bone. It returns 1 if relative, or 0 if absolute.

skinOps.setBonePropRelative <Skin> <BoneID_integer> <Relative_integer> 

Sets the relative property of the bone whose index matches BoneID_integer .

For Relative_integer, 0 is absolute and 1 is relative.

skinOps.getBonePropEnvelopeVisible <Skin> <BoneID_integer> 

Returns the bone visibility parameter of the bone. 0 is invisible, 1 is visible.

skinOps.setBonePropEnvelopeVisible <Skin> <BoneID_integer> <Visible_integer> 

Sets the bone visibility parameter of the bone whose index matches BoneID_integer .

For Visible_integer , 0 is visible, 1 is invisible when not selected.

skinOps.getSelectedBonePropEnvelopeVisible <Skin> 

Returns the bone visibility parameter of the current selected bone. 0 is invisible, 1 is visible.

skinOps.setSelectedBonePropEnvelopeVisible <Skin> <Visible_integer> 

Sets the bone visibility parameter of the current selected bone.

For Visible_integer , 0 = visible, 1 = invisible when not selected

skinOps.GetStartPoint <Skin> <BoneID_integer> 

Returns a point3 which is the start point of the bone.

skinOps.SetStartPoint <Skin> <BoneID_integer> <EndPointPos_point3> 

Sets the start point of the specified bone

skinOps.GetEndPoint <Skin> <BoneID_integer> 

Returns a point3 which is the end point of the bone.

skinOps.SetEndPoint <Skin> <BoneID_integer> <EndPointPos_point3> 

Sets the end point of the specified bone.

skinOps.GetInnerRadius <Skin> <bone_integer> <CrossSectionID_integer> 

Returns the inner cross section radius for the specified bone and cross section.

skinOps.SetInnerRadius <Skin> \ <bone_integer> <CrossSectionID_integer> <Radius_float> 

Sets the inner cross section radius for the specified bone and cross section.

skinOps.GetOuterRadius <Skin> <bone_integer> <CrossSectionID_integer> 

Returns the outer cross section radius for the specified bone and cross section.

skinOps.SetOuterRadius <Skin> \ <bone_integer> <CrossSectionID_integer> <Radius_float> 

Sets the outer cross section radius for the specified bone and cross section.

skinOps.GetCrossSectionU <Skin> <BoneID_integer> <CrossSectionID_integer> 

Gets the U value from the specified bone and cross section

skinOps.SetCrossSectionU <Skin> <BoneID_integer> <CrossSectionID_integer> <U_float> 

Sets the U value from the specified bone and cross section.

skinOps.enableGizmo <Skin> <GizmoID_integer> <Enable_bool> 

Enables/disables the gizmo type whose index equals GizmoID_integer .

skinOps.getNumberOfGizmos <Skin> 

Returns the number of gizmos.

skinOps.getNumberOfGizmoTypes <Skin> 

Returns the number of gizmo types.

skinOps.getSelectedBonePropFalloff <Skin> 

Returns the falloff parameter of the current selected bone:

1 - linear

2 - sinual

3 - fast out

4 - slow out

skinOps.setSelectedBonePropFalloff <Skin> <Falloff_integer> 

Sets the falloff parameter of the current selected bone.

The falloff_integer sets the fall off of the bone:

1 - linear

2 - sinual

3 - fast out

4 - slow out

skinOps.getSelectedBonePropRelative <Skin> 

Gets the relative property of the current selected bone. It returns 1 if relative or 0 is absolute.

skinOps.getNumberCrossSections <Skin> <bone_integer> 

Returns the number of cross sections for the specified bone.

skinOps.getSelectedCrossSectionIndex <Skin> 
skinOps.getSelectedCrossSectionIsInner <Skin> 
skinOps.getSelectedGizmo <Skin> 

Returns the current selected gizmo.

skinOps.getSelectedGizmoType <Skin> 
skinOps.GetNumberVertices <Skin> 

Returns the number of vertices for the object the Skin modifier is applied to.

skinOps.RemoveCrossSection$ <Skin> 

Removes the current selected cross section from the current selected bone.

skinOps.RemoveCrossSection <Skin> <BoneID_integer> <CrossSectionID_integer> 

Removes a particular cross-section from a particular bone.

skinOps.setSelectedBonePropRelative <Skin> <Relative_integer> 

Sets the relative property of the current selected bone.

For relative_integer , 0 is relative mode, 1 is absolute mode.

Weighting

skinOps.addWeight 
skinOps.SetWeight <Skin> <weight_float> 

Sets the weight of the selected vertices in the specified Skin modifier to the given floating point weight value.

Note:

If deferred plug-in loading is enabled, an instance of the Skin modifier must be created before these methods will be visible.

This is because these methods are defined in the Skin modifier plug-in.

skinOps.scaleWeight
skinOps.GetVertexWeight <Skin> <vertex_integer> <vertex_bone_integer> 

Returns the influence of the Nth bone affecting the specified vertex.

skinOps.SetVertexWeights <Skin> <vertex_integer> \ ( <vertex_bone_integer> | <vertex_bone_array> ) \
 ( <weight_float> | <weight_array> )  [(node:<node> | name:<string>)]

Sets the influence of the specified bone(s) to the specified vertex.

Any influence weights for the bone(s) that are not specified are retained.

If the bones and weights are specified as arrays, the arrays must be of the same size.

skinOps.GetVertexWeightBoneID <Skin> <vertex_integer> <vertex_bone_integer> 

Returns the system bone index of the Nth bone affecting the specified vertex.

skinOps.GetVertexWeightCount <Skin> <vertex_integer> 

Returns the number of bones influencing the specified vertex.

skinOps.ReplaceVertexWeights <Skin> <vertex_integer> \ ( <vertex_bone_integer> | <vertex_bone_array> ) \
 ( <weight_float> | <weight_array> )  [(node:<node> | name:<string>)]

Sets the influence of the specified bone(s) to the specified vertex.

Any influence weights for the bone(s) that are not specified are erased.

If the bones and weights are specified as arrays, the arrays must be of the same size.

skinOps.RemoveZeroWeights <Skin>

Available in 3ds Max 2017 and higher: Removes the influence of bones that have a weight on a vertex that is less than the threshold value specified by the .clearZeroLimit. property of the modifier.

Equivalent to pressing the "Remove Zero Weights" button in the "Advanced Parameters" rollout of the modifier's UI.

skinOps.voxelWeighting <Skin> <mode_integer> <falloff_float> <max_influence_integer> \
  <max_res_integer> <winding_bool> <envelope_off_bool>  [(node:<node> | name:<string>)]

Available in 3ds Max 2017 and higher: Performs voxel weighting of the specified Skin modifier.

The <mode_integer> argument defines the Weight Solver to use, where 0 = Voxel, 1 = Heat Map

The <falloff_float> argument defines the Falloff, UI default is 0.2.

The <max_influence_integer> argument defines the maximum number of bones that can influence a vertex. UI default is 0 which means no limit.

The <max_res_integer> argument defines the Maximum resolution of the voxel grid. The UI default is 256. Only used by the Voxel mode, but must be specified even when performing Heat Map Weighting.

The <winding_bool> argument corresponds to the "Use Winding Numbers" checkbox in the UI which is unchecked by default. Only used by the Voxel mode, but must be specified even when performing Heat Map Weighting.

The <envelope_off_bool> argument corresponds to the "Turn Off Envelope Gizmos" checkbox in the UI which is checked by default.

skinOps.SetBoneWeights <Skin> <boneIds> <weights> [(node:<node> | name:<string>)]

Sets all vertex influence weights for a specified bone, erasing all previous weights for the bone. Available in 3ds Max 2019.2 Update and higher.

The <boneIds> argument can be a bone ID, or an array of bone IDs.

The <weights> argument can be an array of floats, in the case of a single bone ID, or an array of arrays of floats, when the argument is an array. There needs to be one float weight for each vertex.

skinOps.Hammer <Skin> <vertices> [(node:<node> | name:<string>)]

Performs a vertex weight "hammer" operation on the specified vertices. Available in 3ds Max 2019.2 Update and higher. This resets the bone vertex weights to an average of all adjacent vertices.

The <vertices> argument can be a single vertex number, an array of vertices, or a bitarray.

Is... Tests

skinOps.isBoneSelected <Skin> <BoneID_integer>  [(node:<node> | name:<string>)]

Returns 1 if the bone is selected, otherwise 0.

skinOps.isRigidHandle <Skin> <handle_integer>  [(node:<node> | name:<string>)]

Returns true if the handle is rigid, false otherwise.

skinOps.isRigidVertex <Skin> <vertex_integer>  [(node:<node> | name:<string>)]

Returns true if the vertex is rigid, false otherwise.

A rigid vertex will only be weighted to one bone.

skinOps.IsVertexModified <Skin> <vertex_integer> 

Returns 1 if the vertex has been modified, 0 if it has not been modified.

A modified vertex is vertex that has been weighted by hand or painting, an unmodified vertex weight depends solely on the envelopes.

skinOps.IsVertexSelected <Skin> <vertex_integer> [(node:<node> | name:<string>)]

Returns 1 if the vertex is selected, 0 if it is not selected.

Vertex Normalization

skinOps.isUnNormalizeVertex <Skin> <vertex_integer>  [(node:<node> | name:<string>)]

Returns true if the vertex is unnormalized, false if it is normalized.

A normalized vertex’ weights will sum up to 1.

skinOps.unNormalizeVertex <Skin> <vertex_integer> <boolean>  [(node:<node> | name:<string>)]

Unnormalizes the specified vertex. A normalized vertex’ weights will sum up to 1.

Load and Save Envelopes

skinOps.loadEnvelope <Skin> [<filename_string>] 

If the optional filename_string is supplied, loads the envelopes from the file supplied.

If not, opens the load envelopes dialog.

skinOps.saveEnvelope <Skin> [<filename_string>] 

If the optional filename_string is not supplied, opens the save envelopes dialog. If the optional filename_string is supplied, saves the envelopes to the file supplied.

skinOps.loadEnvelopeAsASCII <Skin> 

Loads the envelopes to the file supplied

skinOps.saveEnvelopeAsASCII <Skin> [<filename_string>] 

If the optional filename_string is not supplied, opens the save envelopes dialog.

If the optional filename_string is supplied, saves the envelopes to the file supplied as ASCII text file.

Cross Section

skinOps.SetSelectedCrossSection 
skinOps.buttonRemoveCrossSection <Skin> 

Presses the remove cross section button.

Reset

skinOps.resetAllBones <Skin> 

Resets all bones.

skinOps.resetSelectedBone <Skin> 

Resets the current selected bone.

skinOps.resetSelectedVerts <Skin> 

Resets the current selected vertices.

Rigid

skinOps.rigidHandle <Skin> <handle_integer>  [(node:<node> | name:<string>)]

Sets the specified handle as rigid. A rigid handle vertex will have the same weight as the knot that owns it.

skinOps.rigidVertex <Skin> <vertex_integer>  [(node:<node> | name:<string>)]

Sets the specified vertex as rigid. A rigid vertex will only be weighted to one bone.

Select

skinOps.SelectBone <Skin> <bone_integer> [(node:<node> | name:<string>)]

Selects the specified bone in the Bone list.

skinOps.selectBoneByNode 
skinOps.selectNextBone <Skin> 

Selects the next bone in the bone list.

skinOps.selectPreviousBone <Skin> 

Selects the next bone in the bone list.

skinOps.selectParent 
skinOps.selectChild 
skinOps.selectPreviousSibling 
skinOps.selectNextSibling 
skinOps.selectMirrorBones 
skinOps.selectCrossSection <Skin> <CrossSectionID_integer> <Inner_Outer_integer> 

Selects a cross section on the current selected bone.

For Inner_Outer_integer , 0 is the inner envelope 1 is the outer envelope.

skinOps.selectStartPoint <Skin> 

Selects the end point of the envelope of the current selected bone.

skinOps.selectEndPoint <Skin> 

Selects the start point of the envelope the current selected bone.

skinOps.selectGizmo <Skin> <gizmoID_int> 

Desc - this function selects the gizmo who index equals gizmoID .

skinOps.selectGizmoType <Skin> <gizmoTypeID_int> 

Selects the gizmo type whose index equals gizmoTypeID .

skinOps.SelectVertices <Skin> \ ( <vertex_integer> | <vertex_array > | <<vertex_bitarray> ) 

Selects the specified vertices.

skinOps.selectVerticesByBone 

Mirror

skinOps.setMirrorTM 
skinOps.updateMirror 
skinOps.mirrorPaste 
skinOps.mirrorPasteBone 

Zoom To

skinOps.ZoomToBone <Skin> <All_boolean> 

Zooms the active or all views to the selected bone. If All_boolean is true , then all views are zoomed.

skinOps.ZoomToGizmo <Skin> <All_boolean> 

Zooms the active or all views to the selected gizmo. If All_boolean is true , then all views are zoomed.

Other Methods

skinOps.gizmoResetRotationPlane 
skinOps.Invalidate <Skin> <integer> 

Invalidates the Skin’s internal cache, forcing it to recompute all the data.

The integer parameter is not used, but should be passed when calling the method.

Related Interfaces

Interface: SkinPose

Interface: SkinUtils