[Ken] Design Version
Design Versions represent specific configurations or states of a Design Family. Each version contains 3D geometry (meshes) and material elements that make up the visual representation of the design.
Key Concept
While a Design Family represents the overall โproductโ, Design Versions represent specific implementations - like different iterations, updates, or configurations of that product.
What is a Design Version?
A Design Version is a specific configuration within a Design Family that includes:
- 3D Geometry - Associated to actual 3D mesh assets
- Material Elements - Associated to actual material assets
- Version State - Active version is the one that is currently available for use
- Debug mode - Version is in debug mode if it is not available for use in the catalog
- Material default configuration - These version will be used as the default material configuration while spawning the item without any default material configuration in a room
- Revision number - The revision number is the version number of the design version, it will increase when the meshes or materials are updated
- Chunk System - The chunk ID and chunk size of the design version
At the moment, only one active version is allowed per Design Family.
Attributes & Metadata
Design Versions contain metadata that controls their availability, asset management, and default material configurations.
Core Identification
Basic identifiers for the Design Version:
| Attribute | Type | Description |
|---|---|---|
id | String (18 chars) | Primary key, Salesforce ID format |
name | String | Version name/identifier |
design_family_id | Foreign Key | Reference to parent Design Family |
Example:
id:a40OQ000001Q78XYASname:"0.0"design_family_id:a4fOQ000000g8yrYAA(MALAGA Design Family)
Version State
Controls the availability and usage of this version:
| Attribute | Type | Description |
|---|---|---|
active | Boolean | Whether this version is currently active |
debug | Boolean | Debug mode flag for development/testing |
Active Version Behavior:
- โ Only one active version allowed per Design Family at a time
- โ Active version is used when placing items in rooms
- โ Appears in catalog and search results
Debug Mode:
- ๐ง
debug: trueโ Version only visible in debug/development mode - ๐ง
debug: falseโ Version available in production
Single Active Version
At any given time, only one Design Version can be marked as active per Design Family. This ensures consistent user experience and prevents confusion about which version to use.
Version State Scenarios:
| Scenario | active | debug | design_family.released_on_production | Available To |
|---|---|---|---|---|
| Production | true | false | true | All users |
| Testing | true | true | false | Developers only |
Chunk System
Asset packaging and delivery management:
| Attribute | Type | Description |
|---|---|---|
chunk_id | String/Integer | Identifies the asset chunk for loading |
chunk_size | Integer | Size of the chunk in bytes |
revision_count | Integer | Number of revisions/updates |
Purpose:
The chunk system optimizes asset delivery by:
- Grouping related assets together
- Enabling progressive loading
- Supporting delta updates
- Managing bandwidth efficiently
How It Works:
-
Chunk ID: Groups assets into downloadable packages
- Example:
chunk_id: 1234โ All meshes and materials in chunk 1234
- Example:
-
Chunk Size: Tracks total asset size
- Used for download progress indicators
- Helps estimate bandwidth requirements
- Example:
chunk_size: 52428800(50MB)
-
Revision Count: Tracks version updates
- Increments when meshes or materials are updated
- Triggers by Salesforce
- Example:
revision_count: 5(5th revision)
Asset Caching
The chunk system works with local caching. When revision_count changes, the app knows to download updated assets instead of using cached versions.
Default Material Configuration
Flags indicating which default materials this version provides:
| Attribute | Type | Description |
|---|---|---|
default_fabric | Boolean | Provides default fabric material |
default_paint | Boolean | Provides default paint color |
default_leather | Boolean | Provides default leather material |
default_wood | Boolean | Provides default wood finish |
default_metal | Boolean | Provides default metal finish |
default_glass | Boolean | Provides default glass material |
Purpose:
These flags determine which material configuration is used when spawning an item in a room without explicit material selection. When a Design Version doesnโt have a specific default material flag set to true, the system looks up other Design Versions within the same Design Family that have that flag enabled and uses their materials as defaults.
Example: Sofa with Material Lookup
Consider a Design Family โMODULAR SOFAโ with two versions:
Version A: Base Configuration
Design Version A (id: a40OQ000001Q78XYAS)
โโโ default_fabric: false โ No default fabric configured
โโโ default_wood: true โ Has default wood for legs
โโโ default_leather: false
โโโ Design Version Elements:
โโโ Oak Natural (wood)
โโโ Walnut Dark (wood)Version B: Material Library
Design Version B (id: a40OQ000001Q78XYZB)
โโโ default_fabric: true โ Provides default fabrics
โโโ default_wood: false
โโโ default_leather: false
โโโ Design Version Elements:
โโโ Beige Linen (fabric)
โโโ Gray Velvet (fabric)
โโโ Navy Cotton (fabric)Material Application Flow:
When spawning the sofa from Version A:
-
Legs: Version A has
default_wood: true- โ Uses materials from Version Aโs elements
- Applies โOak Naturalโ to the legs
-
Seat Cushions: Version A has
default_fabric: false- ๐ System looks up Design Versions with
default_fabric: true - โ Finds Version B
- Fetches materials from Version Bโs elements
- Applies โBeige Linenโ (first fabric) to the seat cushions
- ๐ System looks up Design Versions with
Configuration Scenarios:
Single Version with All Defaults:
Design Version: Complete Configuration
โโโ default_fabric: true
โโโ default_wood: true
โโโ default_leather: false
โโโ default_metal: false
Result: All materials come from this versionSplit Configuration (Material Lookup):
Design Version 1: Geometry Variant
โโโ default_fabric: false โ Looks up Version 2
โโโ default_wood: true โ Uses own materials
โโโ default_metal: false
Design Version 2: Material Library
โโโ default_fabric: true โ Provides fabrics for Version 1
โโโ default_wood: false
โโโ default_leather: true โ Provides leather options
Result: Version 1 uses Version 2's fabrics, own wood materialsMaterial Lookup Mechanism
When a Design Version is missing a default material configuration (default_*: false), the system automatically searches for another Design Version within the same Design Family where that flag is true. This enables:
- Shared material libraries across multiple geometry variants
- Centralized material management
- Consistent default materials across versions
Relationships
Links to associated assets:
| Relationship | Type | Description |
|---|---|---|
| Design Family | Parent | The Design Family this version belongs to |
| Design Version Meshes | Children | Associated 3D mesh assets |
| Design Version Elements | Children | Associated material/texture assets |
Data Structure:
Design Version (a4010000000k3QLAAY)
โโโ Design Family (a4f100000000EvJAAU)
โ โโโ name: "DANISH SOFA"
โ
โโโ Design Version Meshes []
โ โโโ Mesh 1: 3 SEATER 180
โ โโโ Mesh 2: 2 Seater 160
โ โโโ ...
โ
โโโ Design Version Elements []
โโโ Element 1: Black Cherry
โโโ Element 2: Red Oak
โโโ Element 3: White Oak Light
โโโ Element 4: WalnutSystem Metadata
Audit trail and system information:
| Attribute | Type | Description |
|---|---|---|
created_at | Timestamp | Version creation date and time |
updated_at | Timestamp | Last modification date and time |
Uses:
- Track version lifecycle
- Cache invalidation triggers
- Sync with asset pipeline
- Audit logging
Version Lifecycle
Understanding how versions evolve over time:
Creating a New Version
-
Initial Creation
active: false,debug: true- Assets uploaded to chunk
revision_count: 1
-
Testing Phase
active: true,debug: true- Available to developers for testing
- Material defaults configured
-
Production Release
- Previous active version set to
active: false - New version set to
active: true,debug: false - Design Familyโs
released_on_productionflag is set totrue, if it is not set, the design family will not be shown in the catalog - Now available to all users
- Previous active version set to
Updating a Version
When meshes or materials are updated:
-
Revision Increment
revision_countincreases (e.g., 5 โ 6)updated_attimestamp updates- Revision count file is updated by trigger manually or trigger at 0h UTC automatically
-
Chunk Update
- New assets uploaded to same
chunk_id chunk_sizemay change if assets grow/shrink
- New assets uploaded to same
-
Cache Invalidation
- Apps detect
revision_countchange - Re-download updated assets
- Clear cached versions
- Apps detect
Breaking Changes
Major updates that change material slots or mesh structure should create a new Design Version rather than updating revision_count.
Important: When a new Design Version is activated (set as active), the previous Design Version is deactivated. The old version:
- โ Will no longer appear in the catalog
- โ Cannot be used in new rooms
- โ Will be removed from existing rooms that used it
This ensures all rooms use the latest version but may cause compatibility issues. Test thoroughly before activating a new version.
Related Pages
Core Resources
- Design Family - Parent concept overview
- Category - Resource organization
Application Usage
- Items - Configurable - Working with configurable items
- Materials - Application - Applying materials
- Custom Items - Importing your own items
Technical Details
- 3D Model Import - Importing custom 3D models
- Performance Optimization - Asset optimization guide
- System Requirements - Hardware requirements