Welcome to OpenConfiguration!

OpenConfiguration (OC) is a modular, efficient and flexible approach for the uni-directional exchange of visual e-commerce configurations. OpenConfiguration is an open format. It is well-documented and everyone can read or write it. OpenConfiguration was invented and is maintained by the intelligentgraphics AG (ig), but anyone is welcome to contribute ideas, requests, source code, etc.!

OC is modular with regard to the transferred data. On the one hand, this means sharing of assets. On the other hand, this includes partial updates, i.e. only incremental data is transferred, which makes some roundtrips superfast, especially in client-server environments.

OC was defined with strict focus on efficiency. This is achieved by very efficient asset formats, such as OpenCTM for 3D meshes, and deeply structured product descriptions that reference assets as shareable (both intra and inter product), cacheable, lazy-loadable entities. Assets are typically cached by the underlying environments, such as Web browser.

OC is flexible in the way that it may or may not include commercial information or bill of material. Also, the assets may be in various formats or quality levels, as negotiated between client and server.

Use Cases

➔ Mobile Client

OC is used to send data from the server to the client. The server bundles all resulting gfx updates, some of them full updates, others only partial ones, in one request. To do so, the server creates hashes on product-level that are sent to the client and will be returned to the server.

➔ AR/CGI Creation

Some process (interactive, batch) creates an OC for a certain configuration and bundles it with all referenced assets. The asset resolvement may be controlled by format and/or quality policies (including fallbacks, etc.). The resulting ZIP is then processed by a glTF/USDz converter or a CGI pipeline, for instance. Rather than bundling the assets, they can be resolved also on demand, by considering already loaded ones.

➔ E-Commerce Shop

From configurable products static snapshots are created as OCs--with or without bundled assets. These OCs then can be clicked to view them in the embedded OC Model Viewer, or downloaded for further processing, such as import into a planning system.

➔ Product Catalog

Not for every product line a classic master-data approach makes sense. Alternatively, all products could be put into an OC Zip and this way deployed to the target platform. The typical sharing of assets across all products in an OC would optimize the efficiency.

➔ Configuration Lite

Normally, OCs are created by complex configuration services. Sometimes, however, a tiny subset of the original configuration domain may be dumped into the OC--typically without relations between the properties--and deployed to a light-weight off-shore configurator.

➔ Configuration Backup

Usually, configuration services use their own proprietary persistency formats, which they read and process. Sometimes, however, the product's life cycle modifications are just too heavy to implement recovery. In such case, an OC could be used as backup or recovery snapshot that is 100% visually identical to the outdated configuration and also provides the corresponding properties (read-only).

News

2025-05-13 - OC Version 1.6, @ nuget and @ npm

2025-02-03 - OC Version 1.5, @ nuget and @ npm

2023-06-09 - OC Version 1.4, @ nuget and @ npm

2023-01-31 - Blender OC Importer Version 1.0.4 and OpenCTM Importer Version 1.0.5

2023-01-25 - Minor Update 1.3.2 (.NET, TypeScript, Rust)

Applications

intelligentgraphics Showcase

A Web Configurator with various product groups, which uses OC both internally (for the client-server communication) and as export format.

form1 Configurator

A Web Configurator for complex sideboards, containers and more, currently in German only. Offers OC Export.

Casarista Configurator

An E-Commerce Configurator for upholstery, beds, outdoor furniture, and maybe more to come. OC is used for the communication between XcalibuR and the client side.

provita Medical Configurator

A Web Configurator for complex medical equipment, currently in German only. OC is used for the client-server updates.

Resources

Getting Started

Introduction and Examples

OpenConfiguration JSON Schema

AJSON Schema for the OC Scene file.

ig.Viewer - An OC Model Viewer

Embeddable OpenConfiguration Viewer (as Web Component). Proudly provided by intelligentgraphics.

Documentation

Online documentation based on the TypeScript binding

OpenConfiguration.Host

Remote-control interface to OC Configurators

DCC IDM-3D Specifications

The ig part of OC is compatible with the DCC IDM-3D.Material and IDM-3D.Geometry models, available from the DCC Download Portal. Those specs can be found also in a github repo.

➔ .NET Support - nuget Packages

