SCHEMAXIS · Declared work. Results you can check.Documentation ↗ · Contact
schemaxis/Agent’s Hands

Documentation / generated/godot-operations.md
Core 11629ae · View or edit Markdown on GitHub ↗

Godot operation reference

Generated from the current declarations. Do not edit this file by hand.

Types, limits and defaults below describe resolved values. Runtime expressions must produce these types. Unknown options are rejected; defaults apply only when omitted. Constructor options must be constant after document composition.

Index#

box, camera, capsule, cylinder, directionalLight, material, omniLight, plane, readGLTF, sphere, spotLight, sprite3D, torus, transformGroup

box#

Creates a MeshInstance3D holding a native BoxMesh centred on position, with edge lengths size in metres and the connected material. Choose it for blocks, walls, platforms or bounding volumes; it is the simplest primitive and the box readback (12 triangles, exact bounds) is the easiest to check. The mesh stays an editable BoxMesh in Godot. Use plane for a zero-thickness floor and readGLTF for shapes that are not primitives.

Common mistakes and assumptions:

  • size holds full edge lengths, not half-extents: size [2, 2, 2] spans -1 to 1 around position.
  • It needs a material input naming an earlier material node. Schemaxis qualified this operation natively only on small CPU-only scenes with Godot 4.7.2 (build, fresh-process reopen and readback); visual quality and GUI editing were not qualified.

Native binding: BoxMesh. Output kind: ["geometry"].

Input port Multiplicity Required Kind
material one node yes material
parent one node no group
Option Meaning Type / constraints Default
position World position [x, y, z] of the box centre in metres (the BoxMesh is centred on its node). A box resting on the ground at y = 0 needs y equal to half its height. With inputs.parent, this value is local to the named transformGroup; ancestor transforms compose afterward. {"type":"array","items":{"type":"number","minimum":-100000,"maximum":100000},"minItems":3,"maxItems":3} [0,0,0]
size Full edge lengths [x, y, z] of the box in metres before rotation and scale, written to BoxMesh size. The box extends half of each length on either side of position. {"type":"array","items":{"type":"number","minimum":0.001,"maximum":10000},"minItems":3,"maxItems":3} [1,1,1]
rotation Orientation of the box as Euler angles [x, y, z] in degrees, written to Godot's rotation_degrees and applied after scale and before the move to position. Godot combines them in its intrinsic YXZ order, which equals turning about world Z first, then world X, then world Y; positive angles follow the right-hand rule. A box rotated [0, 45, 0] turns its faces 45 degrees about the vertical axis. With inputs.parent, this value is local to the named transformGroup; ancestor transforms compose afterward. {"type":"array","items":{"type":"number","minimum":-180,"maximum":180},"minItems":3,"maxItems":3} [0,0,0]
scale Scale factors [x, y, z] along the box's local axes, written to the node's scale and applied before rotation. Each factor multiplies the declared dimensions in that axis, and the verified world bounds include it. For a box, changing size is usually clearer than scaling; scale keeps BoxMesh size unchanged and stretches the node. With inputs.parent, this value is local to the named transformGroup; ancestor transforms compose afterward. {"type":"array","items":{"type":"number","minimum":0.001,"maximum":1000},"minItems":3,"maxItems":3} [1,1,1]

camera#

Creates the scene's single perspective Camera3D at position, turned with look_at so that it looks at target with +Y up, and makes it the current camera. Every Godot document needs exactly one camera node; it frames the optional preview image and the view when the saved project is run. With orbit enabled, a fixed trusted script lets a user orbit, zoom and reset the view interactively in Godot.

Common mistakes and assumptions:

  • A camera directly above or below its target (no horizontal separation) is rejected, because the Y-up look-at direction would be undefined; offset position slightly in X or Z for a near top-down view.
  • Schemaxis does not check that geometry is inside the view; a preview can be valid but empty if the camera misses it.
  • A second camera node fails planning with INVALID_SELECTION.

Native binding: Camera3D. Output kind: ["camera"].

Inputs: none.

