Maya-Plugins
mnsAnnotate
=== Author: Assaf Ben Zur ===
This node is a utility node used to present value annotations in maya's viewport easily.
When needing to present any keyframed values in a playblast within maya, there isn't any maya native node to allow values display within the VP.
This node was created for this need.
All connected attributes will be displayed as a new line presenting attributes and their current values, updating in real time.
The display settings are controled within this node, where the position of the display is controlled via the custom locator created with it.
The amount of attribute display is unlimited, and multiple unlimited instances of this node can be created freely.
This is mainly used to display technicall setups.
Inputs
Long-Name | Short-Name | Type | Description |
attributes | attrs | multi | Input attributes array to display, unlimited amount. Each attribute component will be displayed as a single line. |
fontSize | fontSize | float | Display Font Size. |
fontColor | fontColor | float[3] | Display Font Color, RGB (0 to 1). |
fontTransparency | fontTransparency | float | Font transperancy. 1 = Fully opaque, 0 = Fully tansparennt. |
precision | precision | int | Numberic attribute display precision- value represents the amount of integers right to the decimal point. |
lineSpacing | lineSpacing | float | Line spacing between attributes line. |
drawFlat | drawFlat | int | Draw in 2D mode, regardless of the matrix position. The position is dictated by positionX and positionY attributes, relative to the viewports screen space resolution. |
positionX | positionX | double | Display top-left corener X position, if drawFlat attribute is True. |
positionY | positionY | double | Display top-left corener y position, if drawFlat attribute is True. |
nameOnlyMode | nameOnlyMode | int | MObject mnsAnnotate::aNameMode |
mnsAutoWheelDrive
=== Author: Assaf Ben Zur ===
Inputs
Long-Name | Short-Name | Type | Description |
startFrame | startFrame | int | Evaluation start frame. |
startFrameFromRange | startFrameFromRange | bool | If true, take the start frame from current maya range instead of the input value given. |
time | time | time | Time input. |
mnsBuildTransformsCurve
=== Author: Assaf Ben Zur ===
This node builds a nurbsCurve shape, based on input transforms array.
The curve parameters are dictated by this node's attributes, and can be dynamiclly changed and even keyframed if needed.
This node also creates and offset curve shape result, to be used later as an Up-Vector for every single arbitrary point along the result main curve.
Inputs
Long-Name | Short-Name | Type | Description |
globalScale | globalScale | float | Global scale multiplier. |
tweakCurve | tweakCurve | nurbsCurve | Input tweak curve shape. |
tweakCurveBase | tweakCurveBase | nurbsCurve | Input tweak curve base shape. |
buildMode | buildMode | enum | Build mode- EPs, CVs, Hermite, TangentedCVs, bezier. |
transforms | transforms | compound | Transforms array to build the curve from. |
matrix | matrix | matrix | Input matrix transform, child of transforms. If this plug is connected, offsetX value will be taken as an the offset amount. |
offsetBaseMatrix | offsetBaseMatrix | matrix | Matrix to build offset vectors from |
degree | degree | int | Output curve degree, 1-5. |
offsetX | offsetX | float | Output offset curve X parameter. |
offsetY | offsetY | float | Output offset curve Y parameter. |
offsetZ | offsetZ | float | Output offset curve Z parameter. |
tangentDirection | tangentDirection | enum | If build mode is on Hermite, this paremeter dictates the tangent direction. |
reverse | reverse | int | Reverse output curve and offset curve. |
form | form | enum | Result curve form- open or closed |
HermiteSteps | HermiteSteps | int | Hermite mode steps amount. |
tangentLength | tangentLength | float | Control tangent length (if present) |
OffsetType | OffsetType | enum | Offset build type - world or local. |
buildOffsetCurve | buildOffsetCurve | int | Initiate offset curve build. |
resample | resample | bool | Resample curve before output, based on substeps paremeter. |
substeps | substeps | int | resample substeps. |
localize | localize | bool | In case this attribute is on, the result will be localized based on the input worldToLocal matrix. |
worldToLocalMatrix | worldToLocalMatrix | matrix | In case localize attribute is on, the result will be localized based on this matrix. |
Outputs
Long-Name | Short-Name | Type | Description |
outCurve | outCurve | kNurbsCurve | Result curve shape. |
outOffsetCurve | outOffsetCurve | nurbsCurve | Result offset curve shape. |
length | length | double | Result curve length. |
offsetLength | offsetLength | double | Result offset curve length. |
mnsCameraGateRatio
=== Author: Assaf Ben Zur ===
A simple utility callback node to dynamiclly control and update the input camer'as display "Camera-Gate" parameters.
Inputs
Long-Name | Short-Name | Type | Description |
cameraIn | cameraIn | message | Affected camera node. |
gateWidth | gateWidth | float | Cemera gate width. |
gateHeight | gateHeight | float | Cemera gate height. |
mnsClosestPointsOnMesh
Inputs
Long-Name | Short-Name | Type | Description |
inMesh | inMesh | mesh | Input mesh to find closest point to. |
inPosition | inPosition | compound(Array) | Input position to calculate a result for. Array Attr. |
matrix | matrix | matrix | Input matrix to calculate a result for. Array Attr. |
targetParentMatrix | targetParentMatrix | matrix | Target parent matrix to multiply by before setting the result. |
Outputs
Long-Name | Short-Name | Type | Description |
outPosition | op | vector | Output position result. |
mnsCompressionTensionBlend
=== Author: Assaf Ben Zur ===
Deformer.
A simple compression and tension based deformer.
This deformer will detect, display and deform a mesh
based on the difference between the current
deformed state and an input base-state (base-mesh).
The deformer contains 3 display modes:
- Compression & Tension (50% gray as base-state)
- Compression Only (black as base-state)
- Tension (black as base-state)
The deformer also conatins separate multipliers for both tension and compression.
This deformer can be used to drive corrective shapes, wrinkles, volume gain/loss and much more.
Inputs
Long-Name | Short-Name | Type | Description |
baseMesh | baseMesh | mesh | Static base mesh input. |
tensionTarget | tensionTarget | mesh | Tension blend target. |
compressionTarget | compressionTarget | mesh | Compression blend target. |
liveMode | liveMode | bool | Live mode. Re-calculate edge lengthes on evaluation. |
displayMode | displayMode | enum | Map display mode- None, compressionTension, compression, tension. |
compressionMultiplier | compressionMultiplier | float | Global compression multiplier. |
tensionMultiplier | tensionMultiplier | float | Global tension multiplier. |
mnsCurveTweak
=== Author: Assaf Ben Zur ===
This node was created in order to achive curve modifications/tweaks, without changing its form, not it's shape at bind position.
The input and output curves will match while the base curve and tweak curve match in shape.
Once any difference between the base shape and tweak shape was detected, the difference between these curves will be projected onto the input curve.
The objective of this node is to maintain all curve attributes/data (nSpans, nCvs, form, degree) unchanged while still having the ability to tweak the curve with different parameters.
Inputs
Long-Name | Short-Name | Type | Description |
inputCurve | inputCurve | kNurbsCurve | Input curve to tweak. Output curve will be the same as this curve while the tweak curve matches the base curve. |
inputBaseCurve | inputBaseCurve | kNurbsCurve | Input base curve. This curve will be used to calculate the delta for the tweak. |
inputTweakCurve | inputTweakCurve | kNurbsCurve | Input twek curve. This curve is intended to match the base curve as bind. This curve should be modified - after the curve is modified, the delta difference between it and the base curve will be projected on the input curve. |
buildOffsetCurve | buildOffsetCurve | int | Initiate offset curve build. |
tweakOffset | tweakOffset | int | This will determine whether the offset curve created will be tweaked or not. |
offsetBaseMatrix | offsetBaseMatrix | matrix | Matrix to build offset vectors from |
offset | offset | float | Output offset curve parameter. |
Outputs
Long-Name | Short-Name | Type | Description |
outCurve | outCurve | kNurbsCurve | Result curve shape. |
outOffsetCurve | outOffsetCurve | kNurbsCurve | Result offset curve shape. |
mnsCurveVariable
=== Author: Assaf Ben Zur ===
Curve based solve for a Variable-FK Setup.
This fast and efficient node allows the user to create a variable FK setup using input curves and local transformations, outputting a solved curve and up-curve- instead of the more common transforms output method.
The node will accept any amount of input transforms, outputting the complex offset parent solve for each input as well as the solved curves shapes.
This is to avoid the use of any extra nodes or multiple parent transforms- pinning the controls to the output curve at all times.
The initial solve, as well as all features are calculated within a single loop.
As opposed to the common Variable FK setup, the curve based approach eliminates the Rest-Pose constant- making the node's algorithm Rest-Pose dynamic. In fact, it doesn't exist.
This approach uses only the input array amount constant to calculate a uniform positioning along the output curve- allowing the input curve to be changeable (live / dynamic).
Notice that the amount of input variable controls is completely independent of the main controls input.
Inputs
Long-Name | Short-Name | Type | Description |
curve | crv | nurbsCurve | Input curve. |
upCurve | upCrv | nurbsCurve | Input offset curve. |
inTransform | inTransform | compound | Input variable control values array. |
uPosition | uPos | float | Input U position. Child of inTransform. |
strength | strength | float | Input strength. Child of inTransform. |
aimTranslate | aimT | float | Input aim translation. Child of inTransform. |
upTranslate | upT | float | Input up translation. Child of inTransform. |
terTranslate | terT | float | Input tertiary translation. Child of inTransform. |
falloff | falloff | float | Input falloff value. Child of inTransform. |
aimRotation | aimRot | angle | Input aim-rotation value. Child of inTransform. |
upRotation | upRot | angle | Input up-rotation value. Child of inTransform. |
tertiaryRotation | terRot | angle | Input tertiary-rotation value. Child of inTransform. |
localMatrix | localMatrix | angle | Input local transformation matrix. Child of inTransform. |
upMode | upMode | enum | Up mode- normal, curve, worldX, worldY, worldZ. |
substeps | substeps | int | Resample substeps value. |
translateMode | tMode | enum | Control translation mode- IK, FK. |
degree | degree | int | Result curves degree. |
buildMode | buildMode | enum | Result curve build mode- EPs, CVs. |
rotateOrder | ro | enum | Calculation rotation-order. |
aimAxis | aimAxis | enum | Aim axis choice. |
upAxis | upAxis | enum | Up axis choice. |
offsetType | offsetType | enum | Offset curve adjustment mode- local, world. |
offsetX | offsetX | float | Offset curve adjustment offset X parameter. |
offsetY | offsetY | float | Offset curve adjustment offset Y parameter. |
offsetZ | offsetZ | float | Offset curve adjustment offset Z parameter. |
uScale | uScale | float | Global U-Scale adjusment. Addative to array indevidual u inputs. |
uOffset | uOffset | float | Global U-Offfset adjusment. Addative to array indevidual u inputs. |
startAmp | startAmp | float | Sine start amplitude value. |
endAmp | endAmp | float | Sine end amplitude value. |
amplitudeAim | amplitudeAim | float | Sine calculation X direction amplitude value. |
amplitudeUp | amplitudeUp | float | Sine calculation Y direction amplitude value. |
amplitudeTertiary | amplitudeTertiary | float | Sine calculation Z direction amplitude value. |
frequencyAim | frequencyAim | float | Sine calculation X direction frequency value. |
frequencyUp | frequencyUp | float | Sine calculation Y direction frequency value. |
frequencyTertiary | frequencyTertiary | float | Sine calculation Z direction frequency value. |
phaseAim | phaseAim | float | Sine calculation X direction phase value. |
phaseUp | phaseUp | float | Sine calculation Y direction phase value |
phaseTertiary | phaseTertiary | float | Sine calculation Z direction phase value |
frequency | frequency | float | Sine calculation global addative frequency value. |
phase | phase | float | Sine calculation global addative phase value. |
startPos | startPos | float | Sine start position value. |
outCtrlsUpMode | outCtrlsUpMode | enum | Out position transforms up type - normal, curve, worldX, worldY, worldZ. |
Outputs
Long-Name | Short-Name | Type | Description |
outCurve | outCurve | nurbsCurve | Output curve shape. |
outOffsetCurve | outOffsetCurve | nurbsCurve | Output offset curve shape. |
outTransform | outTransform | compound | Output control offset position and rotation array. |
translate | t | float[3] | Output control offset position, child of outTransform. |
rotate | r | angle[3] | Output control offset rotation, child of outTransform. |
rotateX | rotX | angle | Output control offset rotation, X component, child of rotate. |
rotateY | rotY | angle | Output control offset rotation, Y component, child of rotate. |
rotateZ | rotZ | angle | Output control offset rotation, Z component, child of rotate. |
mnsCurveZip
=== Author: Assaf Ben Zur ===
Curve based node.
This is primarily used for eyelids and lips.
This fast solution was developed to replace complex and heavy graphs- containing many math nodes, curve deformers and constraints.
This setup provides a very clean deployment, processing the math algorithm internally.
Combining this node with mnsBuildTransformsCurve and mnsPointsOnCurve, will result in a very efficient, dynamic and flexible setup.
All calculations are processed within a single loop.
All curve operations are aware of one another, and are NOT addative- meaning that all operations are available at any position, and will NOT break one another, nor overlap.
All attributes are not minimum limited to 0 and can be adjusted to the negative direction- pulling the bind pose against each other instead of towards each other.
The node contains a centerMatrix input plug, which is a live world position that is used to scale the calculated vectors based on the bind position offset (per curve parameter).
The problem arising from this method is a mismatch at any meet position between curve A and B due to an offset variation between all points (except for a perfect circle scenario, which is never the case).
This problem is solved using a conform attribute within which will pull one of the curves (based on user choice) to the other below a selected distance threshold- Resulting in a watertight-seal.
Using mnsPointsOnCurve to sample the result curves allows for a simple skinCluster to deform the mesh.
mnsCurveZip will output a pair of offset curves as well as the result curves, calculated by world axis vectors or the centerMatrix as a base, which are used as an Up-Curve input for the mnsPointsOnCurve node to manage rotations correctly as well.
The node contatins some more important inputs: The tweakCurves inputs.
Aspiring to an inclusive and comprehensive setup, tweak curves (A, B and Mid) can be plugged in to expose another manual layer of animation using scene controls.
The input curves are 100% independent of the base curve inputs and DO-NOT need to share topology with each other, nor the source inputs - as they are being re-sampled internally based on the build mode.
This means that the tweak controls amount is limitless and is NOT a constant, nor predefined.
Inputs
Long-Name | Short-Name | Type | Description |
bindCurveA | bindCurveA | nurbsCurve | Input curve A base-curve shape. |
tweakCurveA | tweakCurveA | nurbsCurve | Input curve A curve shape. |
bindCurveB | bindCurveB | nurbsCurve | Input curve B base-curve shape. |
tweakCurveB | tweakCurveB | nurbsCurve | Input curve B curve shape. |
tweakCurveABase | tweakCurveABase | nurbsCurve | Input curve A tweak base-curve shape. |
tweakCurveBBase | tweakCurveBBase | nurbsCurve | Input curve B tweak base-curve shape. |
midCurve | midCrv | nurbsCurve | Input target mid curve. |
midCurveBase | midCrvBase | nurbsCurve | Input mid tweak curve base. |
midCurveTweak | midCrvTweak | nurbsCurve | Input mid tweak curve. |
centerMatrix | centerMatrix | matrix | Input center transformation matrix. |
midPointMatrix | midPointMatrix | matrix | Input mid point traget matrix. |
sampleMode | m | enum | Curve sample mode- parametric, uniform. |
matchInputCurve | matchInputCurve | enum | Result curve matched parameters to- none, curveA, curveB. |
substeps | substeps | int | Result curve resampling sub-step value. |
degree | degree | int | Result curve degree value. |
buildMode | buildMode | enum | Curve build mode- EPs, CVs. |
midGenerateFrom | midGenerateFrom | enum | Generate automatic mid curve from- bindBases, tweakCurves, input. |
midBias | midBias | float | Generated curve bias. |
aroundCenter | aroundCenter | bool | Calculate results considering the input center matrix. |
conformToMeetPoint | conformToMeetPoint | bool | Conform the selected curve result to meet the oter curve based on set parameters. |
curveToConform | curveToConform | enum | Which curve to conform - curveA, curveB. |
conformDistancethreshold | conformDistancethreshold | enum | Which curve to conform - curveA, curveB. |
AToMid | AToMid | float | Blend curve A to mid-curve. |
BToMid | BToMid | float | Blend curve B to mid-curve. |
AToB | AToB | float | Blend curve A to curve B. |
BToA | BToA | float | Blend curve B to curve A. |
allToMidPoint | allToMidPoint | float | Blend both curves to mid-curve. |
pushOut | pushOut | float | Curves push-out added value. |
zipStart | zipStart | float | Zip start value. |
zipStartFalloff | zipStartFalloff | float | Zip start falloff value. |
zipEnd | zipEnd | float | Zip end value. |
zipEndFalloff | zipEndFalloff | float | Zip end falloff value. |
glue | glue | bool | Do glue. |
glueTherhold | glueTherhold | float | Glue threshold value. |
offsetBase | offsetBase | enum | Offset curve build mode. centerMatrix, worldX, worldY, worldZ. |
offset | offset | float | Offset curve build parameter. |
globalMultiplier | globalMultiplier | float | Global value multiplier. |
Outputs
Long-Name | Short-Name | Type | Description |
outCurveA | outCurveA | nurbsCurve | Result curve A shape. |
outCurveB | outCurveB | nurbsCurve | Result curve B shape. |
outCurveAOffset | outCurveAOffset | nurbsCurve | Result curve A offset shape. |
outCurveBOffset | outCurveBOffset | nurbsCurve | Result curve B offset shape. |
mnsCurveZipB
=== Author: Assaf Ben Zur ===
Curve based node.
This is primarily used for eyelids and lips.
This fast solution was developed to replace complex and heavy graphs- containing many math nodes, curve deformers and constraints.
This setup provides a very clean deployment, processing the math algorithm internally.
Combining this node with mnsBuildTransformsCurve and mnsPointsOnCurve, will result in a very efficient, dynamic and flexible setup.
All calculations are processed within a single loop.
All curve operations are aware of one another, and are NOT addative- meaning that all operations are available at any position, and will NOT break one another, nor overlap.
All attributes are not minimum limited to 0 and can be adjusted to the negative direction- pulling the bind pose against each other instead of towards each other.
The node contains a centerMatrix input plug, which is a live world position that is used to scale the calculated vectors based on the bind position offset (per curve parameter).
The problem arising from this method is a mismatch at any meet position between curve A and B due to an offset variation between all points (except for a perfect circle scenario, which is never the case).
This problem is solved using a conform attribute within which will pull one of the curves (based on user choice) to the other below a selected distance threshold- Resulting in a watertight-seal.
Using mnsPointsOnCurve to sample the result curves allows for a simple skinCluster to deform the mesh.
mnsCurveZip will output a pair of offset curves as well as the result curves, calculated by world axis vectors or the centerMatrix as a base, which are used as an Up-Curve input for the mnsPointsOnCurve node to manage rotations correctly as well.
The node contatins some more important inputs: The tweakCurves inputs.
Aspiring to an inclusive and comprehensive setup, tweak curves (A, B and Mid) can be plugged in to expose another manual layer of animation using scene controls.
The input curves are 100% independent of the base curve inputs and DO-NOT need to share topology with each other, nor the source inputs - as they are being re-sampled internally based on the build mode.
This means that the tweak controls amount is limitless and is NOT a constant, nor predefined.
Inputs
Long-Name | Short-Name | Type | Description |
globalScale | globalScale | double | Global scale value. |
inTweakAPosition | inTweakAPosition | matrix (array) | Input tweaker local matrix. |
inTweakBPosition | inTweakBPosition | matrix (array) | Input tweaker local matrix. |
tweakMode | tweakMode | enum | Tweak curve build mode. |
tweakMirrorMatrix | tweakMirrorMatrix | matrix | Mirror matrix to add to the local tweaker transfomation build. |
bindCurveA | bindCurveA | nurbsCurve | Input curve A base-curve shape. |
bindCurveB | bindCurveB | nurbsCurve | Input curve B base-curve shape. |
centerMatrix | centerMatrix | matrix | Input center transformation matrix. |
sampleMode | m | enum | Curve sample mode- parametric, uniform. |
midCurveMode | midCurveMode | enum | Mid curve generation mode. One To one - calculate mid point for every upper and lower pair. Regenerate- create a new mid curve, resample based on midCurveSubsteps attribute value. |
midCurveSubsteps | midCurveSubsteps | int | Mid curve generation sampling amount |
matchInputCurve | matchInputCurve | enum | Result curve matched parameters to- none, curveA, curveB. |
substeps | substeps | int | Result curve resampling sub-step value. |
degree | degree | int | Result curve degree value. |
buildMode | buildMode | enum | Curve build mode- EPs, CVs. |
midBias | midBias | float | Generated curve bias. |
aroundCenter | aroundCenter | bool | Calculate results considering the input center matrix. |
conformToMeetPoint | conformToMeetPoint | bool | Conform the selected curve result to meet the oter curve based on set parameters. |
curveToConform | curveToConform | enum | Which curve to conform - curveA, curveB. |
conformDistancethreshold | conformDistancethreshold | enum | Which curve to conform - curveA, curveB. |
AToMid | AToMid | float | Blend curve A to mid-curve. |
BToMid | BToMid | float | Blend curve B to mid-curve. |
AToBindB | AToBindB | float | Blend curve A to curve B. |
BToBindA | BToBindA | float | Blend curve B to curve A. |
AToB | AToB | float | Blend curve A to curve B. |
BToA | BToA | float | Blend curve B to curve A. |
sCurveA | sCurveA | float | Blend curve A into a procedural S shape. |
sCurveB | sCurveB | float | Blend curve B into a procedural S shape. |
allToMidPoint | allToMidPoint | float | Blend both curves to mid-curve. |
pushOut | pushOut | float | Curves push-out added value. |
zipStart | zipStart | float | Zip start value. |
zipStartFalloff | zipStartFalloff | float | Zip start falloff value. |
zipEnd | zipEnd | float | Zip end value. |
zipEndFalloff | zipEndFalloff | float | Zip end falloff value. |
offsetBase | offsetBase | enum | Offset curve build mode. centerMatrix, worldX, worldY, worldZ. |
offset | offset | float | Offset curve build parameter. |
Outputs
Long-Name | Short-Name | Type | Description |
outCurveA | outCurveA | nurbsCurve | Result curve A shape. |
outCurveB | outCurveB | nurbsCurve | Result curve B shape. |
outCurveAOffset | outCurveAOffset | nurbsCurve | Result curve A offset shape. |
outCurveBOffset | outCurveBOffset | nurbsCurve | Result curve B offset shape. |
outTweakA | outTweakA | compound (array) | Parent attribute that holds output values for tweaker offset position. |
outTweakATranslate | outTweakATranslate | vector | Output offset position for a given tweaker. |
outTweakARotate | outTweakARotate | vector | Output offset rotation for a given tweaker. |
outTweakB | outTweakB | compound (array) | Parent attribute that holds output values for tweaker offset position. |
outTweakBTranslate | outTweakBTranslate | vector | Output offset position for a given tweaker. |
outTweakBRotate | outTweakBRotate | vector | Output offset rotation for a given tweaker. |
mnsDynamicPivot
=== Author: Assaf Ben Zur ===
This is a simple node to calculate a foot's dynamic pivot internally, acoiding the use of many transforms and node connections.
Given an input curve, world origin position (as matrix) and mapping info, this node will map the input rotation values into a new custom point adding the rotation into the translation.
This essentailly will push the new point rapidly away from it's origin into the mapping direction.
Now using the given input curve, the closest point on curve from the new point will be calcultaed and outputted into the rotatePivot plug.
This output plug can then be plugged into a custom pivot attribute of any transform- creating a dynamiclly calculated pivot along the given curve.
Inputs
Long-Name | Short-Name | Type | Description |
inputCurve | inputCurve | nurbsCurve | Input curve. |
rotateX | rx | angle | Input local X rotation. |
rotateY | ry | angle | Input local Y rotation. |
rotateZ | rz | angle | Input local Z rotation. |
rotate | r | angle[3] | Input rotations. |
originWorldMatrix | owm | matrix | Input origin position to strat the calculation from. |
targetParentInverseMatrix | tpim | matrix | Target transform parent inverse matrix to localize the rotate pivot position result. |
mapRotXTo | mapRotXTo | enum | Mapping info from input X rotation. |
mapRotYTo | mapRotYTo | enum | Mapping info from input Y rotation. |
mapRotZTo | mapRotZTo | enum | Mapping info from input Z rotation. |
distRateMultiplier | distRateMultiplier | double | The rotation rate of addition in the translation values. |
inputMultipliers | inputMultipliers | bool | Pre-calc input multipliers. |
Outputs
Long-Name | Short-Name | Type | Description |
rotatePivot | rotatePivot | float[3] | Result rotate pivot position. |
mnsExponential
mnsIKSolver
=== Author: Assaf Ben Zur ===
This IK-Solver node provides an alternative, faster and more reliable solution for a 2-joint IK set-up.
This enhanced IK-solution offers a much cleaner approach as well, computing the blend internally- making any basic IK-FK set-up efficient, stable, fast and clean.
To add on the internal FK-IK switch, this node contains a few more features that are already an industry
standard:
Softness - prevents a pop on ik limit approach.
Slide - Knee position sliding (for character animation).
Stretch - Providing a limb-stretch when the ik-solve is beyond its limit.
Axis Switching - Offering an easy switch to any joint orientation.
Inputs
Long-Name | Short-Name | Type | Description |
boneLengthA | bla | float | Base length A. |
boneLengthB | blb | float | Base length B. |
restHandleLength | restHandleLength | float | Base length between the root position and the handle. |
blend | blend | float | IK-FK blend value. |
rootFK | rootFK | matrix | Input FK root matrix. |
midFK | midFK | matrix | Input FK mid matrix. |
endFK | endFK | matrix | Input FK end matrix. |
ikTarget | ikTarget | matrix | Input IK target matrix. |
poleVector | poleVector | matrix | Input pole-vector target matrix. |
rootWorldMatrix | rootWorldMatrix | matrix | Module root input matrix. |
roll | roll | float | IK addative roll value. |
slide | slide | float | IK mid slide value. |
softness | softness | float | IK softness parameter. |
stretchLimit | stretchLimit | float | IK stretch limit value. 1 is no stretch, 2 is double the length. |
aimAxis | aimAxis | enum | Aim axis choice. |
upAxis | upAxis | enum | Up axis choice. |
segmentScaleCompensate | segmentScaleCompensate | bool | calculate with segment scale compensate on or off. |
Outputs
Long-Name | Short-Name | Type | Description |
rootTranslate | rootTranslate | float[3] | Root out translate output. Child of outRoot. |
rootRotateX | rootRotateX | float | Root out translate X output. Child of outRoot. |
rootRotateY | rootRotateY | float | Root out translate Y output. Child of outRoot. |
rootRotateZ | rootRotateZ | float | Root out translate Z output. Child of outRoot. |
rootRotate | rootRotate | angle[3] | Root out rotate output. Child of outRoot. |
rootScale | rootScale | float[3] | Root out scale output. Child of outRoot. |
outRoot | outRoot | compound | Root output transformation values. |
midTranslate | midTranslate | float[3] | Mid out translate output. Child of outMid. |
midRotateX | midRotateX | float | Mid out translate X output. Child of outMid. |
midRotateY | midRotateY | float | Mid out translate Y output. Child of outMid. |
midRotateZ | midRotateZ | float | Mid out translate Z output. Child of outMid. |
midRotate | midRotate | angle[3] | Mid out rotate output. Child of outMid. |
midScale | midScale | float[3] | Mid out scale output. Child of outMid. |
outMid | outMid | compound | Mid output transformation values. |
endTranslate | endTranslate | float[3] | End out translate output. Child of outEnd. |
endRotateX | endRotateX | float | End out translate X output. Child of outEnd. |
endRotateY | endRotateY | float | End out translate Y output. Child of outEnd. |
endRotateZ | endRotateZ | float | End out translate Z output. Child of outEnd. |
endRotate | endRotate | angle[3] | End out rotate output. Child of outEnd. |
endScale | endScale | float[3] | End out scale output. Child of outEnd. |
outEnd | outEnd | compound | End output transformation values. |
ikVis | ikVis | bool | IK mode visibility. |
fkVis | fkVis | bool | FK mode visibility. |
mnsLipZip
=== Author: Assaf Ben Zur ===
Curve based node.
Inputs
Long-Name | Short-Name | Type | Description |
globalScale | globalScale | double | Global scale value. |
inTweakAPosition | inTweakAPosition | matrix (array) | Input tweaker local matrix. |
inTweakBPosition | inTweakBPosition | matrix (array) | Input tweaker local matrix. |
tweakMode | tweakMode | enum | Tweak curve build mode. |
tweakMirrorMatrix | tweakMirrorMatrix | matrix | Mirror matrix to add to the local tweaker transfomation build. |
centerMatrix | centerMatrix | matrix | Input center transformation matrix. |
sampleMode | m | enum | Curve sample mode- parametric, uniform. |
substeps | substeps | int | Result curve resampling sub-step value. |
degree | degree | int | Result curve degree value. |
buildMode | buildMode | enum | Curve build mode- EPs, CVs. |
midBias | midBias | float | Generated curve bias. |
aroundCenter | aroundCenter | bool | Calculate results considering the input center matrix. |
alongSurface | alongSurface | bool | Calculate results considering the input surface. |
conformToMeetPoint | conformToMeetPoint | bool | Conform the selected curve result to meet the oter curve based on set parameters. |
curveToConform | curveToConform | enum | Which curve to conform - curveA, curveB. |
conformDistancethreshold | conformDistancethreshold | enum | Which curve to conform - curveA, curveB. |
AToMid | AToMid | float | Blend curve A to mid-curve. |
BToMid | BToMid | float | Blend curve B to mid-curve. |
AToB | AToB | float | Blend curve A to curve B. |
BToA | BToA | float | Blend curve B to curve A. |
sCurveA | sCurveA | float | Blend curve A into a procedural S shape. |
sCurveB | sCurveB | float | Blend curve B into a procedural S shape. |
allToMidPoint | allToMidPoint | float | Blend both curves to mid-curve. |
upperCurlBaseMatrix | upperCurlBaseMatrix | matrix | Base upper matrix to calculate offsets before calculating the curl. |
upperCurlMatrix | upperCurlMatrix | matrix | Upper matrix for calculating the curl. |
upperCurlFalloff | upperCurlFalloff | float | Upper curl falloff |
lowerCurlBaseMatrix | lowerCurlBaseMatrix | matrix | Base lower matrix to calculate offsets before calculating the curl. |
lowerCurlMatrix | lowerCurlMatrix | matrix | Lower matrix for calculating the curl. |
lowerCurlFalloff | lowerCurlFalloff | float | Lower curl falloff |
pushOutA | pushOutA | float | Curves push-out added value. |
pushOutB | pushOutB | float | Curves push-out added value. |
zipStart | zipStart | float | Zip start value. |
zipStartFalloff | zipStartFalloff | float | Zip start falloff value. |
zipEnd | zipEnd | float | Zip end value. |
zipEndFalloff | zipEndFalloff | float | Zip end falloff value. |
offsetBase | offsetBase | enum | Offset curve build mode. centerMatrix, worldX, worldY, worldZ. |
offset | offset | float | Offset curve build parameter. |
Outputs
Long-Name | Short-Name | Type | Description |
outCurveA | outCurveA | nurbsCurve | Result curve A shape. |
outCurveB | outCurveB | nurbsCurve | Result curve B shape. |
outCurveAOffset | outCurveAOffset | nurbsCurve | Result curve A offset shape. |
outCurveBOffset | outCurveBOffset | nurbsCurve | Result curve B offset shape. |
outTweakA | outTweakA | compound (array) | Parent attribute that holds output values for tweaker offset position. |
outTweakATranslate | outTweakATranslate | vector | Output offset position for a given tweaker. |
outTweakARotate | outTweakARotate | vector | Output offset rotation for a given tweaker. |
outTweakB | outTweakB | compound (array) | Parent attribute that holds output values for tweaker offset position. |
outTweakBTranslate | outTweakBTranslate | vector | Output offset position for a given tweaker. |
outTweakBRotate | outTweakBRotate | vector | Output offset rotation for a given tweaker. |
mnsMatrixConstraint
=== Author: Assaf Ben Zur ===
Light weight alternative to Maya's native constraints - All within one node.
Live switchable/keyable maintainOffset channel.
Easily add spaces/masters to existing constraint using recalcOffset channel.
Inputs
Long-Name | Short-Name | Type | Description |
sourceWorldMatrix | sourceWorldMatrix | matrix | Source world matrix. |
spaceSet | spaceSet | int | Constraint Space index. |
maintainOffset | maintainOffset | bool | Maintain offset attribute. |
recalcOffsets | recalcOffsets | int | Recalculate offset in current state. |
targetParentInverseMatrix | targetParentInverseMatrix | matrix | Traget inverse matrix. |
targetRotateOrder | targetRotateOrder | enum | Calculation rotate-order. |
targetWorldMatrix | targetWorldMatrix | matrix | Traget world matrix. |
Outputs
Long-Name | Short-Name | Type | Description |
matrix | m | matrix | Result as matrix form. |
translate | t | float[3] | Translation values result. |
rotate | r | angle[3] | Rotation values result. |
scale | s | float[3] | Scale values result. |
shear | shear | float[3] | Shear values result. |
mnsMeshRivets
=== Author: Assaf Ben Zur ===
A multi "Point-On-Poly" constraint style compute node.
The node will accept any amount of input positions, as well as an input base-mesh and a target mesh.
The base mesh is used to calculate the source position and offset, the target mesh is used to calculate the result position based on the selected attributes within the node:
- Calculation Method: Closest UV, Vertex, Face
- Do Rotation: On, Off
- Do Scale: On, Off
- Rotation: Aim-Axis and up Axis choice (All 6)
- Up-Mode: World (X,Y,Z), Closest Tangent, Closest Binormal
The node will accept any amount on input tweaker matrices that can be used to adjust the riveted transforms globally and easily.
The tweakers adjustments are calculated in world spcae and the algorithm is fully independent, additive, and keyable.
The proximity calculation is matrix based to achieve non-spherical tweaks.
As tweaking the position of the rivets is not sensible as the transforms' position is based on the target mesh, the proximity tweakers are used to adjust rotation and scale only.
The node contains two adjustemt spaces:
- World- Will transform the outputs in world space, providing a more intuative behaviour, although less practical.
- Object - Will transform the outputs in their relative local spaces (preferable), which will provide a less intuative behaviour (dependent of the tweaker and output orientation), although very practical.
A falloff attribute is also implemented to allow control over the decay within the "collision" zone.
Inputs
Long-Name | Short-Name | Type | Description |
mesh | mesh | mesh | Input mesh to rivet to. |
targetWorldMatrix | targetWorldMatrix | matrix | Input mesh world matrix. |
rivet | rivet | compound | Input rivet transforms array. |
worldMatrix | worldMatrix | matrix | Input rivet transforms matrix. Child of rivet. |
parentInverseMatrix | parentInverseMatrix | matrix | Input rivet transforms inverse parent matrix. Child of rivet. |
liveMode | liveMode | bool | Live mode. Calculate everything in every evaluation. |
calculationMethod | calculationMethod | enum | Calculation basis- UV, closestVertex, closestFace. |
uvTolerance | uvTolerance | float | UV search tolerance threshold value. |
doRotation | doRotation | bool | Calculate rotations. |
doRivetRotation | doRivetRotation | bool | Calculate rivet local rotations. |
rotateOrder | ro | enum | Calculation rotate-order. |
upMode | upMode | enum | Rotation calculation up mode- worldX, worldY, worldZ, closestVertexBinormal, closestVertexTangent. |
aimAxis | aimAxis | enum | Aim Axis choice. |
upAxis | upAxis | enum | Up Axis choice. |
doRivetScale | doRivetScale | bool | Calculate scale. |
doScale | doScale | bool | Scale the rivets with the target mesh scale. When off the mesh's scale doesn't affect the rivets. |
maintainOffset | maintainOffset | bool | Maintain offset between rivet position and target mesh. |
proximityRotationSpace | proximityRotationSpace | enum | Proximity tweak rotation space- object, world. |
proximityTweaker | proximityTweaker | compound | Proximity tweakers input array. |
proximityWorldMatrix | proximityWorldMatrix | matrix | Proximity tweaker matrix. Child of proximityTweaker. |
proximityLocalMatrix | proximityLocalMatrix | matrix | Proximity tweaker local matrix. Child of proximityTweaker. |
rivetScale | rivetScale | float[3] | Scale tweak input. |
falloff | falloff | float | Proximity tweak falloff. Child of proximityTweaker. |
texture | texture | color | Input color map adjustment. |
rotationTextureAmplitude | rotationTextureAmplitude | float | Color map adjustment amplitude. |
textureBothDirections | textureBothDirections | bool | Avarage color map adjustment to both direction. -0.5 0.5 instead of 0 to 1. |
scaleTextureAmplitude | scaleTextureAmplitude | float | Color map scale affect amplitude. |
Outputs
Long-Name | Short-Name | Type | Description |
translate | t | float[3] | Translation output. Child of transform. |
rotate | r | angle[3] | Rotation output. Child of transform. |
transform | transform | compound | Output transforms array. |
scale | s | angle[3] | Scale output. Child of transform. |
baseMesh | baseMesh | mesh | Input base-mesh. |
mnsMeshSeparate
=== Author: Assaf Ben Zur ===
A simple node to drive seprated shell objects using one combined mesh.
Inputs
Long-Name | Short-Name | Type | Description |
mesh | mesh | mesh | Input mesh to separate. |
inShell | inShell | mesh | Input shell object array. |
Outputs
Long-Name | Short-Name | Type | Description |
outMesh | outMesh | mesh | Result shell meshes array. |
mnsModuleVis
=== Author: Assaf Ben Zur ===
A Simple dedicated node to control module visibility.
Previously was done using 3 animCurvesUU nodes, this is designed to replace them.
This node takes an input enum attribute, which was 8 states:
- None
- Primaries
- Secondaries
- Tertiaries
- Secondaries Only
- Tertiaries Only
- No Primaries
- No Secondaries
Based on the selected input state, the node will output 3 channels which will be connected to the modules' root transform.
- Primary Vis
- Secondary Vis
- Tertiary Vis
The result graph:
- None
- Primary Vis - OFF
- Secondary Vis - OFF
- Tertiary Vis - OFF
- Primaries
- Primary Vis - ON
- Secondary Vis - OFF
- Tertiary Vis - OFF
- Secondaries
- Primary Vis - ON
- Secondary Vis - ON
- Tertiary Vis - ON
- Tertiaries
- Primary Vis - ON
- Secondary Vis - ON
- Tertiary Vis - OFF
- Secondaries Only
- Primary Vis - OFF
- Secondary Vis - ON
- Tertiary Vis - OFF
- Tertiaries Only
- Primary Vis - OFF
- Secondary Vis - OFF
- Tertiary Vis - ON
- No Primaries
- Primary Vis - OFF
- Secondary Vis - ON
- Tertiary Vis - ON
- No Secondaries
- Primary Vis - ON
- Secondary Vis - OFF
- Tertiary Vis - ON
This node will be used by block to cleanup the input graph for the visibility control.
Inputs
Long-Name | Short-Name | Type | Description |
inputVisibility | inputVisibility | enum | Input visibility enum |
Outputs
Long-Name | Short-Name | Type | Description |
primaryVis | primaryVis | double | Output visibility for primaries |
secondaryVis | secondaryVis | double | Output visibility for secondaries |
tertiaryVis | reinitialize | double | Output visibility for tertiaries |
mnsModulo
=== Author: Assaf Ben Zur ===
A simple math node missing from Maya's native library.
Given a value and a devisor, the node will compute modulo based operations:
- modulos - the remainder or signed remainder of a division, after one number is divided by another- double.
- modulosInt - the remainder or signed remainder of a division, after one number is divided by another- int.
- Cycles - Number of repetitions - double.
- CyclesInt - Number of repetitions - int.
- Alternate - Alternating between 0 and the devisor.
- Alternate - Alternating between 0 and 1, based on the devisor.
Inputs
Long-Name | Short-Name | Type | Description |
value | value | double | Value to compute. |
devisor | devisor | double | Devisor to compute. |
Outputs
Long-Name | Short-Name | Type | Description |
modulus | modulus | double | The remainder or signed remainder of a division, after value is divided by the devisor. |
modulusInt | modulusInt | int | The remainder or signed remainder of a division, after value is divided by the devisor. |
cycles | cycles | double | Number of repetitions-Double. |
cyclesInt | cyclesInt | double | Number of repetitions-Int. |
alternate | alternate | double | Alternating value between 0 and the devisor. |
alternateNormalized | alternateNormalized | double | Alternating between 0 and 1, based on the devisor. |
mnsNodeRelationship
=== Author: Assaf Ben Zur ===
BLOCK main relationship node.
Inputs
Long-Name | Short-Name | Type | Description |
messageIn | messageIn | message | Input master node. |
messageOut | messageOut | message | Input slaves nodes array. |
deleteSlaves | deleteSlaves | message | Input delete only slaves nodes array. |
mnsPointsOnCurve
=== Author: Assaf Ben Zur ===
A fast and efficient parameter based compute node to sample and control points along a given curve.
In combination with mnsBuildTransformsCurve will result in a very advanced and robust "spline IK" control.
- Creation modes
+ Parametric - curve parameterized position calculation
+ Uniform - Addaptive uniform sampling
+ Fixed length - Uniform sampling based on an input max length. Initialized to curve length on creation, Keyable.
- Position control
- Rotation control
+ Aim modes - curveTangent, object
+ Up modes - curveNormal, up-curve, worldX, worldY, worldZ, object
- Scale control
- Spring ability
Inputs
Long-Name | Short-Name | Type | Description |
curve | crv | nurbsCurve | Input curve to sample. |
upCurve | upCrv | nurbsCurve | Input up curve to sample. |
bindCurve | bindCrv | nurbsCurve | Input bind curve to sample. Used only in parametrically-uniform build mode. |
aimCurve | aimCurve | nurbsCurve | Input aim curve to sample. Used only in curveAim rotation mode. |
upObject | upObj | matrix | Input up object matrix to use if requsted. |
objectOrientUpAxis | objectOrientUpAxis | enum | In case object orient up mode is selected, which axis to use. |
objectOrientAimAxis | objectOrientAimAxis | enum | In case object orient aim mode is selected, which axis to use. |
aimObject | aimObj | matrix | Input aim object matrix to use if requsted. |
globalScale | globalScale | float | Global scale multiplier. |
numOutputs | numO | int | Number of outputs/samples. |
mode | m | enum direction=i | Smaple mode- parametric, uniform, uniformFixedLength. |
cycle | cycle | bool | Enable cycle mode. |
closedShape | closedShape | bool | Enable closed shape mode. |
uScale | uScl | float | Global positions U-Scale adjustment. |
uScaleInverse | uSclInv | float | Global positions U-Scale-Inverse adjustment. |
uScaleMid | uSclMid | float | Global positions U-Scale-mid adjustment. |
uScaleMidPos | uSclMidPos | float | U-Scale-mid-position value. |
uScaleMidInverse | uSclMidInv | float | Global positions U-Scale-mid-inverse adjustment. |
uOffset | uOffset | float | Global positions U-offset adjustment. |
inverse | inv | bool | Inverse result order. |
fixedLength | fixedLength | float | The maximum fixed length for the result sample if requested. |
creationLength | creationLen | float | Value store for the creation curve length. |
curveLength | crvLrn | float | Current curve length display. |
uTugScale | uTugScl | float | Global positions U-Tug-Scale adjustment. |
uTugScaleTension | uTugSclTension | float | Global positions U-Tug-Scale-tension parameter. |
uTugOffset | uTugOffset | float | Global positions U-Tug-Offset adjustment. |
rotateMode | rotMode | enum | Samples rotation mode- curveTangent, objectAim. |
upMode | upMode | enum | Samples rotation up mode- normal, curve, worldX, worldY, worldZ, objectUp. |
scaleMode | sclMode | enum | Samples scale mode- absuloteCurveLength, addaptiveCurveLength, segmentLengthDependent. |
squashMode | squashMode | enum | Samples squash mode- squashStretch, squash, stretch, uniform, none. |
doRotation | doRot | bool | Do samples rotation. |
doScale | doScl | bool | Do samples scale. |
rotateOrder | ro | enum direction=i | Calculation rotation order. |
aimAxis | aimAxis | enum | Aim axis choice. |
upAxis | upAxis | enum | Up axis choice. |
customPointsUpMode | cusPointsUpMode | enum | Custom tweakers rotation up mode. |
enableParamAdjust | enableParamAdjust | bool | Enable Manual parameter adjustments. |
paramAdjustment | paramAdjustment | double | Manual parameter adjustments array input. Use this parameter to adjust calculated curve parameters manually. This parameter is addative. |
aimParamAdjustment | aimParamAdjustment | double | Manual parameter adjustments array input for the aim curve param. Use this parameter to adjust calculated aim curve parameters manually. This parameter is addative. |
excludePolesTranslation | excludePolesTranslation | bool | exclude translation set for base and tip. |
excludePolesRotation | excludePolesRotation | bool | exclude rotation set for base and tip. |
excludeBaseRotation | excludeBaseRotation | bool | exclude rotation set for base. Only if excludePolesRotation is set to True. |
excludeTipRotation | excludeTipRotation | bool | exclude rotation set for tip. Only if excludePolesRotation is set to True. |
excludePolesScale | excludePolesScale | bool | exclude scale set for base and tip. |
twistAimStart | twistAimStart | float | Self explanatory. |
twistAimMid | twistAimMid | float | Self explanatory. |
squeezeAim | squeezeAim | float | Self explanatory. |
waveAimAngle | waveAimAng | float | Self explanatory. |
twistAimWavePhase | twistAimWavePhase | float | Self explanatory. |
twistAimMidPos | twistAimMidPos | float | Self explanatory. |
twistAimEnd | twistAimEnd | float | Self explanatory. |
twistAimAll | twistAimAll | float | Self explanatory. |
aimToObj | aimToObj | float | Self explanatory. |
upToObj | upToObj | float | Self explanatory. |
twistUpStart | twistUpStart | float | Self explanatory. |
twistUpMid | twistUpMid | float | Self explanatory. |
twistUpSqueeze | twistUpqueeze | float | Self explanatory. |
waveUpAngle | waveUpAng | float | Self explanatory. |
waveUpPhase | waveUPPhase | float | Self explanatory. |
twistUpMidPos | twistUpMidPos | float | Self explanatory. |
twistUpEnd | twistUpEnd | float | Self explanatory. |
twistUpAll | twistUpAll | float | Self explanatory. |
twistTertiaryStart | twistTerStart | float | Self explanatory. |
twistTertiaryMid | twistTerMid | float | Self explanatory. |
tertiarySqueeze | terSqueeze | float | Self explanatory. |
tertiaryWaveAngle | tertiaryWaveAng | float | Self explanatory. |
tertiaryWavePhase | terWavePhase | float | Self explanatory. |
twistTertiaryMidPos | twistTerMidPos | float | Self explanatory. |
tertiaryTwistEnd | terTwistEnd | float | Self explanatory. |
tertiaryTwistAll | terTwistAll | float | Self explanatory. |
resetScale | resetScl | int | Reset scale values to current state. |
scaleMaxAddaptive | sclMaxAddaptive | bool | Adapt max scale to squash/scale relative values. |
squashFactor | squashFactor | float | Squash multiplier. |
squashPos | squashPos | float | Squash position. |
scaleStart | sclStart | float | Self explanatory. |
scaleMid | sclMid | float | Self explanatory. |
scaleMidPos | sclMidPos | float | Self explanatory. |
scaleWaveAmp | sclWaveAmp | float | Self explanatory. |
scaleWavePhase | sclWavePhase | float | Self explanatory. |
scaleEnd | sclEnd | float | Self explanatory. |
scaleAll | sclAll | float | Self explanatory. |
scaleAllAim | scaleAllAim | float | Self explanatory. |
scaleAllUp | scaleAllUp | float | Self explanatory. |
scaleAllTertiary | scaleAllTertiary | float | Self explanatory. |
scaleMin | sclMin | float | Self explanatory. |
scaleMax | sclMax | float | Self explanatory. |
springMode | sprMode | enum | Samples spring mode- UScale, UScaleInverse, UMidScaleInverse, UTugOffset, UTugScale. |
springStrength | sprStrength | float | spring strength. |
springDamp | sprDamp | float | Spring damping factor. |
springStiffness | sprStiffness | float | Spring stiffness factor. |
goalMatrix | goalMatrix | matrix | Spring goal matrix. |
doSpring | doSpr | bool | Do spring calculation. |
time | time | time | Input time value. |
customPosition | customPosition | compound | Custom tweakers input transforms array. |
uPosition | uPos | float | Custom tweaker U-Position. Child of customPositionOut. |
twist | twist | float | Custom tweaker twist value. Child of customPositionOut. |
aimRotation | aimRot | float | Custom tweaker aim-rotation value. Child of customPositionOut. |
tertiaryRotation | tertiaryRot | float | Custom tweaker tertiary-rotation value. Child of customPositionOut. |
scaleAim | sclAim | float | Custom tweaker aim-scale value. Child of customPositionOut. |
scaleUp | sclUp | float | Custom tweaker up-scale value. Child of customPositionOut. |
tertiaryScale | terScl | float | Custom tweaker tertiary-scale value. Child of customPositionOut. |
falloff | falloff | float | Custom tweaker falloff value. Child of customPositionOut. |
Outputs
Long-Name | Short-Name | Type | Description |
transforms | transforms | compound | Result transforms array. |
translate | t | float[3] | Result transform translation values. Child of transforms. |
rotate | r | angle[3] | Result rotation translation values. Child of transforms. |
matrix | Result matrix. Child of transforms. | ||
scale | s | float[3] | Result scale translation values. Child of transforms. |
customPositionOut | cusPosOut | compound | Custom tweakers offset transformation values array. |
cusTranslate | cusT | float[3] | Custom tweakers offset translation values. Child of customPositionOut. |
cusRotate | cusR | angle[3] | Custom tweakers offset rotation values. Child of customPositionOut. |
mnsPoseBlend
mnsQuaternionBlend
=== Author: Assaf Ben Zur ===
Inputs
Long-Name | Short-Name | Type | Description |
inMatrix1 | inMatrix1 | matrix | Input matrix1. Blend source A. |
inMatrix2 | inMatrix2 | matrix | Input matrix1. Blend source B. |
Outputs
Long-Name | Short-Name | Type | Description |
rotate | r | angle[3] | Rotation output. |
mnsRemapFloatArray
=== Author: Assaf Ben Zur ===
This simple node will take the input value (as float or angle) and split and remap the values across the requested output count, based on the given values map graph attribute.
The value can also be re-ranged between two values, using the remapToRnage attributes given.
The input value plug will accept floats, doubles and angles (genericAttr).
The output plug will be set according to the input type given.
Inputs
Long-Name | Short-Name | Type | Description |
valuesMap | valuesMap | float(array) | Output values remap graph. |
value | value | float | Input value to remap. Can be float, double and angle. |
angleOutputAsDegrees | angleOutputAsDegrees | bool | In case the input is set to angle, if this is set to true, the output values will be in degrees instead of the original radians input. |
remapToRange | remapToRange | bool | A choice to remap the outputs to a new range, using the relevant attributes. |
outputCount | outputCount | int | The amount of outputs to remap the input value to. |
min | min | float | RemapToRnage new minimum value. |
max | max | float | RemapToRnage new maximum value. |
oldMin | oldMin | float | RemapToRnage old minimum value. |
oldMax | oldMax | float | RemapToRnage old maximum value. |
Outputs
Long-Name | Short-Name | Type | Description |
outValue | outValue | float | Output values array. |
mnsResampleCurve
=== Author: Assaf Ben Zur ===
A simple light weight curve re-sampler.
Primaraly used to embed mnsThreePointArc into an IK setup.
Inputs
Long-Name | Short-Name | Type | Description |
resampleMode | resampleMode | enum | Reample mode- parametric, uniform. |
degree | degree | int | Reample degree. |
sections | sections | int | Reample amount of sections. |
inputCurve | inputCurve | nurbsCurve | Input curve to re-sample. |
Outputs
Long-Name | Short-Name | Type | Description |
outCurve | outCurve | nurbsCurve | Result curve. |
mnsSimpleRivets
=== Author: Assaf Ben Zur ===
This is a simple mesh rivet node.
This node will take any amount of input start position as matrix and will compile a transformation matrix for the closest face center position on the given input mesh.
This node will output the result in world space, unless an inpur targetParentInverseMatrix is plugged into the relevant element.
The deafult output will be the closest face center transformation matrix unless maintainOffset is set to ON- then the offset will be calculated and stored resulting in the same transformation matrix as the startPosition at bind.
Live mode should only be used for debugging purposes as this will initiate the nodes initialization process on every evaluation- impacting the nodes performance significantly.
The initialization process will be performed from from the given input mesh, unless a base mesh is plugged in to baseMesh plug.
It is recommended to avoid keeping baseMesh and startPosition plugs live.
Inputs
Long-Name | Short-Name | Type | Description |
mesh | mesh | mesh | Input mesh to rivet to. |
positionMode | positionMode | int | position mode. 0 is closest face center, 1 is closest vertex |
upMode | upMode | int | up mode. 0 is closest vertex, 1 is input up matrix. |
upMatrix | upMatrix | int | Up matrix to use in case upMode is set to 1. |
targetWorldMatrix | targetWorldMatrix | matrix | Input mesh world matrix. |
rivet | rivet | compound (Array) | Input rivets compound array. |
rivetStartPosition | rivetStartPosition | matrix | Input start position. Rivet position will be calculated from this origin matrix. |
targetParentInverseMatrix | targetParentInverseMatrix | matrix | Target transform parent inverse matrix. Use when output result is needed in local space (connect the target transform parentInverseMatrix plug) |
liveMode | liveMode | bool | Live mode. Calculate everything in every evaluation. |
maintainOffset | maintainOffset | bool | Maintain offset between rivet position and target mesh. |
Outputs
Long-Name | Short-Name | Type | Description |
translate | t | float[3] | Translation output. Child of transform. |
rotate | r | angle[3] | Rotation output. Child of transform. |
transform | transform | compound | Output transforms array. |
scale | s | angle[3] | Scale output. Child of transform. |
baseMesh | baseMesh | mesh | Input base-mesh. |
mnsSimpleSquash
=== Author: Assaf Ben Zur ===
This simple node is designed to output a scale value to squash and stretch a given single transform value.
Based on the creation distance between the target and source matricies, the scale values will be calculated using a squash/stretch algorithm using the dynamic distance (or current distance).
All input values will be taken into account calculating the result.
The static arc length is the creation length. This value can be set manually if needed, although the node will set this value in it's initialization stage- in case the source and handle matricies where connected.
This value will be set automatically only once, in case this value needs to be changed it will need to be set manually.
Aim axis attribute- stretch value will be set to the aim axis selection, squash value will be set to the remaining axes.
Global scale attribute - this attribute is set to scale the static arc length to avoid unwanted scaling issues when aiming for a uniform scale of the target transform.
Inputs
Long-Name | Short-Name | Type | Description |
handleWorldMatrix | handleWorldMatrix | matrix | Input handle world matrix. |
squashRootWorldMatrix | squashRootWorldMatrix | matrix | Input squash root position world matrix. |
squashFactor | squashFactor | float | Input squash factor. |
stretchFactor | stretchFactor | float | Input stretch factor. |
stretchMin | stretchMin | float | Input minimum stretch value. |
stretchMax | stretchMax | float | Input maximum stretch value. |
squashMin | squashMin | float | Input maximum squash value. |
squashMax | squashMax | float | Input minimum squash value. |
staticArcLength | staticArcLength | float | Static arc length / creation length value. |
aimAxis | aimAxis | enum | Aim axis- stretch value will be set to the aim axis selection, squash value will be set to the remaining axes. |
globalScale | globalScale | float | Global scale multiplier value. |
Outputs
Long-Name | Short-Name | Type | Description |
scale | s | float[3] | Output scale result. |
arcLength | arcLength | float | Current arc length. |
mnsSphereRoll
=== Author: Assaf Ben Zur ===
This node was created to deal with a ball/sphere rolling.
As oposed to common solutions, this node will evaluate the rotation of the target based on it's previous state, resulting in a non-gimble solution.
This node will solve the rotation for the current time.
Since ball rolling is a non-deterministic solution, this node will consider the previous state of the target transform to solve for the best posssible rotation given the input values.
Best used for a simple ball rolling on the ground, or a BB-8 style character, where the charcter's movements are rotation (roll) based.
Inputs
Long-Name | Short-Name | Type | Description |
globalScale | globalScale | double | MObject MnsSphereRoll::aGlobalScale |
speedMultiplier | speedMultiplier | double | a global keyable multiplier to offset the solve. 1 is even, less then 1 will result in a backspin, greater then one will result in a topspin. |
sphereRadius | sphereRadius | double | The radius of the traget sphere to rotate. |
driverWorldMatrix | driverWorldMatrix | matrix | This matrix will be sampled in order to evaluate the transition to the next calculation. This should be the target transform for the output rotation. |
upVectorWorldMatrix | upVectorWorldMatrix | matrix | This up vector direction will be calculated in relation to the input driver world matrix. |
startFrame | startFrame | int | Evaluation start frame. |
startFrameFromRange | startFrameFromRange | bool | If true, take the start frame from current maya range instead of the input value given. |
time | time | time | Time input. |
Outputs
Long-Name | Short-Name | Type | Description |
outRotation | outRotation | vector | MObject MnsSphereRoll::aOutRotation |
mnsSphereVectorPush
=== Author: Assaf Ben Zur ===
Presenting mnsSphereVectorPush deformer.
This deformer was purpose built for the Eye-Meniscus deformation, but can be used for many more applications.
As opposed to the commonly used "matrixCollision", mnsSphereVectorPush will also collide back faces and push them at a higher radius based on a thickness threshold (keyable).
The node will accept unlimited collider matrix inputs and will combine the deformations with ease.
The input radiuses and thicknesses can be varied and keyed to choice.
Implementing the mnsSphereVectorPush deformer within the eyelid setup will result in a natural looking deformation of the cornea and the eyelids.
This is the case for a closed eye pose as well- which will naturally suggest the eye aim even when it isn't seen, corresponding to real life behavior.
The deformer can also be used to represent the eye volume- pushing the eyelid verticies towards the eye surface, for extreme poses of which are not handled correctly by the "aroundCenterMatrix" of mnsCurveZip due to a range which exceeds the normalization.
Inputs
Long-Name | Short-Name | Type | Description |
collideMatrix | collideMatrix | matrix | Input collision matrix. |
radius | radius | matrix | Input collision radius. |
thicknessCollide | thicknessCollide | bool | If true, collide against back-faces using the input threshold. |
thicknessThreshold | thicknessThreshold | float | Backface avarage distance to collide against. |
collider | collider | compound | Collision object input array. |
collideMethod | collideMethod | enum | Collision method- matrix, position. |
mnsSpringCurve
=== Author: Assaf Ben Zur ===
This node is used to achive simple secondary motion proceduraly.
Tihs node will accept an input curve and offset curves to act upon, and using the stiffness and damping graph attributes it will calculate a new curve with secondary motion embedded.
This is an evaluation node rather then a simulation. Time needs to be connected to the node in order to see it's effect.
Inputs
Long-Name | Short-Name | Type | Description |
inputCurve | inputCurve | nurbsCurve | Input curve. |
inputOffsetCurve | inputOffsetCurve | nurbsCurve | Input offset curve. |
strength | strength | float | Global strength. 0 is do nothing. |
preventStretching | preventStretching | bool | Calculate stretch prevention. |
startFrame | startFrame | int | Evaluation start frame. |
startFrameFromRange | startFrameFromRange | bool | If true, take the start frame from current maya range instead of the input value given. |
time | time | time | Time input. |
stiffness | stiffness | graph | Stiffness graph control. |
damping | damping | graph | Damping graph control. |
Outputs
Long-Name | Short-Name | Type | Description |
outCurve | outCurve | nurbsCurve | Result curve. |
outOffsetCurve | outOffsetCurve | nurbsCurve | Result offset curve. |
mnsThreePointArc
=== Author: Assaf Ben Zur ===
This node was written to create a perfectly curved limb blend, instead of using common approaches like skinned curves, simulated tangents, scaled points, etc.
This method provides a very elegant way of enabling curvable limbs to animators, avoiding the use of Maya's 'makeThreePointCircularArc' which doesn't support a case where the 3 input points are collinear, nor any input curve or blending support.
Another major advantage of this node is the 'conformToMidPoint' attribute-
This attribute signals the algorithm to take the mid-point into consideration when drawing the edit points of the calculated arc, 'pinning' the elbow/knee in place when blending to the curved shape, even when the ratio between the 2 bones is not even (most cases).
The blend is triggered once with the attribute set to 'Off' - causing the knee to shift position completely- making it unusable in animation. Then, the blend is triggered when the attribute is 'On' and the knee is pinned in place, while the result curve edit points are being shifted based on the mid-point's position.
Inputs
Long-Name | Short-Name | Type | Description |
point1 | point1 | matrix | Input position A. |
point2 | point2 | matrix | Input position B. |
point3 | point3 | matrix | Input position C. |
blend | blend | float | Blend value. |
blendSectionA | blendSectionA | float | Section A only blend value. |
blendSectionB | blendSectionB | float | Section B only blend value. |
swipeStart | swipeStart | float | Swipe blend from start value. |
swipeStartFalloff | swipeStartFalloff | float | Swipe blend from start falloff value. |
swipeMidToRoot | swipeMidToRoot | float | Swipe blend from mid to start value. |
swipeMidToRootFalloff | swipeMidToRootFalloff | float | Swipe blend from mid to start falloff value. |
swipeMidToEnd | swipeMidToEnd | float | Swipe blend from mid to end value. |
swipeMidToEndFalloff | swipeMidToEndFalloff | float | Swipe blend from mid to end falloff value. |
swipeEnd | swipeEnd | float | Swipe blend from end to start value. |
swipeEndFalloff | swipeEndFalloff | float | Swipe blend from end to start falloff value. |
collinearAction | collinearAction | enum | Collinear action choice- inputCurve, resample. |
resampleMode | resampleMode | enum | If resmapling is chosen, use this mode to resample- parametric, uniform. |
degree | degree | int | If resmapling is chosen, use this degree. |
sections | sections | int | If resmapling is chosen, use this amount of sections. |
conformMidPoint | conformMidPoint | bool | Use the mid point to enhance clending algorithm. |
inputCurve | inputCurve | nurbsCurve | Input curve. |
inputOffsetCurve | inputOffsetCurve | nurbsCurve | Input offset curve. |
Outputs
Long-Name | Short-Name | Type | Description |
outCurve | outCurve | nurbsCurve | Result Curve. |
outOffsetCurve | outOffsetCurve | nurbsCurve | Result offset Curve. |
center | center | float[3] | Result circle center point. |
radius | radius | float | Result circle radius. |
mnsTransformSpring
=== Author: Assaf Ben Zur ===
Inputs
Long-Name | Short-Name | Type | Description |
inputWorldMatrix | inputWorldMatrix | float | MObject MnsTransformSpring::aInputWorldMatrix |
targetParentInverseMatrix | targetParentInverseMatrix | float | MObject MnsTransformSpring::aTargetParentInverseMatrix |
strength | strength | float | Global strength. 0 is do nothing. |
startFrame | startFrame | int | Evaluation start frame. |
startFrameFromRange | startFrameFromRange | bool | If true, take the start frame from current maya range instead of the input value given. |
time | time | time | Time input. |
stiffness | stiffness | graph | Stiffness graph control. |
damping | damping | graph | Damping graph control. |
Outputs
Long-Name | Short-Name | Type | Description |
translate | t | float | MObject MnsTransformSpring::aOutTranslate |
mnsVolumeJoint
=== Author: Assaf Ben Zur ===
Inputs
Long-Name | Short-Name | Type | Description |
globalScale | globalScale | double | Global scale multiplier. |
parentJointWorldMatrix | parentJointWorldMatrix | matrix | Input parent joint world Matrix. Angle source-A. |
childJointWorldMatrix | childJointWorldMatrix | matrix | Input child joint world Matrix. Angle source-B. |
childJointRestWorldMatrix | childJointRestWorldMatrix | matrix | Input child joint rest matrix. This will dictate the zero position for the calculation. |
volumeJoint | volumeJoint | compound array | Input array compound for a volume joint calculation. Unlimited. |
restTranslate | restTranslate | vector[3] | Rest translation values. |
posXTranslate | posXTranslate | vector[3] | Positive X angle translation values. |
negXTranslate | negXTranslate | vector[3] | Negative X angle translation values. |
posYTranslate | posYTranslate | vector[3] | Positive Y angle translation values. |
negYTranslate | negYTranslate | vector[3] | Negative Y angle translation values. |
posZTranslate | posZTranslate | vector[3] | Positive Z angle translation values. |
negZTranslate | negZTranslate | vector[3] | Negative Z angle translation values. |
posXScale | posXScale | vector[3] | Positive X angle scale values. |
negXScale | negXScale | vector[3] | Negative X angle scale values. |
posYScale | posYScale | vector[3] | Positive Y angle scale values. |
negYScale | negYScale | vector[3] | Negative Y angle scale values. |
posZScale | posZScale | vector[3] | Positive Z angle scale values. |
negZScale | negZScale | vector[3] | Negative Z angle scale values. |
rotationBlend | rotationBlend | double | Rotation blend between the 2 sources (parent and child joints) for this volume joint. 0 is parent rotation, 1 is child rotation. |
parentInverseMatrix | parentInverseMatrix | matrix | Target joint's parent inverse matrix to be used to localize the output values. |
Outputs
Long-Name | Short-Name | Type | Description |
result | result | compound | Output transforms array. |
translate | t | float[3] | Translation output. Child of transform. |
rotate | r | angle[3] | Rotation output. Child of transform. |
scale | s | angle[3] | Scale output. Child of transform. |
posXState | posXState | double | Current Positive-X direction state, between 0 and 1. |
negXState | negXState | double | Current Negative-X direction state, between 0 and 1. |
posYState | posYState | double | Current Positive-Y direction state, between 0 and 1. |
negYState | negYState | double | Current Negative-Y direction state, between 0 and 1. |
posZState | posZState | double | Current Positive-Z direction state, between 0 and 1. |
negZState | negZState | double | Current Negative-Z direction state, between 0 and 1. |