The Animal Farm

September 22nd, 2008

I’m Published Again!

A professor sent me this a while ago, but I forgot to mention it:

The paper “Hardware Accelerated Per-Texel Ambient Occlusion Mapping” was accepted into the 4th International Symposium on Visual Computing. I’m glad to see the paper go on to do something. Once I scrounge up the PDFs, I’ll put this, my paper with Smirnov, and my thesis in the writing section.

Meanwhile, I found a significant number of articles by some of the key people responsible for Spore’s mesh deformation/animation systems. I had half a mind to play around with implementing something until I read the papers; long story short, it’s not a weekend project. There are large sections of math in there that I just don’t understand, and getting to the point where I could read the papers competently would be a not-insignificant undertaking in itself. Which is not to say that I won’t stubbornly try, but you certainly won’t see any results for some time. In the meantime, I’ve got some ideas for a procedural building editor that I think are worth prototyping.

Oh, I’ve had this talk before. You’re marrying mother.

September 17th, 2008

Spore… and stuff

I’m at work waiting for some installers to finish, so I’ve got some time.

I picked up Spore for the PC the other day. Mostly overhyped, but still a solid game. It does some great things with procedural content generation that make me wonder. The procedural animation system, for instance, is pretty impressive. The procedural painting is neat too, though the more I toss it around in my head the more I come up with ideas on how to do it. The building generator is considerably more user-friendly than anything I developed in my research (or, for that matter, CityEngine).

Gameplay-wise, it follows a very simplified format until you get into space. Basically, you can make friends, or you can make war. Throughout the stages (Amoeba->Creature->Tribe->Civilization->Space), the methods by which you make these friends or kill these creatures changes, but the fundamental goals remain the same. Which is probably good - it makes for a coherent package as opposed to a smattering of little games. When you get to space, things open up a bit - the primary goal is still to either form alliances or destroy things, but you’ve got a lot more variety in how you accomplish this.

The game is sucking down a lot of my gaming time and making me wish it were multiplayer so I could get Bri in on it (she’ll play games with me, but I’m not going to neglect her while I play games myself). Spore and TF2 are the only PC games I’ve bothered with in a while.

I’ve been dying to do some personal programming, but I haven’t been able to find an opportunity. I have a game in mind, but I also have some procedural generation stuff I want to play with, and I’m also considering flexing my graphics skills to put together a fancy tech demo. Choices.

Every time you come by, you’ve got bad news.

September 12th, 2008


It’s the rare individual who will stop on the sidewalk at 10:30 at night to listen to a hip-hop/rap artist while he pushes his latest CD. But I did, and I went so far as to buy a copy, and it’s actually pretty decent.

Did I get scammed? I don’t know. I’ve googled a few of the lyrics, and I can’t find any of them online, which works in his favor (he did say it wasn’t online or in stores). The voice on the CD doesn’t sound like the voice of the man that sold it to me, but there are a lot of voices on the CD, and at any rate that means very little when talking about music.

Whatever. I’m not going to worry about it. I didn’t pay much for it, and it’s a pretty fun 12 track piece. If you see a person calling himself ET wandering around Chapel Hill, give him a listen.

News for the people

September 10th, 2008

Good news, everyone

I mentioned earlier that my WoW account got hacked.  This really means I had a keylogging program installed on my computer behind my back, which meant I needed to clean it.  Now, I ran the usual spybot and adaware, but I still felt a little nervous about having a potential keylogger on my machine.  I mean, if it was there, I could be giving up my credit card numbers and access to my bank account, not good at all.

So I went out and bought a 250gb external hard drive(overkill, but it is the smallest they had), and copied over anything I cared about to it.  I then pulled out the Windows recovery cd and started the format.  About 15 minutes in, the monitor claimed it was doing nothing and went to sleep.. and I couldn’t wake it up.  So I restarted, did the NTFS(quick) reformat, and started installing Windows, same thing happened.  Let it go, waited an hour, restarted.  Windows installed, so I started reinstalling drivers, I started to install the graphics drivers when the monitor shut off and I smelled burning plastic or rubber.  Panicking, I turned off the computer, opened it, and felt the heat of a thousand suns coming from my graphics card.  I used an oven mit to remove it, this thing was cooked(puts pun gun away).

The nice thing about my computer is that without a graphics card, I have no way of hooking a monitor up to it, so I have to wait until I go home to get my old graphics card to see if the computer still freaking works at all.  Also, it is about 36ish days since I bought the thing, which means Best Buy probably won’t let me exchange it, I am sure as hell going to try though.


P.S. USB 2.0 External harddrives freaking rock, shoulda got one a LONG time ago.  110gb of stuff in under an hour copied to that thing.

This box contains our own universe.

September 7th, 2008

Let’s Get Physical

Today I was playing with one of our demos at work, trying to work out whether the physics stuff I was seeing was a bug or expected behavior. Physics has always been one of those things I’ve been interested in, but my mathematical ability places something of a barrier on me. I understand a good many of the concepts, but once you start talking complicated solvers or Navier-Stokes I get a bit dizzy.

Andy J dropped in and we chatted a little. He asked me if we were using any kind of acceleration structure (ala an Octtree) to accelerate physics; I didn’t know and still don’t, but now that I’ve had time to think the problem through more, I rather doubt it.

