Skip to content

Workspace ​

Node ​

method type(): string ​

Returns the type of the node in the form of a string. See Operation::keyWord and EOperatorType, or ETransformType in C++ code for possible values.

method get_id(): number ​

Returns the unique identifier of the node.

method get_position(): Vec2 ​

Returns the position of the node within the Workspace.

method set_position(Vec2 value) ​

Sets the position of the node within the Workspace.

method get_label(): string ​

Returns the label of the node.

method set_label(string value) ​

Sets the label of the node.

method get_number_of_decimals(): number ​

Returns the number of decimals used for displaying the node's values.

method set_number_of_decimals(number value) ​

Sets the number of decimals used for displaying the node's values.

method get_lod(): number ​

Returns the level of detail of the node.

method set_lod(number value) ​

Sets the level of detail of the node.

method as_operator(): Operator ​

method as_transform(): Transform ​

method as_sequence(): Sequence ​

method as_camera(): Camera ​

method as_cycle(): Cycle ​

method as_screen(): Screen ​

method as_model(): Model ​

metamethod __tostring(): string ​

Returns a string representation of the node in the form {type} #{ID}.

Operator ​

Inherits all Node methods.

constructor new(string type) ​

Creates a new operator of the given type. See EOperatorType enum and Operation::keyWord in C++ code for possible values.

method is_input_plugged(index: number): boolean ​

Returns true if the input at the given index is plugged.

method is_output_plugged(index: number): boolean ​

Returns true if the output at the given index is plugged.

method get_input_float(index: number): number ​

Get the input value of the operator at the given index. Returns nil if the input is not a float.

method get_input_vec3(index: number): Vec3 ​

Get the input value of the operator at the given index. Returns nil if the input is not a Vec3.

method get_input_vec4(index: number): Vec4 ​

Get the input value of the operator at the given index. Returns nil if the input is not a Vec4.

method get_input_quat(index: number): Quat ​

Get the input value of the operator at the given index. Returns nil if the input is not a Quat.

method get_input_mat4(index: number): Mat4 ​

Get the input value of the operator at the given index. Returns nil if the input is not a Mat4.

method get_float(index: number): number ​

Get the output value of the operator at the given index. Returns nil if the output is not a float.

method get_vec3(index: number): Vec3 ​

Get the output value of the operator at the given index. Returns nil if the output is not a Vec3.

method get_vec4(index: number): Vec4 ​

Get the output value of the operator at the given index. Returns nil if the output is not a Vec4.

method get_quat(index: number): Quat ​

Get the output value of the operator at the given index. Returns nil if the output is not a Quat.

method get_mat4(index: number): Mat4 ​

Get the output value of the operator at the given index. Returns nil if the output is not a Mat4.

method set_value(value: number): boolean ​

Set the value of the operator to the given value. Returns true if the operation was successful.

method set_value(value: Vec3): boolean ​

Set the value of the operator to the given value. Returns true if the operation was successful.

method set_value(value: Vec4): boolean ​

Set the value of the operator to the given value. Returns true if the operation was successful.

method set_value(value: Quat): boolean ​

Set the value of the operator to the given value. Returns true if the operation was successful.

method set_value(value: Mat4): boolean ​

Set the value of the operator to the given value. Returns true if the operation was successful.

Transform ​

Inherits all Node methods.

constructor new(string type) ​

Creates a new transform of the given type. See ETransformType enum and Operation::keyWord in C++ code for possible values.

method get_value(coords: Vec2): number ​

Returns the value of transform matrix at the given coords where coords.x is the column and coords.y is the row.

method set_value(value: number, coords: Vec2) ​

Sets the value of transform matrix at the given coords where coords.x is the column and coords.y is the row.

method get_default_float(name: string): number ​

Returns the value of the float property with the given name. For example, get_float("angle") can be used to get the angle property of a AxisAngle rotation transform.

method get_default_vec3(name: string): Vec3 ​

Returns the value of the Vec3 property with the given name. For example, get_vec3("scale") can be used to get the scale property of a Scale transform.

method get_default_vec4(name: string): Vec4 ​

Returns the value of the Vec4 property with the given name. For example, get_vec4("quat") can be used to get the quat property of a Quat (quaternion) rotation transform.

method set_default_float(name: string, value: number) ​

Sets the value of the float property with the given name. See get_float for examples.

method set_default_vec3(name: string, value: Vec3) ​

Sets the value of the Vec3 property with the given name. See get_vec3 for examples.

method set_default_vec4(name: string, value: Vec4) ​

Sets the value of the Vec4 property with the given name. See get_vec4 for examples.

method is_valid(): boolean ​

Returns true if the transform is valid based on its properties. For example a uniform scale transform is valid only if all scale properties are equal.

method is_locked(): boolean ​

Returns true if the transform is read-only.

method is_in_sequence(): boolean ​

Returns true if the transform is part of a sequence.

method lock() ​

Makes the transform read-only.

method unlock() ​

Makes the transform writable.

method has_synergies(): boolean ​

Returns true if the transform has synergies. For example a Scale transform with enabled synergies will have its x, y, and z properties locked together. When one of the properties is changed, the other two will be updated to match the changed one.

method enable_synergies() ​

Enables synergies for the transform. See has_synergies for more information.

method disable_synergies() ​

Disables synergies for the transform. See has_synergies for more information.

Sequence ​

Inherits all Node methods.

constructor new() ​

method get_mat4(index: number): Mat4 ​

Returns the transform matrix at the given index.

method push(transform: Transform) ​

Pushes the given transform to the back of the sequence.

