-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.