VFX Graph question: Scale the VFX system without affecting particle scale?

I’m trying to create an object that’s somewhat dynamic, so that I can scale a parent object and have everything inside it scale nicely with it. Often this involves adjusting the tiling of some shader, and adjusting the Box dimensions of things like a particle system.

One thing I’ve noticed is that if I change the scale of a VFX Graph object, the individual particles are affected by this scale change. And I haven’t found a property to set to make the particles always the same size regardless of parent scale. Does anyone know what I need to add to my graph to keep parent scale changes from affecting the stretching of individual particles? I’m using a “Quad Output” node for the output.

Your particles need to be simulated in world space if you dont want the scale to affect them. Then you need to handle the scale wherever you want in your graph to get the behaviour you want (Beware of which inputs are in scale or world space)

Okay, so just like in Shuriken then. Thanks. I didn’t see how to choose to simulate in world space in VFX Graph, but I’ll take a closer look knowing it exists there somewhere.

In case anyone else struggles to find this, it’s simple: When selecting various nodes in VFX Graph, you’ll see you can adjust some properties in the Unity Inspector:

1 Like

Maybe you/someone can help me out a bit more. I changed the Quad Output’s Space to World. Although this does cause the particles to now stay the same size when scaling the particle system, it also has an unwanted side effect of making the “Position (AABox)” no longer rotatable. Under “local” simulation, rotating the VFX object causes the Position box to rotate. But with “world” simulation, rotation no longer affects the box.

Is there a way to get both scale-independent particle size, along with the ability to rotate the VFX object arbitrarily to adjust the spawn volume? To put it another way, in Shuriken, I can set the Scaling Mode to “Shape”, which causes the particles to remain constant when scaling, but still allows the particle system to be rotated as expected.

1 Like

I’ve been having this exact problem and have been trying for hours to get a fix. Have you found any temporary solutions yet?

BUMP

Guys, just add this in the end of the visual effect graph. I tested here and it worked.6987410--824969--upload_2021-3-29_17-54-37.png

It works only if you don’t rotate your sprites. At the moment you do, they are stretching. Idk, either I’m dumb or Unity is not my engine.

We don’t want scale to be affecting our particles.
But we do want position and rotation of transform to affect them.

My use case:
I have got an object with a MeshRenderer lets call it ROCK.
I’m parenting my vfx GameObject lets call it MASHROOMS to this ROCK.
My vfx is using MeshPosition block and ROCK mesh to place mashroms particles on a rock.

Now when I scale this ROCK, position of mashroms is correct, still spawned on a ROCK but their scale is also changing.
And I want mashroms to be the same size always.

1 Like

Same here. Trying to spawn water bubbles that always have the same size and scale, however the gameObjects and the VFX it is attached to, obviously change in size depending on the waterbody size.

Hm… same issue here… seems like what I want is to keep it local, but just ignore the scale, anyone found a way to do it?

PS: Just as I sent this I found that you can convert from World to Local and feed into the scale XYZ of the particle, something like this:

This way I have the output still in Local Space, but “undoing” the transform scale