Objective: Prepare the stylized character for clean, expressive animation with squash & stretch capabilities.
Steps:
Received the textured stylized character and verified the correct scale → applied transforms (scale = 1, rotation = 0).
Built a base control rig using Blender’s Rigify sample chains, carefully placing each bone chain for proper articulation.
Added custom bones for shoulder pads, cape, weapons, and a dedicated root bone for clean rotation.
Symmetrized hands and legs and created a control hierarchy for stylized movement (non-connected bones for squash & stretch, but properly parented and named).
Generated control objects and adjusted widgets for animator usability.
Skinned the character and refined paint weights to ensure precise deformations.
Base rig
Control rig
Bone Hierarchy
Paint weight
Objective: Create a clean, stylized animation set optimized for performance and readability.
Steps:
Created custom properties to show/hide specific controllers and mesh. This enabled me to focus on individual rig parts while animating.
Used reference material but pushed beyond it for stylized exaggeration.
Maintained minimal keyframes for performance; no redundant keys.
Saved each animation as a properly named NLA strip for clarity.
The animation set included:
Idle
Run (4 directions)
Attack combo (4 variations)
Objective: Ensure a clean, predictable pipeline from Blender to Unity.
Steps:
Joined body parts; ensured no unapplied transforms.
Verified NLA strips naming
exported selected objects only.
Created a clean Blender to Unity FBX export preset,
Forward = +Z, Up = Y
Apply transforms ON
Only deform bones, no leaf bones
Sampling rate = 1 for full frame capture
Simplify = 0.1 to preserve curves and prevent unexpected results
Tested FBX in Autodesk FBX Review before Unity import.
Objective: Set up the model, rig, materials, and animator controller for gameplay.
Steps:
Imported FBX into Unity and created a URP lit shader with tint, metallic, and roughness textures and value sliders.
Applied textures and shaders to the character.
Ensured proper scale (1 cm in Blender = 1 unit in Unity).
Animation Type: Generic (custom rig).
Created an Avatar from this model.
Set 4 bones of influence per vertex.
enabled the optimized GameObject, exposing only the weapon bone for runtime attachment.
Choose non-root for in-place animations.
Compared memory usage for attack 3 animation was:
None = 305.1 KB
Keyframe reduction = 80.8 KB
Optimal = 46.8 KB
Choose the optimal because it always gives a better result
Adjusted error tolerances: rotation = 0.5, position = 10, scale = 100 (because the animation was not scaled).
Imported weapon separately with pivot at the handle.
Applied textures and parented to the weapon bone.
Objective: Build a functional combo & movement system.
Steps:
Created Animator Controller.
Added all animations; enabled loop where needed (Idle, Run).
Built a blend tree for directional movement.
Implemented attack combo system:
Continuous LMB press triggers the Attack1 to Attack4 sequence.
Floats, bools, and triggers are used for transitions.
Exit times and conditions were adjusted for smooth combo playback.