class_spatial.rst 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547
  1. :github_url: hide
  2. .. Generated automatically by doc/tools/makerst.py in Godot's source tree.
  3. .. DO NOT EDIT THIS FILE, but the Spatial.xml source instead.
  4. .. The source is found in doc/classes or modules/<name>/doc_classes.
  5. .. _class_Spatial:
  6. Spatial
  7. =======
  8. **Inherits:** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
  9. **Inherited By:** :ref:`ARVRAnchor<class_ARVRAnchor>`, :ref:`ARVRController<class_ARVRController>`, :ref:`ARVROrigin<class_ARVROrigin>`, :ref:`AudioStreamPlayer3D<class_AudioStreamPlayer3D>`, :ref:`BoneAttachment<class_BoneAttachment>`, :ref:`Camera<class_Camera>`, :ref:`CollisionObject<class_CollisionObject>`, :ref:`CollisionPolygon<class_CollisionPolygon>`, :ref:`CollisionShape<class_CollisionShape>`, :ref:`GridMap<class_GridMap>`, :ref:`Joint<class_Joint>`, :ref:`Listener<class_Listener>`, :ref:`Navigation<class_Navigation>`, :ref:`NavigationMeshInstance<class_NavigationMeshInstance>`, :ref:`Path<class_Path>`, :ref:`PathFollow<class_PathFollow>`, :ref:`Position3D<class_Position3D>`, :ref:`ProximityGroup<class_ProximityGroup>`, :ref:`RayCast<class_RayCast>`, :ref:`RemoteTransform<class_RemoteTransform>`, :ref:`Skeleton<class_Skeleton>`, :ref:`SpringArm<class_SpringArm>`, :ref:`VehicleWheel<class_VehicleWheel>`, :ref:`VisibilityNotifier<class_VisibilityNotifier>`, :ref:`VisualInstance<class_VisualInstance>`
  10. Most basic 3D game object, parent of all 3D-related nodes.
  11. Description
  12. -----------
  13. Most basic 3D game object, with a 3D :ref:`Transform<class_Transform>` and visibility settings. All other 3D game objects inherit from Spatial. Use ``Spatial`` as a parent node to move, scale, rotate and show/hide children in a 3D project.
  14. Affine operations (rotate, scale, translate) happen in parent's local coordinate system, unless the ``Spatial`` object is set as top-level. Affine operations in this coordinate system correspond to direct affine operations on the ``Spatial``'s transform. The word local below refers to this coordinate system. The coordinate system that is attached to the ``Spatial`` object itself is referred to as object-local coordinate system.
  15. Tutorials
  16. ---------
  17. - :doc:`../tutorials/3d/introduction_to_3d`
  18. Properties
  19. ----------
  20. +-----------------------------------------+------------------------------------------------------------------+-----------------------------------------------------+
  21. | :ref:`SpatialGizmo<class_SpatialGizmo>` | :ref:`gizmo<class_Spatial_property_gizmo>` | |
  22. +-----------------------------------------+------------------------------------------------------------------+-----------------------------------------------------+
  23. | :ref:`Transform<class_Transform>` | :ref:`global_transform<class_Spatial_property_global_transform>` | |
  24. +-----------------------------------------+------------------------------------------------------------------+-----------------------------------------------------+
  25. | :ref:`Vector3<class_Vector3>` | :ref:`rotation<class_Spatial_property_rotation>` | |
  26. +-----------------------------------------+------------------------------------------------------------------+-----------------------------------------------------+
  27. | :ref:`Vector3<class_Vector3>` | :ref:`rotation_degrees<class_Spatial_property_rotation_degrees>` | ``Vector3( 0, 0, 0 )`` |
  28. +-----------------------------------------+------------------------------------------------------------------+-----------------------------------------------------+
  29. | :ref:`Vector3<class_Vector3>` | :ref:`scale<class_Spatial_property_scale>` | ``Vector3( 1, 1, 1 )`` |
  30. +-----------------------------------------+------------------------------------------------------------------+-----------------------------------------------------+
  31. | :ref:`Transform<class_Transform>` | :ref:`transform<class_Spatial_property_transform>` | ``Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )`` |
  32. +-----------------------------------------+------------------------------------------------------------------+-----------------------------------------------------+
  33. | :ref:`Vector3<class_Vector3>` | :ref:`translation<class_Spatial_property_translation>` | ``Vector3( 0, 0, 0 )`` |
  34. +-----------------------------------------+------------------------------------------------------------------+-----------------------------------------------------+
  35. | :ref:`bool<class_bool>` | :ref:`visible<class_Spatial_property_visible>` | ``true`` |
  36. +-----------------------------------------+------------------------------------------------------------------+-----------------------------------------------------+
  37. Methods
  38. -------
  39. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  40. | void | :ref:`force_update_transform<class_Spatial_method_force_update_transform>` **(** **)** |
  41. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  42. | :ref:`Spatial<class_Spatial>` | :ref:`get_parent_spatial<class_Spatial_method_get_parent_spatial>` **(** **)** const |
  43. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  44. | :ref:`World<class_World>` | :ref:`get_world<class_Spatial_method_get_world>` **(** **)** const |
  45. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  46. | void | :ref:`global_rotate<class_Spatial_method_global_rotate>` **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` angle **)** |
  47. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  48. | void | :ref:`global_scale<class_Spatial_method_global_scale>` **(** :ref:`Vector3<class_Vector3>` scale **)** |
  49. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  50. | void | :ref:`global_translate<class_Spatial_method_global_translate>` **(** :ref:`Vector3<class_Vector3>` offset **)** |
  51. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  52. | void | :ref:`hide<class_Spatial_method_hide>` **(** **)** |
  53. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  54. | :ref:`bool<class_bool>` | :ref:`is_local_transform_notification_enabled<class_Spatial_method_is_local_transform_notification_enabled>` **(** **)** const |
  55. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  56. | :ref:`bool<class_bool>` | :ref:`is_scale_disabled<class_Spatial_method_is_scale_disabled>` **(** **)** const |
  57. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  58. | :ref:`bool<class_bool>` | :ref:`is_set_as_toplevel<class_Spatial_method_is_set_as_toplevel>` **(** **)** const |
  59. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  60. | :ref:`bool<class_bool>` | :ref:`is_transform_notification_enabled<class_Spatial_method_is_transform_notification_enabled>` **(** **)** const |
  61. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  62. | :ref:`bool<class_bool>` | :ref:`is_visible_in_tree<class_Spatial_method_is_visible_in_tree>` **(** **)** const |
  63. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  64. | void | :ref:`look_at<class_Spatial_method_look_at>` **(** :ref:`Vector3<class_Vector3>` target, :ref:`Vector3<class_Vector3>` up **)** |
  65. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  66. | void | :ref:`look_at_from_position<class_Spatial_method_look_at_from_position>` **(** :ref:`Vector3<class_Vector3>` position, :ref:`Vector3<class_Vector3>` target, :ref:`Vector3<class_Vector3>` up **)** |
  67. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  68. | void | :ref:`orthonormalize<class_Spatial_method_orthonormalize>` **(** **)** |
  69. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  70. | void | :ref:`rotate<class_Spatial_method_rotate>` **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` angle **)** |
  71. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  72. | void | :ref:`rotate_object_local<class_Spatial_method_rotate_object_local>` **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` angle **)** |
  73. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  74. | void | :ref:`rotate_x<class_Spatial_method_rotate_x>` **(** :ref:`float<class_float>` angle **)** |
  75. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  76. | void | :ref:`rotate_y<class_Spatial_method_rotate_y>` **(** :ref:`float<class_float>` angle **)** |
  77. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  78. | void | :ref:`rotate_z<class_Spatial_method_rotate_z>` **(** :ref:`float<class_float>` angle **)** |
  79. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  80. | void | :ref:`scale_object_local<class_Spatial_method_scale_object_local>` **(** :ref:`Vector3<class_Vector3>` scale **)** |
  81. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  82. | void | :ref:`set_as_toplevel<class_Spatial_method_set_as_toplevel>` **(** :ref:`bool<class_bool>` enable **)** |
  83. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  84. | void | :ref:`set_disable_scale<class_Spatial_method_set_disable_scale>` **(** :ref:`bool<class_bool>` disable **)** |
  85. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  86. | void | :ref:`set_identity<class_Spatial_method_set_identity>` **(** **)** |
  87. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  88. | void | :ref:`set_ignore_transform_notification<class_Spatial_method_set_ignore_transform_notification>` **(** :ref:`bool<class_bool>` enabled **)** |
  89. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  90. | void | :ref:`set_notify_local_transform<class_Spatial_method_set_notify_local_transform>` **(** :ref:`bool<class_bool>` enable **)** |
  91. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  92. | void | :ref:`set_notify_transform<class_Spatial_method_set_notify_transform>` **(** :ref:`bool<class_bool>` enable **)** |
  93. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  94. | void | :ref:`show<class_Spatial_method_show>` **(** **)** |
  95. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  96. | :ref:`Vector3<class_Vector3>` | :ref:`to_global<class_Spatial_method_to_global>` **(** :ref:`Vector3<class_Vector3>` local_point **)** const |
  97. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  98. | :ref:`Vector3<class_Vector3>` | :ref:`to_local<class_Spatial_method_to_local>` **(** :ref:`Vector3<class_Vector3>` global_point **)** const |
  99. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  100. | void | :ref:`translate<class_Spatial_method_translate>` **(** :ref:`Vector3<class_Vector3>` offset **)** |
  101. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  102. | void | :ref:`translate_object_local<class_Spatial_method_translate_object_local>` **(** :ref:`Vector3<class_Vector3>` offset **)** |
  103. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  104. | void | :ref:`update_gizmo<class_Spatial_method_update_gizmo>` **(** **)** |
  105. +-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  106. Signals
  107. -------
  108. .. _class_Spatial_signal_visibility_changed:
  109. - **visibility_changed** **(** **)**
  110. Emitted when node visibility changes.
  111. Constants
  112. ---------
  113. .. _class_Spatial_constant_NOTIFICATION_TRANSFORM_CHANGED:
  114. .. _class_Spatial_constant_NOTIFICATION_ENTER_WORLD:
  115. .. _class_Spatial_constant_NOTIFICATION_EXIT_WORLD:
  116. .. _class_Spatial_constant_NOTIFICATION_VISIBILITY_CHANGED:
  117. - **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.
  118. In order for :ref:`NOTIFICATION_TRANSFORM_CHANGED<class_Spatial_constant_NOTIFICATION_TRANSFORM_CHANGED>` to work, users first need to ask for it, with :ref:`set_notify_transform<class_Spatial_method_set_notify_transform>`.
  119. - **NOTIFICATION_ENTER_WORLD** = **41** --- Spatial nodes receives this notification when they are registered to new :ref:`World<class_World>` resource.
  120. - **NOTIFICATION_EXIT_WORLD** = **42** --- Spatial nodes receives this notification when they are unregistered from current :ref:`World<class_World>` resource.
  121. - **NOTIFICATION_VISIBILITY_CHANGED** = **43** --- Spatial nodes receives this notification when their visibility changes.
  122. Property Descriptions
  123. ---------------------
  124. .. _class_Spatial_property_gizmo:
  125. - :ref:`SpatialGizmo<class_SpatialGizmo>` **gizmo**
  126. +----------+------------------+
  127. | *Setter* | set_gizmo(value) |
  128. +----------+------------------+
  129. | *Getter* | get_gizmo() |
  130. +----------+------------------+
  131. The :ref:`SpatialGizmo<class_SpatialGizmo>` for this node. Used for example in :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>` as custom visualization and editing handles in Editor.
  132. ----
  133. .. _class_Spatial_property_global_transform:
  134. - :ref:`Transform<class_Transform>` **global_transform**
  135. +----------+-----------------------------+
  136. | *Setter* | set_global_transform(value) |
  137. +----------+-----------------------------+
  138. | *Getter* | get_global_transform() |
  139. +----------+-----------------------------+
  140. World space (global) :ref:`Transform<class_Transform>` of this node.
  141. ----
  142. .. _class_Spatial_property_rotation:
  143. - :ref:`Vector3<class_Vector3>` **rotation**
  144. +----------+---------------------+
  145. | *Setter* | set_rotation(value) |
  146. +----------+---------------------+
  147. | *Getter* | get_rotation() |
  148. +----------+---------------------+
  149. Rotation part of the local transformation in radians, specified in terms of YXZ-Euler angles in the format (X angle, Y angle, Z angle).
  150. **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 a :ref:`Vector3<class_Vector3>` data structure not because the rotation is a vector, but only because :ref:`Vector3<class_Vector3>` exists as a convenient data-structure to store 3 floating-point numbers. Therefore, applying affine operations on the rotation "vector" is not meaningful.
  151. ----
  152. .. _class_Spatial_property_rotation_degrees:
  153. - :ref:`Vector3<class_Vector3>` **rotation_degrees**
  154. +-----------+-----------------------------+
  155. | *Default* | ``Vector3( 0, 0, 0 )`` |
  156. +-----------+-----------------------------+
  157. | *Setter* | set_rotation_degrees(value) |
  158. +-----------+-----------------------------+
  159. | *Getter* | get_rotation_degrees() |
  160. +-----------+-----------------------------+
  161. Rotation part of the local transformation in degrees, specified in terms of YXZ-Euler angles in the format (X angle, Y angle, Z angle).
  162. ----
  163. .. _class_Spatial_property_scale:
  164. - :ref:`Vector3<class_Vector3>` **scale**
  165. +-----------+------------------------+
  166. | *Default* | ``Vector3( 1, 1, 1 )`` |
  167. +-----------+------------------------+
  168. | *Setter* | set_scale(value) |
  169. +-----------+------------------------+
  170. | *Getter* | get_scale() |
  171. +-----------+------------------------+
  172. Scale part of the local transformation.
  173. ----
  174. .. _class_Spatial_property_transform:
  175. - :ref:`Transform<class_Transform>` **transform**
  176. +-----------+-----------------------------------------------------+
  177. | *Default* | ``Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )`` |
  178. +-----------+-----------------------------------------------------+
  179. | *Setter* | set_transform(value) |
  180. +-----------+-----------------------------------------------------+
  181. | *Getter* | get_transform() |
  182. +-----------+-----------------------------------------------------+
  183. Local space :ref:`Transform<class_Transform>` of this node, with respect to the parent node.
  184. ----
  185. .. _class_Spatial_property_translation:
  186. - :ref:`Vector3<class_Vector3>` **translation**
  187. +-----------+------------------------+
  188. | *Default* | ``Vector3( 0, 0, 0 )`` |
  189. +-----------+------------------------+
  190. | *Setter* | set_translation(value) |
  191. +-----------+------------------------+
  192. | *Getter* | get_translation() |
  193. +-----------+------------------------+
  194. Local translation of this node.
  195. ----
  196. .. _class_Spatial_property_visible:
  197. - :ref:`bool<class_bool>` **visible**
  198. +-----------+--------------------+
  199. | *Default* | ``true`` |
  200. +-----------+--------------------+
  201. | *Setter* | set_visible(value) |
  202. +-----------+--------------------+
  203. | *Getter* | is_visible() |
  204. +-----------+--------------------+
  205. If ``true``, this node is drawn.
  206. Method Descriptions
  207. -------------------
  208. .. _class_Spatial_method_force_update_transform:
  209. - void **force_update_transform** **(** **)**
  210. 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.
  211. ----
  212. .. _class_Spatial_method_get_parent_spatial:
  213. - :ref:`Spatial<class_Spatial>` **get_parent_spatial** **(** **)** const
  214. Returns the parent ``Spatial``, or an empty :ref:`Object<class_Object>` if no parent exists or parent is not of type ``Spatial``.
  215. ----
  216. .. _class_Spatial_method_get_world:
  217. - :ref:`World<class_World>` **get_world** **(** **)** const
  218. Returns the current :ref:`World<class_World>` resource this ``Spatial`` node is registered to.
  219. ----
  220. .. _class_Spatial_method_global_rotate:
  221. - void **global_rotate** **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` angle **)**
  222. Rotates the global (world) transformation around axis, a unit :ref:`Vector3<class_Vector3>`, by specified angle in radians. The rotation axis is in global coordinate system.
  223. ----
  224. .. _class_Spatial_method_global_scale:
  225. - void **global_scale** **(** :ref:`Vector3<class_Vector3>` scale **)**
  226. Scales the global (world) transformation by the given :ref:`Vector3<class_Vector3>` scale factors.
  227. ----
  228. .. _class_Spatial_method_global_translate:
  229. - void **global_translate** **(** :ref:`Vector3<class_Vector3>` offset **)**
  230. Moves the global (world) transformation by :ref:`Vector3<class_Vector3>` offset. The offset is in global coordinate system.
  231. ----
  232. .. _class_Spatial_method_hide:
  233. - void **hide** **(** **)**
  234. Disables rendering of this node. Changes :ref:`visible<class_Spatial_property_visible>` to ``false``.
  235. ----
  236. .. _class_Spatial_method_is_local_transform_notification_enabled:
  237. - :ref:`bool<class_bool>` **is_local_transform_notification_enabled** **(** **)** const
  238. Returns whether node notifies about its local transformation changes. ``Spatial`` will not propagate this by default.
  239. ----
  240. .. _class_Spatial_method_is_scale_disabled:
  241. - :ref:`bool<class_bool>` **is_scale_disabled** **(** **)** const
  242. Returns whether this node uses a scale of ``(1, 1, 1)`` or its local transformation scale.
  243. ----
  244. .. _class_Spatial_method_is_set_as_toplevel:
  245. - :ref:`bool<class_bool>` **is_set_as_toplevel** **(** **)** const
  246. Returns whether this node is set as Toplevel, that is whether it ignores its parent nodes transformations.
  247. ----
  248. .. _class_Spatial_method_is_transform_notification_enabled:
  249. - :ref:`bool<class_bool>` **is_transform_notification_enabled** **(** **)** const
  250. Returns whether the node notifies about its global and local transformation changes. ``Spatial`` will not propagate this by default.
  251. ----
  252. .. _class_Spatial_method_is_visible_in_tree:
  253. - :ref:`bool<class_bool>` **is_visible_in_tree** **(** **)** const
  254. Returns whether the node is visible, taking into consideration that its parents visibility.
  255. ----
  256. .. _class_Spatial_method_look_at:
  257. - void **look_at** **(** :ref:`Vector3<class_Vector3>` target, :ref:`Vector3<class_Vector3>` up **)**
  258. Rotates itself so that the local -Z axis points towards the ``target`` position.
  259. The transform will first be rotated around the given ``up`` vector, and then fully aligned to the target by a further rotation around an axis perpendicular to both the ``target`` and ``up`` vectors.
  260. Operations take place in global space.
  261. ----
  262. .. _class_Spatial_method_look_at_from_position:
  263. - void **look_at_from_position** **(** :ref:`Vector3<class_Vector3>` position, :ref:`Vector3<class_Vector3>` target, :ref:`Vector3<class_Vector3>` up **)**
  264. Moves the node to the specified ``position``, and then rotates itself to point toward the ``target`` as per :ref:`look_at<class_Spatial_method_look_at>`. Operations take place in global space.
  265. ----
  266. .. _class_Spatial_method_orthonormalize:
  267. - void **orthonormalize** **(** **)**
  268. Resets this node's transformations (like scale, skew and taper) preserving its rotation and translation by performing Gram-Schmidt orthonormalization on this node's :ref:`Transform<class_Transform>`.
  269. ----
  270. .. _class_Spatial_method_rotate:
  271. - void **rotate** **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` angle **)**
  272. Rotates the local transformation around axis, a unit :ref:`Vector3<class_Vector3>`, by specified angle in radians.
  273. ----
  274. .. _class_Spatial_method_rotate_object_local:
  275. - void **rotate_object_local** **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` angle **)**
  276. Rotates the local transformation around axis, a unit :ref:`Vector3<class_Vector3>`, by specified angle in radians. The rotation axis is in object-local coordinate system.
  277. ----
  278. .. _class_Spatial_method_rotate_x:
  279. - void **rotate_x** **(** :ref:`float<class_float>` angle **)**
  280. Rotates the local transformation around the X axis by angle in radians.
  281. ----
  282. .. _class_Spatial_method_rotate_y:
  283. - void **rotate_y** **(** :ref:`float<class_float>` angle **)**
  284. Rotates the local transformation around the Y axis by angle in radians.
  285. ----
  286. .. _class_Spatial_method_rotate_z:
  287. - void **rotate_z** **(** :ref:`float<class_float>` angle **)**
  288. Rotates the local transformation around the Z axis by angle in radians.
  289. ----
  290. .. _class_Spatial_method_scale_object_local:
  291. - void **scale_object_local** **(** :ref:`Vector3<class_Vector3>` scale **)**
  292. Scales the local transformation by given 3D scale factors in object-local coordinate system.
  293. ----
  294. .. _class_Spatial_method_set_as_toplevel:
  295. - void **set_as_toplevel** **(** :ref:`bool<class_bool>` enable **)**
  296. Makes the node ignore its parents transformations. Node transformations are only in global space.
  297. ----
  298. .. _class_Spatial_method_set_disable_scale:
  299. - void **set_disable_scale** **(** :ref:`bool<class_bool>` disable **)**
  300. Sets whether the node uses a scale of ``(1, 1, 1)`` or its local transformation scale. Changes to the local transformation scale are preserved.
  301. ----
  302. .. _class_Spatial_method_set_identity:
  303. - void **set_identity** **(** **)**
  304. Reset all transformations for this node (sets its :ref:`Transform<class_Transform>` to the identity matrix).
  305. ----
  306. .. _class_Spatial_method_set_ignore_transform_notification:
  307. - void **set_ignore_transform_notification** **(** :ref:`bool<class_bool>` enabled **)**
  308. Sets whether the node ignores notification that its transformation (global or local) changed.
  309. ----
  310. .. _class_Spatial_method_set_notify_local_transform:
  311. - void **set_notify_local_transform** **(** :ref:`bool<class_bool>` enable **)**
  312. Sets whether the node notifies about its local transformation changes. ``Spatial`` will not propagate this by default.
  313. ----
  314. .. _class_Spatial_method_set_notify_transform:
  315. - void **set_notify_transform** **(** :ref:`bool<class_bool>` enable **)**
  316. Sets whether the node notifies about its global and local transformation changes. ``Spatial`` will not propagate this by default.
  317. ----
  318. .. _class_Spatial_method_show:
  319. - void **show** **(** **)**
  320. Enables rendering of this node. Changes :ref:`visible<class_Spatial_property_visible>` to ``true``.
  321. ----
  322. .. _class_Spatial_method_to_global:
  323. - :ref:`Vector3<class_Vector3>` **to_global** **(** :ref:`Vector3<class_Vector3>` local_point **)** const
  324. Transforms ``local_point`` from this node's local space to world space.
  325. ----
  326. .. _class_Spatial_method_to_local:
  327. - :ref:`Vector3<class_Vector3>` **to_local** **(** :ref:`Vector3<class_Vector3>` global_point **)** const
  328. Transforms ``global_point`` from world space to this node's local space.
  329. ----
  330. .. _class_Spatial_method_translate:
  331. - void **translate** **(** :ref:`Vector3<class_Vector3>` offset **)**
  332. Changes the node's position by the given offset :ref:`Vector3<class_Vector3>`.
  333. Note that the translation ``offset`` 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.
  334. ----
  335. .. _class_Spatial_method_translate_object_local:
  336. - void **translate_object_local** **(** :ref:`Vector3<class_Vector3>` offset **)**
  337. Changes the node's position by the given offset :ref:`Vector3<class_Vector3>` in local space.
  338. ----
  339. .. _class_Spatial_method_update_gizmo:
  340. - void **update_gizmo** **(** **)**
  341. Updates the :ref:`SpatialGizmo<class_SpatialGizmo>` of this node.