2017-09-12 17:42:36 -03:00
<?xml version="1.0" encoding="UTF-8" ?>
2020-03-30 18:22:57 +02:00
<class name= "Node3D" inherits= "Node" version= "4.0" >
2017-09-12 17:42:36 -03:00
<brief_description >
2019-06-22 01:04:47 +02:00
Most basic 3D game object, parent of all 3D-related nodes.
2017-09-12 17:42:36 -03:00
</brief_description>
<description >
2020-05-03 04:27:36 -04:00
Most basic 3D game object, with a 3D [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.
2020-03-30 18:22:57 +02:00
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.
2021-01-04 14:33:44 +01:00
[b]Note:[/b] Unless otherwise specified, all methods that have angle parameters must have angles specified as [i]radians[/i]. To convert degrees to radians, use [method @GlobalScope.deg2rad].
2017-09-12 17:42:36 -03:00
</description>
<tutorials >
2021-11-15 10:43:07 +01:00
<link title= "Introduction to 3D" > $DOCS_URL/tutorials/3d/introduction_to_3d.html</link>
2020-10-01 04:34:47 -04:00
<link title= "All 3D Demos" > https://github.com/godotengine/godot-demo-projects/tree/master/3d</link>
2017-09-12 17:42:36 -03:00
</tutorials>
<methods >
2021-06-23 16:49:50 +02:00
<method name= "add_gizmo" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
<argument index= "0" name= "gizmo" type= "Node3DGizmo" />
2021-06-23 16:49:50 +02:00
<description >
Attach a gizmo to this [code]Node3D[/code].
</description>
</method>
<method name= "clear_gizmos" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
2021-06-23 16:49:50 +02:00
<description >
Clear all gizmos attached to this [code]Node3D[/code].
</description>
</method>
<method name= "clear_subgizmo_selection" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
2021-06-23 16:49:50 +02:00
<description >
Clears subgizmo selection for this node in the editor. Useful when subgizmo IDs become invalid after a property change.
</description>
</method>
2018-09-11 00:18:05 +02:00
<method name= "force_update_transform" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
2018-09-11 00:18:05 +02:00
<description >
2019-11-01 10:37:39 +01:00
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.
2018-09-11 00:18:05 +02:00
</description>
</method>
2021-06-23 16:49:50 +02:00
<method name= "get_gizmos" qualifiers= "const" >
2021-07-30 15:28:05 +02:00
<return type= "Array" />
2021-06-23 16:49:50 +02:00
<description >
Returns all the gizmos attached to this [code]Node3D[/code].
</description>
</method>
2021-06-09 13:06:38 +02:00
<method name= "get_parent_node_3d" qualifiers= "const" >
2021-07-30 15:28:05 +02:00
<return type= "Node3D" />
2017-09-12 17:42:36 -03:00
<description >
2020-03-30 18:22:57 +02:00
Returns the parent [Node3D], or an empty [Object] if no parent exists or parent is not of type [Node3D].
2017-09-12 17:42:36 -03:00
</description>
</method>
2020-05-04 16:55:01 +02:00
<method name= "get_world_3d" qualifiers= "const" >
2021-07-30 15:28:05 +02:00
<return type= "World3D" />
2017-09-12 17:42:36 -03:00
<description >
2020-03-30 18:22:57 +02:00
Returns the current [World3D] resource this [Node3D] node is registered to.
2017-09-12 17:42:36 -03:00
</description>
</method>
2018-01-03 13:45:03 +01:00
<method name= "global_rotate" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
<argument index= "0" name= "axis" type= "Vector3" />
<argument index= "1" name= "angle" type= "float" />
2017-12-26 19:15:20 -05:00
<description >
2018-01-03 13:45:03 +01:00
Rotates the global (world) transformation around axis, a unit [Vector3], by specified angle in radians. The rotation axis is in global coordinate system.
2017-12-26 19:15:20 -05:00
</description>
</method>
2018-01-03 13:45:03 +01:00
<method name= "global_scale" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
<argument index= "0" name= "scale" type= "Vector3" />
2017-12-26 19:15:20 -05:00
<description >
2019-10-30 03:19:08 -07:00
Scales the global (world) transformation by the given [Vector3] scale factors.
2017-09-12 17:42:36 -03:00
</description>
</method>
<method name= "global_translate" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
<argument index= "0" name= "offset" type= "Vector3" />
2017-09-12 17:42:36 -03:00
<description >
2017-12-26 19:15:20 -05:00
Moves the global (world) transformation by [Vector3] offset. The offset is in global coordinate system.
2017-09-12 17:42:36 -03:00
</description>
</method>
<method name= "hide" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
2017-09-12 17:42:36 -03:00
<description >
2019-01-07 10:02:04 +01:00
Disables rendering of this node. Changes [member visible] to [code]false[/code].
2017-09-12 17:42:36 -03:00
</description>
</method>
<method name= "is_local_transform_notification_enabled" qualifiers= "const" >
2021-07-30 15:28:05 +02:00
<return type= "bool" />
2017-09-12 17:42:36 -03:00
<description >
2020-03-30 18:22:57 +02:00
Returns whether node notifies about its local transformation changes. [Node3D] will not propagate this by default.
2017-09-12 17:42:36 -03:00
</description>
</method>
2018-07-26 11:56:21 +02:00
<method name= "is_scale_disabled" qualifiers= "const" >
2021-07-30 15:28:05 +02:00
<return type= "bool" />
2018-07-26 11:56:21 +02:00
<description >
2019-10-30 03:19:08 -07:00
Returns whether this node uses a scale of [code](1, 1, 1)[/code] or its local transformation scale.
2018-07-26 11:56:21 +02:00
</description>
</method>
2017-09-12 17:42:36 -03:00
<method name= "is_transform_notification_enabled" qualifiers= "const" >
2021-07-30 15:28:05 +02:00
<return type= "bool" />
2017-09-12 17:42:36 -03:00
<description >
2020-03-30 18:22:57 +02:00
Returns whether the node notifies about its global and local transformation changes. [Node3D] will not propagate this by default.
2017-09-12 17:42:36 -03:00
</description>
</method>
<method name= "is_visible_in_tree" qualifiers= "const" >
2021-07-30 15:28:05 +02:00
<return type= "bool" />
2017-09-12 17:42:36 -03:00
<description >
2020-07-27 12:09:51 +02:00
Returns [code]true[/code] if the node is present in the [SceneTree], its [member visible] property is [code]true[/code] and all its antecedents are also visible. If any antecedent is hidden, this node will not be visible in the scene tree.
2017-09-12 17:42:36 -03:00
</description>
</method>
<method name= "look_at" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
<argument index= "0" name= "target" type= "Vector3" />
<argument index= "1" name= "up" type= "Vector3" default= "Vector3(0, 1, 0)" />
2017-09-12 17:42:36 -03:00
<description >
2021-07-20 23:32:00 -04:00
Rotates the node so that the local forward axis (-Z) points toward the [code]target[/code] position.
The local up axis (+Y) points as close to the [code]up[/code] 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.
The [code]target[/code] position cannot be the same as the node's position, the [code]up[/code] vector cannot be zero, and the direction from the node's position to the [code]target[/code] vector cannot be parallel to the [code]up[/code] vector.
2018-04-29 15:44:07 +02:00
Operations take place in global space.
2017-09-12 17:42:36 -03:00
</description>
</method>
2017-09-10 15:37:49 +02:00
<method name= "look_at_from_position" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
<argument index= "0" name= "position" type= "Vector3" />
<argument index= "1" name= "target" type= "Vector3" />
<argument index= "2" name= "up" type= "Vector3" default= "Vector3(0, 1, 0)" />
2017-09-12 17:42:36 -03:00
<description >
2021-07-20 23:32:00 -04:00
Moves the node to the specified [code]position[/code], and then rotates the node to point toward the [code]target[/code] as per [method look_at]. Operations take place in global space.
2017-09-12 17:42:36 -03:00
</description>
</method>
<method name= "orthonormalize" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
2017-09-12 17:42:36 -03:00
<description >
2020-05-03 04:27:36 -04:00
Resets this node's transformations (like scale, skew and taper) preserving its rotation and translation by performing Gram-Schmidt orthonormalization on this node's [Transform3D].
2017-09-12 17:42:36 -03:00
</description>
</method>
2022-01-02 15:33:17 +00:00
<method name= "property_can_revert" >
<return type= "bool" />
<argument index= "0" name= "name" type= "String" />
<description >
Returns [code]true[/code] if the property identified by [code]name[/code] can be reverted to a default value.
</description>
</method>
<method name= "property_get_revert" >
<return type= "Variant" />
<argument index= "0" name= "name" type= "String" />
<description >
Returns the default value of the Node3D property with given [code]name[/code].
</description>
</method>
2017-09-12 17:42:36 -03:00
<method name= "rotate" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
<argument index= "0" name= "axis" type= "Vector3" />
<argument index= "1" name= "angle" type= "float" />
2017-09-12 17:42:36 -03:00
<description >
2017-12-26 19:15:20 -05:00
Rotates the local transformation around axis, a unit [Vector3], by specified angle in radians.
2017-09-12 17:42:36 -03:00
</description>
</method>
2018-01-03 13:45:03 +01:00
<method name= "rotate_object_local" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
<argument index= "0" name= "axis" type= "Vector3" />
<argument index= "1" name= "angle" type= "float" />
2018-01-03 13:45:03 +01:00
<description >
Rotates the local transformation around axis, a unit [Vector3], by specified angle in radians. The rotation axis is in object-local coordinate system.
</description>
</method>
2017-09-12 17:42:36 -03:00
<method name= "rotate_x" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
<argument index= "0" name= "angle" type= "float" />
2017-09-12 17:42:36 -03:00
<description >
2019-06-22 01:04:47 +02:00
Rotates the local transformation around the X axis by angle in radians.
2017-09-12 17:42:36 -03:00
</description>
</method>
<method name= "rotate_y" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
<argument index= "0" name= "angle" type= "float" />
2017-09-12 17:42:36 -03:00
<description >
2017-12-26 19:15:20 -05:00
Rotates the local transformation around the Y axis by angle in radians.
2017-09-12 17:42:36 -03:00
</description>
</method>
<method name= "rotate_z" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
<argument index= "0" name= "angle" type= "float" />
2017-09-12 17:42:36 -03:00
<description >
2017-12-26 19:15:20 -05:00
Rotates the local transformation around the Z axis by angle in radians.
2017-09-12 17:42:36 -03:00
</description>
</method>
2018-01-03 13:45:03 +01:00
<method name= "scale_object_local" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
<argument index= "0" name= "scale" type= "Vector3" />
2018-01-03 13:45:03 +01:00
<description >
Scales the local transformation by given 3D scale factors in object-local coordinate system.
</description>
</method>
2018-07-26 11:56:21 +02:00
<method name= "set_disable_scale" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
<argument index= "0" name= "disable" type= "bool" />
2018-07-26 11:56:21 +02:00
<description >
2019-10-30 03:19:08 -07:00
Sets whether the node uses a scale of [code](1, 1, 1)[/code] or its local transformation scale. Changes to the local transformation scale are preserved.
2018-07-26 11:56:21 +02:00
</description>
</method>
2017-09-12 17:42:36 -03:00
<method name= "set_identity" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
2017-09-12 17:42:36 -03:00
<description >
2020-05-03 04:27:36 -04:00
Reset all transformations for this node (sets its [Transform3D] to the identity matrix).
2017-09-12 17:42:36 -03:00
</description>
</method>
<method name= "set_ignore_transform_notification" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
<argument index= "0" name= "enabled" type= "bool" />
2017-09-12 17:42:36 -03:00
<description >
2019-06-22 01:04:47 +02:00
Sets whether the node ignores notification that its transformation (global or local) changed.
2017-09-12 17:42:36 -03:00
</description>
</method>
<method name= "set_notify_local_transform" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
<argument index= "0" name= "enable" type= "bool" />
2017-09-12 17:42:36 -03:00
<description >
2020-03-30 18:22:57 +02:00
Sets whether the node notifies about its local transformation changes. [Node3D] will not propagate this by default.
2017-09-12 17:42:36 -03:00
</description>
</method>
<method name= "set_notify_transform" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
<argument index= "0" name= "enable" type= "bool" />
2017-09-12 17:42:36 -03:00
<description >
2020-05-08 12:59:25 -07:00
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.
2017-09-12 17:42:36 -03:00
</description>
</method>
2021-02-04 17:20:26 +09:00
<method name= "set_subgizmo_selection" >
<return type= "void" />
<argument index= "0" name= "gizmo" type= "Node3DGizmo" />
<argument index= "1" name= "id" type= "int" />
<argument index= "2" name= "transform" type= "Transform3D" />
<description >
Set subgizmo selection for this node in the editor.
</description>
</method>
2017-09-12 17:42:36 -03:00
<method name= "show" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
2017-09-12 17:42:36 -03:00
<description >
2019-01-07 10:02:04 +01:00
Enables rendering of this node. Changes [member visible] to [code]true[/code].
2017-09-12 17:42:36 -03:00
</description>
</method>
<method name= "to_global" qualifiers= "const" >
2021-07-30 15:28:05 +02:00
<return type= "Vector3" />
<argument index= "0" name= "local_point" type= "Vector3" />
2017-09-12 17:42:36 -03:00
<description >
2019-06-22 01:04:47 +02:00
Transforms [code]local_point[/code] from this node's local space to world space.
2017-09-12 17:42:36 -03:00
</description>
</method>
<method name= "to_local" qualifiers= "const" >
2021-07-30 15:28:05 +02:00
<return type= "Vector3" />
<argument index= "0" name= "global_point" type= "Vector3" />
2017-09-12 17:42:36 -03:00
<description >
2019-06-22 01:04:47 +02:00
Transforms [code]global_point[/code] from world space to this node's local space.
2017-09-12 17:42:36 -03:00
</description>
</method>
<method name= "translate" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
<argument index= "0" name= "offset" type= "Vector3" />
2017-09-12 17:42:36 -03:00
<description >
2020-01-25 21:59:51 -08:00
Changes the node's position by the given offset [Vector3].
2019-06-24 16:33:21 -05:00
Note that the translation [code]offset[/code] is affected by the node's scale, so if scaled by e.g. [code](10, 1, 1)[/code], a translation by an offset of [code](2, 0, 0)[/code] would actually add 20 ([code]2 * 10[/code]) to the X coordinate.
2017-09-12 17:42:36 -03:00
</description>
</method>
2018-01-03 13:45:03 +01:00
<method name= "translate_object_local" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
<argument index= "0" name= "offset" type= "Vector3" />
2018-01-03 13:45:03 +01:00
<description >
2020-01-25 21:59:51 -08:00
Changes the node's position by the given offset [Vector3] in local space.
2018-01-03 13:45:03 +01:00
</description>
</method>
2021-06-23 16:49:50 +02:00
<method name= "update_gizmos" >
2021-07-30 15:28:05 +02:00
<return type= "void" />
2017-09-12 17:42:36 -03:00
<description >
2021-06-23 16:49:50 +02:00
Updates all the [Node3DGizmo]s attached to this node.
2017-09-12 17:42:36 -03:00
</description>
</method>
</methods>
<members >
2021-10-21 13:38:20 -03:00
<member name= "basis" type= "Basis" setter= "set_basis" getter= "get_basis" >
Direct access to the 3x3 basis of the [Transform3D] property.
</member>
2020-05-03 04:27:36 -04:00
<member name= "global_transform" type= "Transform3D" setter= "set_global_transform" getter= "get_global_transform" >
World3D space (global) [Transform3D] of this node.
2017-09-12 17:42:36 -03:00
</member>
2019-09-24 14:45:03 -03:00
<member name= "position" type= "Vector3" setter= "set_position" getter= "get_position" default= "Vector3(0, 0, 0)" >
2020-12-08 17:35:30 +00:00
Local position or translation of this node relative to the parent. This is equivalent to [code]transform.origin[/code].
</member>
2021-10-21 13:38:20 -03:00
<member name= "quaternion" type= "Quaternion" setter= "set_quaternion" getter= "get_quaternion" >
Access to the node rotation as a [Quaternion]. This property is ideal for tweening complex rotations.
</member>
2021-06-29 16:42:12 -03:00
<member name= "rotation" type= "Vector3" setter= "set_rotation" getter= "get_rotation" default= "Vector3(0, 0, 0)" >
2021-10-21 13:38:20 -03:00
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 [member rotation_order] property.
2019-06-22 01:04:47 +02:00
[b]Note:[/b] 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 [Vector3] data structure not because the rotation is a vector, but only because [Vector3] exists as a convenient data-structure to store 3 floating-point numbers. Therefore, applying affine operations on the rotation "vector" is not meaningful.
2017-09-12 17:42:36 -03:00
</member>
2021-10-21 13:38:20 -03:00
<member name= "rotation_edit_mode" type= "int" setter= "set_rotation_edit_mode" getter= "get_rotation_edit_mode" enum= "Node3D.RotationEditMode" default= "0" >
Specify how rotation (and scale) will be presented in the editor.
</member>
<member name= "rotation_order" type= "int" setter= "set_rotation_order" getter= "get_rotation_order" enum= "Node3D.RotationOrder" default= "2" >
Specify the axis rotation order of the [member rotation] property. The final orientation is constructed by rotating the Euler angles in the order specified by this property.
</member>
2019-09-24 14:45:03 -03:00
<member name= "scale" type= "Vector3" setter= "set_scale" getter= "get_scale" default= "Vector3(1, 1, 1)" >
2017-12-26 19:15:20 -05:00
Scale part of the local transformation.
2017-09-12 17:42:36 -03:00
</member>
2020-10-09 15:04:15 +02:00
<member name= "top_level" type= "bool" setter= "set_as_top_level" getter= "is_set_as_top_level" default= "false" >
2020-10-01 02:43:30 -04:00
If [code]true[/code], the node will not inherit its transformations from its parent. Node transformations are only in global space.
</member>
2019-09-24 14:45:03 -03:00
<member name= "transform" type= "Transform3D" setter= "set_transform" getter= "get_transform" default= "Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)" >
2020-05-03 04:27:36 -04:00
Local space [Transform3D] of this node, with respect to the parent node.
2017-09-12 17:42:36 -03:00
</member>
2021-05-09 18:23:20 +02:00
<member name= "visibility_parent" type= "NodePath" setter= "set_visibility_parent" getter= "get_visibility_parent" default= "NodePath("")" >
2021-07-07 11:17:32 -04:00
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 [member GeometryInstance3D.visibility_range_begin]. Nodes hidden via the [member Node3D.visible] property are essentially removed from the visibility dependency tree, so dependent instances will not take the hidden node or its ancestors into account.
2021-05-09 18:23:20 +02:00
</member>
2019-06-29 12:38:01 +02:00
<member name= "visible" type= "bool" setter= "set_visible" getter= "is_visible" default= "true" >
2020-07-27 12:09:51 +02:00
If [code]true[/code], this node is drawn. The node is only visible if all of its antecedents are visible as well (in other words, [method is_visible_in_tree] must return [code]true[/code]).
2017-09-12 17:42:36 -03:00
</member>
</members>
<signals >
<signal name= "visibility_changed" >
<description >
2017-09-14 07:42:21 +02:00
Emitted when node visibility changes.
2017-09-12 17:42:36 -03:00
</description>
</signal>
</signals>
<constants >
2019-04-15 14:49:41 +02:00
<constant name= "NOTIFICATION_TRANSFORM_CHANGED" value= "2000" >
2020-03-30 18:22:57 +02:00
Node3D nodes receives this notification when their global transform changes. This means that either the current or a parent node changed its transform.
2021-06-23 16:49:50 +02:00
In order for [constant NOTIFICATION_TRANSFORM_CHANGED] to work, users first need to ask for it, with [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.
2017-09-12 17:42:36 -03:00
</constant>
2017-11-24 23:16:30 +01:00
<constant name= "NOTIFICATION_ENTER_WORLD" value= "41" >
2020-03-30 18:22:57 +02:00
Node3D nodes receives this notification when they are registered to new [World3D] resource.
2017-09-12 17:42:36 -03:00
</constant>
2017-11-24 23:16:30 +01:00
<constant name= "NOTIFICATION_EXIT_WORLD" value= "42" >
2020-03-30 18:22:57 +02:00
Node3D nodes receives this notification when they are unregistered from current [World3D] resource.
2017-09-12 17:42:36 -03:00
</constant>
2017-11-24 23:16:30 +01:00
<constant name= "NOTIFICATION_VISIBILITY_CHANGED" value= "43" >
2020-03-30 18:22:57 +02:00
Node3D nodes receives this notification when their visibility changes.
2017-09-12 17:42:36 -03:00
</constant>
2021-10-21 13:38:20 -03:00
<constant name= "ROTATION_EDIT_MODE_EULER" value= "0" enum= "RotationEditMode" >
</constant>
<constant name= "ROTATION_EDIT_MODE_QUATERNION" value= "1" enum= "RotationEditMode" >
</constant>
<constant name= "ROTATION_EDIT_MODE_BASIS" value= "2" enum= "RotationEditMode" >
</constant>
<constant name= "ROTATION_ORDER_XYZ" value= "0" enum= "RotationOrder" >
</constant>
<constant name= "ROTATION_ORDER_XZY" value= "1" enum= "RotationOrder" >
</constant>
<constant name= "ROTATION_ORDER_YXZ" value= "2" enum= "RotationOrder" >
</constant>
<constant name= "ROTATION_ORDER_YZX" value= "3" enum= "RotationOrder" >
</constant>
<constant name= "ROTATION_ORDER_ZXY" value= "4" enum= "RotationOrder" >
</constant>
<constant name= "ROTATION_ORDER_ZYX" value= "5" enum= "RotationOrder" >
</constant>
2017-09-12 17:42:36 -03:00
</constants>
</class>