Quick answer: Godot MultiMesh shows only the original count of instances even after setting instance_count higher? Two values must move together: instance_count (buffer size) and visible_instance_count (how many to draw).
Growing a particle system from 100 to 500 only renders 100. The visible cap stayed at 100 while the buffer grew.
Two Counts
instance_count is the array size. visible_instance_count defaults to −1 (all). If you set it to a specific number once, growing instance_count later doesn’t auto-expand the visible cap.
Reset to All
multimesh.instance_count = new_count
multimesh.visible_instance_count = -1 # render allThe −1 sentinel means “render every instance”. Resetting both makes growth transparent.
Per-Instance Data
After resize, the new instances start with default transform/color. Set their data immediately via set_instance_transform to avoid stacked default cubes at origin.
Transform Format
Set transform_format = TRANSFORM_3D (or 2D) at creation. Switching format requires a full rebuild.
Verifying
Growing instance count renders the new instances correctly. No invisible “capped” instances.
“Two counts: buffer size and visible cap. Keep them in sync.”
Pre-allocate the largest size you’ll need at startup — resizing isn’t cheap and avoiding it simplifies the visible_instance_count dance.