Option Meaning Type / constraints Default
position World position [x, y, z] of the camera eye in metres. Together with target it fixes the view direction; the camera has no separate rotation setting. Its distance from target must be 0.01 m to 100 km and it must not be directly above or below target. {"type":"array","items":{"type":"number","minimum":-100000,"maximum":100000},"minItems":3,"maxItems":3} [5,4,7]
target World point [x, y, z] in metres that the camera looks at; Schemaxis calls Godot's look_at with +Y as up, so the camera never rolls. With orbit enabled, it is also the pivot the interactive orbit turns around. {"type":"array","items":{"type":"number","minimum":-100000,"maximum":100000},"minItems":3,"maxItems":3} [0,0,0]
fov Field-of-view angle of the perspective camera in degrees, written to Camera3D fov. With Godot's default aspect mode (keep height) this is the vertical angle; the horizontal angle follows from the window or preview aspect ratio. Smaller values zoom in and flatten perspective; larger values widen the view and exaggerate perspective. {"type":"number","minimum":10,"maximum":120} 55
near Distance in metres from the camera to the near clipping plane, written to Camera3D near; anything closer is not drawn. It must be smaller than far. With orbit on, it also limits how close the wheel can zoom. {"type":"number","minimum":0.001,"maximum":100} 0.05
far Distance in metres from the camera to the far clipping plane, written to Camera3D far; anything farther is not drawn. It must be greater than near. {"type":"number","minimum":1,"maximum":100000} 1000
orbit When true, Schemaxis attaches its fixed, trusted orbit.gd script to the camera: in the running Godot project, left-drag orbits around target, the mouse wheel zooms and R resets the view. When false, the camera is fixed and has no script. It does not change the saved view or the preview image. {"type":"boolean"} true

capsule#

Creates a MeshInstance3D holding a native CapsuleMesh: a cylinder with hemispherical ends standing along its local Y axis, centred on position. height is the total height including both caps, so it must be at least twice the radius; tessellation is fixed at 32 radial segments and 8 rings. Choose it for character or obstacle placeholders and rounded rods.

Common mistakes and assumptions:

  • A height below 2 x radius fails planning with INVALID_ARGUMENT; with height exactly 2 x radius the capsule is a sphere.
  • It needs a material input naming an earlier material node. Schemaxis qualified this operation natively only on small CPU-only scenes with Godot 4.7.2 (build, fresh-process reopen and readback); visual quality and GUI editing were not qualified.

Native binding: CapsuleMesh. Output kind: ["geometry"].

Input port Multiplicity Required Kind
material one node yes material
parent one node no group
Option Meaning Type / constraints Default
position World position [x, y, z] of the capsule centre in metres, half-way along its axis. An upright capsule standing on the ground at y = 0 needs y equal to height / 2. With inputs.parent, this value is local to the named transformGroup; ancestor transforms compose afterward. {"type":"array","items":{"type":"number","minimum":-100000,"maximum":100000},"minItems":3,"maxItems":3} [0,0,0]
radius Radius in metres of the capsule body and of its two hemispherical ends. It may be at most half of height. {"type":"number","minimum":0.001,"maximum":10000} 0.5
height Total length of the capsule along its local Y axis in metres, including both hemispherical ends, so the straight part is height - 2 x radius long. It must be at least twice the radius. {"type":"number","minimum":0.002,"maximum":10000} 2
rotation Orientation of the capsule as Euler angles [x, y, z] in degrees, written to Godot's rotation_degrees and applied after scale and before the move to position. Godot combines them in its intrinsic YXZ order, which equals turning about world Z first, then world X, then world Y; positive angles follow the right-hand rule. Rotation [0, 0, 90] lays the capsule along the X axis. With inputs.parent, this value is local to the named transformGroup; ancestor transforms compose afterward. {"type":"array","items":{"type":"number","minimum":-180,"maximum":180},"minItems":3,"maxItems":3} [0,0,0]
scale Scale factors [x, y, z] along the capsule's local axes, written to the node's scale and applied before rotation. Each factor multiplies the declared dimensions in that axis, and the verified world bounds include it. Non-uniform factors distort the round ends into ellipsoidal caps; prefer radius and height for size changes. With inputs.parent, this value is local to the named transformGroup; ancestor transforms compose afterward. {"type":"array","items":{"type":"number","minimum":0.001,"maximum":1000},"minItems":3,"maxItems":3} [1,1,1]

cylinder#

Creates a MeshInstance3D holding a native CylinderMesh with equal top and bottom radius, standing along its local Y axis and centred on position (it extends height/2 above and below). Tessellation is fixed at 32 radial segments and one ring (192 triangles). Choose it for posts, pipes and columns; rotate it to lie along another axis. Cones are not available because only one radius is accepted.