In regards to collision with terrain, if you’ve got the position of an entity, its velocity, and a bounding sphere, you can work out a set of ‘candidate triangles’ for a heightmap-based terrain by projecting those over the heightmap and building a list of all the possible triangles that entity could hit that frame. This can be really slow for large objects or objects moving quickly along the X & Z axes. As for large objects, I don’t see any alternative - the larger an object is, the more space you have to check for a collision. And fast moving objects are often problematic for collision systems.

An (loose) octtree or something similar might help for entity-entity collision - which may have been the gist of Andy’s question in the first place - but there are better alternatives we talked about. He mentioned something involving hashing which I really don’t know anything about, but I might probe him tomorrow for more info. The method we both were familiar with was one where you sort all your entities initially by their position/extents in space, such that when you need to test for collision you only need to check some immediate neighbors in the list, and you keep them sorted using a linear sorting algorithm (bubble, insertion). If you think it through, it’s rather elegant - objects tend to rearrange themselves in the list rather slowly between frames, and you typically only end up swapping a couple neighboring objects when something moves. Again, this method breaks down with fast-moving objects. If you have a bunch of fast-moving objects, you have to do more and more resorting.

I’d like to know how people are solving the fast-moving object problem. It seems like there’s no clear solution - the more something moves in a frame, the larger the number of things that must be checked for collision. But then, I’m not a domain expert, and most of my knowledge in the area comes from forum posts and the couple of books I own.

At any rate, I think physics packages are one of the places where middleware is really shining. Havok, PhysX, Tokomak, Bullet, Newton. There are a lot of strong packages out there that meet different requirements (price, hardware acceleration, rigid-body vs soft-body, fluid dynamics). More importantly, none of them require domain experts to be useful - having a degree in Physics is nice, but you can get a lot out of any of those systems with a passing familiarity with the concepts. Considering all the challenges associated with the domain, it’s great to be able to integrate these well-established, heavily tested, and often free solutions.

This trick is really easy, and nobody will be able to tell how you did it.

September 5th, 2008

Funny Event

I have to use an escalator every day on my way to work. Every day I get off the Metro and walk to the right escalator and ride it down to the ground. This has been this way every day since I started working here. Well, for some odd reason, today they swapped the directions of the escalators like it was Coconut Mall or something.

I was a little disoriented and trying to remember if the escalators were always this way or that they did indeed swap them, but then I watched people at the ground level running up to the wrong escalator and nearly falling when they try to stop and realize it was going the wrong way. In the time it took me to ride the thing down to the ground I watched about 5 people doing this. It was pretty funny.

Side note: I never can understand why people insist on running from the Metro turnstyles to, and up, the escalators to catch the arriving train they need when trains run every three minutes. I mean, do you have your morning routine so tied down that three minutes will break it?


P.S. WoW account still hacked.

It was funny to me, anway.

September 2nd, 2008

Programming and Japanese

I think I want to end the “topic and topic” thread titles, but I just can’t.

My WoW account got hacked the other night.  The hacker took all of my gold and most of my bag/bank contents.  They did not take any of my equipped gear, however, which means I could still play if I wanted to.  One of the things I really enjoy about WoW is the collecting of the vanity items, however, and knowing that the hacker took two of my rarer ones and sold them kind of puts a sour taste in my mouth and removes my desire to play.  I just got an email today saying that Blizzard will email me in 10-14 days to tell me they are starting the investigation into my account to see if I was really hacked or that I am trying to one-over them.  I am hoping it does not take that long, but I will be in Canada around that time anyway.

Oh yes, I am going to Canada on a fishing trip with my father, brother, cousin, and friend of the family on Sept 12.  We planned this a long time ago, probably more than 6 mos. and I have to say I am really excited now that it is coming very close. End tangent.

The WoW story was meant as a leeway into the fact that I started programming for fun again.  Nothing too major, just a few architecture changes that are going to require me alter a they way my GUI components are managed.  I think I like this stuff more than actual content generation anyhow, so it is pretty fun.  I can never seem to handle playing video games and programming at the same time.  What I mean is I have trouble attempting to divide my free time between both.  I generally end up just focusing on one until I am burnt out and then focusing on the other.  It works out, normally.  The main problem this go around was that I wasn’t getting tired of WoW any time soon and the expansion was rearing its glorious, rotting head.  I know when the expansion comes out, for at least a couple of months no other leisurely activities will occupy my time.  Still though, I was getting that itch to start developing again.  With the account hacking, I now have at least a couple of weeks window to mess around.

The other topic: Japanese.  I think I want to get back into learning the language again.  I generally feel pretty awful about the way I stopped learning and practicing entirely once I left class and I want to try and get back into it.  I know the DS has some language learning tools similar to Brain Age.  I looked into it and currently they have French, Spanish, and Chinese.  It turns out they are releasing Japanese near the end of this month(win!). Sorry about the GameStop links, I’m not trying to sell anything, its just that GameStop was already open in my browser.  At any rate, I am pretty excited about it and hope it is as good as the people at say French and Spanish are.

We got word today that the Camry is totaled.  The insurance agent said after they assessed 18k in damages they stopped looking for more problems.  While I am glad it is totaled, since we don’t have to worry about selling it with a bad accident in its history, I really liked the car.  We only had it for a month or so, but I really liked the way it looked and drove.  I don’t think we will be getting another Camry since we got lucky with that one at the dealer, let’s just hope we can get what we paid for it from the insurance company so we don’t have to make two car payments.