From 5e89720f47b26b9bedf67de440154d89794a3072 Mon Sep 17 00:00:00 2001 From: Markus Sauermann <6299227+Sauermann@users.noreply.github.com> Date: Sun, 16 Oct 2022 09:30:12 +0200 Subject: [PATCH] Update 2D transform tutorial Extend the tutorial to explain coordinate systems, transforms of nodes and transform functions --- tutorials/2d/2d_transforms.rst | 227 +++++++++++++++------- tutorials/2d/img/transforms_overview.webp | Bin 0 -> 51816 bytes tutorials/2d/img/viewport_transforms2.png | Bin 11306 -> 0 bytes 3 files changed, 160 insertions(+), 67 deletions(-) create mode 100644 tutorials/2d/img/transforms_overview.webp delete mode 100644 tutorials/2d/img/viewport_transforms2.png diff --git a/tutorials/2d/2d_transforms.rst b/tutorials/2d/2d_transforms.rst index 0184781c62ed..26ceff3a406b 100644 --- a/tutorials/2d/2d_transforms.rst +++ b/tutorials/2d/2d_transforms.rst @@ -1,110 +1,203 @@ -.. _doc_viewport_and_canvas_transforms: +.. _doc_2d_transforms: -Viewport and canvas transforms -============================== +2D transforms +============= Introduction ------------ -This is an overview of the 2D transforms going on for nodes from the -moment they draw their content locally to the time they are drawn onto -the screen. This overview discusses very low level details of the engine. +This is an overview of the 2D transforms going on for nodes from the moment they draw their content +locally to the time they are drawn onto the screen. This overview discusses very low level details +of the engine and also describes how to use them. -Canvas transform ----------------- +:ref:`Transform2D ` are matrices that convert coordinates from one coordinate +system to an other. In order to use them, it is beneficial to know which coordinate systems are +available in Godot. For a deeper understanding, the :ref:`doc_matrices_and_transforms` tutorial +offers insights to the underlying functionality. -As mentioned in the previous tutorial, :ref:`doc_canvas_layers`, every -CanvasItem node (remember that Node2D and Control based nodes use -CanvasItem as their common root) will reside in a *Canvas Layer*. Every -canvas layer has a transform (translation, rotation, scale, etc.) that -can be accessed as a :ref:`Transform2D `. +Godot 2D coordinate systems +--------------------------- -Also covered in the previous tutorial, nodes are drawn by default in Layer 0, -in the built-in canvas. To put nodes in a different layer, a :ref:`CanvasLayer -` node can be used. +The following graphic gives an overview of Godot 2D coordinate systems and the available +node-transforms, transform-functions and coordinate-system related functions. At the left +is the Window Manager screen, at the right are the :ref:`CanvasItems `. For +simplicity reasons this graphic doesn't include :ref:`SubViewport `, +:ref:`SubViewportContainer `, :ref:`ParallaxLayer` +and :ref:`ParallaxBackground` all of which also influence transforms. -Global canvas transform ------------------------ +The graphic is based on a node tree of the following form: ``Root Window (embed Windows)`` ⇒ +``Window (don't embed Windows)`` ⇒ ``CanvasLayer`` ⇒ ``CanvasItem`` ⇒ ``CanvasItem`` ⇒ ``CanvasItem``. +There are more complex combinations possible, like deeply nested Window and SubViewports, +however this example intends to provide an overview of the methodology in general. -Viewports also have a Global Canvas transform (also a -:ref:`Transform2D `). This is the master transform and -affects all individual *Canvas Layer* transforms. Generally, this -transform is not of much use, but is used in the CanvasItem Editor -in Godot's editor. +.. image:: img/transforms_overview.webp + :target: ../../_images/transforms_overview.webp -Stretch transform ------------------ +Click graphic to enlarge. -Finally, viewports have a *Stretch Transform*, which is used when -resizing or stretching the screen. This transform is used internally (as -described in :ref:`doc_multiple_resolutions`), but can also be manually set -on each viewport. +- **Item Coordinates** + This is the local coordinate system of a :ref:`CanvasItem `. -Input events are multiplied by this transform but lack the ones above. To -convert InputEvent coordinates to local CanvasItem coordinates, the -:ref:`CanvasItem.make_input_local() ` -function was added for convenience. +- **Parent Item Coordinates** + This is the local coordinate system of the parent's *CanvasItem*. When positioning + *CanvasItems* in the *Canvas*, they usually inherit the transformations of their parent + *CanvasItems*. An exceptions is :ref:`CanvasItems.top_level `. -Transform order ---------------- +- **Canvas Coordinates** + As mentioned in the previous tutorial :ref:`doc_canvas_layers`, there are two types of canvases + and both have a canvas coordinate system. These are also called world coordinates. A *Viewport* + can contain multiple *Canvases* with different coordinate systems. + +- **Viewport Coordinates** + This is the coordinate system of the :ref:`Viewport `. + +- **Camera Coordinates** + This is only used internally for functionality like 3D-camera ray projections. -For a coordinate in CanvasItem local properties to become an actual -screen coordinate, the following chain of transforms must be applied: +- **Embedder Coordinates / Screen Coordinates** + Every *Viewport* (*Window* or *SubViewport*) in the scene tree is embedded either in a + different node or in the Window Manager. This coordinate system's origin is identical to the + top-left corner of the *Window* or *SubViewport* and its scale is the one of the embedder or + the Window Manager. -.. image:: img/viewport_transforms2.png + If the embedder is the OS Window Manager, then they are also called Screen Coordinates. + +- **Absolute Embedder Coordinates / Absolute Screen Coordinates** + The origin of this coordinate system is the top-left corner of the embedding node or the Window + Manager screen. Its scale is the one of the embedder or the Window Manager. + + If the embedder is the OS Window Manager, then they are also called Absolute Screen Coordinates. + +Node transforms +--------------- + +Each of the mentioned nodes have one or more transforms associated with them and the combination of +these nodes infer the transforms between the different coordinate systems. With a few exceptions, +the transforms are :ref:`Transform2D ` and the following list shows details and +effects of each of them. + +- **CanvasItem transform** + *CanvasItems* are either *Control*-nodes or *Node2D*-nodes. + + For *Control* nodes this transform consists of a :ref:`position ` + relative to the parent's origin and a :ref:`scale ` and + :ref:`rotation ` around a + :ref:`pivot point `. + + For *Node2D* nodes :ref:`transform ` consists of + :ref:`position `, :ref:`rotation `, + :ref:`scale ` and :ref:`skew `. + + The transform affects the item itself and usually also child-*CanvasItems* and in the case of a + *SubViewportContainer* it affects the contained *SubViewport*. + +- **CanvasLayer transform** + The *CanvasLayer's* :ref:`transform ` affects all + *CanvasItems* within the *CanvasLayer*. It doesn't affect other *CanvasLayers* or *Windows* in + its *Viewport*. + +- **CanvasLayer follow viewport transform** + The *follow viewport transform* is an automatically calculated transform, that is based on the + *Viewport's* :ref:`canvas transform ` and the + *CanvasLayer's* :ref:`follow viewport scale ` + and can be used, if :ref:`enabled `, to + achieve a pseudo 3D effect. It affects the same child nodes as the *CanvasLayer transform*. + +- **Viewport canvas transform** + The :ref:`canvas transform ` affects all + *CanvasItems* in the *Viewport's* default canvas. It also affects *CanvasLayers*, that have + follow viewport transform enabled. The *Viewport's* active :ref:`Camera2D ` + works by changing this transform. It doesn't affect this *Viewport's* embedded *Windows*. + +- **Viewport global canvas transform** + *Viewports* also have a :ref:`global canvas transform `. + This is the master transform and affects all individual *Canvas Layer* and embedded *Window* + transforms. This is primarily used in Godot's CanvasItem Editor. + +- **Viewport stretch transform** + Finally, *Viewports* have a *stretch transform*, which is used when resizing or stretching the + viewport. This transform is used for :ref:`Windows ` as described in + :ref:`doc_multiple_resolutions`, but can also be manually set on *SubViewports* by means of + :ref:`size ` and + :ref:`size_2d_override `. It's + :ref:`translation `, + :ref:`rotation ` and + :ref:`skew ` are the default values and it can only have + non-default :ref:`scale `. + +- **Window transform** + In order to scale and position the *Window's* content as described in + :ref:`doc_multiple_resolutions`, each :ref:`Window ` contains a + *window transform*. It is for example responsible for the black bars at the *Window's* sides so + that the *Viewport* is displayed with a fixed aspect ratio. + +- **Window position** + Every *Window* also has a :ref:`position ` to describe its + position within its embedder. The embedder can be another *Viewport* or the Window Manager. + +- **SubViewportContainer shrink transform** + :ref:`stretch ` together with + :ref:`stretch_shrink ` declare for a + *SubViewportContaner* if and by what integer factor the contained *SubViewport* should be + scaled in comparison to the container's size. Transform functions ------------------- -Obtaining each transform can be achieved with the following functions: +The above graphic shows all available transform functions. All transforms are directed from right +to left, this means multiplying a transform with a coordinate results in a coordinate system +further to the left, multiplying the :ref:`affine inverse ` +of a transform results in a coordinate system further to the right: + +.. tabs:: + .. code-tab:: gdscript GDScript + + # Called from a CanvasItem. + canvas_pos = get_global_transform() * local_pos + local_pos = get_global_transform().affine_inverse() * canvas_pos + + .. code-tab:: csharp -+----------------------------------+---------------------------------------------------------------------------------------------+ -| Type | Transform | -+==================================+=============================================================================================+ -| CanvasItem | :ref:`CanvasItem.get_global_transform() ` | -+----------------------------------+---------------------------------------------------------------------------------------------+ -| CanvasLayer | :ref:`CanvasItem.get_canvas_transform() ` | -+----------------------------------+---------------------------------------------------------------------------------------------+ -| CanvasLayer+GlobalCanvas+Stretch | :ref:`CanvasItem.get_viewport_transform() ` | -+----------------------------------+---------------------------------------------------------------------------------------------+ + // Called from a CanvasItem. + canvasPos = GetGlobalTransform() * localPos; + localPos = GetGlobalTransform().AffineInverse() * canvasPos; -Finally, then, to convert a CanvasItem local coordinates to screen -coordinates, just multiply in the following order: +Finally, then, to convert a CanvasItem local coordinates to screen coordinates, just multiply in +the following order: .. tabs:: .. code-tab:: gdscript GDScript - var screen_coord = get_viewport_transform() * (get_global_transform() * local_pos) + var screen_coord = get_viewport().get_screen_transform() * get_global_transform_with_canvas() * local_pos .. code-tab:: csharp - var screenCord = (GetViewportTransform() * GetGlobalTransform()).Xform(localPos); + var screenCord = GetViewport().GetScreenTransform() * GetGlobalTransformWithCanvas() * localPos; -Keep in mind, however, that it is generally not desired to work with -screen coordinates. The recommended approach is to simply work in Canvas -coordinates (``CanvasItem.get_global_transform()``), to allow automatic -screen resolution resizing to work properly. +Keep in mind, however, that it is generally not desired to work with screen coordinates. The +recommended approach is to simply work in Canvas coordinates +(``CanvasItem.get_global_transform()``), to allow automatic screen resolution resizing to work +properly. Feeding custom input events --------------------------- -It is often desired to feed custom input events to the scene tree. With -the above knowledge, to correctly do this, it must be done the following -way: +It is often desired to feed custom input events to the game. With the above knowledge, to correctly +do this in the focused window, it must be done the following way: .. tabs:: .. code-tab:: gdscript GDScript - var local_pos = Vector2(10, 20) # local to Control/Node2D + var local_pos = Vector2(10, 20) # Local to Control/Node2D. var ie = InputEventMouseButton.new() - ie.button_index = BUTTON_LEFT - ie.position = get_viewport_transform() * (get_global_transform() * local_pos) - get_tree().input_event(ie) + ie.button_index = MOUSE_BUTTON_LEFT + ie.position = get_viewport().get_screen_transform() * get_global_transform_with_canvas() * local_pos + Input.parse_input_event(ie) .. code-tab:: csharp - var localPos = new Vector2(10,20); // local to Control/Node2D + var localPos = new Vector2(10,20); // Local to Control/Node2D. var ie = new InputEventMouseButton(); - ie.ButtonIndex = (int)ButtonList.Left; - ie.Position = (GetViewportTransform() * GetGlobalTransform()).Xform(localPos); - GetTree().InputEvent(ie); + ie.ButtonIndex = MouseButton.Left; + ie.Position = GetViewport().GetScreenTransform() * GetGlobalTransformWithCanvas() * localPos; + Input.ParseInputEvent(ie); diff --git a/tutorials/2d/img/transforms_overview.webp b/tutorials/2d/img/transforms_overview.webp new file mode 100644 index 0000000000000000000000000000000000000000..6940427620c82fc341c07968cedbf54e81033b6b GIT binary patch literal 51816 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 I`AvTg0FgceEdT%j literal 0 HcmV?d00001 diff --git a/tutorials/2d/img/viewport_transforms2.png b/tutorials/2d/img/viewport_transforms2.png deleted file mode 100644 index 06e19e72bdf4c54ecb4ccee2dff0b8dae3ed3fcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11306 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