class_csgpolygon3d.rst 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361
  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. Description
  12. -----------
  13. 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.
  14. \ **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.
  15. Tutorials
  16. ---------
  17. - :doc:`Prototyping levels with CSG <../tutorials/3d/csg_tools>`
  18. Properties
  19. ----------
  20. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  21. | :ref:`float<class_float>` | :ref:`depth<class_CSGPolygon3D_property_depth>` | ``1.0`` |
  22. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  23. | :ref:`Material<class_Material>` | :ref:`material<class_CSGPolygon3D_property_material>` | |
  24. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  25. | :ref:`Mode<enum_CSGPolygon3D_Mode>` | :ref:`mode<class_CSGPolygon3D_property_mode>` | ``0`` |
  26. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  27. | :ref:`bool<class_bool>` | :ref:`path_continuous_u<class_CSGPolygon3D_property_path_continuous_u>` | |
  28. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  29. | :ref:`float<class_float>` | :ref:`path_interval<class_CSGPolygon3D_property_path_interval>` | |
  30. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  31. | :ref:`PathIntervalType<enum_CSGPolygon3D_PathIntervalType>` | :ref:`path_interval_type<class_CSGPolygon3D_property_path_interval_type>` | |
  32. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  33. | :ref:`bool<class_bool>` | :ref:`path_joined<class_CSGPolygon3D_property_path_joined>` | |
  34. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  35. | :ref:`bool<class_bool>` | :ref:`path_local<class_CSGPolygon3D_property_path_local>` | |
  36. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  37. | :ref:`NodePath<class_NodePath>` | :ref:`path_node<class_CSGPolygon3D_property_path_node>` | |
  38. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  39. | :ref:`PathRotation<enum_CSGPolygon3D_PathRotation>` | :ref:`path_rotation<class_CSGPolygon3D_property_path_rotation>` | |
  40. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  41. | :ref:`float<class_float>` | :ref:`path_simplify_angle<class_CSGPolygon3D_property_path_simplify_angle>` | |
  42. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  43. | :ref:`float<class_float>` | :ref:`path_u_distance<class_CSGPolygon3D_property_path_u_distance>` | |
  44. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  45. | :ref:`PackedVector2Array<class_PackedVector2Array>` | :ref:`polygon<class_CSGPolygon3D_property_polygon>` | ``PackedVector2Array(0, 0, 0, 1, 1, 1, 1, 0)`` |
  46. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  47. | :ref:`bool<class_bool>` | :ref:`smooth_faces<class_CSGPolygon3D_property_smooth_faces>` | ``false`` |
  48. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  49. | :ref:`float<class_float>` | :ref:`spin_degrees<class_CSGPolygon3D_property_spin_degrees>` | |
  50. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  51. | :ref:`int<class_int>` | :ref:`spin_sides<class_CSGPolygon3D_property_spin_sides>` | |
  52. +-------------------------------------------------------------+-----------------------------------------------------------------------------+------------------------------------------------+
  53. Enumerations
  54. ------------
  55. .. _enum_CSGPolygon3D_Mode:
  56. .. _class_CSGPolygon3D_constant_MODE_DEPTH:
  57. .. _class_CSGPolygon3D_constant_MODE_SPIN:
  58. .. _class_CSGPolygon3D_constant_MODE_PATH:
  59. enum **Mode**:
  60. - **MODE_DEPTH** = **0** --- The :ref:`polygon<class_CSGPolygon3D_property_polygon>` shape is extruded along the negative Z axis.
  61. - **MODE_SPIN** = **1** --- The :ref:`polygon<class_CSGPolygon3D_property_polygon>` shape is extruded by rotating it around the Y axis.
  62. - **MODE_PATH** = **2** --- 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>`.
  63. ----
  64. .. _enum_CSGPolygon3D_PathRotation:
  65. .. _class_CSGPolygon3D_constant_PATH_ROTATION_POLYGON:
  66. .. _class_CSGPolygon3D_constant_PATH_ROTATION_PATH:
  67. .. _class_CSGPolygon3D_constant_PATH_ROTATION_PATH_FOLLOW:
  68. enum **PathRotation**:
  69. - **PATH_ROTATION_POLYGON** = **0** --- The :ref:`polygon<class_CSGPolygon3D_property_polygon>` shape is not rotated.
  70. \ **Note:** Requires the path Z coordinates to continually decrease to ensure viable shapes.
  71. - **PATH_ROTATION_PATH** = **1** --- The :ref:`polygon<class_CSGPolygon3D_property_polygon>` shape is rotated along the path, but it is not rotated around the path axis.
  72. \ **Note:** Requires the path Z coordinates to continually decrease to ensure viable shapes.
  73. - **PATH_ROTATION_PATH_FOLLOW** = **2** --- The :ref:`polygon<class_CSGPolygon3D_property_polygon>` shape follows the path and its rotations around the path axis.
  74. ----
  75. .. _enum_CSGPolygon3D_PathIntervalType:
  76. .. _class_CSGPolygon3D_constant_PATH_INTERVAL_DISTANCE:
  77. .. _class_CSGPolygon3D_constant_PATH_INTERVAL_SUBDIVIDE:
  78. enum **PathIntervalType**:
  79. - **PATH_INTERVAL_DISTANCE** = **0** --- 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.
  80. - **PATH_INTERVAL_SUBDIVIDE** = **1** --- 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.
  81. Property Descriptions
  82. ---------------------
  83. .. _class_CSGPolygon3D_property_depth:
  84. - :ref:`float<class_float>` **depth**
  85. +-----------+------------------+
  86. | *Default* | ``1.0`` |
  87. +-----------+------------------+
  88. | *Setter* | set_depth(value) |
  89. +-----------+------------------+
  90. | *Getter* | get_depth() |
  91. +-----------+------------------+
  92. When :ref:`mode<class_CSGPolygon3D_property_mode>` is :ref:`MODE_DEPTH<class_CSGPolygon3D_constant_MODE_DEPTH>`, the depth of the extrusion.
  93. ----
  94. .. _class_CSGPolygon3D_property_material:
  95. - :ref:`Material<class_Material>` **material**
  96. +----------+---------------------+
  97. | *Setter* | set_material(value) |
  98. +----------+---------------------+
  99. | *Getter* | get_material() |
  100. +----------+---------------------+
  101. 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.
  102. ----
  103. .. _class_CSGPolygon3D_property_mode:
  104. - :ref:`Mode<enum_CSGPolygon3D_Mode>` **mode**
  105. +-----------+-----------------+
  106. | *Default* | ``0`` |
  107. +-----------+-----------------+
  108. | *Setter* | set_mode(value) |
  109. +-----------+-----------------+
  110. | *Getter* | get_mode() |
  111. +-----------+-----------------+
  112. The :ref:`mode<class_CSGPolygon3D_property_mode>` used to extrude the :ref:`polygon<class_CSGPolygon3D_property_polygon>`.
  113. ----
  114. .. _class_CSGPolygon3D_property_path_continuous_u:
  115. - :ref:`bool<class_bool>` **path_continuous_u**
  116. +----------+------------------------------+
  117. | *Setter* | set_path_continuous_u(value) |
  118. +----------+------------------------------+
  119. | *Getter* | is_path_continuous_u() |
  120. +----------+------------------------------+
  121. 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.
  122. ----
  123. .. _class_CSGPolygon3D_property_path_interval:
  124. - :ref:`float<class_float>` **path_interval**
  125. +----------+--------------------------+
  126. | *Setter* | set_path_interval(value) |
  127. +----------+--------------------------+
  128. | *Getter* | get_path_interval() |
  129. +----------+--------------------------+
  130. 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.
  131. ----
  132. .. _class_CSGPolygon3D_property_path_interval_type:
  133. - :ref:`PathIntervalType<enum_CSGPolygon3D_PathIntervalType>` **path_interval_type**
  134. +----------+-------------------------------+
  135. | *Setter* | set_path_interval_type(value) |
  136. +----------+-------------------------------+
  137. | *Getter* | get_path_interval_type() |
  138. +----------+-------------------------------+
  139. 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>`).
  140. ----
  141. .. _class_CSGPolygon3D_property_path_joined:
  142. - :ref:`bool<class_bool>` **path_joined**
  143. +----------+------------------------+
  144. | *Setter* | set_path_joined(value) |
  145. +----------+------------------------+
  146. | *Getter* | is_path_joined() |
  147. +----------+------------------------+
  148. 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.
  149. ----
  150. .. _class_CSGPolygon3D_property_path_local:
  151. - :ref:`bool<class_bool>` **path_local**
  152. +----------+-----------------------+
  153. | *Setter* | set_path_local(value) |
  154. +----------+-----------------------+
  155. | *Getter* | is_path_local() |
  156. +----------+-----------------------+
  157. 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>`.
  158. ----
  159. .. _class_CSGPolygon3D_property_path_node:
  160. - :ref:`NodePath<class_NodePath>` **path_node**
  161. +----------+----------------------+
  162. | *Setter* | set_path_node(value) |
  163. +----------+----------------------+
  164. | *Getter* | get_path_node() |
  165. +----------+----------------------+
  166. 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>`.
  167. ----
  168. .. _class_CSGPolygon3D_property_path_rotation:
  169. - :ref:`PathRotation<enum_CSGPolygon3D_PathRotation>` **path_rotation**
  170. +----------+--------------------------+
  171. | *Setter* | set_path_rotation(value) |
  172. +----------+--------------------------+
  173. | *Getter* | get_path_rotation() |
  174. +----------+--------------------------+
  175. 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.
  176. ----
  177. .. _class_CSGPolygon3D_property_path_simplify_angle:
  178. - :ref:`float<class_float>` **path_simplify_angle**
  179. +----------+--------------------------------+
  180. | *Setter* | set_path_simplify_angle(value) |
  181. +----------+--------------------------------+
  182. | *Getter* | get_path_simplify_angle() |
  183. +----------+--------------------------------+
  184. 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.
  185. ----
  186. .. _class_CSGPolygon3D_property_path_u_distance:
  187. - :ref:`float<class_float>` **path_u_distance**
  188. +----------+----------------------------+
  189. | *Setter* | set_path_u_distance(value) |
  190. +----------+----------------------------+
  191. | *Getter* | get_path_u_distance() |
  192. +----------+----------------------------+
  193. 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.
  194. ----
  195. .. _class_CSGPolygon3D_property_polygon:
  196. - :ref:`PackedVector2Array<class_PackedVector2Array>` **polygon**
  197. +-----------+------------------------------------------------+
  198. | *Default* | ``PackedVector2Array(0, 0, 0, 1, 1, 1, 1, 0)`` |
  199. +-----------+------------------------------------------------+
  200. | *Setter* | set_polygon(value) |
  201. +-----------+------------------------------------------------+
  202. | *Getter* | get_polygon() |
  203. +-----------+------------------------------------------------+
  204. 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.
  205. \ **Note:** If only 1 or 2 points are defined in :ref:`polygon<class_CSGPolygon3D_property_polygon>`, no mesh will be generated.
  206. ----
  207. .. _class_CSGPolygon3D_property_smooth_faces:
  208. - :ref:`bool<class_bool>` **smooth_faces**
  209. +-----------+-------------------------+
  210. | *Default* | ``false`` |
  211. +-----------+-------------------------+
  212. | *Setter* | set_smooth_faces(value) |
  213. +-----------+-------------------------+
  214. | *Getter* | get_smooth_faces() |
  215. +-----------+-------------------------+
  216. If ``true``, applies smooth shading to the extrusions.
  217. ----
  218. .. _class_CSGPolygon3D_property_spin_degrees:
  219. - :ref:`float<class_float>` **spin_degrees**
  220. +----------+-------------------------+
  221. | *Setter* | set_spin_degrees(value) |
  222. +----------+-------------------------+
  223. | *Getter* | get_spin_degrees() |
  224. +----------+-------------------------+
  225. 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.
  226. ----
  227. .. _class_CSGPolygon3D_property_spin_sides:
  228. - :ref:`int<class_int>` **spin_sides**
  229. +----------+-----------------------+
  230. | *Setter* | set_spin_sides(value) |
  231. +----------+-----------------------+
  232. | *Getter* | get_spin_sides() |
  233. +----------+-----------------------+
  234. When :ref:`mode<class_CSGPolygon3D_property_mode>` is :ref:`MODE_SPIN<class_CSGPolygon3D_constant_MODE_SPIN>`, the number of extrusions made.
  235. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  236. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  237. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  238. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  239. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  240. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`