Spatial¶
Inherited By:ARVRAnchor,ARVRController,ARVROrigin,AudioStreamPlayer3D,BoneAttachment,Camera,CollisionObject,CollisionPolygon,CollisionShape,CullInstance,GridMap,Joint,Listener,Navigation,NavigationMeshInstance,Occluder,Path,PathFollow,Portal,Position3D,ProximityGroup,RayCast,RemoteTransform,Room,RoomGroup,RoomManager,Skeleton,SpringArm,VehicleWheel
Most basic 3D game object, parent of all 3D-related nodes.
Description¶
Most basic 3D game object, with a 3DTransform and visibility settings. All other 3D game objects inherit from Spatial. UseSpatial as a parent node to move, scale, rotate and show/hide children in a 3D project.
Affine operations (rotate, scale, translate) happen in parent's local coordinate system, unless theSpatial object is set as top-level. Affine operations in this coordinate system correspond to direct affine operations on theSpatial's transform. The word local below refers to this coordinate system. The coordinate system that is attached to theSpatial object itself is referred to as object-local coordinate system.
Note: Unless otherwise specified, all methods that have angle parameters must have angles specified asradians. To convert degrees to radians, use@GDScript.deg2rad.
Tutorials¶
Properties¶
| ||
| ||
| ||
| ||
|
Methods¶
void | |
void | global_rotate(Vector3 axis,float angle) |
void | global_scale(Vector3 scale) |
void | global_translate(Vector3 offset) |
void | hide() |
void | |
void | look_at_from_position(Vector3 position,Vector3 target,Vector3 up) |
void | |
void | |
void | rotate_object_local(Vector3 axis,float angle) |
void | |
void | |
void | |
void | scale_object_local(Vector3 scale) |
void | set_as_toplevel(bool enable) |
void | set_disable_scale(bool disable) |
void | |
void | set_ignore_transform_notification(bool enabled) |
void | set_notify_local_transform(bool enable) |
void | set_notify_transform(bool enable) |
void | show() |
void | |
void | translate_object_local(Vector3 offset) |
void |
Signals¶
gameplay_entered()
Emitted by portal system gameplay monitor when a node enters the gameplay area.
gameplay_exited()
Emitted by portal system gameplay monitor when a node exits the gameplay area.
visibility_changed()
Emitted when node visibility changes.
Constants¶
NOTIFICATION_TRANSFORM_CHANGED =2000 --- Spatial nodes receives this notification when their global transform changes. This means that either the current or a parent node changed its transform.
In order forNOTIFICATION_TRANSFORM_CHANGED to work, users first need to ask for it, withset_notify_transform. The notification is also sent if the node is in the editor context and it has a valid gizmo.
NOTIFICATION_ENTER_WORLD =41 --- Spatial nodes receives this notification when they are registered to newWorld resource.
NOTIFICATION_EXIT_WORLD =42 --- Spatial nodes receives this notification when they are unregistered from currentWorld resource.
NOTIFICATION_VISIBILITY_CHANGED =43 --- Spatial nodes receives this notification when their visibility changes.
NOTIFICATION_ENTER_GAMEPLAY =45 --- Spatial nodes receives this notification if the portal system gameplay monitor detects they have entered the gameplay area.
NOTIFICATION_EXIT_GAMEPLAY =46 --- Spatial nodes receives this notification if the portal system gameplay monitor detects they have exited the gameplay area.
Property Descriptions¶
SpatialGizmogizmo
Setter | set_gizmo(value) |
Getter | get_gizmo() |
TheSpatialGizmo for this node. Used for example inEditorSpatialGizmo as custom visualization and editing handles in Editor.
Transformglobal_transform
Setter | set_global_transform(value) |
Getter | get_global_transform() |
World space (global)Transform of this node.
Vector3rotation
Setter | set_rotation(value) |
Getter | get_rotation() |
Rotation part of the local transformation in radians, specified in terms of YXZ-Euler angles in the format (X angle, Y angle, Z angle).
Note: In the mathematical sense, rotation is a matrix and not a vector. The three Euler angles, which are the three independent parameters of the Euler-angle parametrization of the rotation matrix, are stored in aVector3 data structure not because the rotation is a vector, but only becauseVector3 exists as a convenient data-structure to store 3 floating-point numbers. Therefore, applying affine operations on the rotation "vector" is not meaningful.
Vector3rotation_degrees
Default |
|
Setter | set_rotation_degrees(value) |
Getter | get_rotation_degrees() |
Rotation part of the local transformation in degrees, specified in terms of YXZ-Euler angles in the format (X angle, Y angle, Z angle).
Vector3scale
Default |
|
Setter | set_scale(value) |
Getter | get_scale() |
Scale part of the local transformation.
Transformtransform
Default |
|
Setter | set_transform(value) |
Getter | get_transform() |
Local spaceTransform of this node, with respect to the parent node.
Vector3translation
Default |
|
Setter | set_translation(value) |
Getter | get_translation() |
Local translation of this node.
boolvisible
Default |
|
Setter | set_visible(value) |
Getter | is_visible() |
Iftrue, this node is drawn. The node is only visible if all of its antecedents are visible as well (in other words,is_visible_in_tree must returntrue).
Method Descriptions¶
voidforce_update_transform()
Forces the transform to update. Transform changes in physics are not instant for performance reasons. Transforms are accumulated and then set. Use this if you need an up-to-date transform when doing physics operations.
Returns the parentSpatial, or an emptyObject if no parent exists or parent is not of typeSpatial.
Returns the currentWorld resource thisSpatial node is registered to.
Rotates the global (world) transformation around axis, a unitVector3, by specified angle in radians. The rotation axis is in global coordinate system.
voidglobal_scale(Vector3 scale)
Scales the global (world) transformation by the givenVector3 scale factors.
voidglobal_translate(Vector3 offset)
Moves the global (world) transformation byVector3 offset. The offset is in global coordinate system.
voidhide()
Disables rendering of this node. Changesvisible tofalse.
Returns whether node notifies about its local transformation changes.Spatial will not propagate this by default.
Returns whether this node uses a scale of(1,1,1) or its local transformation scale.
Returns whether this node is set as Toplevel, that is whether it ignores its parent nodes transformations.
Returns whether the node notifies about its global and local transformation changes.Spatial will not propagate this by default.
Returnstrue if the node is present in theSceneTree, itsvisible property istrue and all its antecedents are also visible. If any antecedent is hidden, this node will not be visible in the scene tree.
Rotates the node so that the local forward axis (-Z) points toward thetarget position.
The local up axis (+Y) points as close to theup vector as possible while staying perpendicular to the local forward axis. The resulting transform is orthogonal, and the scale is preserved. Non-uniform scaling may not work correctly.
Thetarget position cannot be the same as the node's position, theup vector cannot be zero, and the direction from the node's position to thetarget vector cannot be parallel to theup vector.
Operations take place in global space.
Moves the node to the specifiedposition, and then rotates itself to point toward thetarget as perlook_at. Operations take place in global space.
voidorthonormalize()
Resets this node's transformations (like scale, skew and taper) preserving its rotation and translation by performing Gram-Schmidt orthonormalization on this node'sTransform.
Rotates the local transformation around axis, a unitVector3, by specified angle in radians.
Rotates the local transformation around axis, a unitVector3, by specified angle in radians. The rotation axis is in object-local coordinate system.
voidrotate_x(float angle)
Rotates the local transformation around the X axis by angle in radians.
voidrotate_y(float angle)
Rotates the local transformation around the Y axis by angle in radians.
voidrotate_z(float angle)
Rotates the local transformation around the Z axis by angle in radians.
voidscale_object_local(Vector3 scale)
Scales the local transformation by given 3D scale factors in object-local coordinate system.
voidset_as_toplevel(bool enable)
Makes the node ignore its parents transformations. Node transformations are only in global space.
voidset_disable_scale(bool disable)
Sets whether the node uses a scale of(1,1,1) or its local transformation scale. Changes to the local transformation scale are preserved.
voidset_identity()
Reset all transformations for this node (sets itsTransform to the identity matrix).
voidset_ignore_transform_notification(bool enabled)
Sets whether the node ignores notification that its transformation (global or local) changed.
voidset_notify_local_transform(bool enable)
Sets whether the node notifies about its local transformation changes.Spatial will not propagate this by default.
voidset_notify_transform(bool enable)
Sets whether the node notifies about its global and local transformation changes.Spatial will not propagate this by default, unless it is in the editor context and it has a valid gizmo.
voidshow()
Enables rendering of this node. Changesvisible totrue.
Transformslocal_point from this node's local space to world space.
Transformsglobal_point from world space to this node's local space.
voidtranslate(Vector3 offset)
Changes the node's position by the given offsetVector3.
Note that the translationoffset is affected by the node's scale, so if scaled by e.g.(10,1,1), a translation by an offset of(2,0,0) would actually add 20 (2*10) to the X coordinate.
voidtranslate_object_local(Vector3 offset)
Changes the node's position by the given offsetVector3 in local space.
voidupdate_gizmo()
Updates theSpatialGizmo of this node.