Video wird geladen...
Video konnte nicht geladen werden
#UE5 #gamedev #vfx #techart Continuing with my strand-based simulated foliage experiments... Still some work to do
11 Kommentare

backed away from using a skeletal mesh to initially create my custom strand hierarchy because bones come with tons of caveats that can be annoying to work with: no length data, no attachment info etc.

For now, I wrote a tiny python script in Blender to create a simple .csv based file format from a Blender armature.

Csv files can be dragged & dropped into the engine and converted into a datatable if you have a BP/CPP structure matching the csv columns structure. Quite neat.

So I changed the way the strand hierarchy is built to create a much simpler solution but still allow strands to be connected somewhere along parent strands.

Other issue I had was propagating forces, like pulling the top part and having the whole structure bend. Turns out you don't have to walk up & down the hierarchy at all like I initially thought...

... just have to resolve the strand length constraint by half the amount on the strand and by the remaining half on the parent strand, and it just works. The core simulation is PBD-based with substepping.

Last challenge to solve is bend inheritance but I have an idea. Here the whole structure should bend with the root strand and not stand up completly crooked like it currently does.

This is still all done in BP as a proof of concept. Adding interactive mouse push & pull feature was a great idea tho, so fun. Porting the simulation to GPU/Niagara should be quite easily doable & efficient with my current architecture🤔

One day I'll get around to toying around with particle based foliage where particles are the skeleton.

This is really sweet! I’m also in love with how Alan Wake simulates the vegetation. Can I ask you how you link the data table with the shader? If I understand correctly, your idea is to interpolate the nodes simulation to the vertices of the mesh right?

There's no shader yet, it's all done in BP for now. The idea would be to export each point pos/previous pos into render targets, and encode the strand index in vertex color or something to use the standard skeletal vertex animation texture technique
