Skip to content

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-NameShort-NameTypeDescription
attributesattrsmultiInput attributes array to display, unlimited amount. Each attribute component will be displayed as a single line.
fontSizefontSizefloatDisplay Font Size.
fontColorfontColorfloat[3]Display Font Color, RGB (0 to 1).
fontTransparencyfontTransparencyfloatFont transperancy. 1 = Fully opaque, 0 = Fully tansparennt.
precisionprecisionintNumberic attribute display precision- value represents the amount of integers right to the decimal point.
lineSpacinglineSpacingfloatLine spacing between attributes line.
drawFlatdrawFlatintDraw in 2D mode, regardless of the matrix position. The position is dictated by positionX and positionY attributes, relative to the viewports screen space resolution.
positionXpositionXdoubleDisplay top-left corener X position, if drawFlat attribute is True.
positionYpositionYdoubleDisplay top-left corener y position, if drawFlat attribute is True.
nameOnlyModenameOnlyModeintMObject mnsAnnotate::aNameMode

mnsAutoWheelDrive


=== Author: Assaf Ben Zur ===

Inputs

Long-NameShort-NameTypeDescription
startFramestartFrameintEvaluation start frame.
startFrameFromRangestartFrameFromRangeboolIf true, take the start frame from current maya range instead of the input value given.
timetimetimeTime 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-NameShort-NameTypeDescription
globalScaleglobalScalefloatGlobal scale multiplier.
tweakCurvetweakCurvenurbsCurveInput tweak curve shape.
tweakCurveBasetweakCurveBasenurbsCurveInput tweak curve base shape.
buildModebuildModeenumBuild mode- EPs, CVs, Hermite, TangentedCVs, bezier.
transformstransformscompoundTransforms array to build the curve from.
matrixmatrixmatrixInput matrix transform, child of transforms. If this plug is connected, offsetX value will be taken as an the offset amount.
offsetBaseMatrixoffsetBaseMatrixmatrixMatrix to build offset vectors from
degreedegreeintOutput curve degree, 1-5.
offsetXoffsetXfloatOutput offset curve X parameter.
offsetYoffsetYfloatOutput offset curve Y parameter.
offsetZoffsetZfloatOutput offset curve Z parameter.
tangentDirectiontangentDirectionenumIf build mode is on Hermite, this paremeter dictates the tangent direction.
reversereverseintReverse output curve and offset curve.
formformenumResult curve form- open or closed
HermiteStepsHermiteStepsintHermite mode steps amount.
tangentLengthtangentLengthfloatControl tangent length (if present)
OffsetTypeOffsetTypeenumOffset build type - world or local.
buildOffsetCurvebuildOffsetCurveintInitiate offset curve build.
resampleresampleboolResample curve before output, based on substeps paremeter.
substepssubstepsintresample substeps.
localizelocalizebool In case this attribute is on, the result will be localized based on the input worldToLocal matrix.
worldToLocalMatrixworldToLocalMatrixmatrix In case localize attribute is on, the result will be localized based on this matrix.
Outputs

Long-NameShort-NameTypeDescription
outCurveoutCurvekNurbsCurveResult curve shape.
outOffsetCurveoutOffsetCurvenurbsCurveResult offset curve shape.
lengthlengthdoubleResult curve length.
offsetLengthoffsetLengthdoubleResult 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-NameShort-NameTypeDescription
cameraIncameraInmessageAffected camera node.
gateWidthgateWidthfloatCemera gate width.
gateHeightgateHeightfloatCemera gate height.

mnsClosestPointsOnMesh


Inputs

Long-NameShort-NameTypeDescription
inMeshinMeshmeshInput mesh to find closest point to.
inPositioninPositioncompound(Array)Input position to calculate a result for. Array Attr.
matrixmatrixmatrixInput matrix to calculate a result for. Array Attr.
targetParentMatrixtargetParentMatrixmatrixTarget parent matrix to multiply by before setting the result.
Outputs

Long-NameShort-NameTypeDescription
outPositionopvectorOutput 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-NameShort-NameTypeDescription
baseMeshbaseMeshmeshStatic base mesh input.
tensionTargettensionTargetmeshTension blend target.
compressionTargetcompressionTargetmeshCompression blend target.
liveModeliveModeboolLive mode. Re-calculate edge lengthes on evaluation.
displayModedisplayModeenumMap display mode- None, compressionTension, compression, tension.
compressionMultipliercompressionMultiplierfloatGlobal compression multiplier.
tensionMultipliertensionMultiplierfloatGlobal 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-NameShort-NameTypeDescription
inputCurveinputCurvekNurbsCurve Input curve to tweak. Output curve will be the same as this curve while the tweak curve matches the base curve.
inputBaseCurveinputBaseCurvekNurbsCurveInput base curve. This curve will be used to calculate the delta for the tweak.
inputTweakCurveinputTweakCurvekNurbsCurveInput 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.
buildOffsetCurvebuildOffsetCurveintInitiate offset curve build.
tweakOffsettweakOffsetintThis will determine whether the offset curve created will be tweaked or not.
offsetBaseMatrixoffsetBaseMatrixmatrixMatrix to build offset vectors from
offsetoffsetfloatOutput offset curve parameter.
Outputs

