A while ago I posted about procedural generating a city. To make it less boring, we added procedural trees – without leaves.
So, where do you start when you want to generate a tree from scratch. Well, first let examine a tree, you have a trunk that goes into the ground. This can be represented by a cylinder that get narrower at the top. Then you have branches, they start at some position at the trunk and also get narrower at the end and can be represented by a cylinder. So we now have we trunk and a branch that can be represented the same way quite easily.
Now we only have to place the cylinders in the world. Placing is pretty easy as the trunk just can be straight and branches can go half way from the trunk to the side with some random offset. Also branches can have branches, so making the code handle this was not an issue and gives a very nice result. But all the branches are straight?! Not when you make them out of multiple cylinders and give them all a small random rotation, then they seem much more organic and gives a pretty nice result.
Just messing around and made a nice screenshot. Currently we have the plan to extend the procedural city generated sky scrapers and a better street network generator. For now we are stuck with some simple quads that are filled in with buildings. Maybe in the future we will also include a terrain engine so we can generate a world with one click of the mouse…
A year ago I was experimenting with damage on our car models. We managed to create a fairly simple way to damage our cars by defining 4 points on the front left, front right, rear left and rear right, that represent the damage on the car. When a car get damage at one of the points, we increase the radius and therefore the damage. Within this radius we calculate a sin/cos on the XYZ to represent dents and pull every vertex a bit toward the inside of car. This is fairly simple and can easily be implemented on the GPU as we did. Also because we have the radius, we can simply add an damage texture.
In the screenshot you can see the damage done to the Blastback of our game FUR. The damage is in the front right corner of the car, closest to the camera.
For the need of animated 3D models we implemented MD5 model support, introduced in idTech 4 (aka Doom 3 engine). This model format is supported in some 3D modelling and animation tools, so it would be a nice choice. There are disadvantages as that the MD5 models and animations are design to be computed on the CPU in stead of the GPU. This will not stop us as this is the first animated model file format that we will support. In the future we may use more formats, but for now it will suffice.
For now we have the Cyberdemon from Doom 3 as test subject and none where harmed during testing…