docs.unity3d.com
    Show / Hide Table of Contents

    Basic concepts

    To successfully create configurator applications in Unity, it is important to understand how the Editor organizes imported models and product information.

    Configurators

    The Configurator is the main component of Forma architecture. It lets you manage other components, including:

    • The Product that you want consumers to be able to configure
    • The Staging environment that you show the product in.
    • The Runtime UI that consumers will use to make configuration selections.
    • Provider Engines that run the logic that the Configurator uses in the background.

    Configurator components
    Configurator components

    Products

    Product components
    Product components

    Variant tables

    Variant table components
    Variant table components

    Variant structure

    Variant structure
    Variant structure

    Configuration

    Configuration structure
    Relationship between Configuration and assignments

    Staging

    Each staging element (such as the camera, environment, and animations) is created from a list of commands. The commands define custom behaviors that the application executes under specific conditions, defined by a rule.


    Staging components

    Staging components

    Features, Variants, and Packs

    The system uses Features, Variants, and Packs to organize your product in the configurator interface.

    Features

    Any characteristics of a Product that you want users to configure, name, describe, or identify with a marketing code are defined as Features in Unity Forma. A feature can be either a Variant or a Pack.

    Feature Sets

    Feature Sets group different Features. If the set groups Variants, it is known as a Variant Set. A Pack Set groups different packs.

    Variant Sets

    A Variant Set is a collection of Variants that are mutually exclusive. For example, these are Variant Sets for a car configurator:

    Variant Set Included Variants
    Rims 17" Aluminum
    17" Alloy
    18" Alloy
    Carpaints Red
    Orange
    Gray
    First aid kit On
    Off

    Pack Sets

    Pack Sets are collections of Variants that you can use to define different themes for a product. For example, a car configurator might have these Pack Sets:

    Pack Set Included Variants and Packs
    Winter On (Pack)
    Heated seats (Variant)
    Heated steering wheel (Variant)
    4-zone AC (Variant)
    Off {empty}
    Black Version 1 (Pack): Black side mirrors (Variant)
    Version 2 (Pack): Black side mirrors (Variant) and Black rims (Variant)
    Off {empty}

    Packs

    Packs are collections of Variants that you can trigger in the same way that you do typical Variants.

    Packs do not directly affect how your Product appears in the configurator. They collect the Variants you assign to different parts of the Product into convenient groups.

    For example, a Winter Pack for a car could include the following Variants:

    • Heated seats (Variant)
    • Heated steering wheel (Variant)
    • 4-zone AC (Variant)

    Each Pack has the following:

    • A name
    • A description
    • A marketing code

    In the Configurator hierarchy, Packs are between Variant Tables and the Rule Engine that defines Variant logic. They are useful for organizing features in simple configurators.

    If your configurator is more complicated, you can use additional logic in the Rule Engine to expand or restrict Pack behavior. For example, you can create rule that states that if the Winter Pack is active, consumers can only select blue and white car paints.

    Forma architecture lets you create Packs that contain other Packs and Variants. Packs contain a collection of type List, which supports both Packs and Variants.

    Provider Engines

    Provider engines relay additional information to Forma in response to requests from the application. They are extensibility points that let you customize different types of behavior in the configurator.

    You can use these provider engines with Forma:

    • Rule engine
    • Runtime UI data engine
    • Pricing engine
    • Analytics engine

    Rule engine

    The Rule engine lets you customize the logic of your configurator. It defines which features of your product are available to consumers when they make selections in your application.

    Every time a consumer makes a configuration change in the configurator, it requests information from the Rule engine to determine the features of your product to show.

    The following diagram shows a simplified process:

    Rule engine Workflow
    Rule engine sequence

    Runtime UI data engine

    The Runtime UI data engine lets you customize the information that is displayed in the Runtime UI.

    The UI data could be hosted, for example, on a Web server.

    The following diagram shows an example of the process involved in displaying the correct feature information in the Runtime UI when a consumer selects a specific feature of the product:

    Runtime UI engine
    Runtime UI engine

    Pricing engine

    The Pricing engine lets you customize the pricing logic that the configurator uses.

    For example, you can host pricing data on a Web server that the configurator requests information from.

    The following diagram shows an example of the process the application uses to display pricing information in the configurator UI when a consumer makes different selections.

    Pricing engine
    Pricing Engine

    Analytics engine

    The analytics engine lets you customize how the system gathers information about events in the configurator and aggregates them for your analytics service.

    The field can be any Prefab asset with a script component that implements the IAnalyticsEngine programming interface.

    Back to top
    Terms of use
    Copyright © 2023 Unity Technologies — Terms of use
    • Legal
    • Privacy Policy
    • Cookies
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)
    "Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
    Generated by DocFX on 18 October 2023