class_iterateik3d.rst 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385
  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/doc/classes/IterateIK3D.xml.
  6. .. _class_IterateIK3D:
  7. IterateIK3D
  8. ===========
  9. **Inherits:** :ref:`ChainIK3D<class_ChainIK3D>` **<** :ref:`IKModifier3D<class_IKModifier3D>` **<** :ref:`SkeletonModifier3D<class_SkeletonModifier3D>` **<** :ref:`Node3D<class_Node3D>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
  10. **Inherited By:** :ref:`CCDIK3D<class_CCDIK3D>`, :ref:`FABRIK3D<class_FABRIK3D>`, :ref:`JacobianIK3D<class_JacobianIK3D>`
  11. A :ref:`SkeletonModifier3D<class_SkeletonModifier3D>` to approach the goal by repeating small rotations.
  12. .. rst-class:: classref-introduction-group
  13. Description
  14. -----------
  15. Base class of :ref:`SkeletonModifier3D<class_SkeletonModifier3D>` to approach the goal by repeating small rotations.
  16. Each bone chain (setting) has one effector, which is processed in order of the setting list. You can set some limitations for each joint.
  17. .. rst-class:: classref-reftable-group
  18. Properties
  19. ----------
  20. .. table::
  21. :widths: auto
  22. +---------------------------+----------------------------------------------------------------------------+-----------------+
  23. | :ref:`float<class_float>` | :ref:`angular_delta_limit<class_IterateIK3D_property_angular_delta_limit>` | ``0.034906585`` |
  24. +---------------------------+----------------------------------------------------------------------------+-----------------+
  25. | :ref:`bool<class_bool>` | :ref:`deterministic<class_IterateIK3D_property_deterministic>` | ``false`` |
  26. +---------------------------+----------------------------------------------------------------------------+-----------------+
  27. | :ref:`int<class_int>` | :ref:`max_iterations<class_IterateIK3D_property_max_iterations>` | ``4`` |
  28. +---------------------------+----------------------------------------------------------------------------+-----------------+
  29. | :ref:`float<class_float>` | :ref:`min_distance<class_IterateIK3D_property_min_distance>` | ``0.001`` |
  30. +---------------------------+----------------------------------------------------------------------------+-----------------+
  31. | :ref:`int<class_int>` | :ref:`setting_count<class_IterateIK3D_property_setting_count>` | ``0`` |
  32. +---------------------------+----------------------------------------------------------------------------+-----------------+
  33. .. rst-class:: classref-reftable-group
  34. Methods
  35. -------
  36. .. table::
  37. :widths: auto
  38. +-----------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  39. | :ref:`JointLimitation3D<class_JointLimitation3D>` | :ref:`get_joint_limitation<class_IterateIK3D_method_get_joint_limitation>`\ (\ index\: :ref:`int<class_int>`, joint\: :ref:`int<class_int>`\ ) |const| |
  40. +-----------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  41. | :ref:`SecondaryDirection<enum_SkeletonModifier3D_SecondaryDirection>` | :ref:`get_joint_limitation_right_axis<class_IterateIK3D_method_get_joint_limitation_right_axis>`\ (\ index\: :ref:`int<class_int>`, joint\: :ref:`int<class_int>`\ ) |const| |
  42. +-----------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  43. | :ref:`Vector3<class_Vector3>` | :ref:`get_joint_limitation_right_axis_vector<class_IterateIK3D_method_get_joint_limitation_right_axis_vector>`\ (\ index\: :ref:`int<class_int>`, joint\: :ref:`int<class_int>`\ ) |const| |
  44. +-----------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  45. | :ref:`Quaternion<class_Quaternion>` | :ref:`get_joint_limitation_rotation_offset<class_IterateIK3D_method_get_joint_limitation_rotation_offset>`\ (\ index\: :ref:`int<class_int>`, joint\: :ref:`int<class_int>`\ ) |const| |
  46. +-----------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  47. | :ref:`RotationAxis<enum_SkeletonModifier3D_RotationAxis>` | :ref:`get_joint_rotation_axis<class_IterateIK3D_method_get_joint_rotation_axis>`\ (\ index\: :ref:`int<class_int>`, joint\: :ref:`int<class_int>`\ ) |const| |
  48. +-----------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  49. | :ref:`Vector3<class_Vector3>` | :ref:`get_joint_rotation_axis_vector<class_IterateIK3D_method_get_joint_rotation_axis_vector>`\ (\ index\: :ref:`int<class_int>`, joint\: :ref:`int<class_int>`\ ) |const| |
  50. +-----------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  51. | :ref:`NodePath<class_NodePath>` | :ref:`get_target_node<class_IterateIK3D_method_get_target_node>`\ (\ index\: :ref:`int<class_int>`\ ) |const| |
  52. +-----------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  53. | |void| | :ref:`set_joint_limitation<class_IterateIK3D_method_set_joint_limitation>`\ (\ index\: :ref:`int<class_int>`, joint\: :ref:`int<class_int>`, limitation\: :ref:`JointLimitation3D<class_JointLimitation3D>`\ ) |
  54. +-----------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  55. | |void| | :ref:`set_joint_limitation_right_axis<class_IterateIK3D_method_set_joint_limitation_right_axis>`\ (\ index\: :ref:`int<class_int>`, joint\: :ref:`int<class_int>`, direction\: :ref:`SecondaryDirection<enum_SkeletonModifier3D_SecondaryDirection>`\ ) |
  56. +-----------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  57. | |void| | :ref:`set_joint_limitation_right_axis_vector<class_IterateIK3D_method_set_joint_limitation_right_axis_vector>`\ (\ index\: :ref:`int<class_int>`, joint\: :ref:`int<class_int>`, vector\: :ref:`Vector3<class_Vector3>`\ ) |
  58. +-----------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  59. | |void| | :ref:`set_joint_limitation_rotation_offset<class_IterateIK3D_method_set_joint_limitation_rotation_offset>`\ (\ index\: :ref:`int<class_int>`, joint\: :ref:`int<class_int>`, offset\: :ref:`Quaternion<class_Quaternion>`\ ) |
  60. +-----------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  61. | |void| | :ref:`set_joint_rotation_axis<class_IterateIK3D_method_set_joint_rotation_axis>`\ (\ index\: :ref:`int<class_int>`, joint\: :ref:`int<class_int>`, axis\: :ref:`RotationAxis<enum_SkeletonModifier3D_RotationAxis>`\ ) |
  62. +-----------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  63. | |void| | :ref:`set_joint_rotation_axis_vector<class_IterateIK3D_method_set_joint_rotation_axis_vector>`\ (\ index\: :ref:`int<class_int>`, joint\: :ref:`int<class_int>`, axis_vector\: :ref:`Vector3<class_Vector3>`\ ) |
  64. +-----------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  65. | |void| | :ref:`set_target_node<class_IterateIK3D_method_set_target_node>`\ (\ index\: :ref:`int<class_int>`, target_node\: :ref:`NodePath<class_NodePath>`\ ) |
  66. +-----------------------------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  67. .. rst-class:: classref-section-separator
  68. ----
  69. .. rst-class:: classref-descriptions-group
  70. Property Descriptions
  71. ---------------------
  72. .. _class_IterateIK3D_property_angular_delta_limit:
  73. .. rst-class:: classref-property
  74. :ref:`float<class_float>` **angular_delta_limit** = ``0.034906585`` :ref:`🔗<class_IterateIK3D_property_angular_delta_limit>`
  75. .. rst-class:: classref-property-setget
  76. - |void| **set_angular_delta_limit**\ (\ value\: :ref:`float<class_float>`\ )
  77. - :ref:`float<class_float>` **get_angular_delta_limit**\ (\ )
  78. The maximum amount each bone can rotate in a single iteration.
  79. \ **Note:** This limitation is applied during each iteration. For example, if :ref:`max_iterations<class_IterateIK3D_property_max_iterations>` is ``4`` and :ref:`angular_delta_limit<class_IterateIK3D_property_angular_delta_limit>` is ``5`` degrees, the maximum rotation possible in a single frame is ``20`` degrees.
  80. .. rst-class:: classref-item-separator
  81. ----
  82. .. _class_IterateIK3D_property_deterministic:
  83. .. rst-class:: classref-property
  84. :ref:`bool<class_bool>` **deterministic** = ``false`` :ref:`🔗<class_IterateIK3D_property_deterministic>`
  85. .. rst-class:: classref-property-setget
  86. - |void| **set_deterministic**\ (\ value\: :ref:`bool<class_bool>`\ )
  87. - :ref:`bool<class_bool>` **is_deterministic**\ (\ )
  88. If ``false``, the result is calculated from the previous frame's **IterateIK3D** result as the initial state.
  89. If ``true``, the previous frame's **IterateIK3D** result is discarded. At this point, the new result is calculated from the bone pose excluding the **IterateIK3D** as the initial state. This means the result will be always equal as long as the target position and the previous bone pose are the same. However, if :ref:`angular_delta_limit<class_IterateIK3D_property_angular_delta_limit>` and :ref:`max_iterations<class_IterateIK3D_property_max_iterations>` are set too small, the end bone of the chain will never reach the target.
  90. .. rst-class:: classref-item-separator
  91. ----
  92. .. _class_IterateIK3D_property_max_iterations:
  93. .. rst-class:: classref-property
  94. :ref:`int<class_int>` **max_iterations** = ``4`` :ref:`🔗<class_IterateIK3D_property_max_iterations>`
  95. .. rst-class:: classref-property-setget
  96. - |void| **set_max_iterations**\ (\ value\: :ref:`int<class_int>`\ )
  97. - :ref:`int<class_int>` **get_max_iterations**\ (\ )
  98. The number of iteration loops used by the IK solver to produce more accurate results.
  99. .. rst-class:: classref-item-separator
  100. ----
  101. .. _class_IterateIK3D_property_min_distance:
  102. .. rst-class:: classref-property
  103. :ref:`float<class_float>` **min_distance** = ``0.001`` :ref:`🔗<class_IterateIK3D_property_min_distance>`
  104. .. rst-class:: classref-property-setget
  105. - |void| **set_min_distance**\ (\ value\: :ref:`float<class_float>`\ )
  106. - :ref:`float<class_float>` **get_min_distance**\ (\ )
  107. The minimum distance between the end bone and the target. If the distance is below this value, the IK solver stops any further iterations.
  108. .. rst-class:: classref-item-separator
  109. ----
  110. .. _class_IterateIK3D_property_setting_count:
  111. .. rst-class:: classref-property
  112. :ref:`int<class_int>` **setting_count** = ``0`` :ref:`🔗<class_IterateIK3D_property_setting_count>`
  113. .. rst-class:: classref-property-setget
  114. - |void| **set_setting_count**\ (\ value\: :ref:`int<class_int>`\ )
  115. - :ref:`int<class_int>` **get_setting_count**\ (\ )
  116. The number of settings.
  117. .. rst-class:: classref-section-separator
  118. ----
  119. .. rst-class:: classref-descriptions-group
  120. Method Descriptions
  121. -------------------
  122. .. _class_IterateIK3D_method_get_joint_limitation:
  123. .. rst-class:: classref-method
  124. :ref:`JointLimitation3D<class_JointLimitation3D>` **get_joint_limitation**\ (\ index\: :ref:`int<class_int>`, joint\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_IterateIK3D_method_get_joint_limitation>`
  125. Returns the joint limitation at ``joint`` in the bone chain's joint list.
  126. .. rst-class:: classref-item-separator
  127. ----
  128. .. _class_IterateIK3D_method_get_joint_limitation_right_axis:
  129. .. rst-class:: classref-method
  130. :ref:`SecondaryDirection<enum_SkeletonModifier3D_SecondaryDirection>` **get_joint_limitation_right_axis**\ (\ index\: :ref:`int<class_int>`, joint\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_IterateIK3D_method_get_joint_limitation_right_axis>`
  131. Returns the joint limitation right axis at ``joint`` in the bone chain's joint list.
  132. .. rst-class:: classref-item-separator
  133. ----
  134. .. _class_IterateIK3D_method_get_joint_limitation_right_axis_vector:
  135. .. rst-class:: classref-method
  136. :ref:`Vector3<class_Vector3>` **get_joint_limitation_right_axis_vector**\ (\ index\: :ref:`int<class_int>`, joint\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_IterateIK3D_method_get_joint_limitation_right_axis_vector>`
  137. Returns the joint limitation right axis vector at ``joint`` in the bone chain's joint list.
  138. If :ref:`get_joint_limitation_right_axis()<class_IterateIK3D_method_get_joint_limitation_right_axis>` is :ref:`SkeletonModifier3D.SECONDARY_DIRECTION_NONE<class_SkeletonModifier3D_constant_SECONDARY_DIRECTION_NONE>`, this method returns ``Vector3(0, 0, 0)``.
  139. .. rst-class:: classref-item-separator
  140. ----
  141. .. _class_IterateIK3D_method_get_joint_limitation_rotation_offset:
  142. .. rst-class:: classref-method
  143. :ref:`Quaternion<class_Quaternion>` **get_joint_limitation_rotation_offset**\ (\ index\: :ref:`int<class_int>`, joint\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_IterateIK3D_method_get_joint_limitation_rotation_offset>`
  144. Returns the joint limitation rotation offset at ``joint`` in the bone chain's joint list.
  145. Rotation is done in the local space which is constructed by the bone direction (in general parent to child) as the +Y axis and :ref:`get_joint_limitation_right_axis_vector()<class_IterateIK3D_method_get_joint_limitation_right_axis_vector>` as the +X axis.
  146. If the +X and +Y axes are not orthogonal, the +X axis is implicitly modified to make it orthogonal.
  147. Also, if the length of :ref:`get_joint_limitation_right_axis_vector()<class_IterateIK3D_method_get_joint_limitation_right_axis_vector>` is zero, the space is created by rotating the bone rest using the shortest arc that rotates the +Y axis of the bone rest to match the bone direction.
  148. .. rst-class:: classref-item-separator
  149. ----
  150. .. _class_IterateIK3D_method_get_joint_rotation_axis:
  151. .. rst-class:: classref-method
  152. :ref:`RotationAxis<enum_SkeletonModifier3D_RotationAxis>` **get_joint_rotation_axis**\ (\ index\: :ref:`int<class_int>`, joint\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_IterateIK3D_method_get_joint_rotation_axis>`
  153. Returns the rotation axis at ``joint`` in the bone chain's joint list.
  154. .. rst-class:: classref-item-separator
  155. ----
  156. .. _class_IterateIK3D_method_get_joint_rotation_axis_vector:
  157. .. rst-class:: classref-method
  158. :ref:`Vector3<class_Vector3>` **get_joint_rotation_axis_vector**\ (\ index\: :ref:`int<class_int>`, joint\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_IterateIK3D_method_get_joint_rotation_axis_vector>`
  159. Returns the rotation axis vector for the specified joint in the bone chain. This vector represents the axis around which the joint can rotate. It is determined based on the rotation axis set for the joint.
  160. If :ref:`get_joint_rotation_axis()<class_IterateIK3D_method_get_joint_rotation_axis>` is :ref:`SkeletonModifier3D.ROTATION_AXIS_ALL<class_SkeletonModifier3D_constant_ROTATION_AXIS_ALL>`, this method returns ``Vector3(0, 0, 0)``.
  161. .. rst-class:: classref-item-separator
  162. ----
  163. .. _class_IterateIK3D_method_get_target_node:
  164. .. rst-class:: classref-method
  165. :ref:`NodePath<class_NodePath>` **get_target_node**\ (\ index\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_IterateIK3D_method_get_target_node>`
  166. Returns the target node that the end bone is trying to reach.
  167. .. rst-class:: classref-item-separator
  168. ----
  169. .. _class_IterateIK3D_method_set_joint_limitation:
  170. .. rst-class:: classref-method
  171. |void| **set_joint_limitation**\ (\ index\: :ref:`int<class_int>`, joint\: :ref:`int<class_int>`, limitation\: :ref:`JointLimitation3D<class_JointLimitation3D>`\ ) :ref:`🔗<class_IterateIK3D_method_set_joint_limitation>`
  172. Sets the joint limitation at ``joint`` in the bone chain's joint list.
  173. .. rst-class:: classref-item-separator
  174. ----
  175. .. _class_IterateIK3D_method_set_joint_limitation_right_axis:
  176. .. rst-class:: classref-method
  177. |void| **set_joint_limitation_right_axis**\ (\ index\: :ref:`int<class_int>`, joint\: :ref:`int<class_int>`, direction\: :ref:`SecondaryDirection<enum_SkeletonModifier3D_SecondaryDirection>`\ ) :ref:`🔗<class_IterateIK3D_method_set_joint_limitation_right_axis>`
  178. Sets the joint limitation right axis at ``joint`` in the bone chain's joint list.
  179. .. rst-class:: classref-item-separator
  180. ----
  181. .. _class_IterateIK3D_method_set_joint_limitation_right_axis_vector:
  182. .. rst-class:: classref-method
  183. |void| **set_joint_limitation_right_axis_vector**\ (\ index\: :ref:`int<class_int>`, joint\: :ref:`int<class_int>`, vector\: :ref:`Vector3<class_Vector3>`\ ) :ref:`🔗<class_IterateIK3D_method_set_joint_limitation_right_axis_vector>`
  184. Sets the optional joint limitation right axis vector at ``joint`` in the bone chain's joint list.
  185. .. rst-class:: classref-item-separator
  186. ----
  187. .. _class_IterateIK3D_method_set_joint_limitation_rotation_offset:
  188. .. rst-class:: classref-method
  189. |void| **set_joint_limitation_rotation_offset**\ (\ index\: :ref:`int<class_int>`, joint\: :ref:`int<class_int>`, offset\: :ref:`Quaternion<class_Quaternion>`\ ) :ref:`🔗<class_IterateIK3D_method_set_joint_limitation_rotation_offset>`
  190. Sets the joint limitation rotation offset at ``joint`` in the bone chain's joint list.
  191. Rotation is done in the local space which is constructed by the bone direction (in general parent to child) as the +Y axis and :ref:`get_joint_limitation_right_axis_vector()<class_IterateIK3D_method_get_joint_limitation_right_axis_vector>` as the +X axis.
  192. If the +X and +Y axes are not orthogonal, the +X axis is implicitly modified to make it orthogonal.
  193. Also, if the length of :ref:`get_joint_limitation_right_axis_vector()<class_IterateIK3D_method_get_joint_limitation_right_axis_vector>` is zero, the space is created by rotating the bone rest using the shortest arc that rotates the +Y axis of the bone rest to match the bone direction.
  194. .. rst-class:: classref-item-separator
  195. ----
  196. .. _class_IterateIK3D_method_set_joint_rotation_axis:
  197. .. rst-class:: classref-method
  198. |void| **set_joint_rotation_axis**\ (\ index\: :ref:`int<class_int>`, joint\: :ref:`int<class_int>`, axis\: :ref:`RotationAxis<enum_SkeletonModifier3D_RotationAxis>`\ ) :ref:`🔗<class_IterateIK3D_method_set_joint_rotation_axis>`
  199. Sets the rotation axis at ``joint`` in the bone chain's joint list.
  200. The axes are based on the :ref:`Skeleton3D.get_bone_rest()<class_Skeleton3D_method_get_bone_rest>`'s space, if ``axis`` is :ref:`SkeletonModifier3D.ROTATION_AXIS_CUSTOM<class_SkeletonModifier3D_constant_ROTATION_AXIS_CUSTOM>`, you can specify any axis.
  201. \ **Note:** The rotation axis and the forward vector shouldn't be colinear to avoid unintended rotation since :ref:`ChainIK3D<class_ChainIK3D>` does not factor in twisting forces.
  202. .. rst-class:: classref-item-separator
  203. ----
  204. .. _class_IterateIK3D_method_set_joint_rotation_axis_vector:
  205. .. rst-class:: classref-method
  206. |void| **set_joint_rotation_axis_vector**\ (\ index\: :ref:`int<class_int>`, joint\: :ref:`int<class_int>`, axis_vector\: :ref:`Vector3<class_Vector3>`\ ) :ref:`🔗<class_IterateIK3D_method_set_joint_rotation_axis_vector>`
  207. Sets the rotation axis vector for the specified joint in the bone chain.
  208. This vector is normalized by an internal process and represents the axis around which the bone chain can rotate.
  209. If the vector length is ``0``, it is considered synonymous with :ref:`SkeletonModifier3D.ROTATION_AXIS_ALL<class_SkeletonModifier3D_constant_ROTATION_AXIS_ALL>`.
  210. .. rst-class:: classref-item-separator
  211. ----
  212. .. _class_IterateIK3D_method_set_target_node:
  213. .. rst-class:: classref-method
  214. |void| **set_target_node**\ (\ index\: :ref:`int<class_int>`, target_node\: :ref:`NodePath<class_NodePath>`\ ) :ref:`🔗<class_IterateIK3D_method_set_target_node>`
  215. Sets the target node that the end bone is trying to reach.
  216. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  217. .. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
  218. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  219. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  220. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  221. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  222. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`
  223. .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`
  224. .. |void| replace:: :abbr:`void (No return value.)`