Making of Siege
This page came about in response to the many questions I had fielded about how the picture "Siege" was actually done. I'm not going to pretend that any of this information is groundbreaking stuff, but if just one person can learn something or be sparked creatively in a new direction from this, then that would make the next 500KB of images and text all worthwhile as far as I'm concerned. Thanks for having a look and hope you find something of interest or use.
Step 1 - The Story Continues.....
When I start a new project, the first thing I try to do is to work out the story that the picture will be a part of. This story will cover things such as the who/what/where/why/how of the main figure(s) and the environment the figure(s) may be located in.
Filling in a background story for a scene or the main characters within that scene will fill in many details such as (in the case of a person) what the person will be wearing, what they will be carrying, what condition it will be in. In the case of an object, such as a castle that would appear in the scene, it may tell you things such as why it is built the way it is (all at once, or bits added on with different architecture types over the centuries), what it is made of (stone, wood, bricks), why it is in the place it is and so on. Doing this early can save a lot of time later, and will often help you flesh out some of the small details of a scene while providing a good check for the consistency of the scene.
In the case of "The Siege", the basic story was that a new rulership had come into a small geographically isolated city state in a fantasy world. The city state was located in a coastline valley ringed by mountains. A local undead lord wanted to "ascertain the credentials" of this new rulership, so raised an army of undead and threw it against the outer regions of the city-state. The first target was one of the border-castles.
The above story, while short, instantly filled in details such as where the castle would be - on top of a rocky ridgeline with a dry moat dug in front of its walls (no room for watery moats on top of ridges), what it would be made of - locally carved stone, what the surrounding terrain would look like - mountainous forest, and what sort of equipment the invading army would have to assault the castle with - little in the way of heavy equipment (but they would've hired a couple of giants to throw fiery rocks at the castle for the price of some cattle), and so on.
Step 2 - The Environment.....
Essentially, this part involves building the environment that the figures will populate. In this case, the environment consisted of a castle sitting on a rocky ridge. Smoke coming from some fires (both within and outside of the field of view) is also a part of this environment, as is the forest that surrounds the ridgeline.
The first part of making any 3d scene for me involves "blocking out" the environment. For this part I use simple blocks to roughly and loosely construct the major parts of the environment in the shape that I want it to be in. No textures were used at this stage - it was solely designed to aid me work out the point of view for the scene and to also get a feel for how big things are and how they all fit together. While this isn't as necessary for simple sorts of scenes, for large complex sorts of scenes, I've found this stage invaluable at saving time later on.
As you can seen in the above picture, things were pretty simple at this point. The large block outside the wall was going to be a siege tower, but due to the skeleton army travelling light, it had to go (as did a covered battering ram that found its way onto the bridge at one stage). Even in this early pic there are a couple of figures in there to aid in seeing the scale of things.
With the point of view more or less worked out, the castle was then modelled:
Next came the building of the terrain surrounding the castle. This basically consisted of a large scale terrain mesh for the ridge and a lot (about 180) of 2d picture objects for the trees in the background with each picture object being a picture of about 5 trees. The reason for doing it this way was to get the right effect with the distance haze. Other methods didn't give the forest enough depth. In general, I also tend to make the objects fairly large when I make outdoor scenes - the bounding box for the castle in this scene was about 830*310*800 Bryce units in size. This makes the haze effects and other things look a bit better. I also try to keep everything to scale, even distant mountains.
Texturing, adding the smoke (clusters of elongated cylinders with volumetric cloud materials), and defensive siege engines came next. This was followed by running it through the gauntlet of the Renderosity Bryce forum (leading mainly to the addition of a boiling liquid gantry and subsequent modification of the gate house to accommodate it and a bit of flame). Final tweaking of the point of view for the scene also happened at this stage. The attacking siege weapons had also gone by the end of this stage which left the final environment as (including some little nude guys for scaling):
At the end of this, I group the entire environment together into one group and save the desired point of view in one of the "saved view" memory dots (top left of the Bryce interface). Doing this makes things much easier for the rest of the process. Then save this "environment only" scene to a br5 file. This will be the base scene that all of the attackers and defenders will be added to at some stage of section 4.
Step 3 - The Attackers - all those hordes
To make the vast swarms of attackers, I made approximately 25 different skeleton pose/weapon combinations (all of which were saved in Bryce as individual objects within the "create objects" libraries). These individual skeletons were then clustered into a series of hordes - each horde being rectangular in shape to make it easier to join them to other hordes later on. I originally made a couple of different low density hordes, of about 40 skeletons, and some high density hordes of about 100-120 skeletons. I also removed the skeleton's feet - they just added a lot of un-necessary polygons and you don't see them anyway.
I use the low density hordes when I am viewing the attackers from a low side on angle (all of "Invasion" is done using low density hordes as it is viewed more or less from the side). The high density hordes are used when I am viewing the attackers from above - the low density hordes when viewed from above just don't give the feeling of a lot of soldiers (they are very sparse and you see an awful lot of space between them). Thus, the skeletons closest to the camera in "Siege" are made from high density hordes, whereas the skeletons moving up behind the far wall in the background are made from a collection of low density hordes.
Other special groups of skeletons were made separately, such as the battering ram crew:
and the scaling ladders. Each of the individual hordes and special groups were then saved as br5 files rather than in the "create objects" libraries. I did this because I found that merging the large horde files with other files was much quicker than pulling large horde objects out of the "create objects" libraries.
Step 4 - The Defenders - the few.....
In this case I made up about 20 different generic defender characters (all lo-res poser meshes with different weapons/poses/capes) and a couple of specialised character groups like the stretcher bearers, the walking wounded, the guys with the forks for pushing the ladders off the walls, and the soldiers in the foreground right tower. None of the defenders were grouped into hordes, as their formation was going to be a lot more random due to the constraints of being on the battlements, and so all of the individual defender characters were saved within the "create objects" libraries.
Step 5 - Positioning and Rendering the Troops.....
The rest of this "Making of" page covers how the appearance of an army was built up from the individual hordes. What we wish to do is to be able to create the final completed image of the army by combining together a whole lot of subimages. Each subimage will be created by rendering only a single small section of the entire army or scene.
Doing it this way means that only a small section of the defenders or attackers (or perhaps both such as along the tops of the walls) will be rendered at any one time to make a subimage, and so only a small number of the attackers or defenders need to be in the scene at any one time.
Once all of the subimages of all the sections have been made, they can be layered together in a paint program (e.g. paintshoppro or photoshop) to make up the final image. Every subimage must be rendered from the same point of view, so its a good idea to use one of the "saved view" memory dots to save the point of view that you finally decided on using for your image.
The first thing to do is to render the "environment only" scene at the desired resolution of your final picture (allowing for any resizing of the image you may want to do afterwards). For "Siege", this alone took about 8 hours to render on my p3 450.
The next part involves dividing the area that will be covered by the great swarm of attackers and defenders up into a series of smaller sections. Then, you position or populate one of those sections with some troops (this includes corpses or weapons racks - i.e. any small moveable detail you wish to add to that section of the scene) and then render that section of the scene to make one of the subimages. Bryce's plop rendering ability is very good for doing this. When you have rendered that section of the overall scene, then you move on to the next section and populate and render that to make the next subimage and so on until the whole field of troops has been rendered to form subimages for every section of the whole scene.
The above image is a composite image of the top views of some of the different groups of skeletons (each differently coloured group populating a different section of the overall scene) that were used to build up the final image of the attacking army. The subimages of two of these sections are also shown.
Each section of the overall image was populated by one or two of the hordes (described in section 2) positioned on the terrain with a few extra skeletons added to fill any gaps that may occur. Using Bryce's drop action became problematic at times as it often dropped the skeletons down through the terrain - I think that this could be a problem with trying to drop individual groups (skeletons) that intersect. When this problem occurred, the skeletons were positioned on the terrain manually. High density hordes were used for skeletons close to the camera in "Siege", while low density hordes were used for the skeletons in the distance (where the viewing angle is a lot more side on).
To make positioning of troops within a section of the scene quicker and easier, I created a separate file that only contained the ground and the walls/bridge as taken from the main environment file. I positioned the skeletons in this cut down file rather than in the "environment only" file, and then when everything was in place, I would delete the ground/bridge/walls from this file, just leaving the skeletons which I then saved as a br5 file. This skeleton only file was then merged (file menu - merge option) with the "environment only" file for rendering of that section to make a subimage. If you can, save each section of the properly positioned skeletons into separate br5 files as you go - you may need to go back to them later.
When trying to work out how best to divide the great swarms of figures up into smaller sections, I worked on the idea of trying to minimise the number of seams that would occur in the entire mass of skeletons in the final merged image. Thus the boundaries of each small section were chosen so as to consist of such things as the bridge, walls, or bushes in the dry moat as often as possible. For example, the bridge and front wall of the castle formed the border for most of the frontmost sections of the skeleton swarm, whereas the shrubbery in the dry moat formed a border for some of the skeleton groups in the middle ground of the scene.
I used several other techniques to minimise the appearance of any seams in the ranks of the skeletons when all of the subimages were joined together. The first way was to simply allow the groups of skeletons in adjacent small sections to overlap - i.e. the skeletons on the left edge of one small section would also be the skeletons on the right hand edge of the section beside it. This was also a good way to ensure that the hordes of skeletons in one section cast consistent shadows onto the skeletons in an adjacent section. An example of letting things overlap is in the way that the flags on the bridge that obscure some of the skeletons on the hillside behind them were left in there when rendering the section behind them. Also, the ladders were inserted into the scene whenever they would appear in the render of any section of the field (the ladders were in another br5 file that could be easily merged with other files as needed).
The second method of seam reduction I used only came into play when doing a shallow viewing angle shot (like in "Invasion") or when you could see sections of the troops in the rear of the field through the small gaps in the troops that were between the rear troops and the camera. Using the following technique makes the layering process so much easier.
It involves making two renders for each section of troops - one render is of the troops in the full environment (rendered in field), and the second is a render of the troops in their correct positions but against a plain coloured backdrop (rendered against backdrop).
To do the "rendered against backdrop" image, I firstly deleted the entire environment, just leaving the troops, then positioned a large flat cube behind the troops as shown below to be the backdrop.
For the backdrop colour, choose a colour that is close to what you expect the colour of the stuff behind that section is going to be - i.e. if you are rendering against a predominantly white scene, do not choose a red backdrop colour or you'll end up with a red outline about sections of your troops later on due to the anti-aliasing. Removing the environment to make the plane background renders is pretty easy, as it was all grouped together earlier. The use of these two renders will be explained in the next section.
While the discussion above centered on the attacking swarm, similar techniques also hold for the defenders in the way things were divided up into smaller sections and subimages made (some of which had attackers in them). The only real difference was that the troops from both sides that were on top of the walls were placed individually rather than "by horde".
When doing all of this positioning and rendering its best to start at one end of the scene and work your way to the other for sanity's sake. For both "Siege" and "Invasion", I started at the very front (closest to the camera) and worked my way towards the back (away from the camera), laying hordes out like tiles across a floor as I went. I also found the combined top view previously shown was very useful for helping keep track of where I was up to.
Step 6 - Putting It All Together - make or break time.....
The rendering is done, you have about 50+ subimages, and your CPU breathes a sigh of relief for the first time in a month. Time to put it all together.
Firstly load the "environment only" render you did as the background layer for your final image. Then, starting with the "rendered in field" subimage corresponding to the section that is furtherest from the camera, load it into a new layer of the final image. Delete as much as you reasonably can of this subimage (to keep file size down). Next, load the "rendered in field" subimage that corresponds to the second most furtherest section into another new layer on top of the last layer. If there is no overlap between the newly added troops and those in the previous layer, then continue on to add another subimage in yet another new layer. If, however, the troops in this new layer overlap the troops in the previous (or any of the previous) layers, then you can use the following technique to help make the layers blend seamlessly so that you get a continuous flow of troops, not something that looks fractured at the borders of the subimages.
Below is a progress shot of "Invasion" that already has had some of the subimages containing troops added.
While adding the next "rendered in field" subimage to this image, it became obvious that there was an overlap between these newly added troops and some of the previously added troops. Now place the "rendered against backdrop" subimage for that same section of the field into another new layer on top of the "rendered in field" subimage layer. Make sure this new layer is also positioned correctly within the scene.
Next, hide the "rendered against backdrop" layer and set the visibility of the "rendered in field" layer to about 50%, so you can see the troops that are already in the image through the "rendered in field layer". Next, trim the "rendered in field" layer so that anything that appears above the start of the troops already in the scene is no longer there (the "rendered in field" layer has been colour shifted to make it easier to see what's going on):
Then bring the "rendered in field" layer to 100% visibility and set the "rendered against backdrop" to 50% visibility. Now remove anything in the "rendered against backdrop" layer that is below the top of the troops in the "rendered in field" layer. Now return the "rendered against backdrop" layer to 100% visibility. The two layers should now look like this:
Now delete the background colour from the "rendered against background" layer and make sure all layers (new and old) are set to 100% visibility. You should now have a fairly seamless mass of soldiers, or skeletons in this case:
Once this is done, then you just keep adding subimages, slowly filling your scene up from the back towards the front. Once they are all into the main figure, then you can do whatever postwork/image correction you can/need/want to do.
Step 7 - Finish.
Well, hopefully you've seen both of the completed images described in this "making of" page. They were made with a fairly modest computer and lots of patience, showing that hardware is no limit for imagination.
CPU : PIII 450MHz
RAM : 320MB
Subimages : 51
Skeletons : 2400 ish
Defenders : 200 ish
Total size of all Br5 files of Siege : 4.3GB
Total size of all renders of Siege : 430MB