Long-NameShort-NameTypeDescription
outCurveoutCurvekNurbsCurveResult curve shape.
outOffsetCurveoutOffsetCurvekNurbsCurveResult 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-NameShort-NameTypeDescription
curvecrvnurbsCurveInput curve.
upCurveupCrvnurbsCurveInput offset curve.
inTransforminTransformcompoundInput variable control values array.
uPositionuPosfloatInput U position. Child of inTransform.
strengthstrengthfloatInput strength. Child of inTransform.
aimTranslateaimTfloatInput aim translation. Child of inTransform.
upTranslateupTfloatInput up translation. Child of inTransform.
terTranslateterTfloatInput tertiary translation. Child of inTransform.
fallofffallofffloatInput falloff value. Child of inTransform.
aimRotationaimRotangleInput aim-rotation value. Child of inTransform.
upRotationupRotangleInput up-rotation value. Child of inTransform.
tertiaryRotationterRotangleInput tertiary-rotation value. Child of inTransform.
localMatrixlocalMatrixangleInput local transformation matrix. Child of inTransform.
upModeupModeenumUp mode- normal, curve, worldX, worldY, worldZ.
substepssubstepsintResample substeps value.
translateModetModeenumControl translation mode- IK, FK.
degreedegreeintResult curves degree.
buildModebuildModeenumResult curve build mode- EPs, CVs.
rotateOrderroenumCalculation rotation-order.
aimAxisaimAxisenumAim axis choice.
upAxisupAxisenumUp axis choice.
offsetTypeoffsetTypeenumOffset curve adjustment mode- local, world.
offsetXoffsetXfloatOffset curve adjustment offset X parameter.
offsetYoffsetYfloatOffset curve adjustment offset Y parameter.
offsetZoffsetZfloatOffset curve adjustment offset Z parameter.
uScaleuScalefloatGlobal U-Scale adjusment. Addative to array indevidual u inputs.
uOffsetuOffsetfloatGlobal U-Offfset adjusment. Addative to array indevidual u inputs.
startAmpstartAmpfloatSine start amplitude value.
endAmpendAmpfloatSine end amplitude value.
amplitudeAimamplitudeAimfloatSine calculation X direction amplitude value.
amplitudeUpamplitudeUpfloatSine calculation Y direction amplitude value.
amplitudeTertiaryamplitudeTertiaryfloatSine calculation Z direction amplitude value.
frequencyAimfrequencyAimfloatSine calculation X direction frequency value.
frequencyUpfrequencyUpfloatSine calculation Y direction frequency value.
frequencyTertiaryfrequencyTertiaryfloatSine calculation Z direction frequency value.
phaseAimphaseAimfloatSine calculation X direction phase value.
phaseUpphaseUpfloatSine calculation Y direction phase value
phaseTertiaryphaseTertiaryfloatSine calculation Z direction phase value
frequencyfrequencyfloatSine calculation global addative frequency value.
phasephasefloatSine calculation global addative phase value.
startPosstartPosfloatSine start position value.
outCtrlsUpModeoutCtrlsUpModeenumOut position transforms up type - normal, curve, worldX, worldY, worldZ.
Outputs

Long-NameShort-NameTypeDescription
outCurveoutCurvenurbsCurveOutput curve shape.
outOffsetCurveoutOffsetCurvenurbsCurveOutput offset curve shape.
outTransformoutTransformcompoundOutput control offset position and rotation array.
translatetfloat[3]Output control offset position, child of outTransform.
rotaterangle[3]Output control offset rotation, child of outTransform.
rotateXrotXangleOutput control offset rotation, X component, child of rotate.
rotateYrotYangleOutput control offset rotation, Y component, child of rotate.
rotateZrotZangleOutput 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-NameShort-NameTypeDescription
bindCurveAbindCurveAnurbsCurveInput curve A base-curve shape.
tweakCurveAtweakCurveAnurbsCurveInput curve A curve shape.
bindCurveBbindCurveBnurbsCurveInput curve B base-curve shape.
tweakCurveBtweakCurveBnurbsCurveInput curve B curve shape.
tweakCurveABasetweakCurveABasenurbsCurveInput curve A tweak base-curve shape.
tweakCurveBBasetweakCurveBBasenurbsCurveInput curve B tweak base-curve shape.
midCurvemidCrvnurbsCurveInput target mid curve.
midCurveBasemidCrvBasenurbsCurveInput mid tweak curve base.
midCurveTweakmidCrvTweaknurbsCurveInput mid tweak curve.
centerMatrixcenterMatrixmatrixInput center transformation matrix.
midPointMatrixmidPointMatrixmatrixInput mid point traget matrix.
sampleModemenumCurve sample mode- parametric, uniform.
matchInputCurvematchInputCurveenumResult curve matched parameters to- none, curveA, curveB.
substepssubstepsintResult curve resampling sub-step value.
degreedegreeintResult curve degree value.
buildModebuildModeenumCurve build mode- EPs, CVs.
midGenerateFrommidGenerateFromenumGenerate automatic mid curve from- bindBases, tweakCurves, input.
midBiasmidBiasfloatGenerated curve bias.
aroundCenteraroundCenterboolCalculate results considering the input center matrix.
conformToMeetPointconformToMeetPointboolConform the selected curve result to meet the oter curve based on set parameters.
curveToConformcurveToConformenumWhich curve to conform - curveA, curveB.
conformDistancethresholdconformDistancethresholdenumWhich curve to conform - curveA, curveB.
AToMidAToMidfloatBlend curve A to mid-curve.
BToMidBToMidfloatBlend curve B to mid-curve.
AToBAToBfloatBlend curve A to curve B.
BToABToAfloatBlend curve B to curve A.
allToMidPointallToMidPointfloatBlend both curves to mid-curve.
pushOutpushOutfloatCurves push-out added value.
zipStartzipStartfloatZip start value.
zipStartFalloffzipStartFallofffloatZip start falloff value.
zipEndzipEndfloatZip end value.
zipEndFalloffzipEndFallofffloatZip end falloff value.
glueglueboolDo glue.
glueTherholdglueTherholdfloatGlue threshold value.
offsetBaseoffsetBaseenumOffset curve build mode. centerMatrix, worldX, worldY, worldZ.
offsetoffsetfloatOffset curve build parameter.
globalMultiplierglobalMultiplierfloatGlobal value multiplier.
Outputs

