 |
Site Current State
|
28 May 2002 (10:00pm) - Tueday Evening
|
|
I still get the occasional e-mail about grain, so I thought it time to update this site. The grain project hasn't been touched
in well over a year. I've started my own small game company (Gradient Studios),
and have been focusing my coding efforts toward that and other projects.
The grain "technology" (if you will) still exists, but the rendering pipeline and tools
are rather outdated. Hardware has changed so much
since the care free days of rendering polygon by polygon and doing special effects by brute
force texture passes. I expect to modernize (more like rewrite) the engine for my lil' company
when the time is right, but for now please don't expect that this site will be updated with any grain-related
news or features. I may eventually start updating this site again with some of my R&D notes
for my next project, but its not quite ready yet. Thanks again for your e-mails and comments.
|
 |
In-Engine GUI Demo
|
22 April 2001(11:13pm) - Sunday Night
|
Eh, so many things have happened since my last update. Between moving to a new city,
working on several projects simultaneously, and doing a lot of research, I've been rather
busy. But I have added several things to the engine in my "free time", and plan to rewrite several others.
One of the more interesting things recently added is a new GUI system. I'll talk about
it for a few minutes, and post a small demo that I put together about a month ago.
The GUI system has three main components. The Skin Editor, the
Resource Editor, and the window system code itself. The first two are tool applications. The Skin Editor looks like this:
 Click for larger version.
As you can see if you click on the image for a larger version, the Skin Editor allows the user to
specify portions of images to be used for window or control skin elements. The user simply moves/resizes
the rectangle assigned to each element, to the portion of the image he wants. For example I can put
all of the images for various buttons, check boxes, etc on a single TGA, then use the skin editor to specify
what's what. Saves on texture changes and so on. The skin I made, shown in the image above, isn't exactly the greatest,
but the editor allows the user to make quite a variety of funky window skins.
Next up is the resource editor. He looks like this:
 Click for larger version.
Fooling around with the resource editor is sort of fun. Its much like MSVC's. The user drops in controls and moves them around.
It saves them to a text file for manual tweaking if neccesary.
And finally, a small demo of the gui itself (not the tools). Nothing too special, just a few controls and a simple menu test.
If you'd like to try out the demo for yourself, you can,
but be warned that its not actually meant for release. I've not fully reviewed all my GUI code, so there may be some
bugs and all of that. Bla, bla, bla. Anyway, grab the demo on the
downloads page. I highly recommend
that you don't run it in windowed mode (even though that's the default option),
but it should still work. It just might be a little laggy.
As for me, I'm still working on other stuff, so grain usually doesn't get the attention I think it deserves, but
I do have some major reworking of it (hardware has changed quite a bit since I started work on this thing)
planned for the near future. More later. This page isn't dead yet.
|
 |
Nothing Important
|
06 October 2000 (4:55pm) - Friday Evening
|
|
I'm working on a small project at the moment which uses parts of this engine, and parts of my
larger "game engine" framework. I won't be updating this page for a while, as I'm quite busy with
this work. I'll probably mention a few things about it eventually on this page, but please don't
expect any updates in the near future. I'm not expanding much on the 3D tech right now.
|
 |
Constructive Solid Geometry
|
24 July 2000 (3:36pm) - Monday Afternoon
|
Wow, its been a while indeed. Rest assured I haven't stopped work on the engine. Not by a long shot.
I've just been busy doing other things as well, so I haven't had time to really stop and make an interesting update
to this page. I've been interviewing around a bit with game/gfx companies, and I've also been putting
a lot of time into flipCode. I've still been adding features here and there, but now I'm back on track
with the engine and work should hopefully progress rapidly.
Anyway, lots of things have changed with the engine, many of which I'll talk about
soon in other updates. But for now, I'll just talk about what I'm working on currently. For the past day or two I've
been playing with CSG, aka Constructive Solid Geometry, which is the process of constructing objects from
other objects that are usually simpler. The results have been pretty cool so far. This is done through union, difference,
intersection, or subtraction operations. For example if you put two lovely spheres in place,
with each one slightly inside of the other, the union would be a strange peanut-looking shape.
Don't believe me? Have a look:
 Figure 1) Completely Unoptimized Engine CSG Test, Union Operation
What is that good for? All kinds of stuff! I'm using it as a tool in my world editor, though my engine is not
based around CSG or brushes, etc. Suppose you want to make
4 connected hallways. One simple approach for the sake of example would be to make a box, then subtract another box
from its center.
Here's what it looks like:
 Figure 2) Simple Example Of What CSG Can Be Used For
Then when you have that, you can continue subtracting blocks from the walls to get windows, doorways, etc.
You get the idea. Here's another screenshot, this time with 2 more complicated non-convex objects. I know its hard to
see what they are because of the wireframe rendering, but each object is a sphere thingy with 6 little cylinder-like appendages
coming out of it. If that helps at all. The operation shown is the intersection, which means on the left you see both objects
in their entirety; on the right is only what's "inside" of both objects.
 Figure 3) Another CSG Example, Illustrating The Intersection Operation