method push(transform: Transform, index: number) ​

Inserts the given transform at the given index in the sequence.

Model ​

Inherits all Node methods.

constructor new() ​

method set_model(alias: string) ​

Sets new model by its alias.

method set_visible(value: boolean) ​

Sets the visibility of the model.

method show_axes(value: boolean) ​

Sets the visibility of the model's axes.

method set_opaque(value: boolean) ​

Sets the model to be opaque or transparent.

method set_opacity(value: number) ​

Sets the opacity of the model in the range [0, 1].

method set_tint(color: Vec3) ​

Sets the tint color of the model in the RGB format in the range [0, 1].

method set_tint_strength(value: number) ​

Sets the strength of the tint color in the range [0, 1].

Cycle ​

Inherits all Node methods.

constructor new(): Cycle ​

method set_from(value: float) ​

method set_to(value: float) ​

method set_manual_step(value: float) ​

method set_step(value: float) ​

method set_step_duration(value: float) ​

method set_smooth(value: boolean) ​

method set_mode(value: number) ​

method play() ​

Camera ​

Inherits all Node methods.

constructor new(): Camera ​

method get_projection(): Sequence ​

Returns the projection sequence of the camera.

method get_view(): Sequence ​

Returns the view sequence of the camera.

Screen ​

Inherits all Node methods.

constructor new(): Screen ​

method set_acpect(value: Vec2) ​

Sets the aspect.

ScriptingNode ​

constructor new() ​

Creates a new scripting node.

method get_script(): string ​

Returns the Lua script of the node.

method set_script(script: string): ScriptingNode ​

Sets the Lua script of the node. Note that on success the new node will be returned!

enum ValueType ​

ValueType.Float ​

ValueType.Vec3 ​

ValueType.Vec4 ​

ValueType.Matrix ​

ValueType.Quat ​

Operation ​

constructor new(inputs: table[string, ValueType], outputs: table[string, ValueType]) ​

Creates a new operation from the given inputs and outputs. The inputs and outputs tables should have the form { name = ValueType }. If label name contains spaces, pass it like this: { ["label name"] = ValueType }.

attribute inputTypes: ValueType[] ​

Types of the operation's inputs.

attribute outputTypes: ValueType[] ​

Types of the operation's outputs.

attribute defaultInputNames: string[] ​

Names of the operation's inputs, must be the same length as inputTypes.

attribute defaultOutputNames: string[] ​

Names of the operation's outputs, must be the same length as outputTypes.

Scripting Node API functions ​

Scripting Node is a special node that can be modified using Lua scripts. You can specify node properties by creating a new Operation and attaching it to the node. The API provides a set of functions - on_init and on_update_values - that can be used in the script to interact with the node, you can also access the node's properties by using the self.node object. To save custom properties, you can use the self table, for example self.my_property = 1.

Example of a simple script:

lua
self.operation = Operation.new(
	{ x = ValueType.Float, y = ValueType.Float },
	{ result = ValueType.Vec3 }
)
self.on_init = function() print("Node initialized!") end
self.on_update_values = function()
	local operator = self.node:as_operator()
	if (operator:is_input_plugged(1) and operator:is_input_plugged(2)) then
		local x = operator:get_input_float(1)
		local y = operator:get_input_float(2)
		operator:set_value(Vec3.new(x, y, x + y))
	end
end

attribute self.operation: Operation ​

The operation which is used to create the node.

attribute self.node: Operator ​

The node that the script is attached to.

function self.on_init() ​

Called when the node is created. Function is protected, errors will be caught and printed to the console.

function self.on_update_values() ​

Called when the node's values are updated. Function is protected, errors will be caught and printed to the console.

Workspace API functions ​

function I3T.print_operator_types() ​

Prints all available operator types to the console.

function I3T.print_transform_types() ​

Prints all available transform types to the console.

function I3T.print_workspace() ​

Prints the workspace nodes to the console in the form of signatures.

function I3T.get_node(id: number): Node ​

Returns nil if the node with the given id does not exist.

function I3T.find_node(startIdx: number, endIdx: number, pred): Node | nil ​

Finds a node in the workspace, see I3T.find_node_in for more information.

function I3T.find_node_in(nodes: Node[], startIdx: number, endIdx: number, pred): Node | nil ​

Finds a node in the given nodes array starting from the startIdx index up to the endIdx index, where pred is a function that takes a Node and returns a boolean (function[bool(Node)]).

function I3T.delete_node(node: Node) ​

Deletes the given node from the workspace.

function I3T.to_script(): string ​

Returns the Lua script representation of the workspace.

function I3T.get_all_nodes(): Node[] ​

Returns all nodes in the workspace.

function I3T.get_node(id: number): Node ​

Returns the node with the given id.

function I3T.delete_node(node: Node) ​

Deletes the given node from the workspace.

function I3T.plug(from: number, from_index: number, to: number, to_index: number) ​

Plugs the output of the node with the given from id at the given from_index to the input of the node with the given to id at the given to_index. Uses 0-based indexing.

function I3T.unplug_input(node: number, index: number) ​

Unplugs the input of the node with the given node id at the given index.

function I3T.unplug_output(node: number, index: number) ​

Unplugs the output of the node with the given node id at the given index.

function I3T.workspace.clear() ​

Deletes all nodes from the workspace.

function I3T.workspace.set_zoom(value: number) ​

Sets the zoom level of the workspace.

function I3T.workspace.set_work_area(min: Vec2, max: Vec2) ​

Sets the work area of the workspace, where min is the top-left corner and max is the bottom-right corner.