Long-NameShort-NameTypeDescription
outCurveAoutCurveAnurbsCurveResult curve A shape.
outCurveBoutCurveBnurbsCurveResult curve B shape.
outCurveAOffsetoutCurveAOffsetnurbsCurveResult curve A offset shape.
outCurveBOffsetoutCurveBOffsetnurbsCurveResult 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-NameShort-NameTypeDescription
globalScaleglobalScaledoubleGlobal scale value.
inTweakAPositioninTweakAPositionmatrix (array)Input tweaker local matrix.
inTweakBPositioninTweakBPositionmatrix (array)Input tweaker local matrix.
tweakModetweakModeenumTweak curve build mode.
tweakMirrorMatrixtweakMirrorMatrixmatrixMirror matrix to add to the local tweaker transfomation build.
bindCurveAbindCurveAnurbsCurveInput curve A base-curve shape.
bindCurveBbindCurveBnurbsCurveInput curve B base-curve shape.
centerMatrixcenterMatrixmatrixInput center transformation matrix.
sampleModemenumCurve sample mode- parametric, uniform.
midCurveModemidCurveModeenumMid 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.
midCurveSubstepsmidCurveSubstepsintMid curve generation sampling amount
matchInputCurvematchInputCurveenumResult curve matched parameters to- none, curveA, curveB.
substepssubstepsintResult curve resampling sub-step value.
degreedegreeintResult curve degree value.
buildModebuildModeenumCurve build mode- EPs, CVs.
midBiasmidBiasfloatGenerated curve bias.
aroundCenteraroundCenterboolCalculate results considering the input center matrix.
conformToMeetPointconformToMeetPointboolConform the selected curve result to meet the oter curve based on set parameters.
curveToConformcurveToConformenumWhich curve to conform - curveA, curveB.
conformDistancethresholdconformDistancethresholdenumWhich curve to conform - curveA, curveB.
AToMidAToMidfloatBlend curve A to mid-curve.
BToMidBToMidfloatBlend curve B to mid-curve.
AToBindBAToBindBfloatBlend curve A to curve B.
BToBindABToBindAfloatBlend curve B to curve A.
AToBAToBfloatBlend curve A to curve B.
BToABToAfloatBlend curve B to curve A.
sCurveAsCurveAfloatBlend curve A into a procedural S shape.
sCurveBsCurveBfloatBlend curve B into a procedural S shape.
allToMidPointallToMidPointfloatBlend both curves to mid-curve.
pushOutpushOutfloatCurves push-out added value.
zipStartzipStartfloatZip start value.
zipStartFalloffzipStartFallofffloatZip start falloff value.
zipEndzipEndfloatZip end value.
zipEndFalloffzipEndFallofffloatZip end falloff value.
offsetBaseoffsetBaseenumOffset curve build mode. centerMatrix, worldX, worldY, worldZ.
offsetoffsetfloatOffset curve build parameter.
Outputs

Long-NameShort-NameTypeDescription
outCurveAoutCurveAnurbsCurveResult curve A shape.
outCurveBoutCurveBnurbsCurveResult curve B shape.
outCurveAOffsetoutCurveAOffsetnurbsCurveResult curve A offset shape.
outCurveBOffsetoutCurveBOffsetnurbsCurveResult curve B offset shape.
outTweakAoutTweakAcompound (array)Parent attribute that holds output values for tweaker offset position.
outTweakATranslateoutTweakATranslatevectorOutput offset position for a given tweaker.
outTweakARotateoutTweakARotatevectorOutput offset rotation for a given tweaker.
outTweakBoutTweakBcompound (array)Parent attribute that holds output values for tweaker offset position.
outTweakBTranslateoutTweakBTranslatevectorOutput offset position for a given tweaker.
outTweakBRotateoutTweakBRotatevectorOutput 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-NameShort-NameTypeDescription
inputCurveinputCurvenurbsCurveInput curve.
rotateXrxangleInput local X rotation.
rotateYryangleInput local Y rotation.
rotateZrzangleInput local Z rotation.
rotaterangle[3]Input rotations.
originWorldMatrixowmmatrixInput origin position to strat the calculation from.
targetParentInverseMatrixtpimmatrix Target transform parent inverse matrix to localize the rotate pivot position result.
mapRotXTomapRotXToenumMapping info from input X rotation.
mapRotYTomapRotYToenumMapping info from input Y rotation.
mapRotZTomapRotZToenumMapping info from input Z rotation.
distRateMultiplierdistRateMultiplierdoubleThe rotation rate of addition in the translation values.
inputMultipliersinputMultipliersboolPre-calc input multipliers.
Outputs

