class_csgpolygon3d.rst 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464
  1. :github_url: hide
  2. .. DO NOT EDIT THIS FILE!!!
  3. .. Generated automatically from Godot engine sources.
  4. .. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py.
  5. .. XML source: https://github.com/godotengine/godot/tree/master/modules/csg/doc_classes/CSGPolygon3D.xml.
  6. .. _class_CSGPolygon3D:
  7. CSGPolygon3D
  8. ============
  9. **Inherits:** :ref:`CSGPrimitive3D<class_CSGPrimitive3D>` **<** :ref:`CSGShape3D<class_CSGShape3D>` **<** :ref:`GeometryInstance3D<class_GeometryInstance3D>` **<** :ref:`VisualInstance3D<class_VisualInstance3D>` **<** :ref:`Node3D<class_Node3D>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
  10. Extrudes a 2D polygon shape to create a 3D mesh.
  11. .. rst-class:: classref-introduction-group
  12. Description
  13. -----------
  14. An array of 2D points is extruded to quickly and easily create a variety of 3D meshes. See also :ref:`CSGMesh3D<class_CSGMesh3D>` for using 3D meshes as CSG nodes.
  15. \ **Note:** CSG nodes are intended to be used for level prototyping. Creating CSG nodes has a significant CPU cost compared to creating a :ref:`MeshInstance3D<class_MeshInstance3D>` with a :ref:`PrimitiveMesh<class_PrimitiveMesh>`. Moving a CSG node within another CSG node also has a significant CPU cost, so it should be avoided during gameplay.
  16. .. rst-class:: classref-introduction-group
  17. Tutorials
  18. ---------
  19. - :doc:`Prototyping levels with CSG <../tutorials/3d/csg_tools>`
  20. .. rst-class:: classref-reftable-group
  21. Properties
  22. ----------
  23. .. table::
  24. :widths: auto
  25. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  26. | :ref:`float<class_float>` | :ref:`depth<class_CSGPolygon3D_property_depth>` | ``1.0`` |
  27. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  28. | :ref:`Material<class_Material>` | :ref:`material<class_CSGPolygon3D_property_material>` | |
  29. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  30. | :ref:`Mode<enum_CSGPolygon3D_Mode>` | :ref:`mode<class_CSGPolygon3D_property_mode>` | ``0`` |
  31. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  32. | :ref:`bool<class_bool>` | :ref:`path_continuous_u<class_CSGPolygon3D_property_path_continuous_u>` | |
  33. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  34. | :ref:`float<class_float>` | :ref:`path_interval<class_CSGPolygon3D_property_path_interval>` | |
  35. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  36. | :ref:`PathIntervalType<enum_CSGPolygon3D_PathIntervalType>` | :ref:`path_interval_type<class_CSGPolygon3D_property_path_interval_type>` | |
  37. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  38. | :ref:`bool<class_bool>` | :ref:`path_joined<class_CSGPolygon3D_property_path_joined>` | |
  39. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  40. | :ref:`bool<class_bool>` | :ref:`path_local<class_CSGPolygon3D_property_path_local>` | |
  41. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  42. | :ref:`NodePath<class_NodePath>` | :ref:`path_node<class_CSGPolygon3D_property_path_node>` | |
  43. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  44. | :ref:`PathRotation<enum_CSGPolygon3D_PathRotation>` | :ref:`path_rotation<class_CSGPolygon3D_property_path_rotation>` | |
  45. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  46. | :ref:`float<class_float>` | :ref:`path_simplify_angle<class_CSGPolygon3D_property_path_simplify_angle>` | |
  47. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  48. | :ref:`float<class_float>` | :ref:`path_u_distance<class_CSGPolygon3D_property_path_u_distance>` | |
  49. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  50. | :ref:`PackedVector2Array<class_PackedVector2Array>` | :ref:`polygon<class_CSGPolygon3D_property_polygon>` | ``PackedVector2Array(0, 0, 0, 1, 1, 1, 1, 0)`` |
  51. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  52. | :ref:`bool<class_bool>` | :ref:`smooth_faces<class_CSGPolygon3D_property_smooth_faces>` | ``false`` |
  53. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  54. | :ref:`float<class_float>` | :ref:`spin_degrees<class_CSGPolygon3D_property_spin_degrees>` | |
  55. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  56. | :ref:`int<class_int>` | :ref:`spin_sides<class_CSGPolygon3D_property_spin_sides>` | |
  57. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  58. .. rst-class:: classref-section-separator
  59. ----
  60. .. rst-class:: classref-descriptions-group
  61. Enumerations
  62. ------------
  63. .. _enum_CSGPolygon3D_Mode:
  64. .. rst-class:: classref-enumeration
  65. enum **Mode**:
  66. .. _class_CSGPolygon3D_constant_MODE_DEPTH:
  67. .. rst-class:: classref-enumeration-constant
  68. :ref:`Mode<enum_CSGPolygon3D_Mode>` **MODE_DEPTH** = ``0``
  69. The :ref:`polygon<class_CSGPolygon3D_property_polygon>` shape is extruded along the negative Z axis.
  70. .. _class_CSGPolygon3D_constant_MODE_SPIN:
  71. .. rst-class:: classref-enumeration-constant
  72. :ref:`Mode<enum_CSGPolygon3D_Mode>` **MODE_SPIN** = ``1``
  73. The :ref:`polygon<class_CSGPolygon3D_property_polygon>` shape is extruded by rotating it around the Y axis.
  74. .. _class_CSGPolygon3D_constant_MODE_PATH:
  75. .. rst-class:: classref-enumeration-constant
  76. :ref:`Mode<enum_CSGPolygon3D_Mode>` **MODE_PATH** = ``2``
  77. The :ref:`polygon<class_CSGPolygon3D_property_polygon>` shape is extruded along the :ref:`Path3D<class_Path3D>` specified in :ref:`path_node<class_CSGPolygon3D_property_path_node>`.
  78. .. rst-class:: classref-item-separator
  79. ----
  80. .. _enum_CSGPolygon3D_PathRotation:
  81. .. rst-class:: classref-enumeration
  82. enum **PathRotation**:
  83. .. _class_CSGPolygon3D_constant_PATH_ROTATION_POLYGON:
  84. .. rst-class:: classref-enumeration-constant
  85. :ref:`PathRotation<enum_CSGPolygon3D_PathRotation>` **PATH_ROTATION_POLYGON** = ``0``
  86. The :ref:`polygon<class_CSGPolygon3D_property_polygon>` shape is not rotated.
  87. \ **Note:** Requires the path Z coordinates to continually decrease to ensure viable shapes.
  88. .. _class_CSGPolygon3D_constant_PATH_ROTATION_PATH:
  89. .. rst-class:: classref-enumeration-constant
  90. :ref:`PathRotation<enum_CSGPolygon3D_PathRotation>` **PATH_ROTATION_PATH** = ``1``
  91. The :ref:`polygon<class_CSGPolygon3D_property_polygon>` shape is rotated along the path, but it is not rotated around the path axis.
  92. \ **Note:** Requires the path Z coordinates to continually decrease to ensure viable shapes.
  93. .. _class_CSGPolygon3D_constant_PATH_ROTATION_PATH_FOLLOW:
  94. .. rst-class:: classref-enumeration-constant
  95. :ref:`PathRotation<enum_CSGPolygon3D_PathRotation>` **PATH_ROTATION_PATH_FOLLOW** = ``2``
  96. The :ref:`polygon<class_CSGPolygon3D_property_polygon>` shape follows the path and its rotations around the path axis.
  97. .. rst-class:: classref-item-separator
  98. ----
  99. .. _enum_CSGPolygon3D_PathIntervalType:
  100. .. rst-class:: classref-enumeration
  101. enum **PathIntervalType**:
  102. .. _class_CSGPolygon3D_constant_PATH_INTERVAL_DISTANCE:
  103. .. rst-class:: classref-enumeration-constant
  104. :ref:`PathIntervalType<enum_CSGPolygon3D_PathIntervalType>` **PATH_INTERVAL_DISTANCE** = ``0``
  105. When :ref:`mode<class_CSGPolygon3D_property_mode>` is set to :ref:`MODE_PATH<class_CSGPolygon3D_constant_MODE_PATH>`, :ref:`path_interval<class_CSGPolygon3D_property_path_interval>` will determine the distance, in meters, each interval of the path will extrude.
  106. .. _class_CSGPolygon3D_constant_PATH_INTERVAL_SUBDIVIDE:
  107. .. rst-class:: classref-enumeration-constant
  108. :ref:`PathIntervalType<enum_CSGPolygon3D_PathIntervalType>` **PATH_INTERVAL_SUBDIVIDE** = ``1``
  109. When :ref:`mode<class_CSGPolygon3D_property_mode>` is set to :ref:`MODE_PATH<class_CSGPolygon3D_constant_MODE_PATH>`, :ref:`path_interval<class_CSGPolygon3D_property_path_interval>` will subdivide the polygons along the path.
  110. .. rst-class:: classref-section-separator
  111. ----
  112. .. rst-class:: classref-descriptions-group
  113. Property Descriptions
  114. ---------------------
  115. .. _class_CSGPolygon3D_property_depth:
  116. .. rst-class:: classref-property
  117. :ref:`float<class_float>` **depth** = ``1.0``
  118. .. rst-class:: classref-property-setget
  119. - void **set_depth** **(** :ref:`float<class_float>` value **)**
  120. - :ref:`float<class_float>` **get_depth** **(** **)**
  121. When :ref:`mode<class_CSGPolygon3D_property_mode>` is :ref:`MODE_DEPTH<class_CSGPolygon3D_constant_MODE_DEPTH>`, the depth of the extrusion.
  122. .. rst-class:: classref-item-separator
  123. ----
  124. .. _class_CSGPolygon3D_property_material:
  125. .. rst-class:: classref-property
  126. :ref:`Material<class_Material>` **material**
  127. .. rst-class:: classref-property-setget
  128. - void **set_material** **(** :ref:`Material<class_Material>` value **)**
  129. - :ref:`Material<class_Material>` **get_material** **(** **)**
  130. Material to use for the resulting mesh. The UV maps the top half of the material to the extruded shape (U along the length of the extrusions and V around the outline of the :ref:`polygon<class_CSGPolygon3D_property_polygon>`), the bottom-left quarter to the front end face, and the bottom-right quarter to the back end face.
  131. .. rst-class:: classref-item-separator
  132. ----
  133. .. _class_CSGPolygon3D_property_mode:
  134. .. rst-class:: classref-property
  135. :ref:`Mode<enum_CSGPolygon3D_Mode>` **mode** = ``0``
  136. .. rst-class:: classref-property-setget
  137. - void **set_mode** **(** :ref:`Mode<enum_CSGPolygon3D_Mode>` value **)**
  138. - :ref:`Mode<enum_CSGPolygon3D_Mode>` **get_mode** **(** **)**
  139. The :ref:`mode<class_CSGPolygon3D_property_mode>` used to extrude the :ref:`polygon<class_CSGPolygon3D_property_polygon>`.
  140. .. rst-class:: classref-item-separator
  141. ----
  142. .. _class_CSGPolygon3D_property_path_continuous_u:
  143. .. rst-class:: classref-property
  144. :ref:`bool<class_bool>` **path_continuous_u**
  145. .. rst-class:: classref-property-setget
  146. - void **set_path_continuous_u** **(** :ref:`bool<class_bool>` value **)**
  147. - :ref:`bool<class_bool>` **is_path_continuous_u** **(** **)**
  148. When :ref:`mode<class_CSGPolygon3D_property_mode>` is :ref:`MODE_PATH<class_CSGPolygon3D_constant_MODE_PATH>`, by default, the top half of the :ref:`material<class_CSGPolygon3D_property_material>` is stretched along the entire length of the extruded shape. If ``false`` the top half of the material is repeated every step of the extrusion.
  149. .. rst-class:: classref-item-separator
  150. ----
  151. .. _class_CSGPolygon3D_property_path_interval:
  152. .. rst-class:: classref-property
  153. :ref:`float<class_float>` **path_interval**
  154. .. rst-class:: classref-property-setget
  155. - void **set_path_interval** **(** :ref:`float<class_float>` value **)**
  156. - :ref:`float<class_float>` **get_path_interval** **(** **)**
  157. When :ref:`mode<class_CSGPolygon3D_property_mode>` is :ref:`MODE_PATH<class_CSGPolygon3D_constant_MODE_PATH>`, the path interval or ratio of path points to extrusions.
  158. .. rst-class:: classref-item-separator
  159. ----
  160. .. _class_CSGPolygon3D_property_path_interval_type:
  161. .. rst-class:: classref-property
  162. :ref:`PathIntervalType<enum_CSGPolygon3D_PathIntervalType>` **path_interval_type**
  163. .. rst-class:: classref-property-setget
  164. - void **set_path_interval_type** **(** :ref:`PathIntervalType<enum_CSGPolygon3D_PathIntervalType>` value **)**
  165. - :ref:`PathIntervalType<enum_CSGPolygon3D_PathIntervalType>` **get_path_interval_type** **(** **)**
  166. When :ref:`mode<class_CSGPolygon3D_property_mode>` is :ref:`MODE_PATH<class_CSGPolygon3D_constant_MODE_PATH>`, this will determine if the interval should be by distance (:ref:`PATH_INTERVAL_DISTANCE<class_CSGPolygon3D_constant_PATH_INTERVAL_DISTANCE>`) or subdivision fractions (:ref:`PATH_INTERVAL_SUBDIVIDE<class_CSGPolygon3D_constant_PATH_INTERVAL_SUBDIVIDE>`).
  167. .. rst-class:: classref-item-separator
  168. ----
  169. .. _class_CSGPolygon3D_property_path_joined:
  170. .. rst-class:: classref-property
  171. :ref:`bool<class_bool>` **path_joined**
  172. .. rst-class:: classref-property-setget
  173. - void **set_path_joined** **(** :ref:`bool<class_bool>` value **)**
  174. - :ref:`bool<class_bool>` **is_path_joined** **(** **)**
  175. When :ref:`mode<class_CSGPolygon3D_property_mode>` is :ref:`MODE_PATH<class_CSGPolygon3D_constant_MODE_PATH>`, if ``true`` the ends of the path are joined, by adding an extrusion between the last and first points of the path.
  176. .. rst-class:: classref-item-separator
  177. ----
  178. .. _class_CSGPolygon3D_property_path_local:
  179. .. rst-class:: classref-property
  180. :ref:`bool<class_bool>` **path_local**
  181. .. rst-class:: classref-property-setget
  182. - void **set_path_local** **(** :ref:`bool<class_bool>` value **)**
  183. - :ref:`bool<class_bool>` **is_path_local** **(** **)**
  184. When :ref:`mode<class_CSGPolygon3D_property_mode>` is :ref:`MODE_PATH<class_CSGPolygon3D_constant_MODE_PATH>`, if ``true`` the :ref:`Transform3D<class_Transform3D>` of the **CSGPolygon3D** is used as the starting point for the extrusions, not the :ref:`Transform3D<class_Transform3D>` of the :ref:`path_node<class_CSGPolygon3D_property_path_node>`.
  185. .. rst-class:: classref-item-separator
  186. ----
  187. .. _class_CSGPolygon3D_property_path_node:
  188. .. rst-class:: classref-property
  189. :ref:`NodePath<class_NodePath>` **path_node**
  190. .. rst-class:: classref-property-setget
  191. - void **set_path_node** **(** :ref:`NodePath<class_NodePath>` value **)**
  192. - :ref:`NodePath<class_NodePath>` **get_path_node** **(** **)**
  193. When :ref:`mode<class_CSGPolygon3D_property_mode>` is :ref:`MODE_PATH<class_CSGPolygon3D_constant_MODE_PATH>`, the location of the :ref:`Path3D<class_Path3D>` object used to extrude the :ref:`polygon<class_CSGPolygon3D_property_polygon>`.
  194. .. rst-class:: classref-item-separator
  195. ----
  196. .. _class_CSGPolygon3D_property_path_rotation:
  197. .. rst-class:: classref-property
  198. :ref:`PathRotation<enum_CSGPolygon3D_PathRotation>` **path_rotation**
  199. .. rst-class:: classref-property-setget
  200. - void **set_path_rotation** **(** :ref:`PathRotation<enum_CSGPolygon3D_PathRotation>` value **)**
  201. - :ref:`PathRotation<enum_CSGPolygon3D_PathRotation>` **get_path_rotation** **(** **)**
  202. When :ref:`mode<class_CSGPolygon3D_property_mode>` is :ref:`MODE_PATH<class_CSGPolygon3D_constant_MODE_PATH>`, the :ref:`PathRotation<enum_CSGPolygon3D_PathRotation>` method used to rotate the :ref:`polygon<class_CSGPolygon3D_property_polygon>` as it is extruded.
  203. .. rst-class:: classref-item-separator
  204. ----
  205. .. _class_CSGPolygon3D_property_path_simplify_angle:
  206. .. rst-class:: classref-property
  207. :ref:`float<class_float>` **path_simplify_angle**
  208. .. rst-class:: classref-property-setget
  209. - void **set_path_simplify_angle** **(** :ref:`float<class_float>` value **)**
  210. - :ref:`float<class_float>` **get_path_simplify_angle** **(** **)**
  211. When :ref:`mode<class_CSGPolygon3D_property_mode>` is :ref:`MODE_PATH<class_CSGPolygon3D_constant_MODE_PATH>`, extrusions that are less than this angle, will be merged together to reduce polygon count.
  212. .. rst-class:: classref-item-separator
  213. ----
  214. .. _class_CSGPolygon3D_property_path_u_distance:
  215. .. rst-class:: classref-property
  216. :ref:`float<class_float>` **path_u_distance**
  217. .. rst-class:: classref-property-setget
  218. - void **set_path_u_distance** **(** :ref:`float<class_float>` value **)**
  219. - :ref:`float<class_float>` **get_path_u_distance** **(** **)**
  220. When :ref:`mode<class_CSGPolygon3D_property_mode>` is :ref:`MODE_PATH<class_CSGPolygon3D_constant_MODE_PATH>`, this is the distance along the path, in meters, the texture coordinates will tile. When set to 0, texture coordinates will match geometry exactly with no tiling.
  221. .. rst-class:: classref-item-separator
  222. ----
  223. .. _class_CSGPolygon3D_property_polygon:
  224. .. rst-class:: classref-property
  225. :ref:`PackedVector2Array<class_PackedVector2Array>` **polygon** = ``PackedVector2Array(0, 0, 0, 1, 1, 1, 1, 0)``
  226. .. rst-class:: classref-property-setget
  227. - void **set_polygon** **(** :ref:`PackedVector2Array<class_PackedVector2Array>` value **)**
  228. - :ref:`PackedVector2Array<class_PackedVector2Array>` **get_polygon** **(** **)**
  229. The point array that defines the 2D polygon that is extruded. This can be a convex or concave polygon with 3 or more points. The polygon must *not* have any intersecting edges. Otherwise, triangulation will fail and no mesh will be generated.
  230. \ **Note:** If only 1 or 2 points are defined in :ref:`polygon<class_CSGPolygon3D_property_polygon>`, no mesh will be generated.
  231. .. rst-class:: classref-item-separator
  232. ----
  233. .. _class_CSGPolygon3D_property_smooth_faces:
  234. .. rst-class:: classref-property
  235. :ref:`bool<class_bool>` **smooth_faces** = ``false``
  236. .. rst-class:: classref-property-setget
  237. - void **set_smooth_faces** **(** :ref:`bool<class_bool>` value **)**
  238. - :ref:`bool<class_bool>` **get_smooth_faces** **(** **)**
  239. If ``true``, applies smooth shading to the extrusions.
  240. .. rst-class:: classref-item-separator
  241. ----
  242. .. _class_CSGPolygon3D_property_spin_degrees:
  243. .. rst-class:: classref-property
  244. :ref:`float<class_float>` **spin_degrees**
  245. .. rst-class:: classref-property-setget
  246. - void **set_spin_degrees** **(** :ref:`float<class_float>` value **)**
  247. - :ref:`float<class_float>` **get_spin_degrees** **(** **)**
  248. When :ref:`mode<class_CSGPolygon3D_property_mode>` is :ref:`MODE_SPIN<class_CSGPolygon3D_constant_MODE_SPIN>`, the total number of degrees the :ref:`polygon<class_CSGPolygon3D_property_polygon>` is rotated when extruding.
  249. .. rst-class:: classref-item-separator
  250. ----
  251. .. _class_CSGPolygon3D_property_spin_sides:
  252. .. rst-class:: classref-property
  253. :ref:`int<class_int>` **spin_sides**
  254. .. rst-class:: classref-property-setget
  255. - void **set_spin_sides** **(** :ref:`int<class_int>` value **)**
  256. - :ref:`int<class_int>` **get_spin_sides** **(** **)**
  257. When :ref:`mode<class_CSGPolygon3D_property_mode>` is :ref:`MODE_SPIN<class_CSGPolygon3D_constant_MODE_SPIN>`, the number of extrusions made.
  258. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  259. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  260. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  261. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  262. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  263. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`
  264. .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`