Re: My Quake Editor

Jonathan Mavor (
Wed, 26 Jun 1996 12:28:26 -0700

Date: Wed, 26 Jun 1996 12:28:26 -0700
Message-Id: <>
From: Jonathan Mavor <>
Subject: Re: My Quake Editor

At 06:20 PM 6/26/96 +0200, you wrote:
>More serious, this is not a good idea. Brush/MAP representations
>are minimal, and might exceed Quake's lifespan. BSP is one
>technique to generate lookups for speeding up rendering from
>this general purpose scene description. You might as well
>generate a sector map from the MAP files, for a different
>renderer. Or use MAP directly with PowerVR from VideoLogic,
>for all I know.
I didn't say that I was going to output the bsp. Just
use it to generate the NEW list of convex brushes which make up
the concave brush. These brushes will be indistinguishable from
any other.

>This is confusing me. If you are doing a BSP on a per-Brush
>basis (one BSP for each pseudo-brush, i.e., splitting all
>those non-convex polyhedra you call Brushes :), this will
>generate Brushes of some kind from the non-convex solids.
>If you are processing the whole scene in one big BSP, of
>course a partition plane could intersect a convex brush as
>well, right?

Yes. But the "non-convex polyhedra" don't necessarily
have a bsp. The world is represented by one big bsp which is
created from the CSG's polygon of the original brushes, then
those polygons are put through a bsper. So my bsp building
process for the world is:

1) Make a big list of polygons from all the brushes.
2) Procedural CSG each polygon against all brushes to generate
new polygons or possibly invalidate this polygon.
3) Delete all invalidated polys from the list
4) Send this list to a normal recursive bsp builder.

When you are normally editing and add a brush to the world
it filter all the polygons of the brush to inside/outside nodes
of the world, and then filters all close polygons of the world
through the brush to do the csg. You end up with more splits like
this but the world can be rebuilt later if you want more speed.
The actual DATA that makes up the map are all of the add's and
sub's of the brushes. The bsp is just convienient for rendering.
I mention before that to BREAK UP the "non-convex-brushes" I was
going to use a bsp, not that this bsp existed all the time.

>Hmmm. As I recently purchased LW 5.0, is this source
>available under some reasonable license?
I'll see if I can dig it up. It's basically a little
program that I wrote for LW4.0 files which converts them to
a .3DM format. It was a quick hack but I think it should
work. (3DM is 3dmodel, list of verts then a list of polys very simple).

>There is a DDE subset implemented in wxWindows that works
>with UNIX sockets as well. Perhaps it's possible to use
>this separately from the gargantuan GUI libs - another
>cross-platform portability suggestion.

I'll check it out once I get to that stage. I seriously
doubt that this editor will ever got ported to any non-windows
operating system. Although I'm trying to not tie myself
completely to the doc/view system. Everything is in C++ classes
and theoretically could be ripped apart without too much trouble.