KerbalPose is a comprehensive character customization and animation framework for Kerbal Space Program. Edit bones in real-time, create custom animations, attach cosmetics, and more. Fully compatible with FreeIVA and other popular mods.

Download KerbalPose

Download v1.02
VirusTotal
downloads
Blender Plugin
VirusTotal
downloads
NexusMods
Source Code
Changelog

v1.02 — March 13, 2026

  • UI Improvements - Localization to multiple languages
    German, English, Spanish, French, Italian, Japanese, Portuguese, Russian, Ukrainian, Chinese

v1.01 — March 11, 2026

  • PluginData path fix for ModuleManager conflict
  • F2 HUD toggle fix

v1.0

  • Initial Release

Features

Installation

  1. Download the latest release from the link below
  2. Extract to your KSP GameData/ folder
  3. The folder structure should be: GameData/KerbalPose/
  4. Launch KSP and press Ctrl + J to open the editor
Hotkey
Press Ctrl + J while on EVA to open the KerbalPose editor.

Bone Editor

The Bone Editor is the core of KerbalPose. It allows you to modify any bone in the kerbal's skeleton in real-time.

Interface

Bone List (Left Panel)

Lists all bones in the kerbal's skeleton. Use the filter box to search.

  • Click — Select a single bone
  • Ctrl + Click — Multi-select bones
  • Green — Selected bone(s)
  • Yellow — Bone has active offsets

Edit Panel (Right Side)

Three edit modes available via tabs:

  • Position — Offset bone location (local space)
  • Rotation — Rotate bone (Euler angles)
  • Scale — Scale bone (multiplier from baseline)

Multi-Bone Editing

Select multiple bones with Ctrl + Click to edit them simultaneously. Values are applied relatively to each bone's original transform.

Saving & Loading

Note
Saved dimensions are tied to the kerbal's name. If you rename a kerbal, you'll need to reassign their custom dimensions.

Pose Clips

Pose Clips let you create reusable animations by recording bone transforms over time.

Recording a Clip

  1. Switch to the Pose Clips tab
  2. Click New Clip and set duration
  3. Position scrubber at time 0
  4. Pose your kerbal in Bone Editor
  5. Click Add Keyframe
  6. Move scrubber forward, pose again, add keyframe
  7. Repeat until animation is complete
  8. Click Save Clip

Playback Controls

Control Description
Play Start animation from beginning
Loop Toggle continuous loop
Speed Adjust playback speed multiplier
Blend Duration Transition time into/out of clip

Clip Properties

Property Description
priority Higher number overrides lower priority clips
weight 0.0 to 1.0 — Influence of the clip
layer Animation layer for additive blending
interruptible If true, can be stopped by higher priority clips

Key Bindings

Bind bone transformations to hotkeys for interactive poses and emotes.

Creating a Binding

  1. Select bone(s) in Bone Editor
  2. Switch to Key Bindings tab
  3. Click Add Binding
  4. Press a key to assign it
  5. Set mode and configure transform
  6. Set interpolation (recommended)

Binding Modes

Mode Description
Toggle Press once to activate, again to deactivate
Hold Active only while key is held
Offset Adds to current animation (additive)
Set One-shot immediate transform
Cycle Press to cycle through multiple states

Character Customization

Cosmetics System

The Customization tab lets you attach custom meshes to kerbals.

Cosmetic Types

Light Attachments

Attach dynamic lights to any bone:

Blender Plugin

KerbalPose includes a Blender addon for exporting meshes.

Installation

  1. Download kerbalPoseBlender.zip
  2. In Blender: Edit → Preferences → Add-ons
  3. Click Install... and select the zip
  4. Enable the addon

Export Workflow

  1. Create mesh in Blender
  2. Weight paint to bones (for skinned meshes)
  3. Select mesh
  4. Set the name
  5. File → Export → KerbalPose Mesh (Multiple files will be generated for the models folder)
  6. Click Export

Manifest.cfg

The manifest.cfg defines cosmetic and texture mods.

Folder Structure

GameData/KerbalPose/Cosmetics/
└── YourModName/
    ├── manifest.cfg
    ├── Models/
    │   └── your_cosmetic_exported_blender_files_go_here
    └── Textures/
        ├── texture1.png
        └── texture2.png

Cosmetic Configuration Reference

Important
Every cosmetic mesh must have at least one bone. The skeleton root bone is required for the cosmetic to attach and animate properly. Static meshes without bones are not supported.

Simple Cosmetic (Single Mesh)

