UX Framework

Colour Customisation Module

Interaction Pattern

Overview

To guarantee that all information conveyed via colour remains accessible to users with Colour Vision Deficiency (CVD). By decoupling semantic meaning (e.g., "Danger," "Safe," "Path") from fixed RGB values, the system prevents critical user errors and ensures that the difficulty of the experience is based on skill, not perceptual capability. It eliminates the cognitive load required to distinguish between low-contrast hues.


Implementation Specification

  • Semantic Abstraction: The code base must not rely on hard-coded colour values (e.g., Color.Red). Instead, it must utilise "Semantic Keys" (e.g., Color_Hostile, Color_Friendly, Color_Interactive) that reference a mutable, user-defined palette.

  • Validated CVD Presets: The system must offer pre-configured, tested colour palettes designed for specific vision profiles. These must include:

    • Protanopia (Red-Weak): Remaps Red/Green conflicts to Blue/Orange or High-Contrast Yellow.

    • Deuteranopia (Green-Weak): Remaps Green/Red conflicts to Blue/Gold.

    • Tritanopia (Blue-Weak): Remaps Blue/Yellow conflicts to Red/Cyan.

    • High Contrast: Converts the palette to pure Black/White/Neon for maximum visibility.

  • Real-Time Injection: Adjustments to these settings must update the material properties of 3D objects and UI elements instantly, without requiring a scene reload or application restart.

Colour Customisation Module Interface #1

1. Default Colour Scheme: the default state of the VR environment. The 'friendly' robot is green, the 'hostile' turret is red, and the 'interactive' door is blue. The 'Colour Customisation Module' UI is visible, with the 'Default' preset selected.

Colour Customisation Module Interface #2

2. Protanopia (Red-Weak) Preset: the system instantly remaps the colours to resolve red-green conflicts. The green robot becomes blue, and the red turret becomes orange, ensuring they are easily distinguishable for users with red-weak vision.

Colour Customisation Module Interface #3

3. High Contrast Preset: converts the entire palette to a high-visibility scheme of black, white, and neon colours. This is designed for maximum clarity, ensuring that all critical elements are immediately apparent, regardless of colour perception.


Reference Pattern

// 1. Define the Semantic Roles (The "What")
ENUM SemanticRole { Hostile, Friendly, Loot, Path_Marker }

// 2. Define the Presets (The "How")
CLASS ColorPreset {
    Name: String
    Palette: Dictionary<SemanticRole, Color>
}

// Example Preset for Deuteranopia (Green-Blind)
Preset_Deuteranopia = {
    Hostile: Blue,      // Replaces Red
    Friendly: Yellow,   // Replaces Green
    Loot: White,
    Path_Marker: Black
}

// 3. Application Logic
FUNCTION Apply_Preset(Selected_Preset):
    FOREACH Material in Game_Assets:
        Role = Material.GetTag("SemanticRole")
        New_Color = Selected_Preset.Palette[Role]
        Material.SetColor(New_Color)`

Dependencies

Colour Customisation Behaviour: The Colour Customisation Module is built upon the Colour Customisation behaviour, which provides the underlying logic and framework for allowing users to adjust colour settings and apply presets for improved visibility.

Previous
The Calibration Void