Real-Time Plant Growth Blog

Plant growth simulation & USD pipeline study in a powerful GPU lab with the goal of creating for real time display

WEEK 3 PROGRESS BLOG

GOAL OF THE WEEK

1. Can you force PDG to run GPU?
2. Layered vellum tests to get more detail for macro
3. Particle system to plant growth experiments

REFERENCES

Yan Paul Dubbelman Post
Basic PDG Tutorial

PROCESS

I started this week with trying to do vellum sims with layers. I found that there were limitations with how closed the bud could be. I tried pinning different parts of each petal. By pinning just enough for the petal to be animated and pinning parts of the petal that would not touch I was able to get a slightly better result.

I shifted my focus back to the vines for the USD Challenge. I want to try to get collision with the environment. I created a mask from the find shortest path curves and created a weight attribute. I used this mask to drive a timeshift before I copied my animated leaves to the curve. I couldn't art direct the vines the way I wanted to I realized I could use a similar method to drive the timeshift with my original set up.

I applied the same mask to my original hand drawn curves and I was able to get the leaves to grow one after the other along the curve. However, in order for the Vellum sim to work, I had to keep the leaves visible. This meant that before the leaves start growing, you could still see them in their folded position. Professor Fowler suggested two options:
1. Group leaves by area, compare that to a value, and then delete them accordingly
2. Assign a shader with an opacity map to control visibility

My first attempt was checking if I could save the ID attribute on the leaves after they run through the vellum sim and then compare the area to delete them. The issue with this was that in order to get the ID attribute I would have pack the leaves. The solution to this was to pack the leaves to get the ID attribute, unpack them before the vellum sim, and then transfer the attribute from before the pack. However, in order to compare the area, I would need to run a very heavy for-each loop which would slow down the process significantly.

At this moment, Yichen was having a similar issue with his grape hyacinth sim. His solution was to delete points based on the y-axis. This gave me the idea to delete the leaves based on the curveu value of the curve. This attempt was successful and here is the result!

I ended up not having collisions with the environment for USD challenge purposes since the caches were very long. However, I was able to get them working. I animated the environment from a position where it didn't collided with the vellum to slowly move into position.

I made sure to pack my vine animation at the end of the tree before exporting it to Unreal Engine. Here are the vines growing in realtime:

My teammates Yichen, Mia, and Kat all experimented with layered sims for their flower simulations. I will be observing their files this week to replicate the workflow and then try to art direct them more so/add more details. I found a reel Yan Paul Dubbelman posted on instagram that showed a cut through of his flower sim. It was interesting to see that the petals in the flower never collide throughout the entire sim.

WHAT'S NEXT

1. Continue layered vellum experiments
2. Particle system to plant growth experiments

BACK