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.