Most basic 3D game object, parent of all 3D related nodes.
</brief_description>
<description>
Most basic 3D game object, with a 3D [Transform] and visibility settings. All 3D physics nodes and sprites inherit from Spatial. Use Spatial as a parent node to move, scale, rotate and show/hide children in a 3D project.
</description>
<tutorials>
</tutorials>
<demos>
</demos>
<methods>
<methodname="get_gizmo"qualifiers="const">
<returntype="SpatialGizmo">
</return>
<description>
Return the SpatialGizmo for this node. Used for example in [EditorSpatialGizmo] as custom visualization and editing handles in Editor.
Returns whether this node is visible, taking into consideration that its parents visibility.
</description>
</method>
<methodname="look_at">
<returntype="void">
</return>
<argumentindex="0"name="target"type="Vector3">
</argument>
<argumentindex="1"name="up"type="Vector3">
</argument>
<description>
Rotates itself to point into direction of target position. Operations take place in global space.
</description>
</method>
<methodname="look_at_from_pos">
<returntype="void">
</return>
<argumentindex="0"name="pos"type="Vector3">
</argument>
<argumentindex="1"name="target"type="Vector3">
</argument>
<argumentindex="2"name="up"type="Vector3">
</argument>
<description>
Moves itself to specified position and then rotates itself to point into direction of target position. Operations take place in global space.
</description>
</method>
<methodname="orthonormalize">
<returntype="void">
</return>
<description>
Reset this node transformations (like scale, skew and taper) preserving its rotation and translation. Performs orthonormalization on this node [Transform3D].
</description>
</method>
<methodname="rotate">
<returntype="void">
</return>
<argumentindex="0"name="normal"type="Vector3">
</argument>
<argumentindex="1"name="radians"type="float">
</argument>
<description>
Rotates node in local space on given normal [Vector3] by angle in radians.
</description>
</method>
<methodname="rotate_x">
<returntype="void">
</return>
<argumentindex="0"name="radians"type="float">
</argument>
<description>
Rotates node in local space on X axis by angle in radians.
</description>
</method>
<methodname="rotate_y">
<returntype="void">
</return>
<argumentindex="0"name="radians"type="float">
</argument>
<description>
Rotates node in local space on Y axis by angle in radians.
</description>
</method>
<methodname="rotate_z">
<returntype="void">
</return>
<argumentindex="0"name="radians"type="float">
</argument>
<description>
Rotates node in local space on Z axis by angle in radians.
</description>
</method>
<methodname="set_as_toplevel">
<returntype="void">
</return>
<argumentindex="0"name="enable"type="bool">
</argument>
<description>
Makes this node ignore its parents tranformations. Node tranformations are only in global space.
Spatial nodes receive this notification when their global transform changes. This means that either the current or a parent node changed its transform.
In order for NOTIFICATION_TRANSFORM_CHANGED to work user first needs to ask for it, with set_notify_transform(true).