The bad thing about CSG is that you usually end up creating a lot of extra polygons, some neccesary, others not.
If you look at the two images above snapped from my engine, you'll notice that there are a lot of polygon fragments (splits) that
don't need to be there. The reason for that is, what you're looking at are screenshots from my completely
unoptimized CSG code. I just finished writing it about 10 minutes ago :].
Soon it will go back through and optimize the resulting poly set as best it can, but
for now I was just trying to get things working properly.
CSG can be done a number of ways. There are quite a few resources and papers out there
on doing CSG with bsp trees, which at first I was against. My engine doesn't really use bsp trees anywhere else, so
I thought it would be a waste to use them strictly for CSG. However, after experimenting for a while, I came to the
conclusion that most of the b-rep csg algorithms and ideas I was trying had preparation times that were worse than just
building the darn bsp tree. I implemented a bsp version and quickly realized that the speed hit is "ok". For those
objects above, which are reasonably complex triangle meshes, the (unoptimized) bsp tree construction came back really quickly.
It felt kind of weird to write a new bsp tree compiler just to do CSG, but a bsp tree is fundamentally a very useful structure,
so I'm sure I'll be using it for something else in the future anyway.
Until I find a better way to do CSG without bsp trees, I'll stick to this approach since it works well.
If you want to know more about my implementation, feel free to contact me.
|
 |
Sky System Demo
|
16 April 2000 (6:37am) - Sunday Morning
|
I had this vicious urge today to take a break from the engine's object code for a day and write up a new sky
system. Its not a big deal or anything, but I decided to post a demo of it anyway in case you wanted to
check out more than just a screenshot. Speaking of which, here's a shot of the new sky system in action:
The mountain in the shot is part of a static backdrop (not part of the real polygon world), and the sky
has an animated layer that scrolls by.
I'm still doing a little bit of fine-tuning, and the cloud artwork could use some work, but other than that,
it looks pretty decent animated. Check out the demo on the downloads page.
I'm now back to work on the things I talked about last time.
|
 |
New Screenshots & Job Search
|
14 April 2000 (11:20pm) - Friday Evening
|
Before I get on with the actual engine update, I must take a moment to rejoice because this school year
is very quickly coming to a close. *deep sigh*. Anyway, I'm currently
looking for a programming job (3D tech preferably, pretty much anywhere in the states), (hint hint :).
Ok, with that much out of my system, I'll continue. I took 2 new screenshots of some things I've been working on. First and foremost,
the engine's world editor that I've been writing is pretty much complete. Its fully functional, but there are still some small details I'm
wrapping up. I've been using it to create some interesting test worlds. I'm currently working on a new demo that
shows off some of the engine's features, including a much more interesting level. I don't know how long that will
take, but now that the editor's done, hopefully not too long. I might post some incremental versions here for people to test out.
Anyway, I made a simple room populated with some curvey geometry using some of the new modeling features
in the level editor, and took a screenshot to show you a bit of what it can do. I didn't throw in the lighting
yet, so it doesn't look as good as it will soon, but you can see the shot from within the engine, and also from
within the editor. Take a look:
As you can tell, in the first screenshot there's no lighting, and its only 1 room. But the cool thing about it is
that
pretty much everything you see in the shot is completely scalable. When the viewer is far away from the pillars and
arches, they can easily be re-tesselated with only a few polygons. The same works in reverse: when the user is close
to the objects, the polygon count increases to present much better looking scenery. The other interesting thing is that
with the level editor, there's a "furniture builder" (not shown in the screenshot), which helps create objects such as these,
with very little effort and many tuning options. I'm pretty happy with the system, and I might write a document about it when
I have some time.
Anyway, I hope you like the screenshots. I'll try to keep this page a little more up to date, but things are
a little difficult when running flipCode, finishing up the semester, coding my engine,
and not sleeping. Anyway, I'm off. More later.
Also, if you're interested in octrees, I wrote a mini-tutorial in my tech file.
|
 |
Few More Things
|
08 April 2000 (3:03am) - Saturday Morning
|
|
Just making a quick update. I've been updating my tech file
with a bit about the engine from time to time, rather than this page.
I'm working on a new demo, with a ton of new features, but most of the quiet time
for the engine has been due to me working on the level editor on and off for the past few weeks. The editor now supports
general polygon modeling/manipulating, curved surfaces, and something else I call "furniture". I'll be updating
this page (or my tech file) with a bit more on this as well as a few rendering optimizations I've
been thinking about.
I've been up to much with very few restful nights.
A lot of this time has also been spent working on some server changes and upcoming
features on flipCode.
Anyway, more later.
|
Previous Pages Of Update Entries:
February 2000
January 2000
December 1999
November 1999
 |
Screenshots For This Month:
|

copyright (c) 1999 kurt miller. all rights reserved.
|