I've managed to get things basically integrated; you can fly to planets, and there are monsters crawling around on them. It's still I dunno, pretty buggy, and slow. I need to solve the slow issue first, I have a few things to try and then, I guess, I need to profile! (Yikes! But FUN!)
I really want to get the planets blanketed with organic matter, like, plants and rocks. I will have to use an impostor system to get the density I want and a reasonable framerate; impostors themselves get to be autogenerated from the models which are autogenerated from procedural models which are also autogenerated. Ahem.
Autogenerating the impostors will really just depend on what I end up doing for the impostor system itself. Right now there are two possibilities. If GL has a nice extension (maybe point sprite, I remember seeing something about that) then I will use that, even though it won't look very spectacular from certain viewing angles. The main reason for doing this is, I want to shovel as little data to the GPU as I can, as I can't use VAR for determining where the points belong. Further, if the GPU can do something faster if it's aligned to the view normal, then more power to it.
The second alternative is to use simple asterisk models; Let's say, I take a picture of the plant/rock from above, and three from the sides. That gives me 4 square alpha textures, which I will load into each quadrant of a single texture. Then what I do, is generate a simple mesh from this, which has to contain 4 quads each facing a certain way. I can do a little bit of stretching or coloring or what have you to this. Then I just manage a big list of these quads somehow based on where I want the objects to appear, and fire that list off. The list can't live in VAR, becuase it is always changing, which is why I think this approach will be too slow. Because otherwise, I think it would look vastly superior to using point sprite impostors.
The third alternative is to hybridize these. Which is maybe not a bad idea either. The approach already is hybrid, i.e., these things will fade out as you get close and be replaced by actual tree/rock models. So what I can do, is like, for very far away, they are point sprite impostors. For closer, they are asterisk impostors. And finally, they resolve to actual models. It's a bit complex for sure, but actually not too hard since it will be basically three different systems which can operate more or less independantly (although I'm not sure of that). I really really think that asterisks will look much, much better than point sprites, so this might be the best solution, as I can bring the asterisks quite close to the screen compared to the point sprites. If I can keep the "real" models to maybe 10 or 20, it would be ideal. Maybe 100-200 asterisks, and 1000-2000 point sprites. That might be a good split.
Why am I doing this now? Well. My priorities are always to tackle what is worst. Right now it is a tossup. The planets are really barren. This fact is highlighted by putting monsters on the planet, because even if they are as big as your ship (which is quite large, but probably the size they will mostly be), they look like little ants from any distance at all. If there was SOME kind of flora to go with the fauna, maybe it would look better.
Anyhow, so first off, if I do this (and I think I actually am going to today) I will implement a point sprite system. Then, I'll try asterisks. These will each just use a custom texture I make. Then, I can combine them, and possibly even work on the render-to-texture stuff that has to happen in order to get the textures autogenerated from the autogenerated models.
You know, the other alternative, which is really kind of silly but may be okay, is to not even use the models, except for generating the textures for point sprites/asterisks. That is kind of a funny thought, but you know it could be okay. And it WOULD allow for at least in theory way richer models, but I don't know. I really don't think I will do this though, because asterisks won't look very good close up.
What I think I should end up dropping is tree-placement consistancy. It was never my intention when thinking of the impostor system that the impostors would be consistent (i.e., if there is a tree on planet X at X, Y, Z, it will alwyas be there and look the same). What I might do, is make the asterisks consistant, so each asterisk fades to an equivalent real model on one hand, but NOT to an equivalent point sprite on the other. Or, only SOME asterisks will fade to real objects, I don't know. Certainly, it is probably ok to have higher density as you get further away.
Also, I read a really cool article on gamasutra about using point sprite impostors for clouds. And I am starting to think it might be a really realy good idea for vex clouds.
Well, firs things first! ONWARD TO THE POINT SPRITE SYSTEM!!!!!!!!!!!