Godot Version
4.7
Question
I’m aiming to achieve something similar to what Star Fox 64 did in one of its levels:
Here, the lava has tall waves and large deformations. Most probably, it’s a mesh that has shape keys or the like. I believe this could be accomplished with an AnimationPlayer and some blending. The rest would be to animate the UV to simulate water flow.
My question is: if I wanted to create a tall wave (deform the mesh upwards) in a particular spot at a particular moment, what would be the general approach?
I’m not aiming to use a shader-- rather, I want to deform the mesh so that everything else can work off that.
How would I manipulate vertices of a plane mesh in Godot?
Use a periodic function or a sliding noise texture in a vertex shader.
I think you can use Terrain3D add-on, and use a FastNoiseLite as a height map and move its offset over-time to give the wave effect.
Terrain3D
You can also approach this with a SoftBody3D as well. Soft body can allow you to move vertices around, all you need is a subdivided plane.
I found a post on reddit that does vertex displacement similarly to how you want to achieve it as well by simply using a mesh instance and code. Downside is it is in Godot 3, but here’s the link:
Vertex Displacement
If you can displace vertices with code, you can feed it height map by using FastNoiseLite and such, and you’re good to go. You just move the vertices up or down by the corresponding pixel’s black and white value.