Hi there! Sorry for the late reply, this missed my notifications.
Sorry for the poor quality haha, I don’t have my Wacom tablet right now. I’m going to try and break this down further so hopefully you can understand exactly why we’re doing this.
A is the world origin, and will be the origin of the tree when you import this into Unreal. If we create a billboard material and grab the Object position, this is the point that it will grab by default. That is why the billboarding fails, because it’s trying to orient itself around this point, which is relative to the entire mesh but not the individual leaves.
B is the origin of the leaf plane. THIS is the point that we want to orient the billboard around. So how do we make that conversion? Well, that’s where the vertex color comes into play. We can’t grab this world location because it’s pretty arbitrary, so we need to set it manually.
(You can skip this section if it’s going to confuse you, but I’m going to go into the full detail of how this works for your reference) So let’s say we set the vertices of a single leaf plane to the value of their pivot. Why do we need the logic in the material of Object Position + Vertex Color? Well, that pivot point is relative to the origin of the tree. If we moved a tree into Unreal and set its world location to 0,0,0, just using the vertex color would work. However, when you move the tree to a new location, this vertex color value will no longer be relevant. By adding it to the object position, our values stay localized to the tree and thus will always be correct.
So, what values are we setting and why? C in this diagram are the vertices of the leaf plane. Since we want the billboard to happen per-leaf plane, these vertices need to all have the same value, and they need to be the value of the plane’s pivot point (B).
So, how do we do that? I’m not confident that the vertex color can save large values, so we will need to make the value under 1. How do you do that? You divide your original number. In my example above, we’ll divide by 1000, then later in the material, multiply that back in to get the correct pivot location again. So, let’s say the pivot point B’s world location is 450, 233, 600. You need to paint the RGB values as .45 R, .233 G, .6 B. We do this because for all intents and purposes, a color is just a vector, and we use vectors to determine world locations, making the vertex color value compatible with the pivot location.
Let me know if that breakdown helped!