Interesting problem.

I've added wind effects to my script, but only to blow the player around the map, along with some debris. Both of those are, of course, relatively simple.

Speaking as someone who also hasn't touched the 3DGS physics package, it seems that that might be usable for rigid bodies such as your lanterns, (e.g., fix the top point and apply a changing force over time to the lantern's bottom point). As trees aren't rigid bodies, they may require a different approach.

As a simple trial, you could model a single reed using vec_for_mesh/vec_to_mesh to adjust the reed's vertices over time. Have it bend slightly in the direction of the wind by moving all the vertices in that direction to varying degrees. Move the vertices at the top of the reed farther than you move the ones towards the bottom, (i.e., make the lateral translation proportional to both the speed of the wind and the distance between a vertex and the model's base).



vec_for_mesh() gives you coordinates, so it's possible to calculate where a vertex is in relation to the model, (and thus, you can tell the tree which vertices to move). As things often bob back and forth in the wind, you could also add some sinusoidal factor in there.

Then there's always bones animation, which is probably handier than tweaking individual vertices. And finally, simply animating a tree's .mdl so that it rustles is the least computationally expensive. Of course, it's 3:30am, so I have no idea whether this makes any sense, but that never stopped me from talking.