Skip to main content

User Representations Overview

Description​

User representations define how a user is rendered and perceived in a HoloMIT session: avatar, webcam window, volumetric capture, spectator, voice-only, etc.
They are built around an extensible system that allows you to register new representation types at runtime, customize their setup logic and UI metadata, and connect them to different capture pipelines.

The core building blocks are:

  • UserRepresentationType – strongly-typed IDs for each representation (Avatar, Webcam, HoloCapturer, etc.).
  • IUserRepresentationHandler – plug-in logic that configures the scene for a given representation.
  • RepresentationHandlerRegistry – central registry to bind each type to its handler.
  • RepresentationSetupContext – context object with all information required to configure a player’s representation.
  • RepresentationUIRegistry and RepresentationUIData – metadata for UI (icons, labels, descriptions, dropdown options).

On top of that, you will typically have pipelines (derived from BasePipeline) which define how data (RGB-D, PM, audio, etc.) is captured and streamed. The RepresentationSetupContext.UserSourceType property links a representation with the underlying pipeline source type.

Typical Workflow​

  1. Choose or create a representation type
    Use existing ones (AVATAR, WEBCAM, HOLOCAPTURER_DEPTH, …) or create custom ones via UserRepresentationType.CreateAndRegister.

  2. Implement the handler
    Implement IUserRepresentationHandler.Setup(RepresentationSetupContext context) to turn on/off objects, configure cameras, attach pipelines, etc.

  3. Register the handler
    Register your handler in RepresentationHandlerRegistry.Register(type, handler) so the system can dispatch to it at runtime.

  4. Register UI metadata
    Register icon, display text and description in RepresentationUIRegistry.Register(...) to expose it in dropdowns or menus.

  5. Hook from your UI / Lobby / PlayerManager

    • Build dropdowns using RepresentationUIRegistry.GetDropdownOptions()
    • Resolve the type from the user’s selection (by display name or ID)
    • Retrieve the handler from RepresentationHandlerRegistry and call Setup(context).

See Also:​