DLLs for .NET 6, .NET Core 3.1, .NET Standard 2.1 and .NET 4.7.2

JS/TS Support - npm Packages

JavaScript Libraries and TypeScript Definitions

Rust Support

Rust Binding

➔ Blender Support

Reference Samples

Basic, minimal Samples. These samples are from the IG.Reference workspace, managed by ig.Creator. In case of interest, request a free, read-only access to this workspace.

github Repo

OC Examples and more.

History

The OC format version follows a Major.Minor schema, so do the packages. However, packages may introduce Build numbers, either to provide bugfixes, non-format extensions or even new format extensions to be officially released in the next Minor version.

OC is based on ig's proprietary format IGXC, which introduced most of the concepts but is single-product only.

OpenConfiguration 1.6 - Minor Update

  • ig Geometry: Normal Maps for deformation states 0 and 100

OpenConfiguration 1.5 - Minor Update

  • ig Material: Metalness and Sheen Map added

OpenConfiguration 1.4 - Minor Update

  • ig Material: Diffuse Map with Alpha Mode
  • Scene: new property Packages
  • ig Geometry: new Parameter Complexity
  • ig Material: new Meta Material parameter IgnoreStandardMaps
  • [.NET] data member decorators added for system JSON serializer
  • Attach Point: Tags added
  • ig Material: Shininess now optional
  • Component: Deformation now optional

OpenConfiguration 1.3 - Minor Update

  • Product: MasterData added
  • Scene: Redirections added
  • Script: Technical Version added, to implement version checks
  • Scene: Source (introduced in 1.2) removed again. Use ConfigurationLink instead
  • Scene: ComProducts added
  • Commercial: Quantity and Products added

OpenConfiguration 1.2 - Minor Update

  • Product: TopView and Preview, replacing the Representations introduced with 1.1

OpenConfiguration 1.1 - Minor Update

  • New Representations: Top and Preview
  • ig Geometry: new asset collider (format + asset)
  • ig Geometry Parameter: Render Order
  • ig Geometry Parameters: Normal Map Tiling and Strength
  • Component: new attribute tag

OpenConfiguration 1.0 - Initial Version, obviously

Contact

We just set up a LinkedIn group. Join if you like!

Feel free to contact us by Mail.

{
	"format": "OpenConfiguration_1.0",
	"creator": "IG.Data.GFX.Formats IGXC To OC Converter",
	"status": {
		"code": 200
	},
	"hashes": {
		"IG.Reference.Cube2.geo/standard.ctm": "ed085dd38a0d2639d97bb0802932d8b2",
		"IG.Reference.Cube2.geo/normals_std.png": "66da0bbb3659bb39e02cd556b0539f0d",
		"IG.Reference.Bricks.tex/standard.jpg": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
	},
	"scripts": [
	],
	"geometries": {
		"IG.Reference.Cube2": {
			"ig": {
				"previewFormat": null,
				"preview": null,
				"meshFormat": "OpenCTM",
				"mesh": "IG.Reference.Cube2.geo/standard.ctm",
				"normalMapFormat": "PNG",
				"normalMap": "IG.Reference.Cube2.geo/normals_std.png"
			}
		}
	},
	"materials": {
		"IG.Reference.Bricks": {
			"ig": {
				"diffuse": {
					"color": {
						"red": 0.62750,
						"green": 0.36860,
						"blue": 0.4431
					},
					"map": {
						"mapFormat": "JPEG",
						"map": "IG.Reference.Bricks.tex/standard.jpg"
					}
				},
				"shininess": 0.0,
				"alpha": {
					"value": 1.0
				}
			}
		}
	},
	"products": [{
			"state": {
				"geometricHash": "#1596707789",
				"visualHash": "#-1085120996"
			},
			"materialCategories": {
			},
			"categories": [],
			"structure": [{
					"path": ".",
					"visible": true,
					"selectable": "Self",
					"deformation": 0.0
				}, {
					"path": "o1",
					"visible": true,
					"geometry": "IG.Reference.Cube2",
					"deformation": 0.0,
					"materialCategory": "@IG.Reference.Bricks"
				}
			],
			"status": {
				"code": 200
			}
		}
	]
}
Copyright © 2020 - 2025 intelligentgraphics AG. All Rights Reserved. | License | Imprint