- latest work
- screenshots
- downloads
- tutorials
- about me



intro: the grain engine is an experimental 3D engine that I'm developing independently to implement and work with several well known real-time 3D graphics techniques as well as to explore and develop various "new" ideas i have. grain is not a game. nor will it likely ever be "finished". its a testbed, a tool if you will, for my research. it may evolve into more than this eventually.


the grain engine - an experiment in 3D technology.
copyright (C) 1999 kurt miller.
  The New Plugins 17 November 1999 (7:56pm) - Wednesday Evening  
I just finished the plugin design for the transformation and rendering engine that I mentioned a while ago. I decided to go with a straight DLL plugin system rather than use COM. I'm currently filling in the code for the DLL, but I have to convert all my old code to DX7 (I'm still using 6.0). I'll try to whip up a silly little test demo (like some spinning objects or something) with the new system sometime soon. I'm excited because once I finish all this groundwork, new engine features should make their way in pretty rapidly. I'll likely pull another all-nighter and get the DLL out of the way.


  Few More Things 14 November 1999 (12:32am) - Early Sunday  
Things may appear to be rather slow on the engine front, but they're really not. I've been working at the new design and engine base quite a bit. Hopefully once I get all of the core code out of the way, then fill in the blanks, things will pick up much more rapidly. I believe I finally came up with a design that I like. It leaves the pipeline and renderer pluggable and can be implemented via COM or just vanilla DLLs. At this time, I'm strongly considering the latter. More later.


  3DS Conversion Tool 11 November 1999 (12:01pm) - Thursday Afternoon  
I was testing a few parts of my object engine and decided to rewrite and release a handy little utility which will convert a 3DS object to a modified .ASC format (text file). Why on earth would I do that when other modelers and conversion tools can already export ascii files? Well, I've never seen one that preserves the texture coordinates! How fun can that be? I believe the old 3D Studio for DOS had an ascii export which would write the texture coordinates, but who still uses that thing? If you do, then you won't need this utility.

Before anything else, credit where its due: The bulk of the 3DS loading code was adapted directly from a 3DS loader released by Jare of Iguana into the public domain. All credits to him for that. This program is basically just a front-end & exporter that works with his loader. Its rare that I ever work with other people's source code, but in this case I have no interest in wasting my time to learn all of the chunk specifics of the 3DS format, especially when all I want are the vertices and faces. That's pretty much the whole point of this program. The export format is extremely simple to work with or convert to your own format, and it preserves the texture coordinates at the vertices (if they're present in the object).

Anyway, I just thought it might be useful to someone. No big deal. I remember a while back, looking far and wide for a converter that would save out the bloody texture coordinates - with no success. If you're interested, grab it over on the downloads page.
                           

Download 3ds2asc.zip (25k)


  An Bit On Design & COM 10 November 1999 (11:39pm) - Late Wednesday  
I've been thinking long and hard about how exactly I want to restructure my engine's design. To be quite honest, one of the main influencing factors for making any changes in the first place has to do with the up and coming transformation and lighting hardware. Its sick to think how many people are going to get screwed when they realize that their engine is based entirely on their own software transformation pipeline. They'll of course gain nothing from the new hardware. So, what I decided, is that I want my entire transformation unit pluggable via COM. COM makes this very easy and intuitive. In fact, I want most portions of my engine pluggable so that the engine never really dies. I don't want to be redesigning the thing from the ground up in another few monthes. I'd like to do it the "right way" now and not have to worry about it again.

COM is one of those things that looks scary from a distance, but when you actually step up and wade through the crap, its really not difficult. My concern is not the implementation... its the design. My old design motto was just to keep things modular. This works pretty nicely, but when it comes to COM interfaces, I want large sections that do a lot of work rather than a bunch of little ones. I'm still working this out and I'm not sure if that's a great idea. I'll see.

On a somewhat related note, here are some links to some documents on engine/game design:
  • Designing a PC Game Engine by Bishop, Eberly, Whitted, & Others
  • The Cougar 3D Graphics Engine: Overview by Niklas Elmqvist
  • More on the design ideas later... must code some things now.


      The World As It Stands 09 November 1999 (2:01pm) - Monday Afternoon  
    Because I started the engine before this web site, its only logical that I explain where the engine currently is and what I plan to do next. But before that, let me tell you what this web site is for. The main reason I have this site up is to act as somewhat of a journal that I can look back on someday to see what I was working on when I was just a lad :). I hope, however, that you will gain something from reading some of my updates, tutorials, and/or viewing demos. From time to time I plan to post small pieces of code, tools, or descriptions of techniques, but I'm not planning on releasing the full source code to the engine (for now anyway). It changes way too much and I've got too much invested in it to actually give it away right now. By the way, this is the fifth version of the grain engine. If by some cosmic coincidence, you happened across the web site I had up for grain 3 (2 years ago), welcome back. In any event, that's what the site is for. Now for where I am...

    I started this site at this time in the engine's development because I'm currently re-structuring the whole thing. I'm essentially starting over, only not. The whole design is being reworked, but much of the code and tools are already written. The engine itself though, I'll be talking about pretty much, in effect, "from the start" as I try to work out an exceptional design. Anyway, I've got some work to do. I'll update again (with a real update and some screenshots from the tools) tonight.


      Screenshots For This Month:
    These are the screenshots for this month. Be sure to check out the rest of the screenshots here.
  • 11/09/1999 - Miscellaneous Engine Tools






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