3D particle "create emission points from node" with arraymesh

Godot Version




I am trying to following this documentation to set the emission points of a 3D particle from a mesh’s surface: Complex emission shapes — Godot Engine (stable) documentation in English
However, my mesh is imported from blender, and therefore it keeps an arraymesh. So when I try to do this, godot says “The geometry’s faces don’t contain any area.”.
However, I tried to just create a dummy sphere mesh, and set its surface as the source of particle, it works.
Anyone has any idea how why?

The error is when the Mesh used on the MeshInstance3D has no data.
This in turn returns zero faces which makes the area map return this error msg.

Does not matter if it is an ArrayMesh or other kind of mesh as all meshes need to be triangles to make faces. Either your Blender export/import failed, which creates an empty dummy ArrayMesh resource, or you targeted the wrong node that has an empty mesh.

If this is not the case, what could also cause this because it happens frequently is that users scale their meshes but do not apply the scale, so the actual geometry is tiny while the node is scaled. When the “real” mesh geometry is so tiny it caused scaling issues or discards from epsilons. E.g. the emission bake discards triangles that have areas so small that they are irrelevant in the texture bake.

Thank a lot, I think in my case the problem is the scale.
This is the first godot project that I started, and somehow I decided to use “realistic scale parameters” in my game, which means the objects are frequently 0.001m. Later on I found out the godot is not very good at handling small scale parameters, but it is a bit too late to change that now.