igx.archetypes:index
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
igx.archetypes:index [2016/12/07 11:45] – eb_ig | igx.archetypes:index [2024/04/04 08:04] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== IG.GFX Archetypes ====== | ||
+ | |||
+ | IG.GFX Archetypes is a concept to reduce the effort for the creation of complex, parametric 3D objects, by using domain-specific patterns, so-called Archtetypes. Archetypes are processed by the IG.GFX.Factory, | ||
+ | |||
+ | Not only that Archetypes reduce the creation effort, they also improve the quality of the data (by avoiding errors), and drastically reduce lifecycle changes, such as //every product gets a new leg type//, etc. | ||
+ | |||
+ | ===== Archetypes Catalog ===== | ||
+ | |||
+ | ==== General ==== | ||
+ | * __Empty__ - an empty Archetype for Evaluator-based articles (Factory 1.3.1) | ||
+ | * __Set__ - combination of elementary Archetypes (Factory 1.1) | ||
+ | |||
+ | ==== Upholstery ==== | ||
+ | * __Armrest__ - standalone armrest, either left or right side | ||
+ | * __Couch__ - free upholstery, no implicit shape (Factory 1.1) | ||
+ | * __OneSeater__ - one seat furniture, with or without armrests | ||
+ | * __Stool__ - basic stool, without seat parts, armrests, etc. | ||
+ | * __ThreeSeater__ - three identical seats, with or without armrests | ||
+ | * __TwoSeater__ - two identical seats, with or without armrests | ||
+ | |||
+ | ===== The Factory File ===== | ||
+ | |||
+ | The Factory File contains | ||
+ | * a number of Products that will be processed in one step | ||
+ | * a global section that applies to all Products | ||
+ | * an optional list of Includes | ||
+ | |||
+ | Both, the global section and the includes may contain | ||
+ | * Parameters | ||
+ | * Interactors | ||
+ | * Parameters | ||
+ | * Attachment Points | ||
+ | * Domain Settings | ||
+ | |||
+ | See below for the definition of these entities. | ||
+ | |||
+ | At run-time, a global state is created by processing the Includes in the sequence as defined in the Factory file, followed by the Global section. In case of Parameters, the data will be **merged**. In case of all other data, later data **replace** earlier ones. | ||
+ | |||
+ | ===== Domain Settings ===== | ||
+ | |||
+ | Domain Settings are | ||
+ | * Address | ||
+ | * Domain | ||
+ | * SubDomain | ||
+ | |||
+ | and define the workspace the data should be sent to. It's 1:1 what you need to enter in the IG.Creator, too. | ||
+ | |||
+ | ===== State ===== | ||
+ | |||
+ | Another optional setting is __State__. If set (and valid) it will update the State of each processed Product in the IG.Creator Product Index. Allowed State values are //New, Editing, Testing, WIP// and //Done//. (Factory 1.3.1) | ||
+ | |||
+ | Note, State __Done__ is required for external import jobs. Otherwise, the Product will be ignored. | ||
+ | |||
+ | State is only implemented on Factory file level, thus no product level, no includes. | ||
+ | |||
+ | ===== The Products ===== | ||
+ | |||
+ | The Products dictionary defines a set of products. The key is the product id/name to appear in the IG.Creator, e.g. Product Index. | ||
+ | |||
+ | ==== Basic Settings ==== | ||
+ | |||
+ | The basic entries for each key are | ||
+ | * __Description__ - description of the product. Note the Factory will automatically append _AT to this, to mark the product was created from an Archetype. | ||
+ | * __NativeId__ - the (optional) native id of the product. In case of XcalibuR, this is a concatenated source id (// | ||
+ | * __Archetype__ - one of the Archetypes defined above. | ||
+ | |||
+ | ==== Parameters ==== | ||
+ | |||
+ | The parameters parameterize the Archetype. The final set of parameters is compiled from the included parameters, the global parameters and the product' | ||
+ | |||
+ | The parameters are defined in the Archetype sheets. There' | ||
+ | |||
+ | ==== Properties ==== | ||
+ | |||
+ | For each product, a set of properties can be provided. There is no inheritance or compilation of Properties, as for Parameters, etc., but you can define a Master product and provide some properties there, which are then shared with all Products. | ||
+ | |||
+ | More on this can be found in the IG.Creator Wiki: [[ig.creator: | ||
+ | |||
+ | ==== Interactors ==== | ||
+ | |||
+ | Interactors define interaction behaviors on components of the product. Each interactor entry key is a component path, however references are allowed. The interactor parameters are defined by the corresponding interactor type. Additionally the parameter __Type__ must provide the fully-scoped interactor type name. | ||
+ | |||
+ | There can only be one set of interactors for a Product. So previous interactor definitions will be replaced but not merged as Parameters. | ||
+ | |||
+ | ==== Evaluators ==== | ||
+ | |||
+ | Evaluators define construction scripts on components of the product. Each evaluator entry key is a component path, however references are allowed. The evaluator parameters are defined by the corresponding evaluator type. Additionally the parameter __Type__ must provide the fully-scoped evaluator type name. | ||
+ | |||
+ | There can only be one set of evaluator for a Product. Before Factory 1.3.1, previous evaluator definitions will be replaced but not merged as Parameters. Since version 1.3.1 Evaluators will be merged in the same way as Parameters (see above). | ||
+ | |||
+ | ==== Attachment Points ==== | ||
+ | |||
+ | Optional array of attachment points according to IG.GFX attachment point definition. | ||
+ | |||
+ | ==== Modifications ==== | ||
+ | |||
+ | Modifications (Mods) have been introduced with Factory, Version 1.3. | ||
+ | |||
+ | Imagine you’re a happy with an Archetype but only by 99.95% - meaning there’s one damned little detail you want to modify - such as a Leg that rotates depending on n’borship relation - or whatever… | ||
+ | |||
+ | Without Mods you can of course change this in the IG.Creator after processing the Archetypes with the Factory. However, the next processing would override your changes, so they’re lost! | ||
+ | |||
+ | With Mods you can add this to your input JSON file and they will be generated each time during the processing. | ||
+ | |||
+ | ===== Misc ===== | ||
+ | |||
+ | ==== Numbers ==== | ||
+ | |||
+ | Float numbers can be provided directly or in expressions, | ||
+ | |||
+ | Examples: | ||
+ | * //0.5// - valid | ||
+ | * //0,5// - invalid! | ||
+ | * //" | ||
+ | * //" | ||
+ | * //" | ||
+ | * //2// - valid but for syntactical beauty use 2.0 please | ||
+ | |||
+ | ==== References ==== | ||
+ | |||
+ | Using the geometry attribute __#__ you can setup a symbolic reference to the component path that is created in the Factory then. This symbolic name may then be used in interactor definitions, | ||
+ | |||
+ | The references of upholstery Legs are created automatically! It's either //#Leg-LF, LB, RF, RB// or //# | ||
+ | |||
+ | ==== Parent ==== | ||
+ | |||
+ | Using the optional geometry attribute __Parent__ you can assign attributes, for instance the # reference, to intermediate components that are normally not accessible. However, only for the first geometry in a geometry list the Parent attribute is considered! | ||
+ | |||
+ | ==== Auto Dimensions ==== | ||
+ | |||
+ | Sometimes it may be useful that parts are stretched automatically. To implement this, the Parameters of Geometry entities define the optional parameter __Width__. | ||
+ | |||
+ | Width must be a real numeric value and must specify the real width of the geometry file. | ||
+ | |||
+ | If width is provided and there is a nominal width for this part - either directly or computed - then the X Scaling will be computed automatically by // | ||
+ | |||
+ | Sounds pretty helpful but be careful! Roundings will be stretched inhomogeneously (rule of thumb: 10/15 % +- or mostly okay), same for texture coordinates! | ||
+ | |||
+ | Maybe, we’ll add more auto-dimensions such as __Depth__ and __Height__. | ||
+ | |||
+ | ==== Commercial Short Cut: _Com-Default_ ==== | ||
+ | |||
+ | For advanced Evaluators, as used in the context of complex Beds, for instance, it often happens that Evaluator parameter and virtual property match 1:1. To ease your pain and also avoid typos you can use the short cut _Com-Default_ in the context of Archetypes: | ||
+ | |||
+ | //" | ||
+ | |||
+ | For one line this does not look super impressive but imagine a dozen or even more... | ||