Sunday, December 16, 2007

The semester is over now, I've submitted my final grades, and I attended the College of Engineering graduation ceremony yesterday. My major task this week was meeting with groups from my game programming class and quizzing them about their games. Here's a picture of some of them hard at work in the lab:

The games from the class look pretty good this semester, given that Max scheduled the Art class at a totally different time without notifying me. See I worked on the LARC home page this week too, a test version is up at I plan to make the slideshow images larger and to work on the code more to make it work in Mozilla. The Mozilla-specific code that I have in place now for the slide transitions doesn't seem to work as advertized. It works great for IE, but that's no surprise.

Sunday, December 09, 2007

This week was Dead Week at UNT, the last week of classes. On Monday the Undergraduate Committee of the Department of Computer Science & Engineering approved my request for two new game programming classes. On Tuesday we had the game contest in my Game Programming class with judges from Terminal Reality. Wednesday and Thursday I updated my web page,, learning some Javascript along the way.

Friday was my wife's birthday, so I took the day off. I worked on updating the LARC webpage over the weekend to make up the time. It will have a Javascript slideshow.

My wife was hospitalized early this week for a day with a suspected heart attack. We're still not sure. She goes for a stress test early next week. Fingers crossed.

Saturday, December 01, 2007

The damn toilet upstairs overflowed this morning, sending water in a steady drip out the kitchen ceiling.

I ripped up the carpeting in the toilet and attempted to dry it out with a heater and a large fan. (What idiot puts carpet in a toilet? Don't ask me. The house was this way when we bought it.)

While uploading images from my camera I came across an old one of my wife's dog after Kate spilled chocolate milk on him this summer. He's naturally brown and white to begin with, but those stains on his back are not natural.

What, me worry?
Thoughts on research and teaching.

A new PhD student, Jonathon Doran, will be joining me in January. He pointed out that my UNT webpage hasn't been kept up-to-date recently about my game development research. In fact, it looks like not much is going on. He's right, my former PhD student Tim Roden used to say the same thing.

So this week I put together a new research webpage here. I'm not totally finished, this is the first draft.

On Monday my request for new game development classes goes before the Undergraduate Committee of the Dept. of Computer Science & Engineering. This is just the first step of a multi-committee process. I'm proposing a new class on Game Math and Physics, and a new topics class for game dev students. Once this process gets started I'll work on the Game Programming certificate that the Dean wants. On the plus side, my requests for graduate level classes were apparently approved. I need to work on a new website for the teaching side of my work too.
November 15-18, 2007 we had a colleague of mine from Sweden, Mary Sheeran of Chalmers University, come visit us in Texas. On the weekend we took her to the Japanese Gardens in Fort Worth. I didn't manage to get any decent pictures of Mary, but these are my favorite ones from that trip.

Tuesday, November 13, 2007

I made some major progress on Zack today. Firstly, I fixed the vertical jitter. It was due to the fact that the camera runs asynchronously and I made the mistake of zeroing out the height array on each video frame before computing new height values. Naturally the game rendering thread sometimes saw a zeroed out array, depending on where the video thread got interrupted.

I also made a first cut on some physics. Notice the new background setup, I can now pull the video camera further back.

Friday, November 09, 2007

I've been working on getting Zack, my virtual character, to turn more smoothly using an animation sequence from the artist. That involved making a bunch of the code into real code, as opposed to held together with chewing gum and barbed wire as in the last video I posted. I also found that the edge recognition works better with a black background. I think that with another day's work it should be a solid enough foundation on which to build a cool demo.

Wednesday, November 07, 2007

Interacting with a Virtual Character

Now I now have a virtual character who will interact with you in a simplistic way. He doesn't like heights, so he walks back and forth between drop-offs. You can use your hand to help him from place to place, as you can see on the video. There are still some height glitches, as you can see when I carry him from the left side of the pit to the right side, so I'm not claiming it's perfect, but it's still pretty cool.

My Fan Club

Yesterday I had 4 (count them, 4) 120mm fans installed into Metalwolf. It looks impressive, almost the entire left wall of the case (the left side of the image above) is now made up of fans. So far today (touch wood) it seems to be running a lot cooler. Fingers crossed!

Monday, November 05, 2007

Merging the Real and Virtual Worlds

For the last few weeks I've been messing around on a project with renowned digital media artist Max Kazemzadeh of the College of Visual Arts and Design (COVAD) at UNT to merge the real and virtual worlds. I've written an app that takes input from a webcamera using DirectShow and combines it with animation using DirectX. The final output is run through a pixel shader. The video above shows a character who walks from left to right across the screen across a line defined by the video input, in this case the edge of a magenta cut-out on a green background.

There are various toolsets around for doing this sort of thing, but I wanted the challenge of making one myself. I'm kind of obsessive that way. I want to know how it works under the hood.

The challenge is not just getting it done, but getting it to run at a decent frame rate, keeping in mind that the video camera delivers input at about 24fps, while the graphic card can in principle render at 60fps when tied to the vertical retrace. The result runs at about 30fps on my old 2GHz Toshiba laptop (shown) and upwards of 50fps on Metalwolf, my quad-core heat-generating monster uber-desktop, currently down for graphics-card melting repairs.

Wednesday, October 31, 2007

I almost forgot, it's Halloween tonight! I know it's hokey, but I've got a great Jack Sparrow costume. Click on the image to see a larger version. Arrrrr!

Yesterday I learned something. It's not a good idea to sandwich an Nvidia 5300 graphics card between two Nvidia 8800 GTX cards. This results in the passively-cooled 5300 becoming so hot that it melts solder. Look at the melted solder in the image above. Cool. Mind you, the rest of my computer is smokin' hot too, quad core, 4GB of RAM, 2.25 TB of HD.

So today I spent pretty much the whole day reorganizing my office so the Monster can sit beside my desk instead of under it, with better airflow all round. Of course, if I had a decent size office I could have done it in a flash, but that's what comes of being a state employee in a university that puts image (look at how parsimonious we are) before substance (meaning an office that's actually more functional than a hamster cage). Also I have too many cables, that might have something to do with it.