Explorar o código

Add technical definition for manifoldness

tetrapod00 hai 7 meses
pai
achega
ea9fad5bbe
Modificáronse 1 ficheiros con 25 adicións e 8 borrados
  1. 25 8
      tutorials/3d/csg_tools.rst

+ 25 - 8
tutorials/3d/csg_tools.rst

@@ -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