4. Node Reference
Below are the Node types that are officially recognized by the UBF Specification. Included are the expected inputs and outputs for each Node type, and notes about dynamic inputs and generic types where relevant.
Some nodes have dynamic inputs. Some dynamic inputs can be repeated, with the name ending in .[n]
. In this case, the
input can be repeated any number of times, as long as the value of n is different (usually incrementing numbers, but
specified for each node). The other type of dynamic inputs are where the Port ID is not declared, but should correspond
to a value. This is represented by {value}
. Each node will describe what that value should evaluate to. These can also
be repeated, with different values.
Returns an array element at the specified index.
type: AtIndex
inputs:
- id: Array
type: Array<T>,
- id: Index
type: int
outputs:
- id: Element
type: T
T
: AnyReturns the first element of an Array.
type: First
inputs:
- id: Array
type: Array<T>
outputs:
- id: Element
type: T
T
: AnyIterates over all elements in an Array.
type: ForEach
inputs:
- id: Exec
type: exec,
- id: Array
type: Array<T>
outputs:
- id: Exec
type: exec,
- id: Loop Body
type: exec,
- id: Array Element
type: T,
- id: Array Index
type: int
T
: AnyThe start of execution flow in the Blueprint.
type: Entry
inputs: None
outputs:
- id: Exec
type: exec
Runs another blueprint with the provided inputs.
type: ExecuteBlueprint2
inputs:
- id: Exec
type: exec,
- id: Blueprint
type: Resource<Blueprint>,
- id: {Binding ID}
type: unknown
outputs:
- id: Exec
type: exec,
- id: {Binding ID}
type: unknown
For the Inputs and Outputs of this node, the Port IDs should match the Inputs and Outputs respectively of the blueprint that is being run. Any values that are assigned to the Inputs should be passed in as the corresponding Inputs to the Blueprint, and any Output that the Blueprint produces should be forwarded to the corresponding Outputs of this node.
Call a function that is defined in the functions section of the Blueprint.
type: Fn
inputs:
- id: Exec
type: exec,
- id: Graph
type: string,
- id: {Function Binding ID}
type: unknown
outputs:
- id: Exec
type: exec,
- id: {Function Binding ID}
type: unknown
The inputs and outputs of this node correspond to the Function inputs and outputs. The inputs are passed into the function, and function outputs are forwared to this node's outputs. The Graph
input corresponds to the ID of the function to call
Represents a true or false value.
type: BoolLiteral
inputs:
- id: Value
type: boolean
outputs:
- id: Bool
type: boolean
Represents an RGBA color.
type: ColorLiteral
inputs:
- id: R
type: float,
- id: G
type: float,
- id: B
type: float,
- id: A
type: float
outputs:
- id: Color
type: Color
RGBA values are from 0-1
Represents a floating point number.
type: FloatLiteral
inputs:
- id: Value
type: float
outputs:
- id: Float
type: float
Represents an integer value.
type: IntLiteral
inputs:
- id: Value
type: int
outputs:
- id: Int
type: int
Returns true if both of the inputs are true.
type: And
inputs:
- id: A
type: boolean,
- id: B
type: boolean
outputs:
- id: Result
type: boolean
Execution follows one of the paths based on a true or false value.
type: Branch
inputs:
- id: Exec
type: exec,
- id: Condition
type: boolean
outputs:
- id: True
type: exec,
- id: False
type: exec
Returns true if both inputs are the same.
type: Equals
inputs:
- id: A
type: T,
- id: B
type: T
outputs:
- id: Result
type: boolean
T
: string, int, float, booleanReturns true if A is higher than B.
type: GreaterThan
inputs:
- id: A
type: T,
- id: B
type: T
outputs:
- id: Result
type: boolean
T
: int, floatReturns true if A is higher or the same as B.
type: GreaterThanOrEqual
inputs:
- id: A
type: T,
- id: B
type: T
outputs:
- id: Result
type: boolean
T
: int, floatReturns true if the input is null.
type: IsNull
inputs:
- id: Value
type: T
outputs:
- id: IsNull
type: boolean
T
: Material, Resource<Blueprint>, Resource<Mesh>, Resource<Texture>, MeshConfig, MeshRenderer, SceneNodeReturns true if A is lower than B.
type: LessThan
inputs:
- id: A
type: T,
- id: B
type: T
outputs:
- id: Result
type: boolean
T
: int, floatReturns true if A is lower or the same as B.
type: LessThanOrEquals
inputs:
- id: A
type: T,
- id: B
type: T
outputs:
- id: Result
type: boolean
T
: int, floatConverts values of one type into another.
type: MapValue
inputs:
- id: Value
type: T,
- id: Default
type: T,
- id: Input.[n]
type: T,
- id: Output.[n]
type: U
outputs:
- id: Output
type: U
T
: AnyU
: AnyWhere [n]
starts at 1. Any number of Input.[n]
/Output.[n]
pairs can be added, as long as [n]
is incremented by 1.
Each Input.[n]
input must be accompanied by an Output.[n]
input.
Returns the opposite of the input.
type: Not
inputs:
- id: A
type: boolean
outputs:
- id: Result
type: boolean
Returns true if both inputs are different.
type: NotEquals
inputs:
- id: A
type: T,
- id: B
type: T
outputs:
- id: Result
type: boolean
T
: string, int, float, booleanReturns true if at least one of the inputs is true.
type: Or
inputs:
- id: A
type: boolean,
- id: B
type: boolean
outputs:
- id: Result
type: boolean
Returns one of two options based on a boolean value.
type: Pick
inputs:
- id: A
type: T,
- id: B
type: T,
- id: Pick A?
type: boolean
outputs:
- id: Value
type: T
T
: AnyApplies a Material to a Mesh.
type: ApplyMaterial
inputs:
- id: Exec
type: exec,
- id: Index
type: int,
- id: Renderer
type: MeshRenderer,
- id: Material
type: Material
outputs:
- id: Exec
type: exec
Returns a material based on a fur shader.
type: MakeFurMaterial
inputs:
- id: Render Mode
type: string,
- id: Diffuse Texture
type: Resource<Texture>,
- id: Base Color
type: Color,
- id: Use Alpha
type: boolean,
- id: Fresnel_IOR
type: float,
- id: Opacity
type: float,
- id: Use Emission
type: boolean,
- id: Use Emissive Tint
type: boolean,
- id: Emissive Tex
type: Resource<Texture>,
- id: Emissive Color Boost
type: float,
- id: Emissive Tint
type: Color,
- id: Emissive Tint Boost
type: float,
- id: Use Normal Map
type: boolean,
- id: Normal Tex
type: Resource<Texture>,
- id: Use ORM
type: boolean,
- id: ORM
type: Resource<Texture>,
- id: Occlusion
type: float,
- id: Roughness
type: float,
- id: Metallic
type: float,
- id: Height Map
type: Resource<Texture>,
- id: Id Map
type: Resource<Texture>
outputs:
- id: Material
type: Material
Returns a material based on a hair shader.
type: MakeHairMaterial
inputs:
- id: Render Mode
type: string,
- id: AlphaTex
type: Resource<Texture>,
- id: UseAlphaTex
type: boolean,
- id: Diffuse Texture
type: Resource<Texture>,
- id: Base Color
type: Color,
- id: Use Alpha
type: boolean,
- id: Fresnel_IOR
type: float,
- id: Opacity
type: float,
- id: Use Emission
type: boolean,
- id: Use Emissive Tint
type: boolean,
- id: Emissive Tex
type: Resource<Texture>,
- id: Emissive Color Boost
type: float,
- id: Emissive Tint
type: Color,
- id: Emissive Tint Boost
type: float,
- id: Use Normal Map
type: boolean,
- id: Normal Tex
type: Resource<Texture>,
- id: Use ORM
type: boolean,
- id: ORM
type: Resource<Texture>,
- id: Occlusion
type: float,
- id: Roughness
type: float,
- id: Metallic
type: float
outputs:
- id: Material
type: Material
Returns a material based on a PBR shader.
type: MakePBRMaterial
inputs:
- id: Render Mode
type: string,
- id: AlphaTex
type: Resource<Texture>,
- id: UseAlphaTex
type: boolean,
- id: Diffuse Texture
type: Resource<Texture>,
- id: Base Color
type: Color,
- id: Use Alpha
type: boolean,
- id: Fresnel_IOR
type: float,
- id: Opacity
type: float,
- id: Use Emission
type: boolean,
- id: Use Emissive Tint
type: boolean,
- id: Emissive Tex
type: Resource<Texture>,
- id: Emissive Color Boost
type: float,
- id: Emissive Tint
type: Color,
- id: Emissive Tint Boost
type: float,
- id: Use Normal Map
type: boolean,
- id: Normal Tex
type: Resource<Texture>,
- id: Use ORM
type: boolean,
- id: ORM
type: Resource<Texture>,
- id: Occlusion
type: float,
- id: Roughness
type: float,
- id: Metallic
type: float
outputs:
- id: Material
type: Material
Render Mode
must be equal to one of the three following values: UseDiffuse
, SolidColor
, or VertexColor
Returns a material based on a specialized skin shader.
type: MakeSkinMaterial
inputs:
- id: GCLS Tex
type: Resource<Texture>,
- id: Normal Tex
type: Resource<Texture>,
- id: ORS Tex
type: Resource<Texture>,
- id: Skin Color
type: Color,
- id: Redness
type: Color,
- id: Lip Color
type: Color,
- id: Skin Variation
type: float,
- id: Dark Area Hue
type: float,
- id: Dark Area Saturation
type: float,
- id: Dark Area Value
type: float,
- id: Roughness Strength
type: float,
- id: AO Strength
type: float,
- id: Buzzcut Tex
type: Resource<Texture>,
- id: Stubble Tex
type: Resource<Texture>,
- id: Freckles Tex
type: Resource<Texture>,
- id: Moles Tex
type: Resource<Texture>,
- id: Scars Tex
type: Resource<Texture>,
- id: Hair Color
type: Color,
- id: Freckle Color
type: Color,
- id: Mole Color
type: Color,
- id: Scar Color
type: Color,
- id: Stubble Growth
type: float,
- id: Stubble Contrast
type: float,
- id: Mole Normal Strength
type: float,
- id: Scar Color Contrast
type: float,
- id: Scar Color Falloff
type: float,
- id: Scar Normal Strength
type: float
outputs:
- id: Material
type: Material
Returns the sum of two numbers.
type: Add
inputs:
- id: A
type: T,
- id: B
type: T
outputs:
- id: Value
type: T
T
: int, floatReturns the product of A and B.
type: Multiply
inputs:
- id: A
type: T,
- id: B
type: T
outputs:
- id: Value
type: T
T
: int, floatConverts a string into a JSON object.
type: DeserializeJson
inputs:
- id: String
type: string
outputs:
- id: Json
type: Json,
- id: Success
type: boolean
Retrieves an array at the specified path from a JSON object.
type: GetJsonArrayAttribute
inputs:
- id: Json
type: Json,
- id: AttributePath
type: string
outputs:
- id: Value
type: Array<Json>
The AttributePath
input must be a series of property names separated by a .
. To specify an array element, use [x]
, where x
is the 0-based index of the element to retrieve. For example, for this JSON object:
{
"Property": {
"Array": [
{
"Object": {
"Hello": "World"
}
}
]
}
}
To retrieve the value of Object
, you would supply the AttributePath Property.Array.[0]
Retrieves a boolean value at the specified path from a JSON object.
type: GetJsonBoolAttribute
inputs:
- id: Json
type: Json,
- id: AttributePath
type: string
outputs:
- id: Value
type: boolean
The AttributePath
input must be a series of property names separated by a .
. To specify an array element, use [x]
, where x
is the 0-based index of the element to retrieve. For example, for this JSON object:
{
"Property": {
"Array": [
{
"Object": {
"Bool": false
}
}
]
}
}
To retrieve the value of Bool
, you would supply the AttributePath Property.Array.[0].Bool
Retrieves a float value at the specified path from a JSON object.
type: GetJsonFloatAttribute
inputs:
- id: Json
type: Json,
- id: AttributePath
type: string
outputs:
- id: Value
type: float
The AttributePath
input must be a series of property names separated by a .
. To specify an array element, use [x]
, where x
is the 0-based index of the element to retrieve. For example, for this JSON object:
{
"Property": {
"Array": [
{
"Object": {
"Float": 1.5
}
}
]
}
}
To retrieve the value of Float
, you would supply the AttributePath Property.Array.[0].Float
Retrieves an int value at the specified path from a JSON object.
type: GetJsonIntAttribute
inputs:
- id: Json
type: Json,
- id: AttributePath
type: string
outputs:
- id: Value
type: int
The AttributePath
input must be a series of property names separated by a .
. To specify an array element, use [x]
, where x
is the 0-based index of the element to retrieve. For example, for this JSON object:
{
"Property": {
"Array": [
{
"Object": {
"Integer": 1
}
}
]
}
}
To retrieve the value of Integer
, you would supply the AttributePath Property.Array.[0].Integer
Retrieves an object at the specified path from a JSON object.
type: GetJsonObjectAttribute
inputs:
- id: Json
type: Json,
- id: AttributePath
type: string
outputs:
- id: Value
type: Json
The AttributePath
input must be a series of property names separated by a .
. To specify an array element, use [x]
, where x
is the 0-based index of the element to retrieve. For example, for this JSON object:
{
"Property": {
"Array": [
{
"Object": {}
}
]
}
}
To retrieve the value of Array
, you would supply the AttributePath Property.Array
Retrieves a string value at the specified path from a JSON object.
type: GetJsonStringAttribute
inputs:
- id: Json
type: Json,
- id: AttributePath
type: string
outputs:
- id: Value
type: string
The AttributePath
input must be a series of property names separated by a .
. To specify an array element, use [x]
, where x
is the 0-based index of the element to retrieve. For example, for this JSON object:
{
"Property": {
"Array": [
{
"Object": {
"String": "Hello!"
}
}
]
}
}
To retrieve the value of String
, you would supply the AttributePath Property.Array.[0].String
Attempts to parse a boolean value from a string.
type: ParseBool
inputs:
- id: Input
type: string
outputs:
- id: Output
type: boolean
Attempts to parse a float value from a string.
type: ParseFloat
inputs:
- id: Input
type: string
outputs:
- id: Output
type: float
Sets the bones of provided meshes to match the bones of another. This allows the meshes to follow the original's animations.
type: BindMeshes
inputs:
- id: Exec
type: exec,
- id: Mesh
type: Array<MeshRenderer>,
- id: Skeleton
type: MeshRenderer
outputs:
- id: Exec
type: exec
Creates a MeshConfig object based on a given mesh.
type: CreateMeshConfig
inputs:
- id: Exec
type: exec,
- id: Resource
type: Resource<Mesh>,
- id: ConfigOverrideKey
type: string
outputs:
- id: Exec
type: exec,
- id: MeshConfig
type: MeshConfig
ConfigOverrideKey
should be provided when there is no existing Mesh that can be passed to the Resource input. At that point, it is on the Interpreter to provide a MeshConfig object that corresponds to that key.
Instantiates a new SceneNode.
type: CreateSceneNode
inputs:
- id: Exec
type: exec,
- id: Name
type: string,
- id: Parent
type: SceneNode
outputs:
- id: Exec
type: exec,
- id: Node
type: SceneNode
If no Parent
input is provided, or the input is a null value, the Interpreter should provide a default.
Returns the first MeshRenderer in an Array with the given name.
type: FindRenderer
inputs:
- id: Array
type: Array<MeshRenderer>,
- id: Name
type: string
outputs:
- id: Renderer
type: MeshRenderer
Returns an Array of SceneNodes whose names match or partially match the given string filter.
type: FindSceneNodes
inputs:
- id: Root
type: SceneNode,
- id: Filter
type: string
outputs:
- id: Nodes
type: Array<SceneNode>
Set the blend shape weight on a Mesh.
type: SetBlendShape
inputs:
- id: Exec
type: exec,
- id: Target
type: MeshRenderer,
- id: ID
type: string,
- id: Value
type: float
outputs:
- id: Exec
type: exec
Set a SceneNode enabled or disabled based on a boolean input.
type: SetSceneNodeEnabled
inputs:
- id: Exec
type: exec,
- id: Node
type: SceneNode,
- id: Enabled
type: boolean
outputs:
- id: Exec
type: exec
Instantiates a Mesh in the scene.
type: SpawnMesh
inputs:
- id: Exec
type: exec,
- id: Resource
type: Resource<Mesh>,
- id: Parent
type: SceneNode,
- id: Config
type: MeshConfig
outputs:
- id: Exec
type: exec,
- id: Scene Nodes
type: Array<SceneNode>,
- id: Renderers
type: Array<MeshRenderer>
Apply a position transform to a SceneNode.
type: TransformPosition
inputs:
- id: Exec
type: exec,
- id: Transform Object
type: SceneNode,
- id: Use World Space
type: boolean,
- id: Is Additive
type: boolean,
- id: Right
type: float,
- id: Up
type: float,
- id: Forward
type: float
outputs:
- id: Exec
type: exec
Apply a rotation transform to a SceneNode.
type: TransformRotation
inputs:
- id: Exec
type: exec,
- id: Transform Object
type: SceneNode,
- id: Use World Space
type: boolean,
- id: Is Additive
type: boolean,
- id: Pitch
type: float,
- id: Yaw
type: float,
- id: Roll
type: float
outputs:
- id: Exec
type: exec
Concatenates two strings, and returns the result.
type: Append
inputs:
- id: A
type: string,
- id: B
type: string
outputs:
- id: String
type: string
Returns true if the provided string contains the substring.
type: Contains
inputs:
- id: String
type: string,
- id: Substring
type: string,
- id: IgnoreCase
type: boolean
outputs:
- id: Matches
type: boolean
Returns the original string with instances of {x} replaced by the input at that index.
type: FormatString
inputs:
- id: Input
type: string,
- id: Item.[n]
type: string
outputs:
- id: Result
type: string
Example: Given the input string "Hello, {1}. My name is {2}", where Item.1 = "Fred" and Item.2 = "George", the Result string would be "Hello, Fred. My name is George".
Returns that input string with all instances of a given substring replaced with another.
type: Replace
inputs:
- id: Input
type: string,
- id: ToReplace
type: string,
- id: Replacement
type: string
outputs:
- id: Output
type: string
Splits the string by the separator, and returns an array of the separated chunks.
type: Split
inputs:
- id: String
type: string,
- id: Separator
type: string
outputs:
- id: Array
type: Array<string>
Returns the input string, with every character converted to lower case.
type: ToLower
inputs:
- id: Input
type: string
outputs:
- id: Output
type: string
Converts a value to its string representation.
type: ToString
inputs:
- id: Value
type: T
outputs:
- id: String
type: string
T
: AnyReturns the value of a Binding.
type: Input
inputs:
- id: Input
type: unknown
outputs:
- id: Value
type: T
T
: AnyThe value of the Input
input should be the Binding ID of the Binding you want to retrieve the value of.
Sets the value of all output Bindings.
type: Output
inputs:
- id: Exec
type: exec,
- id: Out.{Binding ID}
type: unknown
outputs:
- id: Exec
type: exec
Binding ID
should match the id
field of a Binding in your Blueprint. For the following Binding:
{
"id": "Example",
"scope": "input",
"type": "string",
"value": "Hello, World!",
}
Then setting "Out.Example" as the id
for the input should make the node set the value for this Binding. You can have multiple inputs that correspond to different Binding IDs, to set many values at the same time.