COSMETIC_MOD
{
    name = My Cool Hats
    author = YourName
    version = 1.0
    description = A collection of stylish hats

    COSMETIC
    {
        // Required: Unique identifier
        id = fancy_hat
        
        // Required: Display name in UI
        displayName = Fancy Hat
        
        // Required: mesh name from the models folder inside your cosmetic folder (check existing models for example)
        mesh = fancy_hat
        
        // Optional: Default attachment bone
        defaultBone = bn_upperJaw01
        
        // Optional: Shader name (default: KSP/Bumped Specular)
        shader = KSP/Bumped Specular
        
        // Optional: Base color tint (RGBA 0-1)
        color = 1.0, 1.0, 1.0, 1.0
        
        // Optional: Multiple texture options user can switch between (no extension, just name)
        TEXTURE_OPTION
        {
            name = Red
            texturePath = Textures/hat_red
            normalMapPath = Textures/hat_red_nrm
        }
        
        TEXTURE_OPTION
        {
            name = Blue
            texturePath = Textures/hat_blue
        }
    }
}

Advanced Cosmetic (Multi-Mesh)

COSMETIC_MOD
{
    name = Full Outfit Pack
    author = YourName
    version = 1.0
    description = Complete outfit with multiple parts

    COSMETIC
    {
        id = space_suit
        displayName = Space Suit
        defaultBone = bn_spine01
        

        
        // Multi-mesh cosmetic - each part with its own offset
        MESH_ENTRY
        {
            meshName = suit_body
            positionOffset = 0, 0, 0
            rotationOffset = 0, 0, 0
            scale = 1.0
            
            // Per-mesh materials
            MATERIAL
            {
                name = Main
                shader = KSP/Bumped Specular
                diffuseColor = 1.0, 1.0, 1.0, 1.0
                texturePath = Textures/suit_body
                normalMapPath = Textures/suit_body_nrm
            }
            
            MATERIAL
            {
                name = Details
                shader = KSP/Specular
                texturePath = Textures/suit_details
            }
        }
        
        MESH_ENTRY
        {
            meshName = suit_helmet
            positionOffset = 0, 0.1, 0
            rotationOffset = 0, 0, 0
            scale = 1.0
        }
        
        // Texture options apply to all meshes
        TEXTURE_OPTION
        {
            name = Standard
            texturePath = Textures/suit_white
        }
        
        TEXTURE_OPTION
        {
            name = Orange
            texturePath = Textures/suit_orange
        }
    }
}

Available COSMETIC Fields

Field Required Description
id Yes Unique identifier (no spaces)
displayName Yes Name shown in the UI
mesh For single mesh Path to .mu mesh file
defaultBone No Default attachment bone name
shader No Unity shader name (default: KSP/Bumped Specular)
color No Base color tint "R, G, B, A" (0-1)

TEXTURE_OPTION Fields

Field Required Description
name Yes Name shown in texture selector
texturePath Yes Path to diffuse texture
normalMapPath No Path to normal/bump map

MESH_ENTRY Fields (Multi-Mesh)

Field Required Description
meshName Yes Name of mesh file (without extension)
positionOffset No Local position offset "X, Y, Z"
rotationOffset No Local rotation "X, Y, Z" (Euler degrees)
scale No Uniform scale multiplier

Texture Mod Configuration

TEXTURE_MOD
{
    name = Alternative Faces
    author = YourName
    version = 1.0
    description = Custom face textures

    TEXTURE_SET
    {
        id = zombie_face
        displayName = Zombie Face
        
        // Diffuse textures (color/albedo)
        texHead = Textures/zombie_head
        texBody = Textures/zombie_body
        texArms = Textures/zombie_arms
        texLegs = Textures/zombie_legs
        texHelmet = Textures/zombie_helmet
        texEyes = Textures/zombie_eyes
        
        // Normal maps (bump/normal) - optional
        texHeadNormal = Textures/zombie_head_nrm
        texBodyNormal = Textures/zombie_body_nrm
        texArmsNormal = Textures/zombie_arms_nrm
        texLegsNormal = Textures/zombie_legs_nrm
        texHelmetNormal = Textures/zombie_helmet_nrm
        texEyesNormal = Textures/zombie_eyes_nrm

    }
    
    // Multiple texture sets in one mod
    TEXTURE_SET
    {
        id = robot_face
        displayName = Robot Face
        texHead = Textures/robot_head
        texBody = Textures/robot_body
        // ... etc
    }
}

TEXTURE_SET Fields

Field Required Description
id Yes Unique identifier
displayName Yes Name shown in UI
texHead No Head diffuse texture path
texBody No Torso diffuse texture path
texArms No Arms diffuse texture path
texLegs No Legs diffuse texture path
texHelmet No Helmet/visor texture path
texEyes No Eye texture path
texHeadNormal No Head normal map path
texBodyNormal No Body normal map path
texArmsNormal No Arms normal map path
texLegsNormal No Legs normal map path
texHelmetNormal No Helmet normal map path
texEyesNormal No Eyes normal map path

Troubleshooting

Something isn't working properly?
Press F5 to quicksave, then F9 to quickload to fix it.
Copy Between Kerbals
Use the Settings tab to copy all bone offsets from one kerbal and paste to another. Great for twins!
IVA Support
Cosmetics work in IVA (inside vessels) too! The mod detects seated kerbals and attaches cosmetics automatically. Fully compatible with FreeIVA.
Please do not redistribute this mod on other websites. Always link to this official page or NexusMods for downloads.