class_node3d.rst 45 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730
  1. :github_url: hide
  2. .. Generated automatically by doc/tools/make_rst.py in Godot's source tree.
  3. .. DO NOT EDIT THIS FILE, but the Node3D.xml source instead.
  4. .. The source is found in doc/classes or modules/<name>/doc_classes.
  5. .. _class_Node3D:
  6. Node3D
  7. ======
  8. **Inherits:** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
  9. **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:`NavigationRegion3D<class_NavigationRegion3D>`, :ref:`OccluderInstance3D<class_OccluderInstance3D>`, :ref:`Path3D<class_Path3D>`, :ref:`PathFollow3D<class_PathFollow3D>`, :ref:`Position3D<class_Position3D>`, :ref:`RayCast3D<class_RayCast3D>`, :ref:`RemoteTransform3D<class_RemoteTransform3D>`, :ref:`Skeleton3D<class_Skeleton3D>`, :ref:`SpringArm3D<class_SpringArm3D>`, :ref:`VehicleWheel3D<class_VehicleWheel3D>`, :ref:`VisualInstance3D<class_VisualInstance3D>`, :ref:`XRNode3D<class_XRNode3D>`, :ref:`XROrigin3D<class_XROrigin3D>`
  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:`Transform3D<class_Transform3D>` and visibility settings. All other 3D game objects inherit from Node3D. Use ``Node3D`` 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 ``Node3D`` object is set as top-level. Affine operations in this coordinate system correspond to direct affine operations on the ``Node3D``'s transform. The word local below refers to this coordinate system. The coordinate system that is attached to the ``Node3D`` object itself is referred to as object-local coordinate system.
  15. \ **Note:** Unless otherwise specified, all methods that have angle parameters must have angles specified as *radians*. To convert degrees to radians, use :ref:`@GlobalScope.deg2rad<class_@GlobalScope_method_deg2rad>`.
  16. Tutorials
  17. ---------
  18. - :doc:`Introduction to 3D <../tutorials/3d/introduction_to_3d>`
  19. - `All 3D Demos <https://github.com/godotengine/godot-demo-projects/tree/master/3d>`__
  20. Properties
  21. ----------
  22. +-------------------------------------------------------+---------------------------------------------------------------------+-----------------------------------------------------+
  23. | :ref:`Basis<class_Basis>` | :ref:`basis<class_Node3D_property_basis>` | |
  24. +-------------------------------------------------------+---------------------------------------------------------------------+-----------------------------------------------------+
  25. | :ref:`Transform3D<class_Transform3D>` | :ref:`global_transform<class_Node3D_property_global_transform>` | |
  26. +-------------------------------------------------------+---------------------------------------------------------------------+-----------------------------------------------------+
  27. | :ref:`Vector3<class_Vector3>` | :ref:`position<class_Node3D_property_position>` | ``Vector3(0, 0, 0)`` |
  28. +-------------------------------------------------------+---------------------------------------------------------------------+-----------------------------------------------------+
  29. | :ref:`Quaternion<class_Quaternion>` | :ref:`quaternion<class_Node3D_property_quaternion>` | |
  30. +-------------------------------------------------------+---------------------------------------------------------------------+-----------------------------------------------------+
  31. | :ref:`Vector3<class_Vector3>` | :ref:`rotation<class_Node3D_property_rotation>` | ``Vector3(0, 0, 0)`` |
  32. +-------------------------------------------------------+---------------------------------------------------------------------+-----------------------------------------------------+
  33. | :ref:`RotationEditMode<enum_Node3D_RotationEditMode>` | :ref:`rotation_edit_mode<class_Node3D_property_rotation_edit_mode>` | ``0`` |
  34. +-------------------------------------------------------+---------------------------------------------------------------------+-----------------------------------------------------+
  35. | :ref:`RotationOrder<enum_Node3D_RotationOrder>` | :ref:`rotation_order<class_Node3D_property_rotation_order>` | ``2`` |
  36. +-------------------------------------------------------+---------------------------------------------------------------------+-----------------------------------------------------+
  37. | :ref:`Vector3<class_Vector3>` | :ref:`scale<class_Node3D_property_scale>` | ``Vector3(1, 1, 1)`` |
  38. +-------------------------------------------------------+---------------------------------------------------------------------+-----------------------------------------------------+
  39. | :ref:`bool<class_bool>` | :ref:`top_level<class_Node3D_property_top_level>` | ``false`` |
  40. +-------------------------------------------------------+---------------------------------------------------------------------+-----------------------------------------------------+
  41. | :ref:`Transform3D<class_Transform3D>` | :ref:`transform<class_Node3D_property_transform>` | ``Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)`` |
  42. +-------------------------------------------------------+---------------------------------------------------------------------+-----------------------------------------------------+
  43. | :ref:`NodePath<class_NodePath>` | :ref:`visibility_parent<class_Node3D_property_visibility_parent>` | ``NodePath("")`` |
  44. +-------------------------------------------------------+---------------------------------------------------------------------+-----------------------------------------------------+
  45. | :ref:`bool<class_bool>` | :ref:`visible<class_Node3D_property_visible>` | ``true`` |
  46. +-------------------------------------------------------+---------------------------------------------------------------------+-----------------------------------------------------+
  47. Methods
  48. -------
  49. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  50. | void | :ref:`add_gizmo<class_Node3D_method_add_gizmo>` **(** :ref:`Node3DGizmo<class_Node3DGizmo>` gizmo **)** |
  51. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  52. | void | :ref:`clear_gizmos<class_Node3D_method_clear_gizmos>` **(** **)** |
  53. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  54. | void | :ref:`clear_subgizmo_selection<class_Node3D_method_clear_subgizmo_selection>` **(** **)** |
  55. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  56. | void | :ref:`force_update_transform<class_Node3D_method_force_update_transform>` **(** **)** |
  57. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  58. | :ref:`Array<class_Array>` | :ref:`get_gizmos<class_Node3D_method_get_gizmos>` **(** **)** |const| |
  59. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  60. | :ref:`Node3D<class_Node3D>` | :ref:`get_parent_node_3d<class_Node3D_method_get_parent_node_3d>` **(** **)** |const| |
  61. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  62. | :ref:`World3D<class_World3D>` | :ref:`get_world_3d<class_Node3D_method_get_world_3d>` **(** **)** |const| |
  63. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  64. | void | :ref:`global_rotate<class_Node3D_method_global_rotate>` **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` angle **)** |
  65. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  66. | void | :ref:`global_scale<class_Node3D_method_global_scale>` **(** :ref:`Vector3<class_Vector3>` scale **)** |
  67. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  68. | void | :ref:`global_translate<class_Node3D_method_global_translate>` **(** :ref:`Vector3<class_Vector3>` offset **)** |
  69. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  70. | void | :ref:`hide<class_Node3D_method_hide>` **(** **)** |
  71. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  72. | :ref:`bool<class_bool>` | :ref:`is_local_transform_notification_enabled<class_Node3D_method_is_local_transform_notification_enabled>` **(** **)** |const| |
  73. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  74. | :ref:`bool<class_bool>` | :ref:`is_scale_disabled<class_Node3D_method_is_scale_disabled>` **(** **)** |const| |
  75. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  76. | :ref:`bool<class_bool>` | :ref:`is_transform_notification_enabled<class_Node3D_method_is_transform_notification_enabled>` **(** **)** |const| |
  77. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  78. | :ref:`bool<class_bool>` | :ref:`is_visible_in_tree<class_Node3D_method_is_visible_in_tree>` **(** **)** |const| |
  79. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  80. | void | :ref:`look_at<class_Node3D_method_look_at>` **(** :ref:`Vector3<class_Vector3>` target, :ref:`Vector3<class_Vector3>` up=Vector3(0, 1, 0) **)** |
  81. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  82. | void | :ref:`look_at_from_position<class_Node3D_method_look_at_from_position>` **(** :ref:`Vector3<class_Vector3>` position, :ref:`Vector3<class_Vector3>` target, :ref:`Vector3<class_Vector3>` up=Vector3(0, 1, 0) **)** |
  83. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  84. | void | :ref:`orthonormalize<class_Node3D_method_orthonormalize>` **(** **)** |
  85. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  86. | :ref:`bool<class_bool>` | :ref:`property_can_revert<class_Node3D_method_property_can_revert>` **(** :ref:`String<class_String>` name **)** |
  87. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  88. | :ref:`Variant<class_Variant>` | :ref:`property_get_revert<class_Node3D_method_property_get_revert>` **(** :ref:`String<class_String>` name **)** |
  89. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  90. | void | :ref:`rotate<class_Node3D_method_rotate>` **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` angle **)** |
  91. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  92. | void | :ref:`rotate_object_local<class_Node3D_method_rotate_object_local>` **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` angle **)** |
  93. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  94. | void | :ref:`rotate_x<class_Node3D_method_rotate_x>` **(** :ref:`float<class_float>` angle **)** |
  95. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  96. | void | :ref:`rotate_y<class_Node3D_method_rotate_y>` **(** :ref:`float<class_float>` angle **)** |
  97. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  98. | void | :ref:`rotate_z<class_Node3D_method_rotate_z>` **(** :ref:`float<class_float>` angle **)** |
  99. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  100. | void | :ref:`scale_object_local<class_Node3D_method_scale_object_local>` **(** :ref:`Vector3<class_Vector3>` scale **)** |
  101. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  102. | void | :ref:`set_disable_scale<class_Node3D_method_set_disable_scale>` **(** :ref:`bool<class_bool>` disable **)** |
  103. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  104. | void | :ref:`set_identity<class_Node3D_method_set_identity>` **(** **)** |
  105. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  106. | void | :ref:`set_ignore_transform_notification<class_Node3D_method_set_ignore_transform_notification>` **(** :ref:`bool<class_bool>` enabled **)** |
  107. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  108. | void | :ref:`set_notify_local_transform<class_Node3D_method_set_notify_local_transform>` **(** :ref:`bool<class_bool>` enable **)** |
  109. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  110. | void | :ref:`set_notify_transform<class_Node3D_method_set_notify_transform>` **(** :ref:`bool<class_bool>` enable **)** |
  111. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  112. | void | :ref:`set_subgizmo_selection<class_Node3D_method_set_subgizmo_selection>` **(** :ref:`Node3DGizmo<class_Node3DGizmo>` gizmo, :ref:`int<class_int>` id, :ref:`Transform3D<class_Transform3D>` transform **)** |
  113. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  114. | void | :ref:`show<class_Node3D_method_show>` **(** **)** |
  115. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  116. | :ref:`Vector3<class_Vector3>` | :ref:`to_global<class_Node3D_method_to_global>` **(** :ref:`Vector3<class_Vector3>` local_point **)** |const| |
  117. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  118. | :ref:`Vector3<class_Vector3>` | :ref:`to_local<class_Node3D_method_to_local>` **(** :ref:`Vector3<class_Vector3>` global_point **)** |const| |
  119. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  120. | void | :ref:`translate<class_Node3D_method_translate>` **(** :ref:`Vector3<class_Vector3>` offset **)** |
  121. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  122. | void | :ref:`translate_object_local<class_Node3D_method_translate_object_local>` **(** :ref:`Vector3<class_Vector3>` offset **)** |
  123. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  124. | void | :ref:`update_gizmos<class_Node3D_method_update_gizmos>` **(** **)** |
  125. +-------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  126. Signals
  127. -------
  128. .. _class_Node3D_signal_visibility_changed:
  129. - **visibility_changed** **(** **)**
  130. Emitted when node visibility changes.
  131. Enumerations
  132. ------------
  133. .. _enum_Node3D_RotationEditMode:
  134. .. _class_Node3D_constant_ROTATION_EDIT_MODE_EULER:
  135. .. _class_Node3D_constant_ROTATION_EDIT_MODE_QUATERNION:
  136. .. _class_Node3D_constant_ROTATION_EDIT_MODE_BASIS:
  137. enum **RotationEditMode**:
  138. - **ROTATION_EDIT_MODE_EULER** = **0**
  139. - **ROTATION_EDIT_MODE_QUATERNION** = **1**
  140. - **ROTATION_EDIT_MODE_BASIS** = **2**
  141. ----
  142. .. _enum_Node3D_RotationOrder:
  143. .. _class_Node3D_constant_ROTATION_ORDER_XYZ:
  144. .. _class_Node3D_constant_ROTATION_ORDER_XZY:
  145. .. _class_Node3D_constant_ROTATION_ORDER_YXZ:
  146. .. _class_Node3D_constant_ROTATION_ORDER_YZX:
  147. .. _class_Node3D_constant_ROTATION_ORDER_ZXY:
  148. .. _class_Node3D_constant_ROTATION_ORDER_ZYX:
  149. enum **RotationOrder**:
  150. - **ROTATION_ORDER_XYZ** = **0**
  151. - **ROTATION_ORDER_XZY** = **1**
  152. - **ROTATION_ORDER_YXZ** = **2**
  153. - **ROTATION_ORDER_YZX** = **3**
  154. - **ROTATION_ORDER_ZXY** = **4**
  155. - **ROTATION_ORDER_ZYX** = **5**
  156. Constants
  157. ---------
  158. .. _class_Node3D_constant_NOTIFICATION_TRANSFORM_CHANGED:
  159. .. _class_Node3D_constant_NOTIFICATION_ENTER_WORLD:
  160. .. _class_Node3D_constant_NOTIFICATION_EXIT_WORLD:
  161. .. _class_Node3D_constant_NOTIFICATION_VISIBILITY_CHANGED:
  162. - **NOTIFICATION_TRANSFORM_CHANGED** = **2000** --- Node3D nodes receives this notification when their global transform changes. This means that either the current or a parent node changed its transform.
  163. In order for :ref:`NOTIFICATION_TRANSFORM_CHANGED<class_Node3D_constant_NOTIFICATION_TRANSFORM_CHANGED>` to work, users first need to ask for it, with :ref:`set_notify_transform<class_Node3D_method_set_notify_transform>`. The notification is also sent if the node is in the editor context and it has at least one valid gizmo.
  164. - **NOTIFICATION_ENTER_WORLD** = **41** --- Node3D nodes receives this notification when they are registered to new :ref:`World3D<class_World3D>` resource.
  165. - **NOTIFICATION_EXIT_WORLD** = **42** --- Node3D nodes receives this notification when they are unregistered from current :ref:`World3D<class_World3D>` resource.
  166. - **NOTIFICATION_VISIBILITY_CHANGED** = **43** --- Node3D nodes receives this notification when their visibility changes.
  167. Property Descriptions
  168. ---------------------
  169. .. _class_Node3D_property_basis:
  170. - :ref:`Basis<class_Basis>` **basis**
  171. +----------+------------------+
  172. | *Setter* | set_basis(value) |
  173. +----------+------------------+
  174. | *Getter* | get_basis() |
  175. +----------+------------------+
  176. Direct access to the 3x3 basis of the :ref:`Transform3D<class_Transform3D>` property.
  177. ----
  178. .. _class_Node3D_property_global_transform:
  179. - :ref:`Transform3D<class_Transform3D>` **global_transform**
  180. +----------+-----------------------------+
  181. | *Setter* | set_global_transform(value) |
  182. +----------+-----------------------------+
  183. | *Getter* | get_global_transform() |
  184. +----------+-----------------------------+
  185. World3D space (global) :ref:`Transform3D<class_Transform3D>` of this node.
  186. ----
  187. .. _class_Node3D_property_position:
  188. - :ref:`Vector3<class_Vector3>` **position**
  189. +-----------+----------------------+
  190. | *Default* | ``Vector3(0, 0, 0)`` |
  191. +-----------+----------------------+
  192. | *Setter* | set_position(value) |
  193. +-----------+----------------------+
  194. | *Getter* | get_position() |
  195. +-----------+----------------------+
  196. Local position or translation of this node relative to the parent. This is equivalent to ``transform.origin``.
  197. ----
  198. .. _class_Node3D_property_quaternion:
  199. - :ref:`Quaternion<class_Quaternion>` **quaternion**
  200. +----------+-----------------------+
  201. | *Setter* | set_quaternion(value) |
  202. +----------+-----------------------+
  203. | *Getter* | get_quaternion() |
  204. +----------+-----------------------+
  205. Access to the node rotation as a :ref:`Quaternion<class_Quaternion>`. This property is ideal for tweening complex rotations.
  206. ----
  207. .. _class_Node3D_property_rotation:
  208. - :ref:`Vector3<class_Vector3>` **rotation**
  209. +-----------+----------------------+
  210. | *Default* | ``Vector3(0, 0, 0)`` |
  211. +-----------+----------------------+
  212. | *Setter* | set_rotation(value) |
  213. +-----------+----------------------+
  214. | *Getter* | get_rotation() |
  215. +-----------+----------------------+
  216. Rotation part of the local transformation in radians, specified in terms of Euler angles. The angles construct a rotaton in the order specified by the :ref:`rotation_order<class_Node3D_property_rotation_order>` property.
  217. \ **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.
  218. ----
  219. .. _class_Node3D_property_rotation_edit_mode:
  220. - :ref:`RotationEditMode<enum_Node3D_RotationEditMode>` **rotation_edit_mode**
  221. +-----------+-------------------------------+
  222. | *Default* | ``0`` |
  223. +-----------+-------------------------------+
  224. | *Setter* | set_rotation_edit_mode(value) |
  225. +-----------+-------------------------------+
  226. | *Getter* | get_rotation_edit_mode() |
  227. +-----------+-------------------------------+
  228. Specify how rotation (and scale) will be presented in the editor.
  229. ----
  230. .. _class_Node3D_property_rotation_order:
  231. - :ref:`RotationOrder<enum_Node3D_RotationOrder>` **rotation_order**
  232. +-----------+---------------------------+
  233. | *Default* | ``2`` |
  234. +-----------+---------------------------+
  235. | *Setter* | set_rotation_order(value) |
  236. +-----------+---------------------------+
  237. | *Getter* | get_rotation_order() |
  238. +-----------+---------------------------+
  239. Specify the axis rotation order of the :ref:`rotation<class_Node3D_property_rotation>` property. The final orientation is constructed by rotating the Euler angles in the order specified by this property.
  240. ----
  241. .. _class_Node3D_property_scale:
  242. - :ref:`Vector3<class_Vector3>` **scale**
  243. +-----------+----------------------+
  244. | *Default* | ``Vector3(1, 1, 1)`` |
  245. +-----------+----------------------+
  246. | *Setter* | set_scale(value) |
  247. +-----------+----------------------+
  248. | *Getter* | get_scale() |
  249. +-----------+----------------------+
  250. Scale part of the local transformation.
  251. ----
  252. .. _class_Node3D_property_top_level:
  253. - :ref:`bool<class_bool>` **top_level**
  254. +-----------+-------------------------+
  255. | *Default* | ``false`` |
  256. +-----------+-------------------------+
  257. | *Setter* | set_as_top_level(value) |
  258. +-----------+-------------------------+
  259. | *Getter* | is_set_as_top_level() |
  260. +-----------+-------------------------+
  261. If ``true``, the node will not inherit its transformations from its parent. Node transformations are only in global space.
  262. ----
  263. .. _class_Node3D_property_transform:
  264. - :ref:`Transform3D<class_Transform3D>` **transform**
  265. +-----------+-----------------------------------------------------+
  266. | *Default* | ``Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)`` |
  267. +-----------+-----------------------------------------------------+
  268. | *Setter* | set_transform(value) |
  269. +-----------+-----------------------------------------------------+
  270. | *Getter* | get_transform() |
  271. +-----------+-----------------------------------------------------+
  272. Local space :ref:`Transform3D<class_Transform3D>` of this node, with respect to the parent node.
  273. ----
  274. .. _class_Node3D_property_visibility_parent:
  275. - :ref:`NodePath<class_NodePath>` **visibility_parent**
  276. +-----------+------------------------------+
  277. | *Default* | ``NodePath("")`` |
  278. +-----------+------------------------------+
  279. | *Setter* | set_visibility_parent(value) |
  280. +-----------+------------------------------+
  281. | *Getter* | get_visibility_parent() |
  282. +-----------+------------------------------+
  283. Defines the visibility range parent for this node and its subtree. The visibility parent must be a GeometryInstance3D. 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 ancestors into account.
  284. ----
  285. .. _class_Node3D_property_visible:
  286. - :ref:`bool<class_bool>` **visible**
  287. +-----------+--------------------+
  288. | *Default* | ``true`` |
  289. +-----------+--------------------+
  290. | *Setter* | set_visible(value) |
  291. +-----------+--------------------+
  292. | *Getter* | is_visible() |
  293. +-----------+--------------------+
  294. If ``true``, this node is drawn. The node is only visible if all of its antecedents are visible as well (in other words, :ref:`is_visible_in_tree<class_Node3D_method_is_visible_in_tree>` must return ``true``).
  295. Method Descriptions
  296. -------------------
  297. .. _class_Node3D_method_add_gizmo:
  298. - void **add_gizmo** **(** :ref:`Node3DGizmo<class_Node3DGizmo>` gizmo **)**
  299. Attach a gizmo to this ``Node3D``.
  300. ----
  301. .. _class_Node3D_method_clear_gizmos:
  302. - void **clear_gizmos** **(** **)**
  303. Clear all gizmos attached to this ``Node3D``.
  304. ----
  305. .. _class_Node3D_method_clear_subgizmo_selection:
  306. - void **clear_subgizmo_selection** **(** **)**
  307. Clears subgizmo selection for this node in the editor. Useful when subgizmo IDs become invalid after a property change.
  308. ----
  309. .. _class_Node3D_method_force_update_transform:
  310. - void **force_update_transform** **(** **)**
  311. 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.
  312. ----
  313. .. _class_Node3D_method_get_gizmos:
  314. - :ref:`Array<class_Array>` **get_gizmos** **(** **)** |const|
  315. Returns all the gizmos attached to this ``Node3D``.
  316. ----
  317. .. _class_Node3D_method_get_parent_node_3d:
  318. - :ref:`Node3D<class_Node3D>` **get_parent_node_3d** **(** **)** |const|
  319. Returns the parent ``Node3D``, or an empty :ref:`Object<class_Object>` if no parent exists or parent is not of type ``Node3D``.
  320. ----
  321. .. _class_Node3D_method_get_world_3d:
  322. - :ref:`World3D<class_World3D>` **get_world_3d** **(** **)** |const|
  323. Returns the current :ref:`World3D<class_World3D>` resource this ``Node3D`` node is registered to.
  324. ----
  325. .. _class_Node3D_method_global_rotate:
  326. - void **global_rotate** **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` angle **)**
  327. 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.
  328. ----
  329. .. _class_Node3D_method_global_scale:
  330. - void **global_scale** **(** :ref:`Vector3<class_Vector3>` scale **)**
  331. Scales the global (world) transformation by the given :ref:`Vector3<class_Vector3>` scale factors.
  332. ----
  333. .. _class_Node3D_method_global_translate:
  334. - void **global_translate** **(** :ref:`Vector3<class_Vector3>` offset **)**
  335. Moves the global (world) transformation by :ref:`Vector3<class_Vector3>` offset. The offset is in global coordinate system.
  336. ----
  337. .. _class_Node3D_method_hide:
  338. - void **hide** **(** **)**
  339. Disables rendering of this node. Changes :ref:`visible<class_Node3D_property_visible>` to ``false``.
  340. ----
  341. .. _class_Node3D_method_is_local_transform_notification_enabled:
  342. - :ref:`bool<class_bool>` **is_local_transform_notification_enabled** **(** **)** |const|
  343. Returns whether node notifies about its local transformation changes. ``Node3D`` will not propagate this by default.
  344. ----
  345. .. _class_Node3D_method_is_scale_disabled:
  346. - :ref:`bool<class_bool>` **is_scale_disabled** **(** **)** |const|
  347. Returns whether this node uses a scale of ``(1, 1, 1)`` or its local transformation scale.
  348. ----
  349. .. _class_Node3D_method_is_transform_notification_enabled:
  350. - :ref:`bool<class_bool>` **is_transform_notification_enabled** **(** **)** |const|
  351. Returns whether the node notifies about its global and local transformation changes. ``Node3D`` will not propagate this by default.
  352. ----
  353. .. _class_Node3D_method_is_visible_in_tree:
  354. - :ref:`bool<class_bool>` **is_visible_in_tree** **(** **)** |const|
  355. Returns ``true`` if the node is present in the :ref:`SceneTree<class_SceneTree>`, its :ref:`visible<class_Node3D_property_visible>` property is ``true`` and all its antecedents are also visible. If any antecedent is hidden, this node will not be visible in the scene tree.
  356. ----
  357. .. _class_Node3D_method_look_at:
  358. - void **look_at** **(** :ref:`Vector3<class_Vector3>` target, :ref:`Vector3<class_Vector3>` up=Vector3(0, 1, 0) **)**
  359. Rotates the node so that the local forward axis (-Z) points toward the ``target`` position.
  360. 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.
  361. The ``target`` position cannot be the same as the node's position, the ``up`` vector cannot be zero, and the direction from the node's position to the ``target`` vector cannot be parallel to the ``up`` vector.
  362. Operations take place in global space.
  363. ----
  364. .. _class_Node3D_method_look_at_from_position:
  365. - void **look_at_from_position** **(** :ref:`Vector3<class_Vector3>` position, :ref:`Vector3<class_Vector3>` target, :ref:`Vector3<class_Vector3>` up=Vector3(0, 1, 0) **)**
  366. Moves the node to the specified ``position``, and then rotates the node to point toward the ``target`` as per :ref:`look_at<class_Node3D_method_look_at>`. Operations take place in global space.
  367. ----
  368. .. _class_Node3D_method_orthonormalize:
  369. - void **orthonormalize** **(** **)**
  370. 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:`Transform3D<class_Transform3D>`.
  371. ----
  372. .. _class_Node3D_method_property_can_revert:
  373. - :ref:`bool<class_bool>` **property_can_revert** **(** :ref:`String<class_String>` name **)**
  374. Returns ``true`` if the property identified by ``name`` can be reverted to a default value.
  375. ----
  376. .. _class_Node3D_method_property_get_revert:
  377. - :ref:`Variant<class_Variant>` **property_get_revert** **(** :ref:`String<class_String>` name **)**
  378. Returns the default value of the Node3D property with given ``name``.
  379. ----
  380. .. _class_Node3D_method_rotate:
  381. - void **rotate** **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` angle **)**
  382. Rotates the local transformation around axis, a unit :ref:`Vector3<class_Vector3>`, by specified angle in radians.
  383. ----
  384. .. _class_Node3D_method_rotate_object_local:
  385. - void **rotate_object_local** **(** :ref:`Vector3<class_Vector3>` axis, :ref:`float<class_float>` angle **)**
  386. 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.
  387. ----
  388. .. _class_Node3D_method_rotate_x:
  389. - void **rotate_x** **(** :ref:`float<class_float>` angle **)**
  390. Rotates the local transformation around the X axis by angle in radians.
  391. ----
  392. .. _class_Node3D_method_rotate_y:
  393. - void **rotate_y** **(** :ref:`float<class_float>` angle **)**
  394. Rotates the local transformation around the Y axis by angle in radians.
  395. ----
  396. .. _class_Node3D_method_rotate_z:
  397. - void **rotate_z** **(** :ref:`float<class_float>` angle **)**
  398. Rotates the local transformation around the Z axis by angle in radians.
  399. ----
  400. .. _class_Node3D_method_scale_object_local:
  401. - void **scale_object_local** **(** :ref:`Vector3<class_Vector3>` scale **)**
  402. Scales the local transformation by given 3D scale factors in object-local coordinate system.
  403. ----
  404. .. _class_Node3D_method_set_disable_scale:
  405. - void **set_disable_scale** **(** :ref:`bool<class_bool>` disable **)**
  406. Sets whether the node uses a scale of ``(1, 1, 1)`` or its local transformation scale. Changes to the local transformation scale are preserved.
  407. ----
  408. .. _class_Node3D_method_set_identity:
  409. - void **set_identity** **(** **)**
  410. Reset all transformations for this node (sets its :ref:`Transform3D<class_Transform3D>` to the identity matrix).
  411. ----
  412. .. _class_Node3D_method_set_ignore_transform_notification:
  413. - void **set_ignore_transform_notification** **(** :ref:`bool<class_bool>` enabled **)**
  414. Sets whether the node ignores notification that its transformation (global or local) changed.
  415. ----
  416. .. _class_Node3D_method_set_notify_local_transform:
  417. - void **set_notify_local_transform** **(** :ref:`bool<class_bool>` enable **)**
  418. Sets whether the node notifies about its local transformation changes. ``Node3D`` will not propagate this by default.
  419. ----
  420. .. _class_Node3D_method_set_notify_transform:
  421. - void **set_notify_transform** **(** :ref:`bool<class_bool>` enable **)**
  422. Sets whether the node notifies about its global and local transformation changes. ``Node3D`` will not propagate this by default, unless it is in the editor context and it has a valid gizmo.
  423. ----
  424. .. _class_Node3D_method_set_subgizmo_selection:
  425. - void **set_subgizmo_selection** **(** :ref:`Node3DGizmo<class_Node3DGizmo>` gizmo, :ref:`int<class_int>` id, :ref:`Transform3D<class_Transform3D>` transform **)**
  426. Set subgizmo selection for this node in the editor.
  427. ----
  428. .. _class_Node3D_method_show:
  429. - void **show** **(** **)**
  430. Enables rendering of this node. Changes :ref:`visible<class_Node3D_property_visible>` to ``true``.
  431. ----
  432. .. _class_Node3D_method_to_global:
  433. - :ref:`Vector3<class_Vector3>` **to_global** **(** :ref:`Vector3<class_Vector3>` local_point **)** |const|
  434. Transforms ``local_point`` from this node's local space to world space.
  435. ----
  436. .. _class_Node3D_method_to_local:
  437. - :ref:`Vector3<class_Vector3>` **to_local** **(** :ref:`Vector3<class_Vector3>` global_point **)** |const|
  438. Transforms ``global_point`` from world space to this node's local space.
  439. ----
  440. .. _class_Node3D_method_translate:
  441. - void **translate** **(** :ref:`Vector3<class_Vector3>` offset **)**
  442. Changes the node's position by the given offset :ref:`Vector3<class_Vector3>`.
  443. 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.
  444. ----
  445. .. _class_Node3D_method_translate_object_local:
  446. - void **translate_object_local** **(** :ref:`Vector3<class_Vector3>` offset **)**
  447. Changes the node's position by the given offset :ref:`Vector3<class_Vector3>` in local space.
  448. ----
  449. .. _class_Node3D_method_update_gizmos:
  450. - void **update_gizmos** **(** **)**
  451. Updates all the :ref:`Node3DGizmo<class_Node3DGizmo>`\ s attached to this node.
  452. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  453. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  454. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  455. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  456. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  457. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`