Fake Wind Effect for Cloth in Unity

Target App: Unity, URP pipeline.

Hi. I’d like to create a shader that simulates fake cloth wind (shaking) effect, similar to effect, we can see COD Warzone, when characters standing near a plane’s ramp before a jump, or a similar effect in one of the MGS games. I work in Maya, which allows you to apply 3D Noise via a Texture Deformer before skinning, or apply the noise to the unskinned model then using a BlendShape to transfer deformation to skinned object of same topology, which prevents the texture from “swimming” through the object—that’s the goal. A similar approach isn’t possible in Unity. Currently I’m using an FBX file, where this effects are baked frame-by-frame to blendshapes, which is recource consuming. I’d like a more streamlined version in Unity. All the tutorials and shaders online are currently only suitable for rags and flags, where UV seams aren’t important. If I use any of the noises in Unity in Object Space, the texture starts to swim as soon as the character starts moving. I haven’t received an answer on the official forum. The AI ​​didn’t provide any options either. Has anyone encountered a similar problem? And is there any good approach of this effect? Thank you!

3d_noise_swimming

MGS, Warzone wind refs are in the links:

Current Shader graph and result:

1 Like

If you want to get even closer to references - you shoul add some kind of mask (could be even vertex color) so not all vertices will be affected the same way. cool effect anyway - good job

Of course, I’m planning to use vertex colors or 2d texture to mask out particular places on the mesh. The .gif image only demonstrating the whole deformation. The main problem is that when a character starts to deform by skin cluster, the noise field remains in world position as it is shown in the very first .gif of the cube mesh.

1 Like

oh sorry I didn’t read the whole post, I immediately thought it’s intended effect. sorry
So basically what you want do to is to transfer that perlin nosie transform from world space to local space and it should stay consistent even when moving.

Yes, exactly. Unfortunately, I don’t know, if there is a solution for this task in Unity, and chance to make it lighweight. In other case, I’ll have to use baked blendshapes, import them via FBX, and then mixing them in Unity.

there is also Vertex Animation textures (VAT) if you got it working in maya it should be exportable, but I do not know if it wouldn’t be same problem as now.
But one thing that came to my mind is that if you are using root motion in unity, that could also mess up the object space.