This is a collection of modifiers that lets you link points on an object to other points, faces, splines, or objects. They can be thought of as weighted Linked XForm modifiers that let you link to any number of sub-object parts of another object.
All the modifiers have no properties and essentially no UI. They are entirely operated through a set of MaxScript functions. Things to keep in mind when working with these modifiers:
(knotIndex*3-1)
(ie. the index to be passed into the Bind() function for the 5th knot on a spline would be (5*3-1) = 14).
-A global struct (bindOps
) contains all the functions used to control the bind modifiers.
-The first argument for all the functions is always an instance of the modifier you're working with.
-All the functions work exactly the same with any of the four bind modifiers, with the exception of the actual Bind
function (whose arguments vary depending on the type of bind modifier).
For people who used the older version of this plugin, the toFaceOps
and toPointOps
structs no longer exist, and have been rolled into the bindOps
struct.
-Each modifier keeps track of a certain number of points (set with the SetNumPoints
function).
-Each point can have any number of weighted "binds" (set with the Bind
function), which link that point to follow a specified object feature (depending on the type of bind modifier).
-In general, workflow is as follows:
myMod = BindToShape()
AddModifier $MyObject myMod
bindOps.SetNumPoints myMod $MyObject.numVerts
bindOps.AddNode myMod $MyObject $MyBoneObject
bindOps.Bind myMod pointIndex boneNodeIndex subSplineIndex lengthParam weight
AddNode <bindModifier> <thisNode> <bindNode>
thisNode
is the node that will be deformed (read: has the BindTo modifier applied).bindNode
is a node that will drive the deformation.
GetNumNodes <bindModifier>
RemoveNode <bindModifier> <bindNodeIndex>
bindNodeIndex
must be less than or equal to GetNumBindNodes
.
GetNode <bindModifier> <bindNodeIndex>
bindNodeIndex
must be less than or equal to GetNumBindNodes
.
GetNumPoints <bindModifier>
SetNumPoints <bindModifier> <pointCount>
Bind <bindToPointModifier> <thisNode> <pointIndex> <bindNodeIndex> <toPointIndex> <weight>
Bind <bindToFaceModifier> <thisNode> <pointIndex> <bindNodeIndex> <faceIndex> <weight>
Bind <bindToShapeModifier> <thisNode> <pointIndex> <bindNodeIndex> <splineIndex> <lengthParam> <absolute> <weight>
Bind <bindToNodeModifier> <thisNode> <pointIndex> <bindNodeIndex> <weight>
thisNode
is the node that the bind modifier is applied to.
pointIndex
is the point you want to bind on the object with the bind modifier applied.
bindNodeIndex
is the node you want to bind pointIndex
to. Must be less than or equal to GetNumBindNodes
.
toPointIndex
is the point you want to bind TO on the bind node.
lengthParam
is a value between 0.0 and 1.0, describing where along the spline the point will follow.absolute
is a boolean value, and controls whether the point is bound in Absolute or Relative mode. See the example file to compare the two behaviours.
weight
is expected to be a normalized weight value between 0.0 and 1.0, though it can be outside of that range if desired.UnBind <bindModifier> <pointIndex> <bindIndex>
GetNumBinds <bindModifier> <pointIndex>
GetBindInfo <bindModifier> <pointIndex> <bindIndex>
pointIndex
must be less than or equal to GetNumPoints
.bindIndex
must be less than or equal to GetNumBinds
for the given pointIndex
.#(nodeIndex, pointIndex, weight)
#(nodeIndex, faceIndex, weight)
#(nodeIndex, splineIndex, lengthParam, absolute, weight)
#(nodeIndex, weight)
GetBindWeight <bindModifier> <pointIndex> <bindIndex>
pointIndex
must be less than or equal to GetNumPoints
.bindIndex
must be less than or equal to GetNumBinds
for the given pointIndex
.
SetBindWeight <bindModifier> <pointIndex> <bindIndex> <weight>
pointIndex
must be less than or equal to GetNumPoints
.bindIndex
must be less than or equal to GetNumBinds
for the given pointIndex
.weight
is expected to be a normalized weight value between 0.0 and 1.0, though it can be outside of that range if desired.
Update <bindModifier>
2001.03.07 - Created. 2001.04.19 - Finished BindToShape and BindToNode. - Updated BindToFace and BindToPoint to support multiple binds per point. - Deformation respects selections passed up the stack now. 2001.04.26 - Finalized script interface. - Tweaked user interface. - Small problem with old version loading fixed. 2001.04.27 - Added absolute mode to BindToShape. 2001.05.01 - Bugfix. 2001.05.08 - Added Update 2001.05.13 - Added global animatable strength 2001.05.24 - Clone works now (fun typo crash bug). 2003.04.15 - Might have fixed a bug with ToFace accessing invalid meshes. 2007.02.20 - Updating for public 3dsmax9 release. 2008.04.05 - Updated to 64 bit and 3dsmax 2008. Thanks to David Baker for the help.
This software is provided 'as-is', without any express or implied warranty. In no event will the author be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software, subject to the following restrictions: 1. The origin of this software must NOT be misrepresented; you must not claim that you wrote the original software. 2. This software may NOT be bundled with any other product or included in any compilation without the express permission of the author. 3. This notice must NOT be removed or altered from any distribution of this software.