Several quarters ago I built a MEL script (Maya scripting language) that I called "Populate". The point of this code was to allow you to select as many geometry files as you wanted to and then populate an object (plane with terrain) with as many of them as you wanted and without any interpenetration of the objects while attaching them to the surface and allowing you to randomize the rotation and scale (uniformly, diameter and height, or all 3 axes) allowing you to determine the range for each of these. It was not completely finished, and suffered from one or two bugs. However, I managed to figure out the solution to these issues even though I didn't have the time to implement the changes.
The reason I built this script was so I could use it in my final project, to build a forest while keeping the width and depth of the trees the same while randomizing the scales and placement of the trees. It worked pretty well, but in the end, one of the bugs I was running into was taking too much time to fix, so I explored some other tools in Maya, and found the Paint Geometry tool. This is a really cool tool that does something very similar to my script, while also allowing you to go back and make changes to your objects live, adjusting the scales or removing objects on the fly. While I still want to complete my script because it has a few advantages over this tool (mainly the ability to decide how many objects you want, avoid colliding geometry, and scaling x and z together), but for now I decided to try this tool out build my forest.
So far it seems to work well. After looking at some pine forest reference images, I have decided to make my forest rather dense, which means a lot of geometry. As such, even though each tree is a low polygon count, the scene bogs down my system drastically whenever the forest is visible. I am planning to look into using a renderman rib archive to speed this up, if possible, but only if the computers can handle exporting the objects into a new file and then into a rib archive.
I also now have to go through this scene during the break and decide if I need to remove any interpenetrating trees or if it would be easier to fix my script and redo this. I am pleased with the look right now, but if anyone knows a better way of creating a forest with my own geometry, I am open to suggestions.