Common mistakes and assumptions:

  • position is the centre of the cylinder, not its base: to stand a 1.2 m post on the ground at y = 0, use position y = 0.6.
  • It needs a material input naming an earlier material node. Schemaxis qualified this operation natively only on small CPU-only scenes with Godot 4.7.2 (build, fresh-process reopen and readback); visual quality and GUI editing were not qualified.

Native binding: CylinderMesh. Output kind: ["geometry"].

Input port Multiplicity Required Kind
material one node yes material
parent one node no group
Option Meaning Type / constraints Default
position World position [x, y, z] of the cylinder centre in metres, half-way along its axis. An upright cylinder standing on the ground at y = 0 needs y equal to height / 2. With inputs.parent, this value is local to the named transformGroup; ancestor transforms compose afterward. {"type":"array","items":{"type":"number","minimum":-100000,"maximum":100000},"minItems":3,"maxItems":3} [0,0,0]
radius Radius of the cylinder in metres, written to both the top and bottom radius of the native CylinderMesh, so the sides are straight. {"type":"number","minimum":0.001,"maximum":10000} 0.5
height Length of the cylinder along its local Y axis in metres; it extends height / 2 on either side of position. {"type":"number","minimum":0.001,"maximum":10000} 1
rotation Orientation of the cylinder as Euler angles [x, y, z] in degrees, written to Godot's rotation_degrees and applied after scale and before the move to position. Godot combines them in its intrinsic YXZ order, which equals turning about world Z first, then world X, then world Y; positive angles follow the right-hand rule. Rotation [0, 0, 90] lays the cylinder along the X axis; [90, 0, 0] lays it along Z. With inputs.parent, this value is local to the named transformGroup; ancestor transforms compose afterward. {"type":"array","items":{"type":"number","minimum":-180,"maximum":180},"minItems":3,"maxItems":3} [0,0,0]
scale Scale factors [x, y, z] along the cylinder's local axes, written to the node's scale and applied before rotation. Each factor multiplies the declared dimensions in that axis, and the verified world bounds include it. Unequal X and Z factors give an elliptical cross-section; the Y factor multiplies the height. With inputs.parent, this value is local to the named transformGroup; ancestor transforms compose afterward. {"type":"array","items":{"type":"number","minimum":0.001,"maximum":1000},"minItems":3,"maxItems":3} [1,1,1]

directionalLight#

