Just a short teaser post until I remember to bring the code home with me, but I’ve placed trees within the bounds of a canopy layer determined from some county LiDAR dataset. The tree locations, heights, and rotation are set using pseudo-random numbers, which looks a lot better than a monoculture of the same tree. Eventually, estimating stem locations and canopy heights to do this would be preferable, but one step at a time… . We’ll first look for a reasonable result, and follow with an accurate one. For now I get a pretty realistic canopy over a gorge area for a creek, so below are the first, middle-ish, and last frames in an animation I did of that canopy.
Close in:
rendering partway up…

And the final frame: