Mondo Controller Pak
Written by
Richard Nelson

 

These plugins/scripts are provided for your use as-is. Mondo Media claims no responsibility for any damage to your files or lost productivity as a result of using this plugin/script. Feel free to modify and/or redistribute these files as you see fit.

Mondo Media will provide no technical support for these plugins/scripts but please email any suggestions for features and future plugins to mondolabs@mondomed.com.


Installation:

Copy the controllerpak.dlc file to your plugin subdirectory under your 3DS MAX directory.


Description:

Collection of custom animation controllers for all Float, Point3, Position, Rotation, and Scale values (except for the Object controller). Includes:

  • Bake
  • Derivative
  • Ease
  • Harryhausen
  • Limit
  • Multiplier
  • Object
  • Pulse
  • Spring

  • Instructions:

    Each controller can be found under the Assign Controller command in the Track View or Motion Panel.

    NOTE: Do not directly assign a controller to the input parameter of any of the Rotation or Scale versions of these controllers. Due to a limitation in MAX's design, you will only be able to assign Point3 controllers, and a Rotation or Scale controller will crash with a Point3 input. Assign these controllers AFTER you have created the input animation you intend to use.

    Bake Controller

    Description:

    "Bakes" existing animation by sampling entire animation curve and storing those samples.

    Instructions:

    Assign a bake controller to an existing animation controller, and the existing controller will be assigned to the input of the bake controller. Go to the controller properties and press Update to store the existing animation values. Press this button any time you have modified the original animation (in the Input property) to save new values.

    You can change the frequency at which the input animation is sampled by changing the Sampling Interval value. This value represents the number of frames between successive samples.

    You can enable and disable this controller with the Enable checkbox.


    Derivative Controller

    Description:

    Outputs the derivative of the input curve.

    Instructions:

    Assign a Derivatice controller to an existing animatable parameter, and the existing controller will be assigned to the input of the Derivative controller.

    In the controller properties windows, you can enable and disable the controller by clicking on the Enable checkbox. A disabled controller will simply pass the input value through to the output.

    You may also change the sampling rate for the derivative calculation, by adjusting the sample period spinner. The sample period is the amount of frames in between samples. A higher number will result in faster, but less accurate calculations.


    Ease Controller

    Description:

    Picks values from a specified point in time along an existing animation curve.

    Instructions:

    Assign an Ease controller to an existing animatable parameter, and the existing controller will be assigned to the input of the Ease controller.

    The Ease property controls the part of the input curve which is passed through the output. For example, an ease of 80 will pass the value of the input curve at frame 80.

    In the controller properties windows, you can enable and disable the controller by clicking on the Enable checkbox. A disabled controller will simply pass the input value through to the output.

    Special Instructions:

    This controller is a more flexible version of the ease curve supplied by MAX. For example, you can apply an Ease controller to position, float, and Point3 lists, whereas you cannot use a MAX ease curve in those cases.


    Harryhausen Controller

    Description:

    Generates stop-motion like animation...after Ray Harryhausen.

    Instructions:

    Assign a Harryhausen controller to an existing animatable parameter, and the existing controller will be assigned to the input of the Harryhausen controller.

    The Shakiness property controls the amount of motion error in the output. A higher shakiness will result in a noisier, more erratic motion. When there is no motion in the input curve, the output curve also has no motion, regardless of shakiness. This is because a stop-motion animator would not be moving the object at all.

    In the controller properties windows, you can enable and disable the controller by clicking on the Enable checkbox. A disabled controller will simply pass the input value through to the output. You may also change the sampling rate for the controller calculation, by adjusting the sample period spinner. The sample period is the amount of frames in between samples. The controller will hold its value for that many frames, before calculating a new one.


    Limit Controller

    Description:

    Outputs a clamped version of the input curve

    Instructions:

    Assign a Limit controller to an existing animatable parameter, and the existing controller will be assigned to the input of the Limit controller.

    The Min and Max properties control the range at which the input value is clamped. You can rescale the input to fit perfectly within that range by selecting Scale to Limit in the controller properties window.

    Also in the controller properties window, you can enable and disable the controller by clicking on the Enable checkbox. A disabled controller will simply pass the input value through to the output. You may also set the minimum and maximum values for the current frame by using the Min and Max spinners.


    Multiplier Controller

    Description:

    Multiplies input value by specified amount.

    Instructions:

    Assign a Multiplier controller to an existing animatable parameter, and the existing controller will be assigned to the input of the Multiplier controller.

    The Multiplier property controls the amount by which the input curve is multiplied.

    In the controller properties windows, you can enable and disable the controller by clicking on the Enable checkbox. A disabled controller will simply pass the input value through to the output.

    Special Instructions:

    This controller is a more flexible version of the multiplier curve supplied by MAX. With this, you can apply a multiplication to position, float, and Point3 lists, whereas you cannot use a MAX multiplier curve in those cases.


    Object Controller

    Description:

    Retrieves the world space Transform, Rotation, or Scale of an object, and outputs a Point3.

    Instructions:

    There are three Object controllers, all of which output a Point3, but look at different inputs: Position, Rotation and Scale.

    In the controller properties windows, you select the object that you want to reference, by pressing Pick Object and picking an appropriate object. The output value will then be the position, rotation, or scale of the selected object, depending on the type of Object controller you used.


    Pulse Controller

    Description:

    Generates user-created pulses whenever the input value passes a certain threshold. Useful for triggering camera shaking, etc.

    Instructions:

    Assign a Pulse controller to an existing animatable parameter, and the existing controller will be assigned to the input of the Pulse controller.

    The Threshold property controls the timing of the pulses. Whenever the input controller rises above the threshold value or, if Greater Than is enabled in the controller properties window, when it falls below the threshold, the Pulse Curve will be played at time zero. If there is any animation on the Pulse Curve before time zero, that will be played back ahead of the triggering event.

    In the controller properties windows, you can enable and disable the controller by clicking on the Enable checkbox. A disabled controller will simply pass the input value through to the output.


    Spring Controller

    Description:

    Simulates the effect of a spring attached to the input value or, in the case of rotation, a pendulum affected by gravity and inertia.

    Instructions:

    There are four Spring controllers: Float, Point3, Position and Rotation. The Rotation controller is a special case, and will be described later. The following instructions pertain to the other three Spring controller types. Assign one of these controllers to an existing animatable parameter, and the existing controller will be assigned to the input of the Spring controller.

    The Spring Strength parameter controls the strength of the force that tries to make the output value closer to the input value. A higher spring strength, will try to follow the input more closely, but could result in faster oscillations.

    The Drag parameter controls the amount by which the input value slows down every frame (from 0 to 100 percent). A higher drag decreases oscillation strength over time, even stopping oscillations completely.

    The Multiplier parameter multiplies the different between the output and input curves, thus making the output follow the input more or less closely.

    In the controller properties windows, you can enable and disable the controller by clicking on the Enable checkbox. A disabled controller will simply pass the input value straight through to the output without any modification.

    You may also change the sampling rate for the controller calculation, by adjusting the sample period spinner. The sample period is the amount of frames in between calculations. The controller value will continue in a straight line between samples. Generate offset only forces the controller to output only the difference between the springy position and the input position.

    You can select from a set of preset spring and drag values from the listbox at the bottom.

    Rotation Controller

    The Spring Rotation controller simulates the motion of a pendulum. It is more complex and has more input parameters than the first three controllers described above. The main difference is that it does not work with an existing rotation animation but generates its values based on a rest position that you designate, the acceleration of its parent object, and the effect of gravity (a value which you also supply). With the Rotation controller, you will see seven different inputs:

    Input is automatically assigned an Object Position Point3 controller, which you can use (go to properties and select your target object) to reference the world-space movement of the object to which your pendulum is attached. This value is used to generate the motion of a pendulum swinging backwards when attached to an accelerating object.

    Spring Strength determines how hard the pendulum tries to stay at its Rest Orientation, which is the orientation of the object at frame 0 when you assign the controller, or the orientation you provide by rotating the object in the MAX viewport.

    Drag and Multiplier work the same way as the other three Spring controllers.

    Lag determines how much the pendulum "lags" or swings behind its parent object when that object accelerates.

    Parent Orientation is automatically assigned an Object Rotation Point3 controller, which you should use to select the parent object of your pendulum. By using this input, you are guaranteed to have a consistent gravity direction when the parent object rotates.

    Gravity Vector is a Point3 value which determines the direction if gravity which is affecting your pendulum. The -z axis of your pendulum tries to align itself with the vector you supply here. The length of that vector determines the strength of gravity. For example, a value of (10, 0, 0) would have gravity working in the positive X direction, with a strength of 10.

    The properties window is very similar to the other Spring controllers, except there are no presets currently, and you cannot generate offset values.