Tools

Wildstar

Many of these tools grew from my frustration with XSI and how poorly it handles things that Maya does well. Other tools are to assist with Wildstar’s pipeline.

“Fixes”

  • IKOff
    • Inserts an expression to keep IKBlend turned OFF for any bones not used with IK, for the entire scene.
    • XSI bone chains have half a dozen simple ways to break IK or FK, or both. Accidentally turning IK on for an FK chain is one of them.
    • Many older Wildstar rigs are primarily set up with bone chains, but only the main limbs need IK.
  • Lock/Unlock Transforms
    • Easy buttons to lock and unlock specific transforms of the selection
    • XSI has many more lock levels than maya, most of which don’t do anything useful for animators and techartists. These buttons conform the transform locks to useful states.
  • Symmetry Map Generator
    • XSI’s weight mirroring requires several manual steps before it will function, including mapping left side names to the right and vise versa. This never works properly with builtin tools on Wildstar rigs.
    • Nukes old symmetry data and replaces it with name-based data based on Wildstar’s null suffixes (Lf and Rt)
  • CopyAnim
    • XSI’s copy/paste of anim is primarily menu driven, or done through the fcurve Editor. Doing this with many objects almost never works as intended.
    • This copies animation from the first selected object to the second. Pickwalk can be used to quickly transfer animation between similar sets of objects.
  • PoseConstraintHider
    • XSI’s pose (parent in Maya) constraints are exposed to the channel box and easily keyed.
    • Transferring animation between characters with keyed pose constraints can break the destination rig.
    • Hides and Locks (or unhides and unlocks) all pose constraints in the scene. Locked constraints won’t receive animation from the importer, and won’t have more bad data when exported.
  • PlotCurrentRange
    • XSI’s Plot (Bake in Maya) tool keeps the key range that it was first run on.
    • This button plots animation ranges in the same way as maya, based on the visible timerange.

Helpers

  • RigScaleX
    • Sets selected objects to a chosen X scale and resets Neutral Pose without affecting the rig controls visually.
    • XSI has a “Neutral pose” feature that zeroes out transforms.
    • The danger of the neutral pose is your rig can be scaled inconsistently
  • MultiplyPoseX
    • Multiplies transform values to push or subdue a pose
    • Created to adjust face poses/phonemes
  • Nail
    • Creates global locators with the same transforms as the selection, and constrains the objects to the nulls
    • Great for adjusting a parent without disturbing children, or rotating all objects in a chain by a specific amount in local space.
  • IkBias
    • Creates a single parameter on a 3bone IK chain that shifts the chain up and down.
    • Works with “Spider” and “Beast” limb orientations.
  • Convert2Nulls
    • Replicates selected bone chain with nulls, and attempts to match their control shapes.
    • Replacing buggy bones with simple nulls makes the rig more stable and enables position keys.
  • POS Null
    • Creates an identical but invisible null above selected objects to allow constraining the POS nodes but still allow animation on the controls.
  • 3PointNull
    • Uses a selection of 2-3 verts to position and align a new null in the center of an object, with its axis aimed down the length.
    • Great for finding the center of frozen, but round geo (eyeballs, pistons etc).
  • CleanDelta
    • XSI’s “Delta” concept saves all changes to a referenced model in an easily accessible, but difficult to edit property. Powerful but easy to break.
    • Removes often-broken keys and other edits to rigs with the press of a button.
  • AlignBoneNulls
    • XSI bone chains are bookended by a Root and End effector null. These nulls were rarely aligned or named in a useful manner. This button did both.

Facial Tools

Being the only Sr Tech Artist/Animator on Wildstar, one of my Primary duties was take ownership of over 90 facial assets. This included influence placement and weighting, making phonemes, tuning UV eye behaviors, and placing/adjusting player customization limits. The interaction of weighting, poses, and customization slider combination resulted in many instances of mesh penetration which needed to be fixed. For my own sanity I created a small toolset to manipulate the customization values and recall them to hunt for the plethora of failure conditions that our expressive faces could reach.

  • SetLimits
    • Takes the current transforms and saves them into a customization limits property. Min and Max limits are saved based on if the current value is smaller or larger than default.
  • ApplyLimits
    • Applies the min or max values to the selection. Can be applied to pos/rot/scl individually. Same script is used to reset to defaults.
    • Once applied, the MultiplyPose buttons can be used to adjust the pose, then it can be saved with SetLimits.
  • Clean limits
    • Removes all limit values that may have been accidentally saved, but arent needed for a specific node.
  • Various problem pose buttons
    • Slider combinations that consistently break faces were saved for quick recall.
    • Pos/Rot/Scl can be randomized as well.