Long-NameShort-NameTypeDescription
rotatePivotrotatePivotfloat[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-NameShort-NameTypeDescription
boneLengthAblafloatBase length A.
boneLengthBblbfloatBase length B.
restHandleLengthrestHandleLengthfloatBase length between the root position and the handle.
blendblendfloatIK-FK blend value.
rootFKrootFKmatrixInput FK root matrix.
midFKmidFKmatrixInput FK mid matrix.
endFKendFKmatrixInput FK end matrix.
ikTargetikTargetmatrixInput IK target matrix.
poleVectorpoleVectormatrixInput pole-vector target matrix.
rootWorldMatrixrootWorldMatrixmatrixModule root input matrix.
rollrollfloatIK addative roll value.
slideslidefloatIK mid slide value.
softnesssoftnessfloatIK softness parameter.
stretchLimitstretchLimitfloatIK stretch limit value. 1 is no stretch, 2 is double the length.
aimAxisaimAxisenumAim axis choice.
upAxisupAxisenumUp axis choice.
segmentScaleCompensatesegmentScaleCompensateboolcalculate with segment scale compensate on or off.
Outputs

Long-NameShort-NameTypeDescription
rootTranslaterootTranslatefloat[3]Root out translate output. Child of outRoot.
rootRotateXrootRotateXfloatRoot out translate X output. Child of outRoot.
rootRotateYrootRotateYfloatRoot out translate Y output. Child of outRoot.
rootRotateZrootRotateZfloatRoot out translate Z output. Child of outRoot.
rootRotaterootRotateangle[3]Root out rotate output. Child of outRoot.
rootScalerootScalefloat[3]Root out scale output. Child of outRoot.
outRootoutRootcompoundRoot output transformation values.
midTranslatemidTranslatefloat[3]Mid out translate output. Child of outMid.
midRotateXmidRotateXfloatMid out translate X output. Child of outMid.
midRotateYmidRotateYfloatMid out translate Y output. Child of outMid.
midRotateZmidRotateZfloatMid out translate Z output. Child of outMid.
midRotatemidRotateangle[3]Mid out rotate output. Child of outMid.
midScalemidScalefloat[3]Mid out scale output. Child of outMid.
outMidoutMidcompoundMid output transformation values.
endTranslateendTranslatefloat[3]End out translate output. Child of outEnd.
endRotateXendRotateXfloatEnd out translate X output. Child of outEnd.
endRotateYendRotateYfloatEnd out translate Y output. Child of outEnd.
endRotateZendRotateZfloatEnd out translate Z output. Child of outEnd.
endRotateendRotateangle[3]End out rotate output. Child of outEnd.
endScaleendScalefloat[3]End out scale output. Child of outEnd.
outEndoutEndcompoundEnd output transformation values.
ikVisikVisboolIK mode visibility.
fkVisfkVisboolFK mode visibility.

mnsLipZip


=== Author: Assaf Ben Zur ===
Curve based node.

Inputs

Long-NameShort-NameTypeDescription
globalScaleglobalScaledoubleGlobal scale value.
inTweakAPositioninTweakAPositionmatrix (array)Input tweaker local matrix.
inTweakBPositioninTweakBPositionmatrix (array)Input tweaker local matrix.
tweakModetweakModeenumTweak curve build mode.
tweakMirrorMatrixtweakMirrorMatrixmatrixMirror matrix to add to the local tweaker transfomation build.
centerMatrixcenterMatrixmatrixInput center transformation matrix.
sampleModemenumCurve sample mode- parametric, uniform.
substepssubstepsintResult curve resampling sub-step value.
degreedegreeintResult curve degree value.
buildModebuildModeenumCurve build mode- EPs, CVs.
midBiasmidBiasfloatGenerated curve bias.
aroundCenteraroundCenterboolCalculate results considering the input center matrix.
alongSurfacealongSurfaceboolCalculate results considering the input surface.
conformToMeetPointconformToMeetPointboolConform the selected curve result to meet the oter curve based on set parameters.
curveToConformcurveToConformenumWhich curve to conform - curveA, curveB.
conformDistancethresholdconformDistancethresholdenumWhich curve to conform - curveA, curveB.
AToMidAToMidfloatBlend curve A to mid-curve.
BToMidBToMidfloatBlend curve B to mid-curve.
AToBAToBfloatBlend curve A to curve B.
BToABToAfloatBlend curve B to curve A.
sCurveAsCurveAfloatBlend curve A into a procedural S shape.
sCurveBsCurveBfloatBlend curve B into a procedural S shape.
allToMidPointallToMidPointfloatBlend both curves to mid-curve.
upperCurlBaseMatrixupperCurlBaseMatrixmatrixBase upper matrix to calculate offsets before calculating the curl.
upperCurlMatrixupperCurlMatrixmatrix Upper matrix for calculating the curl.
upperCurlFalloffupperCurlFallofffloat Upper curl falloff
lowerCurlBaseMatrixlowerCurlBaseMatrixmatrixBase lower matrix to calculate offsets before calculating the curl.
lowerCurlMatrixlowerCurlMatrixmatrix Lower matrix for calculating the curl.
lowerCurlFallofflowerCurlFallofffloat Lower curl falloff
pushOutApushOutAfloatCurves push-out added value.
pushOutBpushOutBfloatCurves push-out added value.
zipStartzipStartfloatZip start value.
zipStartFalloffzipStartFallofffloatZip start falloff value.
zipEndzipEndfloatZip end value.
zipEndFalloffzipEndFallofffloatZip end falloff value.
offsetBaseoffsetBaseenumOffset curve build mode. centerMatrix, worldX, worldY, worldZ.
offsetoffsetfloatOffset curve build parameter.
Outputs

Long-NameShort-NameTypeDescription
outCurveAoutCurveAnurbsCurveResult curve A shape.
outCurveBoutCurveBnurbsCurveResult curve B shape.
outCurveAOffsetoutCurveAOffsetnurbsCurveResult curve A offset shape.
outCurveBOffsetoutCurveBOffsetnurbsCurveResult curve B offset shape.
outTweakAoutTweakAcompound (array)Parent attribute that holds output values for tweaker offset position.
outTweakATranslateoutTweakATranslatevectorOutput offset position for a given tweaker.
outTweakARotateoutTweakARotatevectorOutput offset rotation for a given tweaker.
outTweakBoutTweakBcompound (array)Parent attribute that holds output values for tweaker offset position.
outTweakBTranslateoutTweakBTranslatevectorOutput offset position for a given tweaker.
outTweakBRotateoutTweakBRotatevectorOutput 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-NameShort-NameTypeDescription
sourceWorldMatrixsourceWorldMatrixmatrixSource world matrix.
spaceSetspaceSetintConstraint Space index.
maintainOffsetmaintainOffsetboolMaintain offset attribute.
recalcOffsetsrecalcOffsetsintRecalculate offset in current state.
targetParentInverseMatrixtargetParentInverseMatrixmatrixTraget inverse matrix.
targetRotateOrdertargetRotateOrderenumCalculation rotate-order.
targetWorldMatrixtargetWorldMatrixmatrixTraget world matrix.
Outputs

Long-NameShort-NameTypeDescription
matrixmmatrixResult as matrix form.
translatetfloat[3]Translation values result.
rotaterangle[3]Rotation values result.
scalesfloat[3]Scale values result.
shearshearfloat[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-NameShort-NameTypeDescription
meshmeshmeshInput mesh to rivet to.
targetWorldMatrixtargetWorldMatrixmatrixInput mesh world matrix.
rivetrivetcompoundInput rivet transforms array.
worldMatrixworldMatrixmatrixInput rivet transforms matrix. Child of rivet.
parentInverseMatrixparentInverseMatrixmatrixInput rivet transforms inverse parent matrix. Child of rivet.
liveModeliveModeboolLive mode. Calculate everything in every evaluation.
calculationMethodcalculationMethodenumCalculation basis- UV, closestVertex, closestFace.
uvToleranceuvTolerancefloatUV search tolerance threshold value.
doRotationdoRotationboolCalculate rotations.
doRivetRotationdoRivetRotationboolCalculate rivet local rotations.
rotateOrderroenumCalculation rotate-order.
upModeupModeenumRotation calculation up mode- worldX, worldY, worldZ, closestVertexBinormal, closestVertexTangent.
aimAxisaimAxisenumAim Axis choice.
upAxisupAxisenumUp Axis choice.
doRivetScaledoRivetScaleboolCalculate scale.
doScaledoScaleboolScale the rivets with the target mesh scale. When off the mesh's scale doesn't affect the rivets.
maintainOffsetmaintainOffsetboolMaintain offset between rivet position and target mesh.
proximityRotationSpaceproximityRotationSpaceenumProximity tweak rotation space- object, world.
proximityTweakerproximityTweakercompoundProximity tweakers input array.
proximityWorldMatrixproximityWorldMatrixmatrixProximity tweaker matrix. Child of proximityTweaker.
proximityLocalMatrixproximityLocalMatrixmatrixProximity tweaker local matrix. Child of proximityTweaker.
rivetScalerivetScalefloat[3]Scale tweak input.
fallofffallofffloatProximity tweak falloff. Child of proximityTweaker.
texturetexturecolorInput color map adjustment.
rotationTextureAmplituderotationTextureAmplitudefloatColor map adjustment amplitude.
textureBothDirectionstextureBothDirectionsboolAvarage color map adjustment to both direction. -0.5 0.5 instead of 0 to 1.
scaleTextureAmplitudescaleTextureAmplitudefloatColor map scale affect amplitude.
Outputs

Long-NameShort-NameTypeDescription
translatetfloat[3]Translation output. Child of transform.
rotaterangle[3]Rotation output. Child of transform.
transformtransformcompoundOutput transforms array.
scalesangle[3]Scale output. Child of transform.
baseMeshbaseMeshmeshInput base-mesh.

mnsMeshSeparate


=== Author: Assaf Ben Zur ===
A simple node to drive seprated shell objects using one combined mesh.

Inputs

Long-NameShort-NameTypeDescription
meshmeshmeshInput mesh to separate.
inShellinShellmeshInput shell object array.
Outputs

Long-NameShort-NameTypeDescription
outMeshoutMeshmeshResult shell meshes array.

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-NameShort-NameTypeDescription
valuevaluedoubleValue to compute.
devisordevisordoubleDevisor to compute.
Outputs

Long-NameShort-NameTypeDescription
modulusmodulusdoubleThe remainder or signed remainder of a division, after value is divided by the devisor.
modulusIntmodulusIntintThe remainder or signed remainder of a division, after value is divided by the devisor.
cyclescyclesdoubleNumber of repetitions-Double.
cyclesIntcyclesIntdoubleNumber of repetitions-Int.
alternatealternatedoubleAlternating value between 0 and the devisor.
alternateNormalizedalternateNormalizeddoubleAlternating between 0 and 1, based on the devisor.

mnsNodeRelationship


=== Author: Assaf Ben Zur ===
BLOCK main relationship node.

Inputs

Long-NameShort-NameTypeDescription
messageInmessageInmessageInput master node.
messageOutmessageOutmessageInput slaves nodes array.
deleteSlavesdeleteSlavesmessageInput 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-NameShort-NameTypeDescription
curvecrvnurbsCurveInput curve to sample.
upCurveupCrvnurbsCurveInput up curve to sample.
bindCurvebindCrvnurbsCurveInput bind curve to sample. Used only in parametrically-uniform build mode.
aimCurveaimCurvenurbsCurveInput aim curve to sample. Used only in curveAim rotation mode.
upObjectupObjmatrixInput up object matrix to use if requsted.
objectOrientUpAxisobjectOrientUpAxisenumIn case object orient up mode is selected, which axis to use.
objectOrientAimAxisobjectOrientAimAxisenumIn case object orient aim mode is selected, which axis to use.
aimObjectaimObjmatrixInput aim object matrix to use if requsted.
globalScaleglobalScalefloatGlobal scale multiplier.
numOutputsnumOintNumber of outputs/samples.
modemenum direction=iSmaple mode- parametric, uniform, uniformFixedLength.
cyclecycleboolEnable cycle mode.
closedShapeclosedShapeboolEnable closed shape mode.
uScaleuSclfloatGlobal positions U-Scale adjustment.
uScaleInverseuSclInvfloatGlobal positions U-Scale-Inverse adjustment.
uScaleMiduSclMidfloatGlobal positions U-Scale-mid adjustment.
uScaleMidPosuSclMidPosfloatU-Scale-mid-position value.
uScaleMidInverseuSclMidInvfloatGlobal positions U-Scale-mid-inverse adjustment.
uOffsetuOffsetfloatGlobal positions U-offset adjustment.
inverseinvboolInverse result order.
fixedLengthfixedLengthfloatThe maximum fixed length for the result sample if requested.
creationLengthcreationLenfloatValue store for the creation curve length.
curveLengthcrvLrnfloatCurrent curve length display.
uTugScaleuTugSclfloatGlobal positions U-Tug-Scale adjustment.
uTugScaleTensionuTugSclTensionfloatGlobal positions U-Tug-Scale-tension parameter.
uTugOffsetuTugOffsetfloatGlobal positions U-Tug-Offset adjustment.
rotateModerotModeenumSamples rotation mode- curveTangent, objectAim.
upModeupModeenumSamples rotation up mode- normal, curve, worldX, worldY, worldZ, objectUp.
scaleModesclModeenumSamples scale mode- absuloteCurveLength, addaptiveCurveLength, segmentLengthDependent.
squashModesquashModeenumSamples squash mode- squashStretch, squash, stretch, uniform, none.
doRotationdoRotboolDo samples rotation.
doScaledoSclboolDo samples scale.
rotateOrderroenum direction=iCalculation rotation order.
aimAxisaimAxisenumAim axis choice.
upAxisupAxisenumUp axis choice.
customPointsUpModecusPointsUpModeenumCustom tweakers rotation up mode.
enableParamAdjustenableParamAdjustbool Enable Manual parameter adjustments.
paramAdjustmentparamAdjustmentdoubleManual parameter adjustments array input. Use this parameter to adjust calculated curve parameters manually. This parameter is addative.
aimParamAdjustmentaimParamAdjustmentdoubleManual parameter adjustments array input for the aim curve param. Use this parameter to adjust calculated aim curve parameters manually. This parameter is addative.
excludePolesTranslationexcludePolesTranslationboolexclude translation set for base and tip.
excludePolesRotationexcludePolesRotationboolexclude rotation set for base and tip.
excludeBaseRotationexcludeBaseRotationboolexclude rotation set for base. Only if excludePolesRotation is set to True.
excludeTipRotationexcludeTipRotationboolexclude rotation set for tip. Only if excludePolesRotation is set to True.
excludePolesScaleexcludePolesScaleboolexclude scale set for base and tip.
twistAimStarttwistAimStartfloatSelf explanatory.
twistAimMidtwistAimMidfloatSelf explanatory.
squeezeAimsqueezeAimfloatSelf explanatory.
waveAimAnglewaveAimAngfloatSelf explanatory.
twistAimWavePhasetwistAimWavePhasefloatSelf explanatory.
twistAimMidPostwistAimMidPosfloatSelf explanatory.
twistAimEndtwistAimEndfloatSelf explanatory.
twistAimAlltwistAimAllfloatSelf explanatory.
aimToObjaimToObjfloatSelf explanatory.
upToObjupToObjfloatSelf explanatory.
twistUpStarttwistUpStartfloatSelf explanatory.
twistUpMidtwistUpMidfloatSelf explanatory.
twistUpSqueezetwistUpqueezefloatSelf explanatory.
waveUpAnglewaveUpAngfloatSelf explanatory.
waveUpPhasewaveUPPhasefloatSelf explanatory.
twistUpMidPostwistUpMidPosfloatSelf explanatory.
twistUpEndtwistUpEndfloatSelf explanatory.
twistUpAlltwistUpAllfloatSelf explanatory.
twistTertiaryStarttwistTerStartfloatSelf explanatory.
twistTertiaryMidtwistTerMidfloatSelf explanatory.
tertiarySqueezeterSqueezefloatSelf explanatory.
tertiaryWaveAngletertiaryWaveAngfloatSelf explanatory.
tertiaryWavePhaseterWavePhasefloatSelf explanatory.
twistTertiaryMidPostwistTerMidPosfloatSelf explanatory.
tertiaryTwistEndterTwistEndfloatSelf explanatory.
tertiaryTwistAllterTwistAllfloatSelf explanatory.
resetScaleresetSclintReset scale values to current state.
scaleMaxAddaptivesclMaxAddaptiveboolAdapt max scale to squash/scale relative values.
squashFactorsquashFactorfloatSquash multiplier.
squashPossquashPosfloatSquash position.
scaleStartsclStartfloatSelf explanatory.
scaleMidsclMidfloatSelf explanatory.
scaleMidPossclMidPosfloatSelf explanatory.
scaleWaveAmpsclWaveAmpfloatSelf explanatory.
scaleWavePhasesclWavePhasefloatSelf explanatory.
scaleEndsclEndfloatSelf explanatory.
scaleAllsclAllfloatSelf explanatory.
scaleAllAimscaleAllAimfloatSelf explanatory.
scaleAllUpscaleAllUpfloatSelf explanatory.
scaleAllTertiaryscaleAllTertiaryfloatSelf explanatory.
scaleMinsclMinfloatSelf explanatory.
scaleMaxsclMaxfloatSelf explanatory.
springModesprModeenumSamples spring mode- UScale, UScaleInverse, UMidScaleInverse, UTugOffset, UTugScale.
springStrengthsprStrengthfloatspring strength.
springDampsprDampfloatSpring damping factor.
springStiffnesssprStiffnessfloatSpring stiffness factor.
goalMatrixgoalMatrixmatrixSpring goal matrix.
doSpringdoSprboolDo spring calculation.
timetimetimeInput time value.
customPositioncustomPositioncompoundCustom tweakers input transforms array.
uPositionuPosfloatCustom tweaker U-Position. Child of customPositionOut.
twisttwistfloatCustom tweaker twist value. Child of customPositionOut.
aimRotationaimRotfloatCustom tweaker aim-rotation value. Child of customPositionOut.
tertiaryRotationtertiaryRotfloatCustom tweaker tertiary-rotation value. Child of customPositionOut.
scaleAimsclAimfloatCustom tweaker aim-scale value. Child of customPositionOut.
scaleUpsclUpfloatCustom tweaker up-scale value. Child of customPositionOut.
tertiaryScaleterSclfloatCustom tweaker tertiary-scale value. Child of customPositionOut.
fallofffallofffloatCustom tweaker falloff value. Child of customPositionOut.
Outputs

Long-NameShort-NameTypeDescription
transformstransformscompoundResult transforms array.
translatetfloat[3]Result transform translation values. Child of transforms.
rotaterangle[3]Result rotation translation values. Child of transforms.
matrixResult matrix. Child of transforms.
scalesfloat[3]Result scale translation values. Child of transforms.
customPositionOutcusPosOutcompoundCustom tweakers offset transformation values array.
cusTranslatecusTfloat[3]Custom tweakers offset translation values. Child of customPositionOut.
cusRotatecusRangle[3]Custom tweakers offset rotation values. Child of customPositionOut.

mnsPoseBlend


mnsQuaternionBlend


=== Author: Assaf Ben Zur ===

Inputs

Long-NameShort-NameTypeDescription
inMatrix1inMatrix1matrix Input matrix1. Blend source A.
inMatrix2inMatrix2matrix Input matrix1. Blend source B.
Outputs

Long-NameShort-NameTypeDescription
rotaterangle[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-NameShort-NameTypeDescription
valuesMapvaluesMapfloat(array)Output values remap graph.
valuevaluefloatInput value to remap. Can be float, double and angle.
angleOutputAsDegreesangleOutputAsDegreesboolIn 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.
remapToRangeremapToRangeboolA choice to remap the outputs to a new range, using the relevant attributes.
outputCountoutputCountintThe amount of outputs to remap the input value to.
minminfloatRemapToRnage new minimum value.
maxmaxfloatRemapToRnage new maximum value.
oldMinoldMinfloatRemapToRnage old minimum value.
oldMaxoldMaxfloatRemapToRnage old maximum value.
Outputs

Long-NameShort-NameTypeDescription
outValueoutValuefloatOutput 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-NameShort-NameTypeDescription
resampleModeresampleModeenumReample mode- parametric, uniform.
degreedegreeintReample degree.
sectionssectionsintReample amount of sections.
inputCurveinputCurvenurbsCurveInput curve to re-sample.
Outputs

Long-NameShort-NameTypeDescription
outCurveoutCurvenurbsCurveResult 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-NameShort-NameTypeDescription
meshmeshmeshInput mesh to rivet to.
positionModepositionModeint position mode. 0 is closest face center, 1 is closest vertex
upModeupModeint up mode. 0 is closest vertex, 1 is input up matrix.
upMatrixupMatrixint Up matrix to use in case upMode is set to 1.
targetWorldMatrixtargetWorldMatrixmatrixInput mesh world matrix.
rivetrivetcompound (Array)Input rivets compound array.
rivetStartPositionrivetStartPositionmatrixInput start position. Rivet position will be calculated from this origin matrix.
targetParentInverseMatrixtargetParentInverseMatrixmatrixTarget transform parent inverse matrix. Use when output result is needed in local space (connect the target transform parentInverseMatrix plug)
liveModeliveModeboolLive mode. Calculate everything in every evaluation.
maintainOffsetmaintainOffsetboolMaintain offset between rivet position and target mesh.
Outputs

Long-NameShort-NameTypeDescription
translatetfloat[3]Translation output. Child of transform.
rotaterangle[3]Rotation output. Child of transform.
transformtransformcompoundOutput transforms array.
scalesangle[3]Scale output. Child of transform.
baseMeshbaseMeshmeshInput 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-NameShort-NameTypeDescription
handleWorldMatrixhandleWorldMatrixmatrixInput handle world matrix.
squashRootWorldMatrixsquashRootWorldMatrixmatrixInput squash root position world matrix.
squashFactorsquashFactorfloatInput squash factor.
stretchFactorstretchFactorfloatInput stretch factor.
stretchMinstretchMinfloatInput minimum stretch value.
stretchMaxstretchMaxfloatInput maximum stretch value.
squashMinsquashMinfloatInput maximum squash value.
squashMaxsquashMaxfloatInput minimum squash value.
staticArcLengthstaticArcLengthfloatStatic arc length / creation length value.
aimAxisaimAxisenumAim axis- stretch value will be set to the aim axis selection, squash value will be set to the remaining axes.
globalScaleglobalScalefloatGlobal scale multiplier value.
Outputs

Long-NameShort-NameTypeDescription
scalesfloat[3]Output scale result.
arcLengtharcLengthfloatCurrent 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-NameShort-NameTypeDescription
globalScaleglobalScaledoubleMObject MnsSphereRoll::aGlobalScale
speedMultiplierspeedMultiplierdouble 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.
sphereRadiussphereRadiusdouble The radius of the traget sphere to rotate.
driverWorldMatrixdriverWorldMatrixmatrix 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.
upVectorWorldMatrixupVectorWorldMatrixmatrix This up vector direction will be calculated in relation to the input driver world matrix.
startFramestartFrameintEvaluation start frame.
startFrameFromRangestartFrameFromRangeboolIf true, take the start frame from current maya range instead of the input value given.
timetimetimeTime input.
Outputs

Long-NameShort-NameTypeDescription
outRotationoutRotationvectorMObject 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-NameShort-NameTypeDescription
collideMatrixcollideMatrixmatrixInput collision matrix.
radiusradiusmatrixInput collision radius.
thicknessCollidethicknessCollideboolIf true, collide against back-faces using the input threshold.
thicknessThresholdthicknessThresholdfloatBackface avarage distance to collide against.
collidercollidercompoundCollision object input array.
collideMethodcollideMethodenumCollision 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-NameShort-NameTypeDescription
inputCurveinputCurvenurbsCurveInput curve.
inputOffsetCurveinputOffsetCurvenurbsCurveInput offset curve.
strengthstrengthfloatGlobal strength. 0 is do nothing.
preventStretchingpreventStretchingboolCalculate stretch prevention.
startFramestartFrameintEvaluation start frame.
startFrameFromRangestartFrameFromRangeboolIf true, take the start frame from current maya range instead of the input value given.
timetimetimeTime input.
stiffnessstiffnessgraphStiffness graph control.
dampingdampinggraphDamping graph control.
Outputs

Long-NameShort-NameTypeDescription
outCurveoutCurvenurbsCurveResult curve.
outOffsetCurveoutOffsetCurvenurbsCurveResult 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-NameShort-NameTypeDescription
point1point1matrixInput position A.
point2point2matrixInput position B.
point3point3matrixInput position C.
blendblendfloatBlend value.
blendSectionAblendSectionAfloatSection A only blend value.
blendSectionBblendSectionBfloatSection B only blend value.
swipeStartswipeStartfloatSwipe blend from start value.
swipeStartFalloffswipeStartFallofffloatSwipe blend from start falloff value.
swipeMidToRootswipeMidToRootfloatSwipe blend from mid to start value.
swipeMidToRootFalloffswipeMidToRootFallofffloatSwipe blend from mid to start falloff value.
swipeMidToEndswipeMidToEndfloatSwipe blend from mid to end value.
swipeMidToEndFalloffswipeMidToEndFallofffloatSwipe blend from mid to end falloff value.
swipeEndswipeEndfloatSwipe blend from end to start value.
swipeEndFalloffswipeEndFallofffloatSwipe blend from end to start falloff value.
collinearActioncollinearActionenumCollinear action choice- inputCurve, resample.
resampleModeresampleModeenumIf resmapling is chosen, use this mode to resample- parametric, uniform.
degreedegreeintIf resmapling is chosen, use this degree.
sectionssectionsintIf resmapling is chosen, use this amount of sections.
conformMidPointconformMidPointboolUse the mid point to enhance clending algorithm.
inputCurveinputCurvenurbsCurveInput curve.
inputOffsetCurveinputOffsetCurvenurbsCurveInput offset curve.
Outputs

Long-NameShort-NameTypeDescription
outCurveoutCurvenurbsCurveResult Curve.
outOffsetCurveoutOffsetCurvenurbsCurveResult offset Curve.
centercenterfloat[3]Result circle center point.
radiusradiusfloatResult circle radius.

mnsTransformSpring


=== Author: Assaf Ben Zur ===

Inputs

Long-NameShort-NameTypeDescription
inputWorldMatrixinputWorldMatrixfloatMObject MnsTransformSpring::aInputWorldMatrix
targetParentInverseMatrixtargetParentInverseMatrixfloatMObject MnsTransformSpring::aTargetParentInverseMatrix
strengthstrengthfloatGlobal strength. 0 is do nothing.
startFramestartFrameintEvaluation start frame.
startFrameFromRangestartFrameFromRangeboolIf true, take the start frame from current maya range instead of the input value given.
timetimetimeTime input.
stiffnessstiffnessgraphStiffness graph control.
dampingdampinggraphDamping graph control.
Outputs

Long-NameShort-NameTypeDescription
translatetfloatMObject MnsTransformSpring::aOutTranslate

mnsVolumeJoint


=== Author: Assaf Ben Zur ===

Inputs

Long-NameShort-NameTypeDescription
globalScaleglobalScaledoubleGlobal scale multiplier.
parentJointWorldMatrixparentJointWorldMatrixmatrix Input parent joint world Matrix. Angle source-A.
childJointWorldMatrixchildJointWorldMatrixmatrix Input child joint world Matrix. Angle source-B.
childJointRestWorldMatrixchildJointRestWorldMatrixmatrix Input child joint rest matrix. This will dictate the zero position for the calculation.
volumeJointvolumeJointcompound array Input array compound for a volume joint calculation. Unlimited.
restTranslaterestTranslatevector[3] Rest translation values.
posXTranslateposXTranslatevector[3] Positive X angle translation values.
negXTranslatenegXTranslatevector[3] Negative X angle translation values.
posYTranslateposYTranslatevector[3] Positive Y angle translation values.
negYTranslatenegYTranslatevector[3] Negative Y angle translation values.
posZTranslateposZTranslatevector[3] Positive Z angle translation values.
negZTranslatenegZTranslatevector[3] Negative Z angle translation values.
posXScaleposXScalevector[3] Positive X angle scale values.
negXScalenegXScalevector[3] Negative X angle scale values.
posYScaleposYScalevector[3] Positive Y angle scale values.
negYScalenegYScalevector[3] Negative Y angle scale values.
posZScaleposZScalevector[3] Positive Z angle scale values.
negZScalenegZScalevector[3] Negative Z angle scale values.
rotationBlendrotationBlenddouble Rotation blend between the 2 sources (parent and child joints) for this volume joint. 0 is parent rotation, 1 is child rotation.
parentInverseMatrixparentInverseMatrixmatrix Target joint's parent inverse matrix to be used to localize the output values.
Outputs

Long-NameShort-NameTypeDescription
resultresultcompoundOutput transforms array.
translatetfloat[3]Translation output. Child of transform.
rotaterangle[3]Rotation output. Child of transform.
scalesangle[3]Scale output. Child of transform.
posXStateposXStatedoubleCurrent Positive-X direction state, between 0 and 1.
negXStatenegXStatedoubleCurrent Negative-X direction state, between 0 and 1.
posYStateposYStatedoubleCurrent Positive-Y direction state, between 0 and 1.
negYStatenegYStatedoubleCurrent Negative-Y direction state, between 0 and 1.
posZStateposZStatedoubleCurrent Positive-Z direction state, between 0 and 1.
negZStatenegZStatedoubleCurrent Negative-Z direction state, between 0 and 1.