top of page

VFS Student Tools

Hello students and other viewers! I'm Roman (GD 76, Rage Quit), and after graduating from VFS I was tasked with creating tools for students in the Game Design program to speed up production. My tools are written with Python and are designed to be student friendly in Maya. As of now, my tools are used primarily for animation and controller modification, but I have plans for rigging tools in the future. This article will take you through each tool and how to use it, and will be updated whenever new tools are introduced. If you have suggestions for new tools or feedback on current tools, please contact Jeff. 
VFSTools_thumbnail_02.png

Introduction

All tools shown are currently in use by VFS students, icons and UI created by me
 
These tools are designed to be used with the VFS character rigs! 
Feel free to use these tools with your own projects, but using them on a rig outside of the VFS style of rigging isn't guaranteed to work yet. These tools should be able to work on other rigs but if you want them to work for sure, please match them with VFS course content as closely as possible. Some tools are still a work in progress.

Note: Right now the VFS rigs have IK controllers not sharing mirror behavior, therefore extra buttons needed to be created for them. I'm currently working on making mirror animation tools that can work for both FK and IK regardless of mirror behavior. 

 

Contents

Click on icons to be taken to their section. 
VFS Controller & Animation Editor
fksingle.png
FK Single Mirror
fkchain.png
FK All Children Mirror
fkchain_anim_red.png
FK All Children Inverse Mirror
iksingle.png
IK Single Controller Mirror
IKsingle_anim.png
IK Single Inverse Mirror

VFS Controller & Animation Editor

mixamo_editor_02.png
This is the current controller and animation editor. It can work with any imported animation that has an animated skeleton (for example, FBX files). With this tool, you can create FK controllers, modify the controllers, and modify imported animations.

What started off as just a simple Mixamo animation editor has begun to turn into a handy rigging tool. I'm currently adding more features to this editor, my planned updates include: 

Mirror controllers 
Move controllers 
Rename controllers
IK controllers

All features are subject to change as this is updated. 
This guide will show you examples of all settings being used. 
Select button to be taken to controller tool

Import & Modify Animations

website_importAnim.gif
Import skeleton
website_addControllersAnim.gif
Select root joint (ex: Hips) and click "Build FK Controllers"
website_modifyAnim.gif
Modify animations
The "Build FK Controllers" tool can be used to build controllers on a character in T-pose as well as an animated skeleton! It works by selecting the skeleton root joint and clicking the button. It will then create a set of FK controllers that can be used to modify existing animations, like those imported from Mixamo. It is recommended to use an FBX file but anything with an animated skeleton should work. It is also recommended to clear any namespaces in the skeleton. Animation MUST come from keyframes on the skeleton itself, this will not copy animation from other controllers. 

The resulting controllers can then modify animations without extra keyframes! For example, the spine can be rotated up, and the entire animation will play like normal with that offset. 

Instructions:

          1) Import skeleton  
             
            (ex: Mixamo FBX)
         
          2) Select root joint
             
            (ex: Hips)
         
          3) Click "Build FK Controllers"

Controller Size

website_controllersSize.gif
Change controller size
The "Controller Size" tool can be used to modify the scale of any selected/ all descending controllers. 
Instructions:

          1) Select controller(s)
  
          2) Enter a number you want the controller to be scaled by
            
          3) Click Selected/ All Children

Controller Shape

website_controllersShape.gif
Change controller shape
The "Controller Size" tool can be used to replace the shape of any selected/ all descending controllers. This tool works by selecting a shape from the drop down, and there are currently 30 types of controllers to choose from. 
Instructions:

          1) Select controller(s)
  
          2) Pick a shape from the drop down menu
           
          3) Click Selected/ All Children

Controller Orient

website_controllersOrient.gif
Change controller orientation by 90° on the Y axis
The "Controller Orient" tool can be used to modify the orientation of any selected/ all descending controllers. This can be used when a new controller isn't aligned properly and needs to be reoriented. This tool works by rotating just the CVs according to the rotation transform specified RELATIVE to the pivot point. In the above example, the controller is rotated 90° on the Y axis to align with the top of the shoulder. The controller orientation itself will NOT be changed, only the visual controller shape will. 

