What it does: This is just a little program that draws 3D fireworks on the screen.
You can change your viewpoint in 3D space by moving the mouse.
A few notes:
This is basically an alpha release. It only has minimal features.
It may or may not work on your system. It may or may not destroy your
system. Use at your own risk.
The file is a zipped Windows executable. You should just be able to click
and run.
Features: What it has: True
multithreading - UI and graphics are on separate threads Mutliple
colors - each burst starts out one coler and changes to another True
physics model - The velocity of particles slows via an inverse square
function or something ? Multiple
simultaneous bursts - convenient
backface culling - by keeping track of where the user is, we only draw
the poly's that face the user. This means we draw 1/3 the poly's we would
otherwise. With over 2,000 poly's per burst, this is a tremendous improvement
in efficiency.
What it doesn't have: sound
- ready but not implemented different
types of bursts - ready, but not implemented true
3D movement (only 2D movement right now) - quaternians? fullscreen
mode to improve performance - shouldn't be too hard a
bunch of other stuff I want to add...
About performance:
It runs in an 800x600 window, which might mean slow execution for some
Right now, all you can do is move the mouse and your viewpoint should
change.
I ran this on my home machine and it runs like a charm, 800x600 window
on a 1600x1200 desktop, easily over 100fps. I run Win2k and use a Matrox
G400 graphics card.
I tried it on my other box, a 450MHz celeron and it was pretty choppy,
about 20fps but I did have Gnotella running in the background.
Again, your miileage may vary.
I would like to offer special thanks to:
Jeff Molofee of NeHe - best
OpenGL tutorials anywhere!
and
Richard S Wright Jr & Michael Sweet - coauthors of OpenGL
SuperBible
Without their help I would still be scratching my head trying to draw
first polygon.
Now you're really on your own. I will not take any responsibility for
anything that happens with this code. Remember you have to set your compiler
to enable multithreading & stuff...
Just
a mini-update. Needless to say, I've got multiple bursts working...
Right now, they're all the same type and size, but it shouldn't be too
tough fixing that...
Click the screen shot to the left for a bigger image (640x480 jpg, 58kB).
As you can see, the framerate is a "hurtin" 50 or so fps, but
keep in mind the theoretical max with the 10 msec sleep call in there
is 100fps and I'm still doing all the physics in the rendering function
(I know...).
Another fireworks update
05/27 - 04:16
The
fireworks program is coming along very nicely. I've solved every problem
I've encountered so far. It's still in early development, but here's what
I have done versus what I have yet to do: Done:
physics engine
multi-color bursts (e.g. initially all particles are red, then they all
turn blue)
mutlithreaded framework
particle emitter velocity changes (non-linearly) with time
decent framerate so far - runs at 99+ fps at 800x600 windowed with a 10
msec sleep call each render pass
Not Done:
Multiple simultaneous bursts (many different bursts on screen at once)
... and different burst types
Move physics to one thread, GL rendering to the other thread
Make the particles truly 3d (right now they're just a flat square viewed
from the front)
Allow the user to change (pan, tilt, rotate) the viewpoint
add sound - shouldn't be a problem, I had sound working in my previous
version
... lots more stuff I haven't even gotten around to thinking about yet...
Anyway, stay tuned for more on the fireworks front. I really would like
to get something decent done by the 4th of July, you know...
btw - my world famous web site, Tweak
Central celebrates its three year anniversay on Monday, so drop
on by if you haven't yet. I whipped up a cake and everything!
Resume no longer available online
05/22 - 16:09
I have taken my resume offline. From now on, I will give it out
on a case-by-case basis. The reasoning behind the move is that I have
been told that some unscrupulous "recruiters" will get ahold
of an individual's resume and proceed to submit it without their consent
to a number of companies, making it no longer possible for that individual
to apply to those companies. We don't want that to happen now, do we.
If you would like a copy of my resume, please
and I will be happy to send one to you, providing you are not "unscrupulous".
ps. - I have simply renamed the resume files, so if you ARE unscrupulous,
but clever, you could probably still obtain my resume without my persmission
- just a side note.
btw - the fireworks program is coming along nicely. I have "ported"
(read copy-pasted) it into a multithreaded shell and it's now running
on two threads. It looks pretty good. I have bursts that change color
and different shaped bursts. Right now I'm working on moving it from a
lame (no offense to Jeff Molofee) render-based timing model to a true
physics based timing-deal. I don't know, I just like physics. This will
allow bursts that change speed and have acceleration that varies... fun
stuff. Right now, if the speed looks "kinda hokey".
Stuff like wind (done) and bursts within bursts are coming...
Back to fireworks...
05/17 - 04:58
I
got a little burnt out on 3D modeling, so I'm back to OpenGL coding. I
want to get my "fireworks" program working again, so I started
over from scratch. I'm actually borrowing heavily from NeHe's
excellent particle
engine tutorial, but I don't think Jeff
Molofee will mind.
I'm having a fair bit of success, too. I could never get a realistic shell
burst, but as you can see, I've got that down pat. I have a lot of work
to do, but I got an idea today of a fireworks "construction set"
where the user could perhaps choose color, size, altitude and orchestrate
their own fireworks show?
We'll see if I can get that far...
Click either of the screen-shots above for an 800x600 version... Those
images don't do it justice, it actually looks pretty cool with all the
particles moving around. Stay tuned...
btw - Firaxis updated their CivIII
web site. The game looks pretty cool (for raster (2D) graphics, cough).
It's time for a slightly more complex model. This time I chose the Supermarine
Spitfire (one of my personal favorites). It's not completely finished,
but you can see what's up. Check it out in the gallery.
I just completed (gave up on) my first 3D model mesh based 3D model. The
3D models I've done in the past were all based on geometric shapes. This
one I made from scratch using plain-old meshes. It's a Messerschmitt Me163
"Komet" rocket fighter from World War II. I chose this model
because it was the simplest vehicle I could find.
Take a look in the gallery.
I also need to do a user-interface (read menus and junk) but I have a
few options I'm looking at. The prime choice right now is "fulltick",
but Romka
has a UI library, and I'm not ruling out whipping up my own, or laming-out
and using win32 windows.
I have some more 3D stuff I've done... maybe I'll slap that up in the
gallery soon...
Not much going on lately...
03/29 - 04:33
How's everyone doing?
I've been putting off development on my game
(Impera) since I got a stray hair up my... anyway, I got this idea
of using 3D models for units (guys, tanks, boats ..etc). My previous idea
was using lame flat tiles that always faced the viewer. But now I'm thinking
that I will just steal a 3D OpenGL
model loader and make the models in 3DSMax or whatever modeler. LoneRunner,
I'm talkin' to you. How cool would that be? A true 3D turn-based strategy
game. No raster graphics here. <cough> Civ3
<cough>
And for the past two days I've revived the old fireworks
program I was working on last summer. I thought it would be a good
challenge to figure out the last startburst pattern I could never get.
This is a picture of a prototype of a single particle generator (particle
generators are easy, right?). But what I want to do is explode a few dozen
(or hundred) of these suckers and see what happens. I always thought that
would be a cool (realistic?) effect but I could never get it right.
Stay tuned...
Home page updated
01/22 - 05:54
I updated this page a bit. I put a menu at the top to make it easier
to navigate.
I have put up a simple page with some of the images I've made with 3D
StudioMax R3. There are only small (256x) images right now, but I will
put up some "big" (well, 1600x1200 )
images up somewhere for you to download soon.
Anyway, it's gallery.htm if you want to take
a peek.
I
have created a source page to showcase some programs
I have written recently. I will try to put some more examples in there
soon. I also plan to have a "gallery" page to showcase some
art I have done. As always, if you would like more samples,
.
The program I put in there is my 3D object manipulation program. I've
also included a Win32 executable. Check out the source
page for a description of what it does.
Text version of resume available
12/01 - 00:49
Text
version of resume available. Please feel free to take a look. I'm
right in the middle of getting ready to finish school, so I don't haven't
had a chance to updated the pdf and html versions, but I will soon. (And
by soon I mean 12/15 when school gets out).
I just finished my cs480 (computer graphics in OpenGL) project. I will
put an executable up soon and source will be available after 12/08.
Lake Whatcom independent-study project sneak-peak
11/15 - 23:40
I don't think I'm violating any NDA's by offering you a sneak-peak into
what I'm up against.
There it is. That's just black-and-white output of the program, but eventually
(soon?) I will have a three dimensional model of the lake that we can
just slap in a 3D viewer (that is already done). By using the 3D viewer,
users can view any part of the lake, and will be able to tranlsate, rotate
and zoom to view the lake from various angles and positions. I also plan
to implement a way in which to specify the region to view and the resolution
(the above image was made with grid points 30m apart).
Background:
Working with one of the Computer Science professors, I am taking a raw-data
file with over 330,000 data points and a file of data-points describing
the shoreline and creating a 3D model. The program creates a gridded map
based on the user's preferences and then interpolates grid point depths
from the actual real-world data. This gridded map is then turned into
a 3D model.
Here
is a page with more detailed information about Lake Whatcom.
What I'm working on now:
11/04 - 12:29
Currently, I'm learning the following:
more
OpenGL/C++ programming Perl5
/ CGI PHP4
/ web DB interaction Lake
Whatcom project for independent study (details to be posted shortly)
Page overhaul
10/21 - 02:17
I redid my personal page. I added the 3D logo and simplified things a
bit. Made it look a bit more professional.
I want to get source and images up soon. Don't hold your breath though:
I've been pretty busy.