Larger Tools

  • CinerigFace
    • The first few Cinematic faces were created manually, introducing errors and incompatibilities each time I created one. To speed up my process and make new rigs more consistent I developed an adjustable template rig, complete with weighted skinsocks to accelerate skinning.
    • Guides are first transformed to match the new face. Controls and skinsocks follow the guides.
    • Control Neutral poses are set, making their base positions fit the new mesh.
    • Guides are deleted, allowing the Control rig’s constraints to take over.
    • Skinning is copied from included skinsocks to give a start point for weighting.
  • MotionTransfer
    • Similar to the tool created for the WoW team, the Motion Transfer rig and scripts allow players to import character animation between characters with different proportions.
    • A Motrans rig is imported and resized to the current character. Constraints are added depending on if the character is to export or import animation.
    • The Motrans rig has adjustment parameters that are automatically tuned to the character’s size when attached, but can then be modified after animation is imported. This allows the animator to fix bad pops and push poses.
    • Tunable Parameters: CharacterScale, AnkleHeight, PoleVectorFollow, ArmAngle, ArmScale, LegWidthScale.
  •  FootRig
    • Replaces XSIs built-in footroll scripted operator with a constraint and expression based version that is 100% compatible with the old version.
    • First pass creates adjustable tilting planes, second pass applies the rig to selected bones and creates controls.
  • SkinSock
    • Creates transformable cylinders that represent skinning volumes for every selected bind null. Wildstar uses null locators instead of bones for skinning, so default skinning only works by distance, not bone volume.
    • Once cylinders are tweaked, the cylinders are then weighted to their original nulls, and combined so that weights can be copied from this skinsock to final geo.
  • ChainMaker
    • Allows the easy creation and manipulation of a bone chain by dragging nulls around.
    • Automatically aims and lengthens joints (XSI cant change or key Positions without breaking bones, must adjst “length” parameter)
    • Keeps all joints in the chain aligned to a plane so IK calculates properly.
  • MakeBindNulls
    • Duplicates, renames, and constrains a selection of “CTRL” objects as “BIND” nulls.
    • Replicates intended parenting, even if rig has non-CTRL nodes inbetween controls.
  • MoveATTS
    • Moves attachment points, emitters and other game data nodes from a source model to destination, based on names.
    • All Wildstar rigs are either made manually or duplicated and reshaped from a similar creatures. This tool was simple way to ensure a rig has all needed data.
  • Quicklag
    • Recreation of a maya animation tool that I created for the WoW team
    • Creates a tunable cascade of “breaking” rotation down the length of a null or bone chain.
    • Can be used with looping and nonlooping animation.
  • AnimFlagChecker
    • Conforms an entire scene’s animation flags (Looping, Rarity, BlendTime etc) to values found in an animator-created CSV file.
    • Values can be forced or ignored if they aren’t required to be a specific value.
  • PlotToFile
    • While inspecting a possible XSI to Maya transition, it became quickly apparent that neither application could handle the sheer amount of animation data required to pass between them, and 32 bit XSI couldnt even plot an entire character without running out of memory.
    • Created a simple intermediary text format for plotted animation that could be imported or exported from either package.
    • Since no keys were being created when exporting, the process was far faster than XSI’s plotting, with the added advantage of not crashing after hours of processing.

Titan

