Week Six - Putting my car rigging Skills to the Test
So what am I Rigging now - As a side Project to the Main car I am Now Going to Attempt to Rig a Vehicle Based Crane
See Image Below for the Crane i am Rigging
The Plan
The Plan is to spend one Week rigging this Vehicle, Finish the Other Car Off, and Start my Character This week. But why have i started another Car, Well Basically I wanted to show of Two sides of rigging, Skinning the Main Vehicular body of the character and Rigging the Crane side of the Vehicle
Bones and Joints
I set up the Main vehicle part of the car Similarly to the Previous car I had rigged, Wheels, Doors, Support Suspensions. I then had to consider how to rig the Crane, I needed the main Body to be able to rotate, And the Crane Arm to both Rotate In the Y axis
Points to Consider
Main Crane Body needs to Rotate in X axis and Control whole Movement of Crane
Crane Arm needs to be Rotatable in X and Z axis
Crane Arm needs to Extend in Correct Axis
Piston that supports Crane Extension and Rotation needs to Correspond to Correct Movement
Bone Structure
In the final Skeleton structure i have added bones for pretty much everything i can think off
F_R_Wheel_JNT
B_R_Wheel_JNT
F_L_Wheel_JNT
B_l_Wheel_JNT
F_R_Support_JNT
B_R_Support_JNT
F_L_Support_JNT
B_l_Support_JNT
F_R_door_JNT
F_L_Door_JNT
Crane_Rotation_Central_X_JNT
Piston_Rotation_Z_JNT
Piston-Extension_JNT
Crane_Arm_Rotation_Z_JNT
Controllers
Controllers
I set up my Controllers based Purely on Preference, I like for things such as my Suspension, Steering and Doors to have Controllers based in GUI's that I can move and see what they are doing, Then for things that have major Movement I prefer to have custom attributes, In This case i am rigging the Crane part of the Crane to Custom Attributes.
Weight Painting
I had to set up the Crane Arm in a way , It was both Rotatable (so that you had height) and it could be extended
The Black Arrow
The Black Arrow Represents the vertices that are Painted/Constrained/parented to the Crane_Arm_Rotation_Z bone
I then set up the Second Part of part of the Crane extension (its called something like a boone?)
i Set this up exactly the same, Selected parts of the mesh that you want to be bound to the correct joint - In this Case Crane_Extension_JNT
(in the above Image you can see I have already set up the extension and Rotation correctly)
I did this by setting up an SDK for the Rotation in the Z axis - And attached this to a Custom attribute on my Controller, This was the easy part, From here i then had to set up an SDK for my Extension - the issue is with this is the Arm sits and an Angle - meaning its translating in 2 axis, as well as the fact it has to work in conjunction with the rotation
1) I set up and SDK for when the Arm has 0 rotation on it
2) This SDK as linked to the X and Y Translation of the Crane_Extension_JNT (this was the driven object)
3) I SDK the joint to a Custom Attribute (the Driver, Crane Arm Extension) I then set it up s it translates from 0 - 50 and correspond in all axis, because of the hierarchy of the Joints even when the Joint Rotation is in a different Position it still works (1 Win for me)
The Piston
The piston which would support the Crane - needs to work in a similar way,, The main difference is that the Piston will extend based upon a staying in the same location when the crane is at maximum point of rotation which is 50 Degrees - You can see how this works Below
Bones and Joints
I set up the Main vehicle part of the car Similarly to the Previous car I had rigged, Wheels, Doors, Support Suspensions. I then had to consider how to rig the Crane, I needed the main Body to be able to rotate, And the Crane Arm to both Rotate In the Y axis
Points to Consider
Main Crane Body needs to Rotate in X axis and Control whole Movement of Crane
Crane Arm needs to be Rotatable in X and Z axis
Crane Arm needs to Extend in Correct Axis
Piston that supports Crane Extension and Rotation needs to Correspond to Correct Movement
Bone Structure
In the final Skeleton structure i have added bones for pretty much everything i can think off
F_R_Wheel_JNT
B_R_Wheel_JNT
F_L_Wheel_JNT
B_l_Wheel_JNT
F_R_Support_JNT
B_R_Support_JNT
F_L_Support_JNT
B_l_Support_JNT
F_R_door_JNT
F_L_Door_JNT
Crane_Rotation_Central_X_JNT
Piston_Rotation_Z_JNT
Piston-Extension_JNT
Crane_Arm_Rotation_Z_JNT
Controllers
Controllers
I set up my Controllers based Purely on Preference, I like for things such as my Suspension, Steering and Doors to have Controllers based in GUI's that I can move and see what they are doing, Then for things that have major Movement I prefer to have custom attributes, In This case i am rigging the Crane part of the Crane to Custom Attributes.
Weight Painting
I had to set up the Crane Arm in a way , It was both Rotatable (so that you had height) and it could be extended
The Black Arrow
The Black Arrow Represents the vertices that are Painted/Constrained/parented to the Crane_Arm_Rotation_Z bone
I then set up the Second Part of part of the Crane extension (its called something like a boone?)
i Set this up exactly the same, Selected parts of the mesh that you want to be bound to the correct joint - In this Case Crane_Extension_JNT
(in the above Image you can see I have already set up the extension and Rotation correctly)
I did this by setting up an SDK for the Rotation in the Z axis - And attached this to a Custom attribute on my Controller, This was the easy part, From here i then had to set up an SDK for my Extension - the issue is with this is the Arm sits and an Angle - meaning its translating in 2 axis, as well as the fact it has to work in conjunction with the rotation
1) I set up and SDK for when the Arm has 0 rotation on it
2) This SDK as linked to the X and Y Translation of the Crane_Extension_JNT (this was the driven object)
3) I SDK the joint to a Custom Attribute (the Driver, Crane Arm Extension) I then set it up s it translates from 0 - 50 and correspond in all axis, because of the hierarchy of the Joints even when the Joint Rotation is in a different Position it still works (1 Win for me)
The Piston
The piston which would support the Crane - needs to work in a similar way,, The main difference is that the Piston will extend based upon a staying in the same location when the crane is at maximum point of rotation which is 50 Degrees - You can see how this works Below
Window
I add the Cockpit_Window_JNT into the Hierarchy, specifically the Crane_Operator_Door_JNT - This means the Window will rotate with the door correctly - I do this with the Rest of the Vehicle adding corresponding joints into the Correct Hierarchy's
I then create the Controllers for the doors so that they will move correctly in position with the door - which is done by Constraining the GUI and Controller to the corresponding Joint in the Hierarchy in the Out liner
The Main Vehicle
The Main vehicle consists of allot of different items that need to be rigged correctly
Front Wheels - Suspension
The suspension is quite easy to set up - I started by creating a GUI and Slider to correspond to the moving suspension - Made using the EP Curve tool and a single NURB's Circle - The Nurbs circle will act as the Controller for now - I then freeze Transformations - Which means the Zero point will always correspond to the center of the wheel - I Then limit the Translate options for the Controller - as it only needs to only within the GUI The next step From here I then set up the Suspension using SDK's - i Set these up in the Y axis - AKA up and Down and then use the same sett ups and setting ion the 3 remaining Wheels
Turning - Turning is obviously quite important, especially with a Vehicle
GUI and Controller
The GUI is a simple Arrow shape which shows which direction the wheels will turn in, Again I use a NURBS Circle for the main Controller this will translate in the X axis - AKA left and Right
Once this has been created its a case of Using SDK's on the Wheel Joints to create the Rotation this is done by Using the Controller you just crated as the Driver and using X translation as the slider , The Next step is to use the corresponding wheel Joint and using Y rotation as the Driven object of the wheel
Driver - Steering Control
Driven - ?_?_Wheel_CTRL - Front ( ? refers to the Front or Back Position and Left or Right )
Images Above and Below show the Slider and SDK's working Correctly
Movement and X Rotation
The next big thing to set up are the Wheels, There are a few different ways to do this but for me the way I like to do is Orient Constrain the Controller, to the correct Axis for the forward/Reverse rotation which is the X axis, You also have to make sure this is to the Correct corresponding joint
Conclusion
Although i am happy with the final results of my RIG However I would of like to of added more features,
Gear Control - Through the gear Stick
Steering Wheel - So that the steering wheel moves in accordance with the wheel and Steering controller
Joystick Control in the crane Cockpit that works in conjunction with the Cranes Rotation, Arm Extension and Rotation.