Creates a DirectionalLight3D: parallel light from a distant source such as the sun, whose direction comes only from rotation (light travels along the node's rotated -Z axis); it has no position and lights the whole scene equally. Choose it as the main key or sun light; add omniLight or spotLight for local light. Shadows are not offered for this operation. Schemaxis does not require any light node; add one when the preview or running project should show directional shading.

Common mistakes and assumptions:

  • Rotation [0, 0, 0] points the light horizontally along -Z; tilt it downward with a negative X angle (the default is [-45, -30, 0]).

Native binding: DirectionalLight3D. Output kind: ["light"].

Inputs: none.

Option Meaning Type / constraints Default
rotation Orientation of the light as Euler angles [x, y, z] in degrees (Godot YXZ order), written to rotation_degrees. The light travels along the node's rotated -Z axis: the X angle tilts it up or down (negative is downward) and the Y angle turns its heading about the vertical axis; the Z angle has no visible effect. Moving the node would not matter, so there is no position. {"type":"array","items":{"type":"number","minimum":-180,"maximum":180},"minItems":3,"maxItems":3} [-45,-30,0]
colour Colour of the light as [red, green, blue], each 0 to 1, written to light_color (Godot interprets it as non-linear sRGB). Lit surfaces are tinted by it; white leaves material colours unchanged. {"type":"array","items":{"type":"number","minimum":0,"maximum":1},"minItems":3,"maxItems":3} [1,1,1]
energy Brightness multiplier of the sunlight, written to light_energy. Godot states it is not a physical unit: 2 is twice as bright as 1 and 0 switches the light off. {"type":"number","minimum":0,"maximum":16} 1

material#

Creates a Godot StandardMaterial3D resource with an opaque base colour, roughness and metallic value; it is not a scene node by itself. Choose it once per distinct surface look and connect it to the material input of box, sphere, cylinder, plane, capsule, torus or readGLTF nodes; several meshes may share one material. The resource is saved inside scene.tscn as each mesh's material override, and the reopened values are compared with the authored ones.

Common mistakes and assumptions:

  • Every material must feed at least one geometry node; an unused material fails planning with INVALID_SELECTION.
  • Declare the material before the meshes that use it; inputs may only refer to earlier nodes.
  • Transparency, textures and emission are not available; alpha is always 1. Schemaxis qualified this operation natively only on small CPU-only scenes with Godot 4.7.2 (build, fresh-process reopen and readback); visual quality and GUI editing were not qualified.

Native binding: StandardMaterial3D. Output kind: ["material"].

Inputs: none.

Option Meaning Type / constraints Default
colour Base (albedo) colour of the surface as [red, green, blue], each from 0 to 1, written to albedo_color with alpha 1. Lit surfaces show this colour modulated by lights; for metallic surfaces it tints the reflections instead of the diffuse colour. {"type":"array","items":{"type":"number","minimum":0,"maximum":1},"minItems":3,"maxItems":3} [0.3,0.6,0.9]
roughness How rough the surface is, from 0 to 1. Godot treats 0 as a perfect mirror and 1 as fully blurred reflection; intermediate values give broader, softer highlights as the value increases. {"type":"number","minimum":0,"maximum":1} 0.6
metallic How metal-like the surface is, from 0 (dielectric such as plastic or paint) to 1 (metal). Metals use the base colour to tint reflections and have no diffuse colour; Godot recommends 0 or 1 and intermediate values only for blending between metal and non-metal. {"type":"number","minimum":0,"maximum":1} 0

omniLight#

Creates an OmniLight3D: a point light at position that shines in all directions and lights nothing beyond range metres. attenuation shapes how brightness falls with distance inside that radius, and shadows can be enabled. Choose it for lamps, fill and rim lights; use spotLight for a directed cone and directionalLight for sunlight.

Common mistakes and assumptions:

  • Objects farther than range from the light receive none of its light, however high energy is.

Native binding: OmniLight3D. Output kind: ["light"].

Inputs: none.

Option Meaning Type / constraints Default
position World position [x, y, z] of the light source in metres. Light spreads from this point in all directions. {"type":"array","items":{"type":"number","minimum":-100000,"maximum":100000},"minItems":3,"maxItems":3} [0,0,0]
colour Colour of the light as [red, green, blue], each 0 to 1, written to light_color (non-linear sRGB in Godot). A cool fill light such as [0.6, 0.75, 1] contrasts with a warm key light. {"type":"array","items":{"type":"number","minimum":0,"maximum":1},"minItems":3,"maxItems":3} [1,1,1]
energy Brightness multiplier of the light, written to light_energy; Godot states it is not a physical unit. For omni lights it changes intensity only, not how far the light reaches (that is range). {"type":"number","minimum":0,"maximum":16} 1
range Radius in metres of the sphere the light can reach, written to omni_range. Nothing outside this radius receives any of its light, whatever the attenuation; inside it, brightness falls off according to attenuation. {"type":"number","minimum":0.001,"maximum":100000} 5
attenuation Shape of the brightness fall-off with distance inside range, written to omni_attenuation. Godot describes values near 0 as nearly constant brightness that fades only at the edge of range, and 2 as physically accurate inverse-square fall-off; 1 is in between. {"type":"number","minimum":0.001,"maximum":16} 1
shadows When true, the light casts real-time shadows (Light3D shadow_enabled), so objects block it from surfaces behind them. Godot notes this has a significant rendering cost. It affects the preview image and the running project, not the verified geometry. {"type":"boolean"} false

plane#

Creates a MeshInstance3D holding a native PlaneMesh: a flat, zero-thickness rectangle (2 triangles) in its local XZ plane, facing +Y and centred on position. Choose it for floors, ground or backdrop panels; size gives its X and Z extents. Rotate it to make a wall. The default 10 x 10 m plane suits a ground under the default camera.

Common mistakes and assumptions:

  • With the default material settings Godot draws only the face pointing along the plane's +Y normal, so a plane seen from below or from behind is invisible; rotate it so its normal faces the camera.
  • It needs a material input naming an earlier material node. Schemaxis qualified this operation natively only on small CPU-only scenes with Godot 4.7.2 (build, fresh-process reopen and readback); visual quality and GUI editing were not qualified.

Native binding: PlaneMesh. Output kind: ["geometry"].

Input port Multiplicity Required Kind
material one node yes material
parent one node no group
Option Meaning Type / constraints Default
position World position [x, y, z] of the plane centre in metres. For a ground plane, y is the ground height; objects meant to rest on it must be placed relative to this height. With inputs.parent, this value is local to the named transformGroup; ancestor transforms compose afterward. {"type":"array","items":{"type":"number","minimum":-100000,"maximum":100000},"minItems":3,"maxItems":3} [0,0,0]
size Lengths [x, z] of the rectangle in metres: the first element is the extent along local X, the second along local Z. The plane has no thickness; it extends half of each length on either side of position. {"type":"array","items":{"type":"number","minimum":0.001,"maximum":10000},"minItems":2,"maxItems":2} [10,10]
rotation Orientation of the plane as Euler angles [x, y, z] in degrees, written to Godot's rotation_degrees and applied after scale and before the move to position. Godot combines them in its intrinsic YXZ order, which equals turning about world Z first, then world X, then world Y; positive angles follow the right-hand rule. Rotation [90, 0, 0] turns the horizontal plane into a wall facing +Z; [-90, 0, 0] faces it towards -Z. With inputs.parent, this value is local to the named transformGroup; ancestor transforms compose afterward. {"type":"array","items":{"type":"number","minimum":-180,"maximum":180},"minItems":3,"maxItems":3} [0,0,0]
scale Scale factors [x, y, z] along the plane's local axes, written to the node's scale and applied before rotation. Each factor multiplies the declared dimensions in that axis, and the verified world bounds include it. The X and Z factors multiply the two size lengths; the Y factor has no visible effect on a flat plane. With inputs.parent, this value is local to the named transformGroup; ancestor transforms compose afterward. {"type":"array","items":{"type":"number","minimum":0.001,"maximum":1000},"minItems":3,"maxItems":3} [1,1,1]

readGLTF#

Imports one static triangle mesh from a self-contained .gltf 2.0 file with Godot's GLTFDocument and places it as an editable ArrayMesh in a MeshInstance3D, using the connected material and the authored position, rotation and scale. Choose it to bring CAD or modelling output into a scene when no primitive fits. Schemaxis accepts only a narrow subset (one scene, one untransformed node, one mesh with one TRIANGLES primitive, embedded base64 buffers, POSITION and optional NORMAL, at most 8 MiB) and rejects anything else instead of discarding it. The file bytes are captured and hashed before import, and the native bounds and triangle count are checked against values measured from those bytes.

Common mistakes and assumptions:

  • GLB files, external .bin or texture URIs, node transforms, glTF materials, animation, skins and extensions are rejected with UNSUPPORTED_RESOURCE; export a plain embedded .gltf mesh instead.
  • The glTF's own materials are not imported; the surface look comes only from the material input.
  • Verification establishes bounds and triangle count, not vertex-by-vertex or normal equivalence. Schemaxis qualified this operation natively only on small CPU-only scenes with Godot 4.7.2 (build, fresh-process reopen and readback); visual quality and GUI editing were not qualified.

Native binding: GLTFDocument. Output kind: ["geometry"].

Input port Multiplicity Required Kind
material one node yes material
parent one node no group
Option Meaning Type / constraints Default
position World position [x, y, z] in metres where the glTF mesh's own origin is placed. The mesh is not re-centred: if its vertices lie away from their origin, the mesh appears offset from position by the same amount. With inputs.parent, this value is local to the named transformGroup; ancestor transforms compose afterward. {"type":"array","items":{"type":"number","minimum":-100000,"maximum":100000},"minItems":3,"maxItems":3} [0,0,0]
file Absolute path of the .gltf 2.0 file to import. The file must contain one scene with one untransformed node, one mesh with one TRIANGLES primitive, embedded base64 buffers, float POSITION and optional NORMAL, at most 100000 elements per accessor and 8 MiB in size. Its bytes are copied into the run directory and hashed before import. glTF coordinates are metres with +Y up, the same convention as Godot, so vertices are used without axis or unit conversion. In a workflow, a gltf artifact from an earlier operation can supply this file. {"type":"string","minLength":1,"maxLength":4096} required
rotation Orientation of the imported mesh as Euler angles [x, y, z] in degrees, written to Godot's rotation_degrees and applied after scale and before the move to position. Godot combines them in its intrinsic YXZ order, which equals turning about world Z first, then world X, then world Y; positive angles follow the right-hand rule. Rotation turns the mesh about its glTF origin, not about its centre. With inputs.parent, this value is local to the named transformGroup; ancestor transforms compose afterward. {"type":"array","items":{"type":"number","minimum":-180,"maximum":180},"minItems":3,"maxItems":3} [0,0,0]
scale Scale factors [x, y, z] along the imported mesh's local axes, written to the node's scale and applied before rotation. Each factor multiplies the declared dimensions in that axis, and the verified world bounds include it. Use it to convert a model authored in other length units, for example 0.001 for millimetres; scaling is about the glTF origin. With inputs.parent, this value is local to the named transformGroup; ancestor transforms compose afterward. {"type":"array","items":{"type":"number","minimum":0.001,"maximum":1000},"minItems":3,"maxItems":3} [1,1,1]

sphere#

Creates a MeshInstance3D holding a full native SphereMesh of the given radius, centred on position. Schemaxis fixes the height at twice the radius and the tessellation at 32 radial segments and 15 rings (1024 triangles), so a sphere always reopens with exactly those native parameters. Choose it for balls, markers and material comparisons; for an ellipsoid, apply a non-uniform scale.

Common mistakes and assumptions:

  • The surface is a polygon approximation with 32 segments around; it is not suitable as an exact analytic sphere.
  • It needs a material input naming an earlier material node. Schemaxis qualified this operation natively only on small CPU-only scenes with Godot 4.7.2 (build, fresh-process reopen and readback); visual quality and GUI editing were not qualified.

Native binding: SphereMesh. Output kind: ["geometry"].

Input port Multiplicity Required Kind
material one node yes material
parent one node no group
Option Meaning Type / constraints Default
position World position [x, y, z] of the sphere centre in metres. A sphere resting on the ground at y = 0 needs y equal to its radius. With inputs.parent, this value is local to the named transformGroup; ancestor transforms compose afterward. {"type":"array","items":{"type":"number","minimum":-100000,"maximum":100000},"minItems":3,"maxItems":3} [0,0,0]
radius Radius of the sphere in metres, from 0.001 to 10000. Schemaxis also sets the native SphereMesh height to twice this value, so the result is always a full sphere with diameter 2 x radius. {"type":"number","minimum":0.001,"maximum":10000} 0.5
rotation Orientation of the sphere as Euler angles [x, y, z] in degrees, written to Godot's rotation_degrees and applied after scale and before the move to position. Godot combines them in its intrinsic YXZ order, which equals turning about world Z first, then world X, then world Y; positive angles follow the right-hand rule. Rotation is visible only when scale is non-uniform or the material shows the tessellation; it still changes the verified transform. With inputs.parent, this value is local to the named transformGroup; ancestor transforms compose afterward. {"type":"array","items":{"type":"number","minimum":-180,"maximum":180},"minItems":3,"maxItems":3} [0,0,0]
scale Scale factors [x, y, z] along the sphere's local axes, written to the node's scale and applied before rotation. Each factor multiplies the declared dimensions in that axis, and the verified world bounds include it. Unequal factors turn the sphere into an ellipsoid with semi-axes radius x factor. With inputs.parent, this value is local to the named transformGroup; ancestor transforms compose afterward. {"type":"array","items":{"type":"number","minimum":0.001,"maximum":1000},"minItems":3,"maxItems":3} [1,1,1]

spotLight#

Creates a SpotLight3D: a cone of light from position along the node's rotated -Z axis, with angle as the cone's half-angle and range as its reach in metres. attenuation and angleAttenuation shape the fall-off with distance and towards the cone edge; shadows can be enabled. Choose it for key lights, stage lights or torches; use omniLight for light in all directions.

Common mistakes and assumptions:

  • With rotation [0, 0, 0] the cone points horizontally along -Z; aim it with a negative X angle (downward) and a Y angle (heading).
  • angle is measured from the cone axis to its edge, so 45 gives a 90-degree wide cone.

Native binding: SpotLight3D. Output kind: ["light"].

Inputs: none.

Option Meaning Type / constraints Default
position World position [x, y, z] of the cone apex in metres, the point the light shines from. {"type":"array","items":{"type":"number","minimum":-100000,"maximum":100000},"minItems":3,"maxItems":3} [0,0,0]
rotation Aim of the spot light as Euler angles [x, y, z] in degrees (Godot YXZ order), written to rotation_degrees. The cone axis is the node's rotated -Z axis: the X angle tilts it (negative points downward) and the Y angle sets its heading; the Z angle only rolls the cone about its own axis. {"type":"array","items":{"type":"number","minimum":-180,"maximum":180},"minItems":3,"maxItems":3} [0,0,0]
colour Colour of the light as [red, green, blue], each 0 to 1, written to light_color (non-linear sRGB in Godot). {"type":"array","items":{"type":"number","minimum":0,"maximum":1},"minItems":3,"maxItems":3} [1,1,1]
energy Brightness multiplier of the spot light, written to light_energy; Godot states it is not a physical unit. It changes intensity only, not the reach (range) or cone width (angle). {"type":"number","minimum":0,"maximum":16} 1
range Maximum distance in metres the cone reaches along its axis, written to spot_range. Surfaces beyond it receive no light from this spot. {"type":"number","minimum":0.001,"maximum":100000} 5
attenuation Shape of the brightness fall-off with distance along the cone, written to spot_attenuation. As for omni lights, values near 0 keep brightness nearly constant until the edge of range, and 2 gives physically accurate inverse-square fall-off. {"type":"number","minimum":0.001,"maximum":16} 1
angle Half-angle of the cone in degrees, written to spot_angle: the angle from the cone axis to its edge. The lit cone is twice this wide, so the default 45 lights a 90-degree cone. Schemaxis accepts 1 to 89 degrees. {"type":"number","minimum":1,"maximum":89} 45
angleAttenuation Shape of the brightness fall-off from the cone axis towards its edge, written to spot_angle_attenuation. Godot documents it as the angular attenuation curve; changing it changes how soft or hard the edge of the light pool looks. {"type":"number","minimum":0.001,"maximum":16} 1
shadows When true, the spot light casts real-time shadows (Light3D shadow_enabled), so objects in the cone block light from surfaces behind them. Godot notes a significant rendering cost. It affects the preview image and running project, not the verified geometry. {"type":"boolean"} false

sprite3D#

Embeds a PNG image as an editable Sprite3D with an ImageTexture: a flat, double-sided picture centred on position, facing +Z, whose world size is the image size in pixels multiplied by pixelSize. Choose it to show pixel art, a sprite sheet from an Aseprite operation or any other PNG inside a 3D scene; it needs no material and counts as the visible geometry a scene requires. Schemaxis uses nearest-neighbour filtering so pixels stay crisp, and checks the reopened texture's dimensions and RGBA pixel digest.

Common mistakes and assumptions:

  • Only non-interlaced 8-bit RGB or RGBA PNG up to 4096 x 4096 pixels is accepted; palette, greyscale, 16-bit and interlaced files fail with INVALID_IMAGE.
  • The sprite is not a billboard and has no rotation or scale option: it always faces +Z, so a camera looking along +Z sees its back (mirrored).
  • A whole sprite sheet is shown as one picture; frames are not animated.

Native binding: Sprite3D. Output kind: ["image"].

Inputs: none.

Option Meaning Type / constraints Default
position World position [x, y, z] in metres of the centre of the sprite rectangle. The picture lies in a plane parallel to XY through this point. {"type":"array","items":{"type":"number","minimum":-100000,"maximum":100000},"minItems":3,"maxItems":3} [0,0,0]
file Absolute path of the PNG image to show. Schemaxis decodes the actual pixels, copies the file into the run directory and embeds the texture in the saved scene, so the original file may later move. Accepted images are non-interlaced 8-bit RGB or RGBA PNG up to 4096 x 4096 pixels; transparent pixels stay transparent. In a workflow, an image or spriteSheet artifact (for example an Aseprite preview or sheet) can supply this file. {"type":"string","minLength":1,"maxLength":4096} required
pixelSize Width and height in metres of one image pixel in the scene, written to Sprite3D pixel_size. The sprite's world size is its pixel dimensions times this value: a 16 x 16 image with pixelSize 0.05 is 0.8 m square. {"type":"number","minimum":1e-05,"maximum":10} 0.01

torus#

Creates a MeshInstance3D holding a native TorusMesh: a ring lying in its local XZ plane around the local Y axis, centred on position. innerRadius is the radius of the hole and outerRadius the overall radius, so the tube is outerRadius - innerRadius thick. Tessellation is fixed at 32 rings and 16 ring segments. Choose it for rings, wheels and seals.

Common mistakes and assumptions:

  • innerRadius must be smaller than outerRadius; equal or reversed values fail planning with INVALID_ARGUMENT.
  • It needs a material input naming an earlier material node. Schemaxis qualified this operation natively only on small CPU-only scenes with Godot 4.7.2 (build, fresh-process reopen and readback); visual quality and GUI editing were not qualified.

Native binding: TorusMesh. Output kind: ["geometry"].

Input port Multiplicity Required Kind
material one node yes material
parent one node no group
Option Meaning Type / constraints Default
position World position [x, y, z] of the torus centre (the centre of the hole) in metres. With inputs.parent, this value is local to the named transformGroup; ancestor transforms compose afterward. {"type":"array","items":{"type":"number","minimum":-100000,"maximum":100000},"minItems":3,"maxItems":3} [0,0,0]
innerRadius Radius of the hole in metres: the distance from the torus centre to the inner edge of the tube, written to TorusMesh inner_radius. It must be smaller than outerRadius; the tube thickness is outerRadius - innerRadius. {"type":"number","minimum":0.001,"maximum":10000} 0.5
outerRadius Overall radius of the torus in metres: the distance from the centre to the outer edge of the tube, written to TorusMesh outer_radius. The torus is 2 x outerRadius wide in X and Z. {"type":"number","minimum":0.002,"maximum":10000} 1
rotation Orientation of the torus as Euler angles [x, y, z] in degrees, written to Godot's rotation_degrees and applied after scale and before the move to position. Godot combines them in its intrinsic YXZ order, which equals turning about world Z first, then world X, then world Y; positive angles follow the right-hand rule. Rotation [90, 0, 0] stands the ring upright, with its hole facing along Z. With inputs.parent, this value is local to the named transformGroup; ancestor transforms compose afterward. {"type":"array","items":{"type":"number","minimum":-180,"maximum":180},"minItems":3,"maxItems":3} [0,0,0]
scale Scale factors [x, y, z] along the torus's local axes, written to the node's scale and applied before rotation. Each factor multiplies the declared dimensions in that axis, and the verified world bounds include it. The Y factor changes the tube thickness in the vertical direction only, flattening or stretching the ring. With inputs.parent, this value is local to the named transformGroup; ancestor transforms compose afterward. {"type":"array","items":{"type":"number","minimum":0.001,"maximum":1000},"minItems":3,"maxItems":3} [1,1,1]

transformGroup#

Create a named, non-renderable Node3D transform group to move, rotate and scale a static assembly together. Connect child geometry or other groups through inputs.parent. Transform options are local to the parent; leaving parent out attaches to the scene root. Group world bounds enclose descendant geometry; empty groups have no bounds. Cameras, lights and sprites stay at the root.

Common mistakes and assumptions:

  • This is a transform hierarchy, not Godot named membership groups, animation, instancing or physics. All descendants remain owned by the saved scene root.

Native binding: Node3D. Output kind: ["group"].

Input port Multiplicity Required Kind
parent one node no group
Option Meaning Type / constraints Default
position XYZ translation of the group pivot relative to its parent, in metres. Default [0,0,0], each component within ±100000 m. An ancestor rotation or scale changes the world displacement. {"type":"array","items":{"type":"number","minimum":-100000,"maximum":100000},"minItems":3,"maxItems":3} [0,0,0]
rotation XYZ Euler angles in degrees, default [0,0,0], each within [-180,180]. Godot intrinsic YXZ means points are scaled, rotated Z then X then Y, and translated. Ancestor transforms apply afterward. {"type":"array","items":{"type":"number","minimum":-180,"maximum":180},"minItems":3,"maxItems":3} [0,0,0]
scale Positive dimensionless XYZ scale, default [1,1,1], components in [0.001,1000]. Zero and mirrored/negative scales are rejected. Non-uniform scales combined with child rotations can induce shear; full affine composition is preserved. {"type":"array","items":{"type":"number","minimum":0.001,"maximum":1000},"minItems":3,"maxItems":3} [1,1,1]