Merge pull request #9481 from vgezer/intro3d

A Revisited "Intro to 3D Page"
This commit is contained in:
Matthew
2024-07-26 22:03:50 -04:00
committed by GitHub
10 changed files with 293 additions and 120 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

View File

@@ -11,11 +11,279 @@ are present in both 2D and 3D versions. In fact, it is worth checking
the 3D platformer tutorial, or the 3D kinematic character tutorials,
which are almost identical to their 2D counterparts.
.. figure:: img/godot-tps-demo.webp
:align: center
:alt: An example 3D game demo created using Godot
Godot Third Person Shooter (TPS) Demo, available on the
`Github repository <https://github.com/godotengine/tps-demo>`__ or the
:ref:`Asset Library <doc_project_manager_downloading_demos>`.
In 3D, math is a little more complex than in 2D, so also checking the
:ref:`doc_vector_math` entry in the wiki (which was especially created for game
developers, not mathematicians or engineers) will help pave the way for you
to develop 3D games efficiently.
3D workspace
~~~~~~~~~~~~
Editing 3D scenes is done in the 3D workspace. This workspace can be selected
manually, but it will be automatically selected when a Node3D node is
selected.
.. image:: img/tuto_3d3.webp
Similar to 2D, the tabs below the workspace selector are used to change between
currently opened scenes or create a new one using the plus (+) button. The left and
right docks should be familiar from :ref:`editor introduction <doc_editor_introduction>`.
Below the scene selector, the main toolbar is visible, and beneath the main toolbar
is the 3D viewport.
Main toolbar
------------
Some buttons in the main toolbar are the same as those in the 2D workspace. A brief explanation
is given with the shortcut if the mouse cursor is hovered over a button for one second.
Some buttons may have additional functionality if another keypress is performed. A recap
of main functionality of each button with its default shortcut is provided below from
left to right:
.. image:: img/3d_toolbar.webp
- **Select Mode** (:kbd:`Q`): Allows selection of nodes in the viewport. Left clicking
on a node to select one. Left clicking and dragging a rectangle selects all
nodes within the rectangle's boundaries, once released.
Holding :kbd:`Shift` while selecting adds more nodes to the selection.
Clicking on a selected node while holding :kbd:`Shift` deselects the node.
In this mode, you can use the gizmos to perform movement or rotation.
- **Move Mode** (:kbd:`W`): Enables move (or translate) mode for the selected nodes.
See :ref:`doc_introduction_to_3d_space_and_manipulation` for more details.
- **Rotate Mode** (:kbd:`E`): Enables rotation mode for the selected nodes. See
:ref:`doc_introduction_to_3d_space_and_manipulation` for more details.
- **Scale Mode** (:kbd:`R`): Enables scaling and displays scaling gizmos in different
axes for the selected nodes. See :ref:`doc_introduction_to_3d_space_and_manipulation`
for more details.
- **Show the list of selectable nodes at the clicked position**: As the description suggests,
this provides a list of selectable nodes at the clicked position as a context menu,
if there is more than one node in the clicked area.
- **Lock** (:kbd:`Ctrl + L`) the selected nodes, preventing selection and movement in the viewport.
Clicking the button again (or using :kbd:`Ctrl + Shift + L`) unlocks the selected nodes.
Locked nodes can only be selected in the scene tree.
They can easily be identified with a padlock next to their node names in the scene tree.
Clicking on this padlock also unlocks the nodes.
- **Group selected nodes** (:kbd:`Ctrl + G`). This allows selection of the root node if
any of the children are selected.
Using :kbd:`Ctrl + G` ungroups them. Additionally, clicking the ungroup button in
the scene tree performs the same action.
- **Use Local Space** (:kbd:`T`): If enabled, gizmos of a node are drawn using the current node's
rotation angle instead of the :ref:`global viewport axes <doc_introduction_to_3d_coordinate_system>`.
- **Use Snap** (:kbd:`Y`): If enabled, movement, and rotation snap to grid. Snapping can also
temporarily be activated using :kbd:`Ctrl` while performing the action.
The settings for changing snap options are explained below.
- **Project Camera Override**: This action temporarily replaces the active camera in the level
(e.g., the camera following the player) with the camera in the editor's viewport, allowing you
to move freely and inspect the level's different parts, while game is running.
- **Toggle preview sunlight**: If no DirectionalLight3D exist in the scene, a preview
of sunlight can be used as a light source. See
:ref:`doc_introduction_to_3d_preview_environment_light` for more details.
- **Toggle preview environment**: If no WorldEnvironment exists in the scene, a preview of the
environment can be used as a placeholder. See
:ref:`doc_introduction_to_3d_preview_environment_light` for more details.
- **Edit Sun and Environment Settings (three dots)**: Opens the menu to configure preview
sunlight and environment settings. See :ref:`doc_introduction_to_3d_preview_environment_light`
for more details.
- **Transform menu**: It has three options:
- *Snap Object to Floor*: Snaps an object to a solid floor.
- *Transform Dialog*: Opens a dialog to adjust transform parameters (translate, rotate, scale,
and transform) manually.
- *Snap Settings*: Allows you to change transform, rotate snap (in degrees), and scale snap
(in percent) settings.
- **View menu**: Controls the view options and enables additional viewports:
.. image:: img/tuto_3d6.webp
In this menu, you can also show/hide grids, which are set to 1x1 meter by default,
and the origin, where the blue, green, and red axis lines intersect.
Moreover, specific types of gizmos can be toggled in this menu.
.. image:: img/tuto_3d6_2.webp
An open eye means that the gizmo is visible, a closed eye means it is hidden.
A half-open eye means that it is also visible through opaque surfaces.
Clicking on *Settings* in this view menu opens a window to change the
*Vertical Field of View (VFOV)* parameter
(in degrees), *Z-Near*, and *Z-Far* values.
Next to the View menu, additional buttons may be visible. In the toolbar image
at the beginning of this chapter, an additional *Mesh* button appears because a
MeshInstance3D is selected. This menu provides some quick actions or tools to
work on a specific node or selection.
View menu of viewport
---------------------
Below the *Select* tool, in the 3D viewport, clicking on the three dots opens the
**View menu** for the viewport.
Hiding all shown gizmos in the editor's 3D view can also be performed through
this menu:
.. image:: img/tuto_3d6_1.webp
This menu also displays the current view type and enables quick adjustment of the
viewport's viewing angle. Additionally, it offers options to modify the appearance of
nodes within the viewport.
.. _doc_introduction_to_3d_coordinate_system:
Coordinate system
-----------------
Godot uses the `metric <https://en.wikipedia.org/wiki/Metric_system>`__
system for everything in 3D, with 1 unit being equal to 1 meter.
Physics and other areas are tuned for this scale. Therefore, attempting to use a
different scale is usually a bad idea (unless you know what you are doing).
When working with 3D assets, it's always best to work in the correct scale (set
the unit to metric in your 3D modeling software). Godot allows scaling
post-import and, while this works in most cases, in rare situations it may
introduce floating-point precision issues (and thus, glitches or artifacts) in
delicate areas such as rendering or physics. Make sure your artists always work
in the right scale!
The Y coordinate is used for "up". As for the horizontal X/Z axes, Godot uses a
**right-handed** coordinate system. This means that for most objects that need
alignment (such as lights or cameras), the Z axis is used as a "pointing
towards" direction. This convention roughly means that:
- **X** is sides
- **Y** is up/down
- **Z** is front/back
See this chart for comparison with other 3D software:
.. figure:: img/introduction_to_3d_coordinate_systems.webp
:align: center
:alt: 3D coordinate systems comparison chart
Image by `Freya Holmér <https://twitter.com/FreyaHolmer>`__
.. _doc_introduction_to_3d_space_and_manipulation:
Space and manipulation gizmos
-----------------------------
Moving, rotating, and scaling objects in the 3D view is done through the
manipulator gizmos.
Each axis is represented by a color: Red, Green, Blue represent X, Y, Z
respectively. This convention applies to the grid and other gizmos too
(and also to the shader language, ordering of components for
Vector3, Color, etc.).
.. image:: img/tuto_3d5.webp
Some useful keybindings:
- To snap placement or rotation, press :kbd:`Ctrl` while moving, scaling,
or rotating.
- To center the view on the selected object, press :kbd:`F`.
In the viewport, the arrows can be clicked and held to move the object on an axis.
The arcs can be clicked and held to rotate the object.
To lock one axis and move the object freely in the other two axes, the colored rectangles
can be clicked, held, and dragged.
If the transform mode is changed from *Select Mode* to *Scale Mode*, the arrows will be
replaced by cubes, which can be dragged to scale an object as if the object is being moved.
Navigating the 3D environment
-----------------------------
In 3D environments, it is often important to adjust the viewpoint or angle
from which you are viewing the scene.
In Godot, navigating the 3D environment in the viewport (or spatial editor)
can be done in multiple ways.
The default 3D scene navigation controls are similar to Blender (aiming to
have some sort of consistency in the free software pipeline), but
options are included to customize mouse buttons and behavior to be
similar to other tools in the Editor Settings. To change the controls
to Maya or Modo controls, you can navigate to **Editor Settings > Editors > 3D**.
Then, under *Navigation*, search for *Navigation Scheme*.
.. image:: img/tuto_3d4.webp
Using the default settings, the following shortcuts control how one can
navigate in the viewport:
Pressing the middle mouse button and dragging the mouse allows you to orbit around
the center of what is on the screen.
It is also possible to left-click and hold the manipulator gizmo located
on the top right of the viewport to orbit around the center:
.. image:: img/tuto_3d_gizmo.webp
Left-clicking on one of the colored circles will set the view to the chosen
orthogonal and the viewport's view menu will be updated accordingly.
.. image:: img/tuto_3d_updated_view_menu.webp
If the *Perspective* view is enabled on the viewport (can be seen on the viewport's View menu,
not the View menu on the main toolbar), holding down the right mouse button on the viewport
or pressing :kbd:`Shift + F` switches to "free-look" mode.
In this mode you can move the mouse to look around, use the :kbd:`W` :kbd:`A`
:kbd:`S` :kbd:`D` keys to fly around the view, :kbd:`E` to go up, and :kbd:`Q` to
go down. To disable this mode, release the right mouse button or press
:kbd:`Shift + F` again.
In the free-look mode, you can temporarily increase the flying
speed using :kbd:`Shift` or decrease it using :kbd:`Alt`. To change and keep the
speed modifier use :kbd:`mouse wheel up` or :kbd:`mouse wheel down`, to increase or
decrease it, respectively.
In orthogonal mode, holding the right mouse button will pan the view instead.
Use :kbd:`Keypad 5` to toggle between perspective and orthogonal view.
Using Blender-style transform shortcuts
---------------------------------------
Since Godot 4.2, you can enable Blender-style shortcuts for translating,
rotating and scaling nodes. In Blender, these shortcuts are:
- :kbd:`G` for translating
- :kbd:`R` for rotating
- :kbd:`S` for scaling
After pressing a shortcut key while focusing on the 3D editor viewport,
move the mouse or enter a number to move the selected node(s) by the
specified amount in 3D units. You can constrain movement to a specific
axis by specifying the axis as a letter, then the distance (if entering a
value with the keyboard).
For instance, to move the selection upwards by 2.5 units, enter the
following sequence in order (Y+ is upwards in Godot):
:kbd:`G`-:kbd:`Y`-:kbd:`2`-:kbd:`.`-:kbd:`5`-:kbd:`Enter`
To use Blender-style transform shortcuts in Godot, go to the Editor Settings'
**Shortcuts** tab, then in the Spatial Editor section:
- Bind **Begin Translate Transformation** to :kbd:`G`.
- Bind **Begin Rotate Transformation** to :kbd:`R`.
- Bind **Begin Scale Transformation** to :kbd:`S`.
- Finally, unbind **Scale Mode** so that its shortcut won't conflict with
**Begin Rotate Transformation**.
.. tip:: More shortcuts can be found on the
:ref:`doc_default_key_mapping_shortcuts_spatial_editor` page.
Node3D node
~~~~~~~~~~~
@@ -50,14 +318,12 @@ Manually authored models (using 3D modeling software)
.. FIXME: Needs update to properly description Godot 3.x workflow
(used to reference a non existing doc_importing_3d_meshes importer).
There are two pipelines to import 3D models in Godot. The first and most common
one is by :ref:`doc_importing_3d_scenes`, which allows you to import entire
scenes (exactly as they look in the 3D modeling software), including animation,
skeletal rigs, blend shapes, etc.
It is possible to import 3D models in Godot created in external tools.
Depending on the format, you can import entire scenes (exactly as they look in
the 3D modeling software), including animation, skeletal rigs, blend shapes, or
as simple resources.
The second pipeline is by importing simple .OBJ files as mesh resources,
which can be then put inside a :ref:`MeshInstance3D <class_MeshInstance3D>`
node for display.
.. seealso:: See :ref:`doc_importing_3d_scenes` for more on importing.
Generated geometry
------------------
@@ -73,6 +339,10 @@ In any case, this method is meant for generating static geometry (models
that will not be updated often), as creating vertex arrays and
submitting them to the 3D API has a significant performance cost.
.. note:: To learn about prototyping inside Godot or using external tools, see
:ref:`doc_csg_tools`.
Immediate geometry
------------------
@@ -106,117 +376,9 @@ node that allows changing the background color, mode (as in, put a
skybox), and applying several types of built-in post-processing effects.
Environments can also be overridden in the Camera.
3D viewport
~~~~~~~~~~~
.. _doc_introduction_to_3d_preview_environment_light:
Editing 3D scenes is done in the 3D tab. This tab can be selected
manually, but it will be automatically enabled when a Node3D node is
selected.
.. image:: img/tuto_3d3.webp
Default 3D scene navigation controls are similar to Blender (aiming to
have some sort of consistency in the free software pipeline..), but
options are included to customize mouse buttons and behavior to be
similar to other tools in the Editor Settings:
.. image:: img/tuto_3d4.webp
Coordinate system
-----------------
Godot uses the `metric <https://en.wikipedia.org/wiki/Metric_system>`__
system for everything in 3D, with 1 unit being equal to 1 meter.
Physics and other areas are tuned for this scale. Therefore, attempting to use a
different scale is usually a bad idea (unless you know what you are doing).
When working with 3D assets, it's always best to work in the correct scale (set
the unit to metric in your 3D modeling software). Godot allows scaling
post-import and, while this works in most cases, in rare situations it may
introduce floating-point precision issues (and thus, glitches or artifacts) in
delicate areas such as rendering or physics. Make sure your artists always work
in the right scale!
The Y coordinate is used for "up". As for the horizontal X/Z axes, Godot uses a
**right-handed** coordinate system. This means that for most objects that need
alignment (such as lights or cameras), the Z axis is used as a "pointing
towards" direction. This convention roughly means that:
- **X** is sides
- **Y** is up/down
- **Z** is front/back
See this chart for comparison with other 3D software:
.. figure:: img/introduction_to_3d_coordinate_systems.webp
:align: center
:alt: 3D coordinate systems comparison chart
Image by `Freya Holmér <https://twitter.com/FreyaHolmer>`__
Space and manipulation gizmos
-----------------------------
Moving objects in the 3D view is done through the manipulator gizmos.
Each axis is represented by a color: Red, Green, Blue represent X, Y, Z
respectively. This convention applies to the grid and other gizmos too
(and also to the shader language, ordering of components for
Vector3, Color, etc.).
.. image:: img/tuto_3d5.webp
Some useful keybindings:
- To snap placement or rotation, press :kbd:`Ctrl` while moving, scaling
or rotating.
- To center the view on the selected object, press :kbd:`F`.
Using Blender-style transform shortcuts
---------------------------------------
Since Godot 4.2, you can enable Blender-style shortcuts for translating,
rotating and scaling nodes. In Blender, these shortcuts are:
- :kbd:`G` for translating
- :kbd:`R` for rotating
- :kbd:`S` for scaling
After pressing a shortcut key while focusing on the 3D editor viewport,
move the mouse or enter a number to move the selected node(s) by the
specified amount in 3D units. You can constrain movement to a specific
axis by specifying the axis as a letter, then the distance (if entering a
value with the keyboard).
For instance, to move the selection upwards by 2.5 units, enter the
following sequence in order (Y+ is upwards in Godot):
:kbd:`G`-:kbd:`Y`-:kbd:`2`-:kbd:`.`-:kbd:`5`-:kbd:`Enter`
To use Blender-style transform shortcuts in Godot, go to the Editor Settings'
**Shortcuts** tab, then in the Spatial Editor section:
- Bind **Begin Translate Transformation** to :kbd:`G`.
- Bind **Begin Rotate Transformation** to :kbd:`R`.
- Bind **Begin Scale Transformation** to :kbd:`S`.
- Finally, unbind **Scale Mode** so that its shortcut won't conflict with
**Begin Rotate Transformation**.
View menu
---------
The view options are controlled by the "View" menu in the viewport's toolbar.
.. image:: img/tuto_3d6.webp
You can hide the gizmos in the 3D view of the editor through this menu:
.. image:: img/tuto_3d6_1.webp
To hide a specific type of gizmos, you can toggle them off in the "View" menu.
.. image:: img/tuto_3d6_2.webp
preview environment and light
Preview environment and light
-----------------------------
By default, any 3D scene that doesn't have a :ref:`WorldEnvironment <class_WorldEnvironment>`
@@ -228,12 +390,17 @@ in the editor. If you run the scene or export the project they will not
affect the scene.
The preview light and environment can be turned on or off from the top menu
by clicking on their respective icon, and the 3 dots dropdown menu next to
those icons can be used to adjust the properties of the preview environment
and light.
by clicking on their respective icon.
.. image:: img/tuto_3d8.webp
The three dots dropdown menu next to those icons can be used to adjust the properties
of the preview environment and light if they are enabled.
.. image:: img/tuto_3d9.webp
The same preview sun and environment is used for every scene in the same project,
So only make adjustments that would apply to all of the scenes you will need a preview
light and environment for.

View File

@@ -140,6 +140,8 @@ General Editor Actions
| Clear Pose | :kbd:`Shift + K` | :kbd:`Shift + K` | ``canvas_item_editor/anim_clear_pose`` |
+------------------------------+-------------------------+------------------------+--------------------------------------------------------+
.. _doc_default_key_mapping_shortcuts_spatial_editor:
3D / Spatial Editor
-------------------

View File

@@ -1,6 +1,8 @@
:allow_comments: False
:article_outdated: True
.. _doc_editor_introduction:
Editor introduction
===================

View File

@@ -61,6 +61,8 @@ When the folder path is correct, you'll see a green checkmark.
.. image:: img/editor_ui_intro_project_manager_09.webp
.. _doc_project_manager_downloading_demos:
Downloading demos and templates
-------------------------------