:github_url: hide .. DO NOT EDIT THIS FILE!!! .. Generated automatically from Godot engine sources. .. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py. .. XML source: https://github.com/godotengine/godot/tree/master/doc/classes/GPUParticlesCollisionHeightField3D.xml. .. _class_GPUParticlesCollisionHeightField3D: GPUParticlesCollisionHeightField3D ================================== **Inherits:** :ref:`GPUParticlesCollision3D` **<** :ref:`VisualInstance3D` **<** :ref:`Node3D` **<** :ref:`Node` **<** :ref:`Object` Real-time heightmap-shaped 3D particle attractor affecting :ref:`GPUParticles3D` nodes. Description ----------- Real-time heightmap-shaped 3D particle attractor affecting :ref:`GPUParticles3D` nodes. Heightmap shapes allow for efficiently representing collisions for convex and concave objects with a single "floor" (such as terrain). This is less flexible than :ref:`GPUParticlesCollisionSDF3D`, but it doesn't require a baking step. \ ``GPUParticlesCollisionHeightField3D`` can also be regenerated in real-time when it is moved, when the camera moves, or even continuously. This makes ``GPUParticlesCollisionHeightField3D`` a good choice for weather effects such as rain and snow and games with highly dynamic geometry. However, since heightmaps cannot represent overhangs, ``GPUParticlesCollisionHeightField3D`` is not suited for indoor particle collision. \ **Note:** :ref:`ParticlesMaterial.collision_enabled` must be ``true`` on the :ref:`GPUParticles3D`'s process material for collision to work. \ **Note:** Particle collision only affects :ref:`GPUParticles3D`, not :ref:`CPUParticles3D`. Properties ---------- +-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------+ | :ref:`Vector3` | :ref:`extents` | ``Vector3(1, 1, 1)`` | +-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------+ | :ref:`bool` | :ref:`follow_camera_enabled` | ``false`` | +-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------+ | :ref:`Resolution` | :ref:`resolution` | ``2`` | +-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------+ | :ref:`UpdateMode` | :ref:`update_mode` | ``0`` | +-----------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------+----------------------+ Enumerations ------------ .. _enum_GPUParticlesCollisionHeightField3D_Resolution: .. _class_GPUParticlesCollisionHeightField3D_constant_RESOLUTION_256: .. _class_GPUParticlesCollisionHeightField3D_constant_RESOLUTION_512: .. _class_GPUParticlesCollisionHeightField3D_constant_RESOLUTION_1024: .. _class_GPUParticlesCollisionHeightField3D_constant_RESOLUTION_2048: .. _class_GPUParticlesCollisionHeightField3D_constant_RESOLUTION_4096: .. _class_GPUParticlesCollisionHeightField3D_constant_RESOLUTION_8192: .. _class_GPUParticlesCollisionHeightField3D_constant_RESOLUTION_MAX: enum **Resolution**: - **RESOLUTION_256** = **0** --- Generate a 256×256 heightmap. Intended for small-scale scenes, or larger scenes with no distant particles. - **RESOLUTION_512** = **1** --- Generate a 512×512 heightmap. Intended for medium-scale scenes, or larger scenes with no distant particles. - **RESOLUTION_1024** = **2** --- Generate a 1024×1024 heightmap. Intended for large scenes with distant particles. - **RESOLUTION_2048** = **3** --- Generate a 2048×2048 heightmap. Intended for very large scenes with distant particles. - **RESOLUTION_4096** = **4** --- Generate a 4096×4096 heightmap. Intended for huge scenes with distant particles. - **RESOLUTION_8192** = **5** --- Generate a 8192×8192 heightmap. Intended for gigantic scenes with distant particles. - **RESOLUTION_MAX** = **6** --- Represents the size of the :ref:`Resolution` enum. ---- .. _enum_GPUParticlesCollisionHeightField3D_UpdateMode: .. _class_GPUParticlesCollisionHeightField3D_constant_UPDATE_MODE_WHEN_MOVED: .. _class_GPUParticlesCollisionHeightField3D_constant_UPDATE_MODE_ALWAYS: enum **UpdateMode**: - **UPDATE_MODE_WHEN_MOVED** = **0** --- Only update the heightmap when the ``GPUParticlesCollisionHeightField3D`` node is moved, or when the camera moves if :ref:`follow_camera_enabled` is ``true``. An update can be forced by slightly moving the ``GPUParticlesCollisionHeightField3D`` in any direction. - **UPDATE_MODE_ALWAYS** = **1** --- Update the heightmap every frame. This has a significant performance cost. This update should only be used when geometry that particles can collide with changes significantly during gameplay. Property Descriptions --------------------- .. _class_GPUParticlesCollisionHeightField3D_property_extents: - :ref:`Vector3` **extents** +-----------+----------------------+ | *Default* | ``Vector3(1, 1, 1)`` | +-----------+----------------------+ | *Setter* | set_extents(value) | +-----------+----------------------+ | *Getter* | get_extents() | +-----------+----------------------+ The collision heightmap's extents in 3D units. To improve heightmap quality, :ref:`extents` should be set as small as possible while covering the parts of the scene you need. ---- .. _class_GPUParticlesCollisionHeightField3D_property_follow_camera_enabled: - :ref:`bool` **follow_camera_enabled** +-----------+----------------------------------+ | *Default* | ``false`` | +-----------+----------------------------------+ | *Setter* | set_follow_camera_enabled(value) | +-----------+----------------------------------+ | *Getter* | is_follow_camera_enabled() | +-----------+----------------------------------+ If ``true``, the ``GPUParticlesCollisionHeightField3D`` will follow the current camera in global space. The ``GPUParticlesCollisionHeightField3D`` does not need to be a child of the :ref:`Camera3D` node for this to work. Following the camera has a performance cost, as it will force the heightmap to update whenever the camera moves. Consider lowering :ref:`resolution` to improve performance if :ref:`follow_camera_enabled` is ``true``. ---- .. _class_GPUParticlesCollisionHeightField3D_property_resolution: - :ref:`Resolution` **resolution** +-----------+-----------------------+ | *Default* | ``2`` | +-----------+-----------------------+ | *Setter* | set_resolution(value) | +-----------+-----------------------+ | *Getter* | get_resolution() | +-----------+-----------------------+ Higher resolutions can represent small details more accurately in large scenes, at the cost of lower performance. If :ref:`update_mode` is :ref:`UPDATE_MODE_ALWAYS`, consider using the lowest resolution possible. ---- .. _class_GPUParticlesCollisionHeightField3D_property_update_mode: - :ref:`UpdateMode` **update_mode** +-----------+------------------------+ | *Default* | ``0`` | +-----------+------------------------+ | *Setter* | set_update_mode(value) | +-----------+------------------------+ | *Getter* | get_update_mode() | +-----------+------------------------+ The update policy to use for the generated heightmap. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)` .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)` .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)` .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`