-Tutorial for making
curves.
First off, I guess a lot of you have already tried out making curves yourselves,
and done so mostly by making a cylinder template, and building your architecture
around that. That's fair enough, but lets have a look at how we can improve
on that: I suppose what you have been doing, is a little bit like this:
Now, this might look good in the game, but to be completely honest, just about
nobody will ever notice the difference between a 32 sided cylinder, and the
12 sided ones we are going to use here.
One other thing: Notice how all the brushes are rectangles with one of the sides
skewed. These all hit the 'upper' wall at many arbitrary positions. This is
not all that good, because of how QBSP works, it will most likely split many
of the surrounding faces into many smaller ones, which could have been avoided,
by doing this:
As you see, now all the faces are made of wedges that all have one common point,
the upper right corner. We get the same shape, but only now there are no more
arbitrary points on the upper wall that can cause weird splits in your BSP.
However, the cylinder used as a template here does have quite a lot of random
points itself. Basically, the thing we want it to do is stick on as large grid
as possible, and that task is a whole lot easier if we make our cylinders with
fewer sides, like 12. Now if we make a 12 sided cylinder in just about any editor;
you'll most likely end up with this:
Now this is good, because it sticks to the 16 unit grid (assuming this cylinder
is 256x256 units) but can we do better? Try rotating this cylinder 15 degrees
and then snapping all the vertexes to the grid like this:
Now this is a whole lot better, because this is still our basic shape, only
now it sticks to the 32 unit grid. Now you might be wondering why it's so important
to keep things on a large grid. The answer to that is scalability. (is that
a real word?) You could take that quarter cylinder and scale it down to as little
as 4x4 units, and it'd still stick on the grid. Another good thing about keeping
things on a large grid, is that it increases the chances of several faces being
on the same plane, thus forcing QBSP to do fewer splits, which in turn may
help you keep your r_speeds low. Well, it most certainly won't hurt them. And
now a hint to help you on your way later: Notice the height:width proportions
of the sides of the cylinder: 1:0 2:1 1:2 0:1. If you just can keep these in
mind, you don't have to make these template cylinders to help you in your building
all the time.
So, now we have our cylinder template, and can get on to the fun part; building
stuff with it.
In case you're wondering, I'm building all my stuff in WorldCraft.
We'll start off with the most basic of the basic, a corner that is smoothened
out with a curve:
Well, there's not much I can say about that, it's really simply made. Just two
wedges sitting in the corner. Next please!
Here we have two curve templates combined, and filled out in-between with brushes
to form a curved wall. This forms another template for our more complex curves.
Notice how the lines between the brushes (highlighted in red) also all have
very simple height:width proportions; 1:4 , 3:3 and 4:1. Remembering this will
make further curvemaking simpler to do, without having to create a template
for you to work around every time.
Furthermore, this also helps us in creating the next object, a hollow cylinder,
or a pipe if you will:
Well, I scaled this down to make it fit better here :-)
OK, there you have
the basics of making good curves, and I'm sure most of you could have figured
out this on your own easily. The problems (although there are really no problems)
arise when we try to bend curves (or other arbitrary structures) around new
curves. For the time being, we will be bending the cylinder we made in the previous
example, which from the top down looks like this:
First let's have a look at one of the most common mistakes that one might do
here:
What a lot of people do, is make a template for the inner "wall" of the object
that is to be bent, (highlighted in stripey red,) and then just skew the object
along it. This looks OK on the inner wall, but as we go out from the center
of the curve, it gets way out of proportion and ends up looking like a squashed
banana. (I used the 4:1 3:3 1:4 cylinder to bend around here, because then the
"banana" error becomes more evident.)
Now what you want to do, is this:
As you can see here, both the outer and the inner walls of the cylinder are
in correct proportion to eachother. Also notice how the lines highlighted in
red all point towards the center of the curve, as opposed to the previous example
where they just pointed in orthogonal directions. We could have arranged it
so that it did the same thing in that example too, but look at how the width:height
proportions of those lines would be: 0:8 4:7 7:4 8:0. With these proportions,
you could never build anything thinner than 8 units and bend it. In the second
example however, those proportions are the good old 1:4 3:3 4:3, which lets
you bend things as thin as 4 units.
However, many will now probably think that it took me ages of vertex manipulation
to get the result I wanted, but really, I didn't even touch the vertexes. Here's
how I did it, step by step:
First I stretched out the piece of pipe I had, and clipped off the end of it
towards the center of the curve I wanted to make, ending up with this:
Next I copied that segment of pipe, and clipped off the other end so I ended
up with another piece, identical to what was already inside of the 256x256 square
the curve was going to fit in:
Next up, I stretched that bit out, so it was long enough to reach the "corner"
of the curve I was going to make, and skewed it so the start of it was flush
with the end of the pipe I already had, ending up like this:
Then, you have to stretch the pipe vertically so that it is 9/8THS of
it's original height, which equals adding an extra 16 units to it's height in
this example. Now, you might not understand why this is necessary at once, but
just bare with me, and it will all be explained in the next step.
Now the reason for the previous step being necessary, is as follows: When we
now are going to skew the pipe downwards to make one segment of our finished
curve, all the vertexes on the two already fitting ends would be skewed out
of their place, because they are not placed "above" eachother. When we scale
it up to 9/8THS however, we make up for that and everything magically
aligns perfectly when we are done:
The second thing
you might want to know, is really a bit dodgy and you shouldn't use it unless
you feel it's absolutely necessary. It's a way to create a spiral ramp, or helix
if you like. The thing here, is that if you pull the vertexes on a standard
quarterpipe curve upwards, you'll end up with an illegal brush because the inner
and outer edges of it are of different length, and thus would need different
gradients to not look awkward. Well, there is a way to overcome this, but it's
messy, and don't say you learnt it from me, OK?
What you have to do, is clip the segments of the curve in two along the diagonals.
This will make those illegal faces of the brush into triangle, which are impossible
to make illegal. (Well, you can make those too illegal in WorldCraft, but I
won't go into that here. Is that editor 1337 or what?) Then you can displace
the curve height-wise as much as you want, but bewarned, if you have complex
curves made up of many "rings", you might get a headache when QBSP begins to
hurl Terrible Errors Of Evil towards you. Also you are very likely to encounter
Quakes magical invisible clip wall error with these, that makes the player think
he cannot walk over certain faces and stops him in the middle of nowhere. A
absolute no-no in deathmatch I would think:
There. Now I have
thought you all that you should and should not know about making curves in Quake.
Now go out and use them in the name of good!
czg - signing off.