Making trees

I'm looking to spruce ( it's a pun, laugh ) up my environment by adding trees to it. Now, I'm perfectly capable of using wings3d to make simple trees, but frankly, automated systems with tweakable parameters will do a better job.

My questions are:

1) Are there *free* packages that are reasonably good?

2) If not, are there affordable non-free packages? By affordable, I mean a lot less than $100 US.

3) Should I just break down and write my own generator

My main issue is that while I'm a well-employed adult, game dev is my pasttime, and I don't have the money to buy Maya or some other professional package. That said, I'm decent in Wings3D and I can learn Blender.

Also, it would be nice to have the foliage/leaves be separatable from the trunk. I'm using stencil shadows, and I don't think that single-sided leaf quads will work too well when performing silhouette determination. So ideally I'd have one trunk model which is a closed solid, and a second model which is basically a list of quads and texture coords.

Oh yes, it would be nice if I could get nice textures too, procedurally created ideally.

Can anybody help? If I have to take path #3, this is the kind of thing I could spend months on. Fun, but not my primary goal...

Thanks, but I don't have any trees yet -- just an editor for changing parameters, and a "Tree" object which has an empty generate() function. But, the infrastructure is done, now I just have to make the tree actually build itself.

Well, I spent the weekend finishing the implementation. It took some work, and while I'm not "done" yet ( I still need to make good textures, and whip up a number of good parameter scripts ) I now have a system for continuously generating trees on the fly as you move around. I also have a separate implementation ( which is faster ) which clones from a set of 64 "prototype" trees, based on four parameter sets.

Anyway, the point is that you can move around and for all intents and purposes, my environment has *thousands* of trees in it, each being a shadow casting, collidable 1st class entity in my scenegraph ( though it only exists if you're near it ).

Here's some shots:

The neat thing is that while the trees are created as you approach, since they use a reproducible seeding algorithm you'll always get the same random tree in the same place!