godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
91.1k stars 21.18k forks source link

In 4.2 Stable GPUParticles3D using Directed Points emission shape produces wrong emission direction #85628

Open jamesdkay opened 11 months ago

jamesdkay commented 11 months ago

Godot version

v4.2.stable.mono.official [46dc27791]

System information

Godot v4.2.stable.mono - Windows 10.0.19045 - Vulkan (Forward+) - dedicated NVIDIA GeForce GTX 1660 Ti (NVIDIA; 31.0.15.1640) - AMD Ryzen 7 4800H with Radeon Graphics (16 Threads)

Issue description

Using the Directed Points emission shape with GPUParticles3D works as expected for PlaneMesh and Quadmesh primitives, but for other meshes the particles are not emitted in the right direction. For example, using a BoxMesh to generate the emission points will make only some of the particles be emitted normal to the faces of the box. Some of the particles are emitted in the opposite direction (ie. into the inside of the box) and some are emitted normal to the surface. Using a mesh imported from blender produces the same issue.

Steps to reproduce

In the included Minimal reproduction project the directed emission shape has been generated from the BoxMesh. When the camera is inside the box you can see that some particles are being emitted backwards into interior of the mesh, and also that some particles (most even?) are actually being emitted tangent to the faces rather than normal to them.

The spawn velocity direction of the particle system is set to zero, but playing with the spawn velocity direction does has an effect. I would expect that spawn velocity direction would be overridden by the Emission Normal Texture, or maybe added to it, neither seems to be the case. Setting the spawn velocity direction to be the Z direction seems to do nothing, while setting it to the Y direction or X direction does quite strange things.

Minimal reproduction project

particle directed emission issue.zip

Wolfcrux commented 7 months ago

I believe I've ran into this issue today trying to make an effect. The ring is the mesh I'm trying to emit from and the goal is to make the particles emit outwards along the ring normal but as you can see the particles just go wherever they please. As previously mentioned, playing with the initial velocity direction does nothing or has weird results. particlehelp.webm