Skip to content

Commit

Permalink
Merge pull request #10419 from tetrapod00/manifold-define
Browse files Browse the repository at this point in the history
Add technical definition for manifoldness
  • Loading branch information
tetrapod00 authored Dec 23, 2024
2 parents c9928f6 + ea9fad5 commit 5eebe5f
Showing 1 changed file with 25 additions and 8 deletions.
33 changes: 25 additions & 8 deletions tutorials/3d/csg_tools.rst
Original file line number Diff line number Diff line change
Expand Up @@ -91,14 +91,31 @@ The :ref:`CSGPolygon3D <class_CSGPolygon3D>` node extrude along a Polygon drawn
Custom meshes
~~~~~~~~~~~~~

Any mesh can be used for :ref:`CSGMesh3D <class_CSGMesh3D>`; the mesh can be
modeled in other software and imported into Godot. Multiple materials are
supported. There are some restrictions for geometry:

- it must be closed,
- it must not self-intersect,
- it must not contain internal faces,
- every edge must connect to only two other faces.
Custom meshes can be used for :ref:`CSGMesh3D <class_CSGMesh3D>` as long as the
mesh is *manifold*. The mesh can be modeled in other software and imported into
Godot. Multiple materials are supported.

For a mesh to be used as a CSG mesh, it is required to:

- be closed
- have each edge connect to only two faces
- have volume

And it is recommended to avoid:

- negative volume
- self-intersection
- interior faces

Godot uses the `manifold <https://github.com/elalish/manifold>`__ library to
implement CSG meshes. The technical definition of "manifold" used by Godot is
the following, adapted from that library's `definition of "manifold"
<https://github.com/elalish/manifold/wiki/Manifold-Library#manifoldness-definition>`__:

Every edge of every triangle must contain the same two vertices (by index) as
exactly one other triangle edge, and the start and end vertices must switch
places between these two edges. The triangle vertices must appear in clockwise
order when viewed from the outside of the Godot Engine manifold mesh.

.. image:: img/csg_custom_mesh.png

Expand Down

0 comments on commit 5eebe5f

Please sign in to comment.