Instructions:

          1) Select controller(s)  
          2) Enter rotation values in X, Y, Z

          3) Click Selected/ All Children

Controller Color

website_controllersColor.gif
Change controller color
The "Controller Color" tool can be used to modify the color of any selected/ all descending controllers. This uses the default Maya color index, custom colors CANNOT be made from this tool. This tool works by selecting any of the colors in the menu below the tool. 

Instructions:

          1) Select controller(s)  
          2) Select a color from the color menu

          3) Click Selected/ All Children

Controller Thickness

website_controllersThickness.gif
Change controller color
The "Line Thickness" tool can be used to modify the line thickness of any selected/ all descending controllers. Warning: Overly thick lines can sometimes clip through geometries.

Instructions:

          1) Select controller(s)  
          2) Enter a number you want the line thickness to be scaled by

          3) Click Selected/ All Children

Controller Save/ Load

website_controllersSave.gif
Save current controller layout
website_controllersLoad.gif
Load saved controller layout
The "Save CTLS" & "Load CTLS" tool can be used to save/ load controller layouts. Saving works by getting all controllers in the scene (no matter the selection), getting their info, and saving it to a json file. Loading works by importing a saved json file containing a controller layout. In order to ensure proper loading, ensure controller hierarchies and names are the same and no extra controllers were added/ deleted. 

Instructions:

          1) Click "Save CTLS" button
          2) Choose save destination and enter file name

          3) Click "Load CTLS" button
          4) Choose saved controller layout
fksingle.png

FK Single Mirror

This tool is used to mirror animation from ONE FK controller to another. This works by copying keyframes and pasting them exactly to the destination controller. Can work on any controller in any hierarchy.

Instructions: 

          1) Select source controller  
              (ex: left shoulder)

          2) Shift select destination controller 
              (ex: right shoulder)

          3) Click button
fkchain.png

FK All Children Mirror

website_fkChain_preview.gif
This tool is used to mirror animation from a controller and ALL children under it. Outliner hierarchy MUST mirror, will not work on different hierarchies. 

Instructions:

          1) Select source top parent controller 
              (ex: left shoulder)

          2) Shift select destination top parent controller
              (ex: right shoulder)

          3) Click button
hierarchy_match_example.png
fkchain_anim_red.png

FK All Children Inverse Mirror

website_fkChainInverse_preview.gif
graph_editor.JPG
Example time range: 0 - 30 frames. Middle frame = 15
This tool is used to inverse mirror animation from a controller and ALL children under it. This tool works by copying animation from one side, pasting it to the other, and offsetting the keyframes. Outliner hierarchy MUST mirror, will not work on different hierarchies. Keyframe frame range MUST be an even number.
(examples: 0 - 24, 0 - 30)

Note: It is highly recommended you start your animation at frame 0. 


Instructions:

          1) Select source top parent controller
              (ex: left clavicle)  

          2) Shift select destination top parent controller
              (ex: right clavicle)

          3) Click button
hierarchy_match_example.png
iksingle.png

IK Single Mirror

website_ikSingle_preview.gif
This tool is used to mirror animation from ONE IK controller to another. This tool works by copying animation from the source controller, pasting it to the destination controller, and modifying transform & rotation values so it mirrors properly. Can work on any controller in any hierarchy.

Instructions:

          1) Select source controller  
              (ex: left foot IK)

          2) Shift select destination controller 
              (ex: right foot IK)

          3) Click button
IKsingle_anim.png

IK Single Inverse Mirror

website_ikSingleInverse_preview.gif
graph_editor.JPG
Example time range: 0 - 30 frames. Middle frame = 15
This tool is used to inverse mirror animation from an IK controller to another controller. This tool works by copying animation from the source controller, pasting it to the destination controller, modifying transform & rotation values, and offsetting the animation. Frame range MUST be an even number.
(examples: 0 - 24, 0 - 30)

Note: It is highly recommended you start your animation at frame 0. 


Instructions:

          1) Select source top parent controller
              (ex: left foot IK)  

          2) Shift select destination top parent controller
              (ex: right foot IK)

          3) Click button

© 2026 Roman Karoly

linkedin_red.png
insta_red.png
bottom of page