class_node3d.rst 76 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119
  1. :github_url: hide
  2. .. meta::
  3. :keywords: spatial
  4. .. DO NOT EDIT THIS FILE!!!
  5. .. Generated automatically from Godot engine sources.
  6. .. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py.
  7. .. XML source: https://github.com/godotengine/godot/tree/master/doc/classes/Node3D.xml.
  8. .. _class_Node3D:
  9. Node3D
  10. ======
  11. **Inherits:** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
  12. **Inherited By:** :ref:`AudioListener3D<class_AudioListener3D>`, :ref:`AudioStreamPlayer3D<class_AudioStreamPlayer3D>`, :ref:`BoneAttachment3D<class_BoneAttachment3D>`, :ref:`Camera3D<class_Camera3D>`, :ref:`CollisionObject3D<class_CollisionObject3D>`, :ref:`CollisionPolygon3D<class_CollisionPolygon3D>`, :ref:`CollisionShape3D<class_CollisionShape3D>`, :ref:`GridMap<class_GridMap>`, :ref:`ImporterMeshInstance3D<class_ImporterMeshInstance3D>`, :ref:`Joint3D<class_Joint3D>`, :ref:`LightmapProbe<class_LightmapProbe>`, :ref:`Marker3D<class_Marker3D>`, :ref:`NavigationLink3D<class_NavigationLink3D>`, :ref:`NavigationObstacle3D<class_NavigationObstacle3D>`, :ref:`NavigationRegion3D<class_NavigationRegion3D>`, :ref:`OpenXRCompositionLayer<class_OpenXRCompositionLayer>`, :ref:`OpenXRHand<class_OpenXRHand>`, :ref:`OpenXRRenderModel<class_OpenXRRenderModel>`, :ref:`OpenXRRenderModelManager<class_OpenXRRenderModelManager>`, :ref:`Path3D<class_Path3D>`, :ref:`PathFollow3D<class_PathFollow3D>`, :ref:`RayCast3D<class_RayCast3D>`, :ref:`RemoteTransform3D<class_RemoteTransform3D>`, :ref:`ShapeCast3D<class_ShapeCast3D>`, :ref:`Skeleton3D<class_Skeleton3D>`, :ref:`SkeletonModifier3D<class_SkeletonModifier3D>`, :ref:`SpringArm3D<class_SpringArm3D>`, :ref:`SpringBoneCollision3D<class_SpringBoneCollision3D>`, :ref:`VehicleWheel3D<class_VehicleWheel3D>`, :ref:`VisualInstance3D<class_VisualInstance3D>`, :ref:`XRFaceModifier3D<class_XRFaceModifier3D>`, :ref:`XRNode3D<class_XRNode3D>`, :ref:`XROrigin3D<class_XROrigin3D>`
  13. Base object in 3D space, inherited by all 3D nodes.
  14. .. rst-class:: classref-introduction-group
  15. Description
  16. -----------
  17. The **Node3D** node is the base representation of a node in 3D space. All other 3D nodes inherit from this class.
  18. Affine operations (translation, rotation, scale) are calculated in the coordinate system relative to the parent, unless the **Node3D**'s :ref:`top_level<class_Node3D_property_top_level>` is ``true``. In this coordinate system, affine operations correspond to direct affine operations on the **Node3D**'s :ref:`transform<class_Node3D_property_transform>`. The term *parent space* refers to this coordinate system. The coordinate system that is attached to the **Node3D** itself is referred to as object-local coordinate system, or *local space*.
  19. \ **Note:** Unless otherwise specified, all methods that need angle parameters must receive angles in *radians*. To convert degrees to radians, use :ref:`@GlobalScope.deg_to_rad()<class_@GlobalScope_method_deg_to_rad>`.
  20. \ **Note:** In Godot 3 and older, **Node3D** was named *Spatial*.
  21. .. rst-class:: classref-introduction-group
  22. Tutorials
  23. ---------
  24. - :doc:`Introduction to 3D <../tutorials/3d/introduction_to_3d>`
  25. - `All 3D Demos <https://github.com/godotengine/godot-demo-projects/tree/master/3d>`__
  26. .. rst-class:: classref-reftable-group
  27. Properties
  28. ----------
  29. .. table::
  30. :widths: auto
  31. +-------------------------------------------------------+-------------------------------------------------------------------------------+-----------------------------------------------------+
  32. | :ref:`Basis<class_Basis>` | :ref:`basis<class_Node3D_property_basis>` | |
  33. +-------------------------------------------------------+-------------------------------------------------------------------------------+-----------------------------------------------------+
  34. | :ref:`Basis<class_Basis>` | :ref:`global_basis<class_Node3D_property_global_basis>` | |
  35. +-------------------------------------------------------+-------------------------------------------------------------------------------+-----------------------------------------------------+
  36. | :ref:`Vector3<class_Vector3>` | :ref:`global_position<class_Node3D_property_global_position>` | |
  37. +-------------------------------------------------------+-------------------------------------------------------------------------------+-----------------------------------------------------+
  38. | :ref:`Vector3<class_Vector3>` | :ref:`global_rotation<class_Node3D_property_global_rotation>` | |
  39. +-------------------------------------------------------+-------------------------------------------------------------------------------+-----------------------------------------------------+
  40. | :ref:`Vector3<class_Vector3>` | :ref:`global_rotation_degrees<class_Node3D_property_global_rotation_degrees>` | |
  41. +-------------------------------------------------------+-------------------------------------------------------------------------------+-----------------------------------------------------+
  42. | :ref:`Transform3D<class_Transform3D>` | :ref:`global_transform<class_Node3D_property_global_transform>` | |
  43. +-------------------------------------------------------+-------------------------------------------------------------------------------+-----------------------------------------------------+
  44. | :ref:`Vector3<class_Vector3>` | :ref:`position<class_Node3D_property_position>` | ``Vector3(0, 0, 0)`` |
  45. +-------------------------------------------------------+-------------------------------------------------------------------------------+-----------------------------------------------------+
  46. | :ref:`Quaternion<class_Quaternion>` | :ref:`quaternion<class_Node3D_property_quaternion>` | |
  47. +-------------------------------------------------------+-------------------------------------------------------------------------------+-----------------------------------------------------+
  48. | :ref:`Vector3<class_Vector3>` | :ref:`rotation<class_Node3D_property_rotation>` | ``Vector3(0, 0, 0)`` |
  49. +-------------------------------------------------------+-------------------------------------------------------------------------------+-----------------------------------------------------+
  50. | :ref:`Vector3<class_Vector3>` | :ref:`rotation_degrees<class_Node3D_property_rotation_degrees>` | |
  51. +-------------------------------------------------------+-------------------------------------------------------------------------------+-----------------------------------------------------+
  52. | :ref:`RotationEditMode<enum_Node3D_RotationEditMode>` | :ref:`rotation_edit_mode<class_Node3D_property_rotation_edit_mode>` | ``0`` |
  53. +-------------------------------------------------------+-------------------------------------------------------------------------------+-----------------------------------------------------+
  54. | :ref:`EulerOrder<enum_@GlobalScope_EulerOrder>` | :ref:`rotation_order<class_Node3D_property_rotation_order>` | ``2`` |
  55. +-------------------------------------------------------+-------------------------------------------------------------------------------+-----------------------------------------------------+
  56. | :ref:`Vector3<class_Vector3>` | :ref:`scale<class_Node3D_property_scale>` | ``Vector3(1, 1, 1)`` |
  57. +-------------------------------------------------------+-------------------------------------------------------------------------------+-----------------------------------------------------+
  58. | :ref:`bool<class_bool>` | :ref:`top_level<class_Node3D_property_top_level>` | ``false`` |
  59. +-------------------------------------------------------+-------------------------------------------------------------------------------+-----------------------------------------------------+
  60. | :ref:`Transform3D<class_Transform3D>` | :ref:`transform<class_Node3D_property_transform>` | ``Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)`` |
  61. +-------------------------------------------------------+-------------------------------------------------------------------------------+-----------------------------------------------------+
  62. | :ref:`NodePath<class_NodePath>` | :ref:`visibility_parent<class_Node3D_property_visibility_parent>` | ``NodePath("")`` |
  63. +-------------------------------------------------------+-------------------------------------------------------------------------------+-----------------------------------------------------+
  64. | :ref:`bool<class_bool>` | :ref:`visible<class_Node3D_property_visible>` | ``true`` |
  65. +-------------------------------------------------------+-------------------------------------------------------------------------------+-----------------------------------------------------+
  66. .. rst-class:: classref-reftable-group
  67. Methods
  68. -------
  69. .. table::
  70. :widths: auto
  71. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  72. | |void| | :ref:`add_gizmo<class_Node3D_method_add_gizmo>`\ (\ gizmo\: :ref:`Node3DGizmo<class_Node3DGizmo>`\ ) |
  73. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  74. | |void| | :ref:`clear_gizmos<class_Node3D_method_clear_gizmos>`\ (\ ) |
  75. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  76. | |void| | :ref:`clear_subgizmo_selection<class_Node3D_method_clear_subgizmo_selection>`\ (\ ) |
  77. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  78. | |void| | :ref:`force_update_transform<class_Node3D_method_force_update_transform>`\ (\ ) |
  79. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  80. | :ref:`Array<class_Array>`\[:ref:`Node3DGizmo<class_Node3DGizmo>`\] | :ref:`get_gizmos<class_Node3D_method_get_gizmos>`\ (\ ) |const| |
  81. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  82. | :ref:`Transform3D<class_Transform3D>` | :ref:`get_global_transform_interpolated<class_Node3D_method_get_global_transform_interpolated>`\ (\ ) |
  83. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  84. | :ref:`Node3D<class_Node3D>` | :ref:`get_parent_node_3d<class_Node3D_method_get_parent_node_3d>`\ (\ ) |const| |
  85. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  86. | :ref:`World3D<class_World3D>` | :ref:`get_world_3d<class_Node3D_method_get_world_3d>`\ (\ ) |const| |
  87. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  88. | |void| | :ref:`global_rotate<class_Node3D_method_global_rotate>`\ (\ axis\: :ref:`Vector3<class_Vector3>`, angle\: :ref:`float<class_float>`\ ) |
  89. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  90. | |void| | :ref:`global_scale<class_Node3D_method_global_scale>`\ (\ scale\: :ref:`Vector3<class_Vector3>`\ ) |
  91. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  92. | |void| | :ref:`global_translate<class_Node3D_method_global_translate>`\ (\ offset\: :ref:`Vector3<class_Vector3>`\ ) |
  93. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  94. | |void| | :ref:`hide<class_Node3D_method_hide>`\ (\ ) |
  95. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  96. | :ref:`bool<class_bool>` | :ref:`is_local_transform_notification_enabled<class_Node3D_method_is_local_transform_notification_enabled>`\ (\ ) |const| |
  97. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  98. | :ref:`bool<class_bool>` | :ref:`is_scale_disabled<class_Node3D_method_is_scale_disabled>`\ (\ ) |const| |
  99. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  100. | :ref:`bool<class_bool>` | :ref:`is_transform_notification_enabled<class_Node3D_method_is_transform_notification_enabled>`\ (\ ) |const| |
  101. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  102. | :ref:`bool<class_bool>` | :ref:`is_visible_in_tree<class_Node3D_method_is_visible_in_tree>`\ (\ ) |const| |
  103. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  104. | |void| | :ref:`look_at<class_Node3D_method_look_at>`\ (\ target\: :ref:`Vector3<class_Vector3>`, up\: :ref:`Vector3<class_Vector3>` = Vector3(0, 1, 0), use_model_front\: :ref:`bool<class_bool>` = false\ ) |
  105. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  106. | |void| | :ref:`look_at_from_position<class_Node3D_method_look_at_from_position>`\ (\ position\: :ref:`Vector3<class_Vector3>`, target\: :ref:`Vector3<class_Vector3>`, up\: :ref:`Vector3<class_Vector3>` = Vector3(0, 1, 0), use_model_front\: :ref:`bool<class_bool>` = false\ ) |
  107. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  108. | |void| | :ref:`orthonormalize<class_Node3D_method_orthonormalize>`\ (\ ) |
  109. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  110. | |void| | :ref:`rotate<class_Node3D_method_rotate>`\ (\ axis\: :ref:`Vector3<class_Vector3>`, angle\: :ref:`float<class_float>`\ ) |
  111. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  112. | |void| | :ref:`rotate_object_local<class_Node3D_method_rotate_object_local>`\ (\ axis\: :ref:`Vector3<class_Vector3>`, angle\: :ref:`float<class_float>`\ ) |
  113. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  114. | |void| | :ref:`rotate_x<class_Node3D_method_rotate_x>`\ (\ angle\: :ref:`float<class_float>`\ ) |
  115. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  116. | |void| | :ref:`rotate_y<class_Node3D_method_rotate_y>`\ (\ angle\: :ref:`float<class_float>`\ ) |
  117. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  118. | |void| | :ref:`rotate_z<class_Node3D_method_rotate_z>`\ (\ angle\: :ref:`float<class_float>`\ ) |
  119. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  120. | |void| | :ref:`scale_object_local<class_Node3D_method_scale_object_local>`\ (\ scale\: :ref:`Vector3<class_Vector3>`\ ) |
  121. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  122. | |void| | :ref:`set_disable_scale<class_Node3D_method_set_disable_scale>`\ (\ disable\: :ref:`bool<class_bool>`\ ) |
  123. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  124. | |void| | :ref:`set_identity<class_Node3D_method_set_identity>`\ (\ ) |
  125. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  126. | |void| | :ref:`set_ignore_transform_notification<class_Node3D_method_set_ignore_transform_notification>`\ (\ enabled\: :ref:`bool<class_bool>`\ ) |
  127. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  128. | |void| | :ref:`set_notify_local_transform<class_Node3D_method_set_notify_local_transform>`\ (\ enable\: :ref:`bool<class_bool>`\ ) |
  129. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  130. | |void| | :ref:`set_notify_transform<class_Node3D_method_set_notify_transform>`\ (\ enable\: :ref:`bool<class_bool>`\ ) |
  131. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  132. | |void| | :ref:`set_subgizmo_selection<class_Node3D_method_set_subgizmo_selection>`\ (\ gizmo\: :ref:`Node3DGizmo<class_Node3DGizmo>`, id\: :ref:`int<class_int>`, transform\: :ref:`Transform3D<class_Transform3D>`\ ) |
  133. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  134. | |void| | :ref:`show<class_Node3D_method_show>`\ (\ ) |
  135. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  136. | :ref:`Vector3<class_Vector3>` | :ref:`to_global<class_Node3D_method_to_global>`\ (\ local_point\: :ref:`Vector3<class_Vector3>`\ ) |const| |
  137. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  138. | :ref:`Vector3<class_Vector3>` | :ref:`to_local<class_Node3D_method_to_local>`\ (\ global_point\: :ref:`Vector3<class_Vector3>`\ ) |const| |
  139. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  140. | |void| | :ref:`translate<class_Node3D_method_translate>`\ (\ offset\: :ref:`Vector3<class_Vector3>`\ ) |
  141. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  142. | |void| | :ref:`translate_object_local<class_Node3D_method_translate_object_local>`\ (\ offset\: :ref:`Vector3<class_Vector3>`\ ) |
  143. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  144. | |void| | :ref:`update_gizmos<class_Node3D_method_update_gizmos>`\ (\ ) |
  145. +--------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  146. .. rst-class:: classref-section-separator
  147. ----
  148. .. rst-class:: classref-descriptions-group
  149. Signals
  150. -------
  151. .. _class_Node3D_signal_visibility_changed:
  152. .. rst-class:: classref-signal
  153. **visibility_changed**\ (\ ) :ref:`🔗<class_Node3D_signal_visibility_changed>`
  154. Emitted when this node's visibility changes (see :ref:`visible<class_Node3D_property_visible>` and :ref:`is_visible_in_tree()<class_Node3D_method_is_visible_in_tree>`).
  155. This signal is emitted *after* the related :ref:`NOTIFICATION_VISIBILITY_CHANGED<class_Node3D_constant_NOTIFICATION_VISIBILITY_CHANGED>` notification.
  156. .. rst-class:: classref-section-separator
  157. ----
  158. .. rst-class:: classref-descriptions-group
  159. Enumerations
  160. ------------
  161. .. _enum_Node3D_RotationEditMode:
  162. .. rst-class:: classref-enumeration
  163. enum **RotationEditMode**: :ref:`🔗<enum_Node3D_RotationEditMode>`
  164. .. _class_Node3D_constant_ROTATION_EDIT_MODE_EULER:
  165. .. rst-class:: classref-enumeration-constant
  166. :ref:`RotationEditMode<enum_Node3D_RotationEditMode>` **ROTATION_EDIT_MODE_EULER** = ``0``
  167. The rotation is edited using a :ref:`Vector3<class_Vector3>` in `Euler angles <https://en.wikipedia.org/wiki/Euler_angles>`__.
  168. .. _class_Node3D_constant_ROTATION_EDIT_MODE_QUATERNION:
  169. .. rst-class:: classref-enumeration-constant
  170. :ref:`RotationEditMode<enum_Node3D_RotationEditMode>` **ROTATION_EDIT_MODE_QUATERNION** = ``1``
  171. The rotation is edited using a :ref:`Quaternion<class_Quaternion>`.
  172. .. _class_Node3D_constant_ROTATION_EDIT_MODE_BASIS:
  173. .. rst-class:: classref-enumeration-constant
  174. :ref:`RotationEditMode<enum_Node3D_RotationEditMode>` **ROTATION_EDIT_MODE_BASIS** = ``2``
  175. The rotation is edited using a :ref:`Basis<class_Basis>`. In this mode, the raw :ref:`basis<class_Node3D_property_basis>`'s axes can be freely modified, but the :ref:`scale<class_Node3D_property_scale>` property is not available.
  176. .. rst-class:: classref-section-separator
  177. ----
  178. .. rst-class:: classref-descriptions-group
  179. Constants
  180. ---------
  181. .. _class_Node3D_constant_NOTIFICATION_TRANSFORM_CHANGED:
  182. .. rst-class:: classref-constant
  183. **NOTIFICATION_TRANSFORM_CHANGED** = ``2000`` :ref:`🔗<class_Node3D_constant_NOTIFICATION_TRANSFORM_CHANGED>`
  184. Notification received when this node's :ref:`global_transform<class_Node3D_property_global_transform>` changes, if :ref:`is_transform_notification_enabled()<class_Node3D_method_is_transform_notification_enabled>` is ``true``. See also :ref:`set_notify_transform()<class_Node3D_method_set_notify_transform>`.
  185. \ **Note:** Most 3D nodes such as :ref:`VisualInstance3D<class_VisualInstance3D>` or :ref:`CollisionObject3D<class_CollisionObject3D>` automatically enable this to function correctly.
  186. \ **Note:** In the editor, nodes will propagate this notification to their children if a gizmo is attached (see :ref:`add_gizmo()<class_Node3D_method_add_gizmo>`).
  187. .. _class_Node3D_constant_NOTIFICATION_ENTER_WORLD:
  188. .. rst-class:: classref-constant
  189. **NOTIFICATION_ENTER_WORLD** = ``41`` :ref:`🔗<class_Node3D_constant_NOTIFICATION_ENTER_WORLD>`
  190. Notification received when this node is registered to a new :ref:`World3D<class_World3D>` (see :ref:`get_world_3d()<class_Node3D_method_get_world_3d>`).
  191. .. _class_Node3D_constant_NOTIFICATION_EXIT_WORLD:
  192. .. rst-class:: classref-constant
  193. **NOTIFICATION_EXIT_WORLD** = ``42`` :ref:`🔗<class_Node3D_constant_NOTIFICATION_EXIT_WORLD>`
  194. Notification received when this node is unregistered from the current :ref:`World3D<class_World3D>` (see :ref:`get_world_3d()<class_Node3D_method_get_world_3d>`).
  195. .. _class_Node3D_constant_NOTIFICATION_VISIBILITY_CHANGED:
  196. .. rst-class:: classref-constant
  197. **NOTIFICATION_VISIBILITY_CHANGED** = ``43`` :ref:`🔗<class_Node3D_constant_NOTIFICATION_VISIBILITY_CHANGED>`
  198. Notification received when this node's visibility changes (see :ref:`visible<class_Node3D_property_visible>` and :ref:`is_visible_in_tree()<class_Node3D_method_is_visible_in_tree>`).
  199. This notification is received *before* the related :ref:`visibility_changed<class_Node3D_signal_visibility_changed>` signal.
  200. .. _class_Node3D_constant_NOTIFICATION_LOCAL_TRANSFORM_CHANGED:
  201. .. rst-class:: classref-constant
  202. **NOTIFICATION_LOCAL_TRANSFORM_CHANGED** = ``44`` :ref:`🔗<class_Node3D_constant_NOTIFICATION_LOCAL_TRANSFORM_CHANGED>`
  203. Notification received when this node's :ref:`transform<class_Node3D_property_transform>` changes, if :ref:`is_local_transform_notification_enabled()<class_Node3D_method_is_local_transform_notification_enabled>` is ``true``. This is not received when a parent **Node3D**'s :ref:`transform<class_Node3D_property_transform>` changes. See also :ref:`set_notify_local_transform()<class_Node3D_method_set_notify_local_transform>`.
  204. \ **Note:** Some 3D nodes such as :ref:`CSGShape3D<class_CSGShape3D>` or :ref:`CollisionShape3D<class_CollisionShape3D>` automatically enable this to function correctly.
  205. .. rst-class:: classref-section-separator
  206. ----
  207. .. rst-class:: classref-descriptions-group
  208. Property Descriptions
  209. ---------------------
  210. .. _class_Node3D_property_basis:
  211. .. rst-class:: classref-property
  212. :ref:`Basis<class_Basis>` **basis** :ref:`🔗<class_Node3D_property_basis>`
  213. .. rst-class:: classref-property-setget
  214. - |void| **set_basis**\ (\ value\: :ref:`Basis<class_Basis>`\ )
  215. - :ref:`Basis<class_Basis>` **get_basis**\ (\ )
  216. Basis of the :ref:`transform<class_Node3D_property_transform>` property. Represents the rotation, scale, and shear of this node in parent space (relative to the parent node).
  217. .. rst-class:: classref-item-separator
  218. ----
  219. .. _class_Node3D_property_global_basis:
  220. .. rst-class:: classref-property
  221. :ref:`Basis<class_Basis>` **global_basis** :ref:`🔗<class_Node3D_property_global_basis>`
  222. .. rst-class:: classref-property-setget
  223. - |void| **set_global_basis**\ (\ value\: :ref:`Basis<class_Basis>`\ )
  224. - :ref:`Basis<class_Basis>` **get_global_basis**\ (\ )
  225. Basis of the :ref:`global_transform<class_Node3D_property_global_transform>` property. Represents the rotation, scale, and shear of this node in global space (relative to the world).
  226. \ **Note:** If the node is not inside the tree, getting this property fails and returns :ref:`Basis.IDENTITY<class_Basis_constant_IDENTITY>`.
  227. .. rst-class:: classref-item-separator
  228. ----
  229. .. _class_Node3D_property_global_position:
  230. .. rst-class:: classref-property
  231. :ref:`Vector3<class_Vector3>` **global_position** :ref:`🔗<class_Node3D_property_global_position>`
  232. .. rst-class:: classref-property-setget
  233. - |void| **set_global_position**\ (\ value\: :ref:`Vector3<class_Vector3>`\ )
  234. - :ref:`Vector3<class_Vector3>` **get_global_position**\ (\ )
  235. Global position (translation) of this node in global space (relative to the world). This is equivalent to the :ref:`global_transform<class_Node3D_property_global_transform>`'s :ref:`Transform3D.origin<class_Transform3D_property_origin>`.
  236. \ **Note:** If the node is not inside the tree, getting this property fails and returns :ref:`Vector3.ZERO<class_Vector3_constant_ZERO>`.
  237. .. rst-class:: classref-item-separator
  238. ----
  239. .. _class_Node3D_property_global_rotation:
  240. .. rst-class:: classref-property
  241. :ref:`Vector3<class_Vector3>` **global_rotation** :ref:`🔗<class_Node3D_property_global_rotation>`
  242. .. rst-class:: classref-property-setget
  243. - |void| **set_global_rotation**\ (\ value\: :ref:`Vector3<class_Vector3>`\ )
  244. - :ref:`Vector3<class_Vector3>` **get_global_rotation**\ (\ )
  245. Global rotation of this node as `Euler angles <https://en.wikipedia.org/wiki/Euler_angles>`__, in radians and in global space (relative to the world). This value is obtained from :ref:`global_basis<class_Node3D_property_global_basis>`'s rotation.
  246. - The :ref:`Vector3.x<class_Vector3_property_x>` is the angle around the global X axis (pitch);
  247. - The :ref:`Vector3.y<class_Vector3_property_y>` is the angle around the global Y axis (yaw);
  248. - The :ref:`Vector3.z<class_Vector3_property_z>` is the angle around the global Z axis (roll).
  249. \ **Note:** Unlike :ref:`rotation<class_Node3D_property_rotation>`, this property always follows the YXZ convention (:ref:`@GlobalScope.EULER_ORDER_YXZ<class_@GlobalScope_constant_EULER_ORDER_YXZ>`).
  250. \ **Note:** If the node is not inside the tree, getting this property fails and returns :ref:`Vector3.ZERO<class_Vector3_constant_ZERO>`.
  251. .. rst-class:: classref-item-separator
  252. ----
  253. .. _class_Node3D_property_global_rotation_degrees:
  254. .. rst-class:: classref-property
  255. :ref:`Vector3<class_Vector3>` **global_rotation_degrees** :ref:`🔗<class_Node3D_property_global_rotation_degrees>`
  256. .. rst-class:: classref-property-setget
  257. - |void| **set_global_rotation_degrees**\ (\ value\: :ref:`Vector3<class_Vector3>`\ )
  258. - :ref:`Vector3<class_Vector3>` **get_global_rotation_degrees**\ (\ )
  259. The :ref:`global_rotation<class_Node3D_property_global_rotation>` of this node, in degrees instead of radians.
  260. \ **Note:** If the node is not inside the tree, getting this property fails and returns :ref:`Vector3.ZERO<class_Vector3_constant_ZERO>`.
  261. .. rst-class:: classref-item-separator
  262. ----
  263. .. _class_Node3D_property_global_transform:
  264. .. rst-class:: classref-property
  265. :ref:`Transform3D<class_Transform3D>` **global_transform** :ref:`🔗<class_Node3D_property_global_transform>`
  266. .. rst-class:: classref-property-setget
  267. - |void| **set_global_transform**\ (\ value\: :ref:`Transform3D<class_Transform3D>`\ )
  268. - :ref:`Transform3D<class_Transform3D>` **get_global_transform**\ (\ )
  269. The transformation of this node, in global space (relative to the world). Contains and represents this node's :ref:`global_position<class_Node3D_property_global_position>`, :ref:`global_rotation<class_Node3D_property_global_rotation>`, and global scale.
  270. \ **Note:** If the node is not inside the tree, getting this property fails and returns :ref:`Transform3D.IDENTITY<class_Transform3D_constant_IDENTITY>`.
  271. .. rst-class:: classref-item-separator
  272. ----
  273. .. _class_Node3D_property_position:
  274. .. rst-class:: classref-property
  275. :ref:`Vector3<class_Vector3>` **position** = ``Vector3(0, 0, 0)`` :ref:`🔗<class_Node3D_property_position>`
  276. .. rst-class:: classref-property-setget
  277. - |void| **set_position**\ (\ value\: :ref:`Vector3<class_Vector3>`\ )
  278. - :ref:`Vector3<class_Vector3>` **get_position**\ (\ )
  279. Position (translation) of this node in parent space (relative to the parent node). This is equivalent to the :ref:`transform<class_Node3D_property_transform>`'s :ref:`Transform3D.origin<class_Transform3D_property_origin>`.
  280. .. rst-class:: classref-item-separator
  281. ----
  282. .. _class_Node3D_property_quaternion:
  283. .. rst-class:: classref-property
  284. :ref:`Quaternion<class_Quaternion>` **quaternion** :ref:`🔗<class_Node3D_property_quaternion>`
  285. .. rst-class:: classref-property-setget
  286. - |void| **set_quaternion**\ (\ value\: :ref:`Quaternion<class_Quaternion>`\ )
  287. - :ref:`Quaternion<class_Quaternion>` **get_quaternion**\ (\ )
  288. Rotation of this node represented as a :ref:`Quaternion<class_Quaternion>` in parent space (relative to the parent node). This value is obtained from :ref:`basis<class_Node3D_property_basis>`'s rotation.
  289. \ **Note:** Quaternions are much more suitable for 3D math but are less intuitive. Setting this property can be useful for interpolation (see :ref:`Quaternion.slerp()<class_Quaternion_method_slerp>`).
  290. .. rst-class:: classref-item-separator
  291. ----
  292. .. _class_Node3D_property_rotation:
  293. .. rst-class:: classref-property
  294. :ref:`Vector3<class_Vector3>` **rotation** = ``Vector3(0, 0, 0)`` :ref:`🔗<class_Node3D_property_rotation>`
  295. .. rst-class:: classref-property-setget
  296. - |void| **set_rotation**\ (\ value\: :ref:`Vector3<class_Vector3>`\ )
  297. - :ref:`Vector3<class_Vector3>` **get_rotation**\ (\ )
  298. Rotation of this node as `Euler angles <https://en.wikipedia.org/wiki/Euler_angles>`__, in radians and in parent space (relative to the parent node). This value is obtained from :ref:`basis<class_Node3D_property_basis>`'s rotation.
  299. - The :ref:`Vector3.x<class_Vector3_property_x>` is the angle around the local X axis (pitch);
  300. - The :ref:`Vector3.y<class_Vector3_property_y>` is the angle around the local Y axis (yaw);
  301. - The :ref:`Vector3.z<class_Vector3_property_z>` is the angle around the local Z axis (roll).
  302. The order of each consecutive rotation can be changed with :ref:`rotation_order<class_Node3D_property_rotation_order>` (see :ref:`EulerOrder<enum_@GlobalScope_EulerOrder>` constants). By default, the YXZ convention is used (:ref:`@GlobalScope.EULER_ORDER_YXZ<class_@GlobalScope_constant_EULER_ORDER_YXZ>`).
  303. \ **Note:** This property is edited in degrees in the inspector. If you want to use degrees in a script, use :ref:`rotation_degrees<class_Node3D_property_rotation_degrees>`.
  304. .. rst-class:: classref-item-separator
  305. ----
  306. .. _class_Node3D_property_rotation_degrees:
  307. .. rst-class:: classref-property
  308. :ref:`Vector3<class_Vector3>` **rotation_degrees** :ref:`🔗<class_Node3D_property_rotation_degrees>`
  309. .. rst-class:: classref-property-setget
  310. - |void| **set_rotation_degrees**\ (\ value\: :ref:`Vector3<class_Vector3>`\ )
  311. - :ref:`Vector3<class_Vector3>` **get_rotation_degrees**\ (\ )
  312. The :ref:`rotation<class_Node3D_property_rotation>` of this node, in degrees instead of radians.
  313. \ **Note:** This is **not** the property available in the Inspector dock.
  314. .. rst-class:: classref-item-separator
  315. ----
  316. .. _class_Node3D_property_rotation_edit_mode:
  317. .. rst-class:: classref-property
  318. :ref:`RotationEditMode<enum_Node3D_RotationEditMode>` **rotation_edit_mode** = ``0`` :ref:`🔗<class_Node3D_property_rotation_edit_mode>`
  319. .. rst-class:: classref-property-setget
  320. - |void| **set_rotation_edit_mode**\ (\ value\: :ref:`RotationEditMode<enum_Node3D_RotationEditMode>`\ )
  321. - :ref:`RotationEditMode<enum_Node3D_RotationEditMode>` **get_rotation_edit_mode**\ (\ )
  322. How this node's rotation and scale are displayed in the Inspector dock.
  323. .. rst-class:: classref-item-separator
  324. ----
  325. .. _class_Node3D_property_rotation_order:
  326. .. rst-class:: classref-property
  327. :ref:`EulerOrder<enum_@GlobalScope_EulerOrder>` **rotation_order** = ``2`` :ref:`🔗<class_Node3D_property_rotation_order>`
  328. .. rst-class:: classref-property-setget
  329. - |void| **set_rotation_order**\ (\ value\: :ref:`EulerOrder<enum_@GlobalScope_EulerOrder>`\ )
  330. - :ref:`EulerOrder<enum_@GlobalScope_EulerOrder>` **get_rotation_order**\ (\ )
  331. The axis rotation order of the :ref:`rotation<class_Node3D_property_rotation>` property. The final orientation is calculated by rotating around the local X, Y, and Z axis in this order.
  332. .. rst-class:: classref-item-separator
  333. ----
  334. .. _class_Node3D_property_scale:
  335. .. rst-class:: classref-property
  336. :ref:`Vector3<class_Vector3>` **scale** = ``Vector3(1, 1, 1)`` :ref:`🔗<class_Node3D_property_scale>`
  337. .. rst-class:: classref-property-setget
  338. - |void| **set_scale**\ (\ value\: :ref:`Vector3<class_Vector3>`\ )
  339. - :ref:`Vector3<class_Vector3>` **get_scale**\ (\ )
  340. Scale of this node in local space (relative to this node). This value is obtained from :ref:`basis<class_Node3D_property_basis>`'s scale.
  341. \ **Note:** The behavior of some 3D node types is not affected by this property. These include :ref:`Light3D<class_Light3D>`, :ref:`Camera3D<class_Camera3D>`, :ref:`AudioStreamPlayer3D<class_AudioStreamPlayer3D>`, and more.
  342. \ **Warning:** The scale's components must either be all positive or all negative, and **not** exactly ``0.0``. Otherwise, it won't be possible to obtain the scale from the :ref:`basis<class_Node3D_property_basis>`. This may cause the intended scale to be lost when reloaded from disk, and potentially other unstable behavior.
  343. .. rst-class:: classref-item-separator
  344. ----
  345. .. _class_Node3D_property_top_level:
  346. .. rst-class:: classref-property
  347. :ref:`bool<class_bool>` **top_level** = ``false`` :ref:`🔗<class_Node3D_property_top_level>`
  348. .. rst-class:: classref-property-setget
  349. - |void| **set_as_top_level**\ (\ value\: :ref:`bool<class_bool>`\ )
  350. - :ref:`bool<class_bool>` **is_set_as_top_level**\ (\ )
  351. If ``true``, the node does not inherit its transformations from its parent. As such, node transformations will only be in global space, which also means that :ref:`global_transform<class_Node3D_property_global_transform>` and :ref:`transform<class_Node3D_property_transform>` will be identical.
  352. .. rst-class:: classref-item-separator
  353. ----
  354. .. _class_Node3D_property_transform:
  355. .. rst-class:: classref-property
  356. :ref:`Transform3D<class_Transform3D>` **transform** = ``Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)`` :ref:`🔗<class_Node3D_property_transform>`
  357. .. rst-class:: classref-property-setget
  358. - |void| **set_transform**\ (\ value\: :ref:`Transform3D<class_Transform3D>`\ )
  359. - :ref:`Transform3D<class_Transform3D>` **get_transform**\ (\ )
  360. The local transformation of this node, in parent space (relative to the parent node). Contains and represents this node's :ref:`position<class_Node3D_property_position>`, :ref:`rotation<class_Node3D_property_rotation>`, and :ref:`scale<class_Node3D_property_scale>`.
  361. .. rst-class:: classref-item-separator
  362. ----
  363. .. _class_Node3D_property_visibility_parent:
  364. .. rst-class:: classref-property
  365. :ref:`NodePath<class_NodePath>` **visibility_parent** = ``NodePath("")`` :ref:`🔗<class_Node3D_property_visibility_parent>`
  366. .. rst-class:: classref-property-setget
  367. - |void| **set_visibility_parent**\ (\ value\: :ref:`NodePath<class_NodePath>`\ )
  368. - :ref:`NodePath<class_NodePath>` **get_visibility_parent**\ (\ )
  369. Path to the visibility range parent for this node and its descendants. The visibility parent must be a :ref:`GeometryInstance3D<class_GeometryInstance3D>`.
  370. Any visual instance will only be visible if the visibility parent (and all of its visibility ancestors) is hidden by being closer to the camera than its own :ref:`GeometryInstance3D.visibility_range_begin<class_GeometryInstance3D_property_visibility_range_begin>`. Nodes hidden via the :ref:`visible<class_Node3D_property_visible>` property are essentially removed from the visibility dependency tree, so dependent instances will not take the hidden node or its descendants into account.
  371. .. rst-class:: classref-item-separator
  372. ----
  373. .. _class_Node3D_property_visible:
  374. .. rst-class:: classref-property
  375. :ref:`bool<class_bool>` **visible** = ``true`` :ref:`🔗<class_Node3D_property_visible>`
  376. .. rst-class:: classref-property-setget
  377. - |void| **set_visible**\ (\ value\: :ref:`bool<class_bool>`\ )
  378. - :ref:`bool<class_bool>` **is_visible**\ (\ )
  379. If ``true``, this node can be visible. The node is only rendered when all of its ancestors are visible, as well. That means :ref:`is_visible_in_tree()<class_Node3D_method_is_visible_in_tree>` must return ``true``.
  380. .. rst-class:: classref-section-separator
  381. ----
  382. .. rst-class:: classref-descriptions-group
  383. Method Descriptions
  384. -------------------
  385. .. _class_Node3D_method_add_gizmo:
  386. .. rst-class:: classref-method
  387. |void| **add_gizmo**\ (\ gizmo\: :ref:`Node3DGizmo<class_Node3DGizmo>`\ ) :ref:`🔗<class_Node3D_method_add_gizmo>`
  388. Attaches the given ``gizmo`` to this node. Only works in the editor.
  389. \ **Note:** ``gizmo`` should be an :ref:`EditorNode3DGizmo<class_EditorNode3DGizmo>`. The argument type is :ref:`Node3DGizmo<class_Node3DGizmo>` to avoid depending on editor classes in **Node3D**.
  390. .. rst-class:: classref-item-separator
  391. ----
  392. .. _class_Node3D_method_clear_gizmos:
  393. .. rst-class:: classref-method
  394. |void| **clear_gizmos**\ (\ ) :ref:`🔗<class_Node3D_method_clear_gizmos>`
  395. Clears all :ref:`EditorNode3DGizmo<class_EditorNode3DGizmo>` objects attached to this node. Only works in the editor.
  396. .. rst-class:: classref-item-separator
  397. ----
  398. .. _class_Node3D_method_clear_subgizmo_selection:
  399. .. rst-class:: classref-method
  400. |void| **clear_subgizmo_selection**\ (\ ) :ref:`🔗<class_Node3D_method_clear_subgizmo_selection>`
  401. Deselects all subgizmos for this node. Useful to call when the selected subgizmo may no longer exist after a property change. Only works in the editor.
  402. .. rst-class:: classref-item-separator
  403. ----
  404. .. _class_Node3D_method_force_update_transform:
  405. .. rst-class:: classref-method
  406. |void| **force_update_transform**\ (\ ) :ref:`🔗<class_Node3D_method_force_update_transform>`
  407. Forces the node's :ref:`global_transform<class_Node3D_property_global_transform>` to update, by sending :ref:`NOTIFICATION_TRANSFORM_CHANGED<class_Node3D_constant_NOTIFICATION_TRANSFORM_CHANGED>`. Fails if the node is not inside the tree.
  408. \ **Note:** For performance reasons, transform changes are usually accumulated and applied *once* at the end of the frame. The update propagates through **Node3D** children, as well. Therefore, use this method only when you need an up-to-date transform (such as during physics operations).
  409. .. rst-class:: classref-item-separator
  410. ----
  411. .. _class_Node3D_method_get_gizmos:
  412. .. rst-class:: classref-method
  413. :ref:`Array<class_Array>`\[:ref:`Node3DGizmo<class_Node3DGizmo>`\] **get_gizmos**\ (\ ) |const| :ref:`🔗<class_Node3D_method_get_gizmos>`
  414. Returns all the :ref:`EditorNode3DGizmo<class_EditorNode3DGizmo>` objects attached to this node. Only works in the editor.
  415. .. rst-class:: classref-item-separator
  416. ----
  417. .. _class_Node3D_method_get_global_transform_interpolated:
  418. .. rst-class:: classref-method
  419. :ref:`Transform3D<class_Transform3D>` **get_global_transform_interpolated**\ (\ ) :ref:`🔗<class_Node3D_method_get_global_transform_interpolated>`
  420. When using physics interpolation, there will be circumstances in which you want to know the interpolated (displayed) transform of a node rather than the standard transform (which may only be accurate to the most recent physics tick).
  421. This is particularly important for frame-based operations that take place in :ref:`Node._process()<class_Node_private_method__process>`, rather than :ref:`Node._physics_process()<class_Node_private_method__physics_process>`. Examples include :ref:`Camera3D<class_Camera3D>`\ s focusing on a node, or finding where to fire lasers from on a frame rather than physics tick.
  422. \ **Note:** This function creates an interpolation pump on the **Node3D** the first time it is called, which can respond to physics interpolation resets. If you get problems with "streaking" when initially following a **Node3D**, be sure to call :ref:`get_global_transform_interpolated()<class_Node3D_method_get_global_transform_interpolated>` at least once *before* resetting the **Node3D** physics interpolation.
  423. .. rst-class:: classref-item-separator
  424. ----
  425. .. _class_Node3D_method_get_parent_node_3d:
  426. .. rst-class:: classref-method
  427. :ref:`Node3D<class_Node3D>` **get_parent_node_3d**\ (\ ) |const| :ref:`🔗<class_Node3D_method_get_parent_node_3d>`
  428. Returns the parent **Node3D** that directly affects this node's :ref:`global_transform<class_Node3D_property_global_transform>`. Returns ``null`` if no parent exists, the parent is not a **Node3D**, or :ref:`top_level<class_Node3D_property_top_level>` is ``true``.
  429. \ **Note:** This method is not always equivalent to :ref:`Node.get_parent()<class_Node_method_get_parent>`, which does not take :ref:`top_level<class_Node3D_property_top_level>` into account.
  430. .. rst-class:: classref-item-separator
  431. ----
  432. .. _class_Node3D_method_get_world_3d:
  433. .. rst-class:: classref-method
  434. :ref:`World3D<class_World3D>` **get_world_3d**\ (\ ) |const| :ref:`🔗<class_Node3D_method_get_world_3d>`
  435. Returns the :ref:`World3D<class_World3D>` this node is registered to.
  436. Usually, this is the same as the world used by this node's viewport (see :ref:`Node.get_viewport()<class_Node_method_get_viewport>` and :ref:`Viewport.find_world_3d()<class_Viewport_method_find_world_3d>`).
  437. .. rst-class:: classref-item-separator
  438. ----
  439. .. _class_Node3D_method_global_rotate:
  440. .. rst-class:: classref-method
  441. |void| **global_rotate**\ (\ axis\: :ref:`Vector3<class_Vector3>`, angle\: :ref:`float<class_float>`\ ) :ref:`🔗<class_Node3D_method_global_rotate>`
  442. Rotates this node's :ref:`global_basis<class_Node3D_property_global_basis>` around the global ``axis`` by the given ``angle``, in radians. This operation is calculated in global space (relative to the world) and preserves the :ref:`global_position<class_Node3D_property_global_position>`.
  443. .. rst-class:: classref-item-separator
  444. ----
  445. .. _class_Node3D_method_global_scale:
  446. .. rst-class:: classref-method
  447. |void| **global_scale**\ (\ scale\: :ref:`Vector3<class_Vector3>`\ ) :ref:`🔗<class_Node3D_method_global_scale>`
  448. Scales this node's :ref:`global_basis<class_Node3D_property_global_basis>` by the given ``scale`` factor. This operation is calculated in global space (relative to the world) and preserves the :ref:`global_position<class_Node3D_property_global_position>`.
  449. \ **Note:** This method is not to be confused with the :ref:`scale<class_Node3D_property_scale>` property.
  450. .. rst-class:: classref-item-separator
  451. ----
  452. .. _class_Node3D_method_global_translate:
  453. .. rst-class:: classref-method
  454. |void| **global_translate**\ (\ offset\: :ref:`Vector3<class_Vector3>`\ ) :ref:`🔗<class_Node3D_method_global_translate>`
  455. Adds the given translation ``offset`` to the node's :ref:`global_position<class_Node3D_property_global_position>` in global space (relative to the world).
  456. .. rst-class:: classref-item-separator
  457. ----
  458. .. _class_Node3D_method_hide:
  459. .. rst-class:: classref-method
  460. |void| **hide**\ (\ ) :ref:`🔗<class_Node3D_method_hide>`
  461. Prevents this node from being rendered. Equivalent to setting :ref:`visible<class_Node3D_property_visible>` to ``false``. This is the opposite of :ref:`show()<class_Node3D_method_show>`.
  462. .. rst-class:: classref-item-separator
  463. ----
  464. .. _class_Node3D_method_is_local_transform_notification_enabled:
  465. .. rst-class:: classref-method
  466. :ref:`bool<class_bool>` **is_local_transform_notification_enabled**\ (\ ) |const| :ref:`🔗<class_Node3D_method_is_local_transform_notification_enabled>`
  467. Returns ``true`` if the node receives :ref:`NOTIFICATION_LOCAL_TRANSFORM_CHANGED<class_Node3D_constant_NOTIFICATION_LOCAL_TRANSFORM_CHANGED>` whenever :ref:`transform<class_Node3D_property_transform>` changes. This is enabled with :ref:`set_notify_local_transform()<class_Node3D_method_set_notify_local_transform>`.
  468. .. rst-class:: classref-item-separator
  469. ----
  470. .. _class_Node3D_method_is_scale_disabled:
  471. .. rst-class:: classref-method
  472. :ref:`bool<class_bool>` **is_scale_disabled**\ (\ ) |const| :ref:`🔗<class_Node3D_method_is_scale_disabled>`
  473. Returns ``true`` if this node's :ref:`global_transform<class_Node3D_property_global_transform>` is automatically orthonormalized. This results in this node not appearing distorted, as if its global scale were set to :ref:`Vector3.ONE<class_Vector3_constant_ONE>` (or its negative counterpart). See also :ref:`set_disable_scale()<class_Node3D_method_set_disable_scale>` and :ref:`orthonormalize()<class_Node3D_method_orthonormalize>`.
  474. \ **Note:** :ref:`transform<class_Node3D_property_transform>` is not affected by this setting.
  475. .. rst-class:: classref-item-separator
  476. ----
  477. .. _class_Node3D_method_is_transform_notification_enabled:
  478. .. rst-class:: classref-method
  479. :ref:`bool<class_bool>` **is_transform_notification_enabled**\ (\ ) |const| :ref:`🔗<class_Node3D_method_is_transform_notification_enabled>`
  480. Returns ``true`` if the node receives :ref:`NOTIFICATION_TRANSFORM_CHANGED<class_Node3D_constant_NOTIFICATION_TRANSFORM_CHANGED>` whenever :ref:`global_transform<class_Node3D_property_global_transform>` changes. This is enabled with :ref:`set_notify_transform()<class_Node3D_method_set_notify_transform>`.
  481. .. rst-class:: classref-item-separator
  482. ----
  483. .. _class_Node3D_method_is_visible_in_tree:
  484. .. rst-class:: classref-method
  485. :ref:`bool<class_bool>` **is_visible_in_tree**\ (\ ) |const| :ref:`🔗<class_Node3D_method_is_visible_in_tree>`
  486. Returns ``true`` if this node is inside the scene tree and the :ref:`visible<class_Node3D_property_visible>` property is ``true`` for this node and all of its **Node3D** ancestors *in sequence*. An ancestor of any other type (such as :ref:`Node<class_Node>` or :ref:`Node2D<class_Node2D>`) breaks the sequence. See also :ref:`Node.get_parent()<class_Node_method_get_parent>`.
  487. \ **Note:** This method cannot take :ref:`VisualInstance3D.layers<class_VisualInstance3D_property_layers>` into account, so even if this method returns ``true``, the node may not be rendered.
  488. .. rst-class:: classref-item-separator
  489. ----
  490. .. _class_Node3D_method_look_at:
  491. .. rst-class:: classref-method
  492. |void| **look_at**\ (\ target\: :ref:`Vector3<class_Vector3>`, up\: :ref:`Vector3<class_Vector3>` = Vector3(0, 1, 0), use_model_front\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_Node3D_method_look_at>`
  493. Rotates the node so that the local forward axis (-Z, :ref:`Vector3.FORWARD<class_Vector3_constant_FORWARD>`) points toward the ``target`` position. This operation is calculated in global space (relative to the world).
  494. The local up axis (+Y) points as close to the ``up`` 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.
  495. The ``target`` position cannot be the same as the node's position, the ``up`` vector cannot be :ref:`Vector3.ZERO<class_Vector3_constant_ZERO>`. Furthermore, the direction from the node's position to the ``target`` position cannot be parallel to the ``up`` vector, to avoid an unintended rotation around the local Z axis.
  496. If ``use_model_front`` is ``true``, the +Z axis (asset front) is treated as forward (implies +X is left) and points toward the ``target`` position. By default, the -Z axis (camera forward) is treated as forward (implies +X is right).
  497. \ **Note:** This method fails if the node is not in the scene tree. If necessary, use :ref:`look_at_from_position()<class_Node3D_method_look_at_from_position>` instead.
  498. .. rst-class:: classref-item-separator
  499. ----
  500. .. _class_Node3D_method_look_at_from_position:
  501. .. rst-class:: classref-method
  502. |void| **look_at_from_position**\ (\ position\: :ref:`Vector3<class_Vector3>`, target\: :ref:`Vector3<class_Vector3>`, up\: :ref:`Vector3<class_Vector3>` = Vector3(0, 1, 0), use_model_front\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_Node3D_method_look_at_from_position>`
  503. Moves the node to the specified ``position``, then rotates the node to point toward the ``target`` position, similar to :ref:`look_at()<class_Node3D_method_look_at>`. This operation is calculated in global space (relative to the world).
  504. .. rst-class:: classref-item-separator
  505. ----
  506. .. _class_Node3D_method_orthonormalize:
  507. .. rst-class:: classref-method
  508. |void| **orthonormalize**\ (\ ) :ref:`🔗<class_Node3D_method_orthonormalize>`
  509. Orthonormalizes this node's :ref:`basis<class_Node3D_property_basis>`. This method sets this node's :ref:`scale<class_Node3D_property_scale>` to :ref:`Vector3.ONE<class_Vector3_constant_ONE>` (or its negative counterpart), but preserves the :ref:`position<class_Node3D_property_position>` and :ref:`rotation<class_Node3D_property_rotation>`. See also :ref:`Transform3D.orthonormalized()<class_Transform3D_method_orthonormalized>`.
  510. .. rst-class:: classref-item-separator
  511. ----
  512. .. _class_Node3D_method_rotate:
  513. .. rst-class:: classref-method
  514. |void| **rotate**\ (\ axis\: :ref:`Vector3<class_Vector3>`, angle\: :ref:`float<class_float>`\ ) :ref:`🔗<class_Node3D_method_rotate>`
  515. Rotates this node's :ref:`basis<class_Node3D_property_basis>` around the ``axis`` by the given ``angle``, in radians. This operation is calculated in parent space (relative to the parent) and preserves the :ref:`position<class_Node3D_property_position>`.
  516. .. rst-class:: classref-item-separator
  517. ----
  518. .. _class_Node3D_method_rotate_object_local:
  519. .. rst-class:: classref-method
  520. |void| **rotate_object_local**\ (\ axis\: :ref:`Vector3<class_Vector3>`, angle\: :ref:`float<class_float>`\ ) :ref:`🔗<class_Node3D_method_rotate_object_local>`
  521. Rotates this node's :ref:`basis<class_Node3D_property_basis>` around the ``axis`` by the given ``angle``, in radians. This operation is calculated in local space (relative to this node) and preserves the :ref:`position<class_Node3D_property_position>`.
  522. .. rst-class:: classref-item-separator
  523. ----
  524. .. _class_Node3D_method_rotate_x:
  525. .. rst-class:: classref-method
  526. |void| **rotate_x**\ (\ angle\: :ref:`float<class_float>`\ ) :ref:`🔗<class_Node3D_method_rotate_x>`
  527. Rotates this node's :ref:`basis<class_Node3D_property_basis>` around the X axis by the given ``angle``, in radians. This operation is calculated in parent space (relative to the parent) and preserves the :ref:`position<class_Node3D_property_position>`.
  528. .. rst-class:: classref-item-separator
  529. ----
  530. .. _class_Node3D_method_rotate_y:
  531. .. rst-class:: classref-method
  532. |void| **rotate_y**\ (\ angle\: :ref:`float<class_float>`\ ) :ref:`🔗<class_Node3D_method_rotate_y>`
  533. Rotates this node's :ref:`basis<class_Node3D_property_basis>` around the Y axis by the given ``angle``, in radians. This operation is calculated in parent space (relative to the parent) and preserves the :ref:`position<class_Node3D_property_position>`.
  534. .. rst-class:: classref-item-separator
  535. ----
  536. .. _class_Node3D_method_rotate_z:
  537. .. rst-class:: classref-method
  538. |void| **rotate_z**\ (\ angle\: :ref:`float<class_float>`\ ) :ref:`🔗<class_Node3D_method_rotate_z>`
  539. Rotates this node's :ref:`basis<class_Node3D_property_basis>` around the Z axis by the given ``angle``, in radians. This operation is calculated in parent space (relative to the parent) and preserves the :ref:`position<class_Node3D_property_position>`.
  540. .. rst-class:: classref-item-separator
  541. ----
  542. .. _class_Node3D_method_scale_object_local:
  543. .. rst-class:: classref-method
  544. |void| **scale_object_local**\ (\ scale\: :ref:`Vector3<class_Vector3>`\ ) :ref:`🔗<class_Node3D_method_scale_object_local>`
  545. Scales this node's :ref:`basis<class_Node3D_property_basis>` by the given ``scale`` factor. This operation is calculated in local space (relative to this node) and preserves the :ref:`position<class_Node3D_property_position>`.
  546. .. rst-class:: classref-item-separator
  547. ----
  548. .. _class_Node3D_method_set_disable_scale:
  549. .. rst-class:: classref-method
  550. |void| **set_disable_scale**\ (\ disable\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_Node3D_method_set_disable_scale>`
  551. If ``true``, this node's :ref:`global_transform<class_Node3D_property_global_transform>` is automatically orthonormalized. This results in this node not appearing distorted, as if its global scale were set to :ref:`Vector3.ONE<class_Vector3_constant_ONE>` (or its negative counterpart). See also :ref:`is_scale_disabled()<class_Node3D_method_is_scale_disabled>` and :ref:`orthonormalize()<class_Node3D_method_orthonormalize>`.
  552. \ **Note:** :ref:`transform<class_Node3D_property_transform>` is not affected by this setting.
  553. .. rst-class:: classref-item-separator
  554. ----
  555. .. _class_Node3D_method_set_identity:
  556. .. rst-class:: classref-method
  557. |void| **set_identity**\ (\ ) :ref:`🔗<class_Node3D_method_set_identity>`
  558. Sets this node's :ref:`transform<class_Node3D_property_transform>` to :ref:`Transform3D.IDENTITY<class_Transform3D_constant_IDENTITY>`, which resets all transformations in parent space (:ref:`position<class_Node3D_property_position>`, :ref:`rotation<class_Node3D_property_rotation>`, and :ref:`scale<class_Node3D_property_scale>`).
  559. .. rst-class:: classref-item-separator
  560. ----
  561. .. _class_Node3D_method_set_ignore_transform_notification:
  562. .. rst-class:: classref-method
  563. |void| **set_ignore_transform_notification**\ (\ enabled\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_Node3D_method_set_ignore_transform_notification>`
  564. If ``true``, the node will not receive :ref:`NOTIFICATION_TRANSFORM_CHANGED<class_Node3D_constant_NOTIFICATION_TRANSFORM_CHANGED>` or :ref:`NOTIFICATION_LOCAL_TRANSFORM_CHANGED<class_Node3D_constant_NOTIFICATION_LOCAL_TRANSFORM_CHANGED>`.
  565. It may useful to call this method when handling these notifications to prevent infinite recursion.
  566. .. rst-class:: classref-item-separator
  567. ----
  568. .. _class_Node3D_method_set_notify_local_transform:
  569. .. rst-class:: classref-method
  570. |void| **set_notify_local_transform**\ (\ enable\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_Node3D_method_set_notify_local_transform>`
  571. If ``true``, the node will receive :ref:`NOTIFICATION_LOCAL_TRANSFORM_CHANGED<class_Node3D_constant_NOTIFICATION_LOCAL_TRANSFORM_CHANGED>` whenever :ref:`transform<class_Node3D_property_transform>` changes.
  572. \ **Note:** Some 3D nodes such as :ref:`CSGShape3D<class_CSGShape3D>` or :ref:`CollisionShape3D<class_CollisionShape3D>` automatically enable this to function correctly.
  573. .. rst-class:: classref-item-separator
  574. ----
  575. .. _class_Node3D_method_set_notify_transform:
  576. .. rst-class:: classref-method
  577. |void| **set_notify_transform**\ (\ enable\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_Node3D_method_set_notify_transform>`
  578. If ``true``, the node will receive :ref:`NOTIFICATION_TRANSFORM_CHANGED<class_Node3D_constant_NOTIFICATION_TRANSFORM_CHANGED>` whenever :ref:`global_transform<class_Node3D_property_global_transform>` changes.
  579. \ **Note:** Most 3D nodes such as :ref:`VisualInstance3D<class_VisualInstance3D>` or :ref:`CollisionObject3D<class_CollisionObject3D>` automatically enable this to function correctly.
  580. \ **Note:** In the editor, nodes will propagate this notification to their children if a gizmo is attached (see :ref:`add_gizmo()<class_Node3D_method_add_gizmo>`).
  581. .. rst-class:: classref-item-separator
  582. ----
  583. .. _class_Node3D_method_set_subgizmo_selection:
  584. .. rst-class:: classref-method
  585. |void| **set_subgizmo_selection**\ (\ gizmo\: :ref:`Node3DGizmo<class_Node3DGizmo>`, id\: :ref:`int<class_int>`, transform\: :ref:`Transform3D<class_Transform3D>`\ ) :ref:`🔗<class_Node3D_method_set_subgizmo_selection>`
  586. Selects the ``gizmo``'s subgizmo with the given ``id`` and sets its transform. Only works in the editor.
  587. \ **Note:** The gizmo object would typically be an instance of :ref:`EditorNode3DGizmo<class_EditorNode3DGizmo>`, but the argument type is kept generic to avoid creating a dependency on editor classes in **Node3D**.
  588. .. rst-class:: classref-item-separator
  589. ----
  590. .. _class_Node3D_method_show:
  591. .. rst-class:: classref-method
  592. |void| **show**\ (\ ) :ref:`🔗<class_Node3D_method_show>`
  593. Allows this node to be rendered. Equivalent to setting :ref:`visible<class_Node3D_property_visible>` to ``true``. This is the opposite of :ref:`hide()<class_Node3D_method_hide>`.
  594. .. rst-class:: classref-item-separator
  595. ----
  596. .. _class_Node3D_method_to_global:
  597. .. rst-class:: classref-method
  598. :ref:`Vector3<class_Vector3>` **to_global**\ (\ local_point\: :ref:`Vector3<class_Vector3>`\ ) |const| :ref:`🔗<class_Node3D_method_to_global>`
  599. Returns the ``local_point`` converted from this node's local space to global space. This is the opposite of :ref:`to_local()<class_Node3D_method_to_local>`.
  600. .. rst-class:: classref-item-separator
  601. ----
  602. .. _class_Node3D_method_to_local:
  603. .. rst-class:: classref-method
  604. :ref:`Vector3<class_Vector3>` **to_local**\ (\ global_point\: :ref:`Vector3<class_Vector3>`\ ) |const| :ref:`🔗<class_Node3D_method_to_local>`
  605. Returns the ``global_point`` converted from global space to this node's local space. This is the opposite of :ref:`to_global()<class_Node3D_method_to_global>`.
  606. .. rst-class:: classref-item-separator
  607. ----
  608. .. _class_Node3D_method_translate:
  609. .. rst-class:: classref-method
  610. |void| **translate**\ (\ offset\: :ref:`Vector3<class_Vector3>`\ ) :ref:`🔗<class_Node3D_method_translate>`
  611. Adds the given translation ``offset`` to the node's position, in local space (relative to this node).
  612. \ **Note:** Prefer using :ref:`translate_object_local()<class_Node3D_method_translate_object_local>`, instead, as this method may be changed in a future release.
  613. \ **Note:** Despite the naming convention, this operation is **not** calculated in parent space for compatibility reasons. To translate in parent space, add ``offset`` to the :ref:`position<class_Node3D_property_position>` (``node_3d.position += offset``).
  614. .. rst-class:: classref-item-separator
  615. ----
  616. .. _class_Node3D_method_translate_object_local:
  617. .. rst-class:: classref-method
  618. |void| **translate_object_local**\ (\ offset\: :ref:`Vector3<class_Vector3>`\ ) :ref:`🔗<class_Node3D_method_translate_object_local>`
  619. Adds the given translation ``offset`` to the node's position, in local space (relative to this node).
  620. .. rst-class:: classref-item-separator
  621. ----
  622. .. _class_Node3D_method_update_gizmos:
  623. .. rst-class:: classref-method
  624. |void| **update_gizmos**\ (\ ) :ref:`🔗<class_Node3D_method_update_gizmos>`
  625. Updates all the :ref:`EditorNode3DGizmo<class_EditorNode3DGizmo>` objects attached to this node. Only works in the editor.
  626. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  627. .. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
  628. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  629. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  630. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  631. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  632. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`
  633. .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`
  634. .. |void| replace:: :abbr:`void (No return value.)`