User Tools

Site Tools



This element defines an individual modifier asset for a morph, a skin binding, a channel, or an application-defined modifier type.

Parent Objects


Name Description Default Required
id A string representing the unique ID for this asset within current file scope. None yes
name A string representing the “internal” name for this object. Generally unique within any sibling modifiers. “” no
label A string representing the user-readable label for the modifier. None no
source A string representing the URI of the modifier asset that this modifier was derived from, if any. “” no
parent A string representing the URI of the parent definition. A parent must appear above a child in the file. None no
presentation A presentation containing metadata used to present an asset to the user, if this asset is a user-facing asset. N/A no
channel A channel definition. N/A no
region A string representing the region that the modifier should appear in. None no
group A string representing a slash-delimited (“/”) path indicating the modifier’s group for data pathing and presentation in the UI. “/” no
formulas An array of formula objects owned by this modifier. N/A no
morph Any morph attached to this modifier. N/A no
skin Any skin_binding attached to this modifier. N/A no
extra An array of objects that represent additional application-specific information for this object. N/A no


The morph and skin properties are mutually exclusive. A modifier may exist without either a morph or a skin defined, in which case it may become a data repository and a channel that can be used as input and output for a formula.

For any user-facing morphs, the region should be specified, so that the modifier can display in the interface for regional selection. Skin bindings and corrective morphs usually do not require any user presentation so do not need regions defined for them.

The name attribute may be used by applications to provide another addressing mechanism for nodes in the scene. In object URI’s, if “name” is used as the scheme identifier, then the value of the name attribute is used to look up an item rather than using the id attribute. If the name attribute is missing, applications should use the id attribute in its place wherever needed.


    "id" : "smile",
    "channel" : {
	"id" : "x",
	"label" : "Side-Side",
	"visible" : true,
	"locked" : true,
	"min" : 0.0,
	"max" : 1.0,
	"clamped" : true,
	"display_as_percent" : false,
	"step_size" : 2.0,
	"value" : 0.0
    "group" : "Micro/Happy",
    "region" : "Face",
    "morph" : {    
        "vertex_count" : 4,
        "deltas" : {
            "count" : 2,
            "values" : [
                [ 0, 1.23, 2.34, 3.45 ],
                [ 3, 1.23, 2.45, 3.56 ]
    "formulas" :
            "output" : "upper_leg:figures/Unimesh#upper_leg?rotation/x",
            "operations" : [
                { "op" : "push", "url" : "hips:figures/UniMesh#hips?rotation/x" },
                { "op" : "push", "url" : "hips:figures/Daphne#DaphneHeadLarge?value" },
                { "op" : "push", "val" : 1.7 },
                { "op" : "add" },
                { "op" : "mult" }