Blizzard’s MMO Titan was extremely ambitious. I was pushed farther than ever with my rigging skills, and the same demanding animation team had need of new tools to streamline their workflow.  It’s been a few years since I’ve seen these tools so I may be missing some key features.

  • FKIKSnapper
    • A semi-standard snapper with polevector offset, pose keying, and IK state detection.
  • GlobalPose2
    • A powerful pose and animation storing tool that can apply motion to controls in global OR local space.
    • Works as a clipboard between maya instances, shelf button, or pose file export
    • Supports modifier keys to apply in local mode, or only apply Translate/Rotate changes.
    • Works with Layers and Namespaces
  • SkelRotSculptor
    • A powerful joint adjustment tool that aligns bones to their plane of motion
    • Can snap orientation of bones to other bones, with a snap angle threshold
    • Quick mirror button (suffix based) that aligns preexisting bones with their opposites.
    • Conversion of Rotation to JointOrients and back.
    • Detach and Reattach joints from skinning to allow adjustment of a bound skeleton.
  • QuickSkin
    • Created to allow weapon artists rig up their own rigid geometry
    • Select any joints, and any geometry or components to skin them together
    • Handles all the tedious skincluster, influence, and bindpose logic
    • Weights selection equally to the first 1-4 selected bones, all other bones are added to the cluster without weight.
  • RotateAroundLast
    • A quick and dirty script to allow a former MAX animator to rotate a selection around a defined object in its own local space.
  • SuperCopy/Paste
    • Greatly simplifies animation Copy/Paste in Maya.
    • Avoids the issues of pasting to objects in the wrong order, and channels getting the wrong data.
    • Auto-select of destination objects, if they exist. Can work on a subset of selected objects without breaking or pasting to the wrong object/channels.
    • Name-based. Supports Namespace and AnimLayers.
  • TRAXXOR
    • Quick script to convert anims to/from TRAX clips
  • SkinFlooder
    • UI that piggybacks on top of the paint skin weights tool.
    • Allows 1 button “flood” operation on many selected influences.
    • Easy locking of influences.
    • Workarounds for Maya’s terrible normalization behavior.

World of Warcraft

  • GlobalPose
    • A simple tool that stored the global position/rotation of selected objects so animators could change rig setup and get their pose back without popping.
    • GlobalPose2 was created for Titan using python instead of Mel, and added many new features
  • Offset Keys
    • Quick shelf button that allows the animator to adjust the visible character’s pose, and have all curves adjusted behind the scene to match the new pose.
    • This was developed before our team had access to anim layers.
    • dfemChannel<Original – Offset> dfemChannelOffset
  • Anim Key Warper
    • A similar concept to the Offset Keys tool, made somewhat obsolete by animation layers. This small UI can taper off posed keys before and after the current posed frame.
      animkeywarperwarpedrun
  • Anim Name Cleaner
    • This tool attempted to correct sloppy naming/capitalization by matching tokens between existing filenames and a list of “good” names.
    • wowrig
  • Quicklag
    • A shelf button that lags a chain of bones over time. The lag behavior is tunable in realtime by manipulating a temporary rig control’s lag and smoothing attributes.
    • Wind/Travelspeed can also be simulated on a stationary character by moving and even animating the temporary control.
    • Once the desired effect is achieved, the animation is baked using the same shelf button, or the control can be deleted without any permanent changes to the rig.
    • quicklag
  • Bouncymatic
    • A tool that adds simulated animation to a rig that doesn’t have dynamics built in.
    • The tool would temporarily hide the selected controls and make duplicates for dynamic tweaking.
    • Once the effect is appealing or unwanted, the animation can be baked or bouncy constraints removed.
    • bouncy bouncyball
  • Rotation Snapper
    • A compact UI that allowed the user to snap or quickly rotate objects or keys to specific values. This helped with rigging and mechanical spinning type animation.
    • rotsnap
  • WoWRig
    • A tiny multi-tabbed window that enables custom “scripted” rigs to be created within hours instead of days, usable by even the most technically-challenged animators.
    • Rig creation is split up based on inherent wow tech requirements. Joint creation/orientation is automatic, but tunable.
    • Control shapes are automatically fit to the skeleton, and can be tuned in a linked or isolated fashion.
    • Any previously saved rigs can be loaded up with a click, modified and rebuilt very quickly.
    • wowrig
  • Additional Rigging Tools
    • A suite of maya tools that helped speed up tedious processes and fix common errors automatically.
    • Color sets were used to simulate WoW’s rigid to smooth skin stitching tech, and could be pushed to 3dsMAX for export.
      riggingtools
Advertisements