We can count on one hand the number of times that we haven’t needed a coat on Halloween night around here. Even if it was fair and sunny the day before, you can count on Halloween being appropriately windy, cold, and spooky. Trick-or-treating only keeps a kid so warm, and we would have loved to happen upon a house with a spider-stomping sugar-burning good time of a game going on in the driveway.
[Kyle Maas] built this game a few years ago, and it has proved quite popular ever since. It’s so popular, in fact, that they have to have someone on duty with a vaudeville hook to yank spectators off the playing field. The point is to stomp as many spiders as you can in a set amount of time, though you only need to stomp one to win. It can handle one to four players, depending on the size of the projection, but [Kyle] says it’s kind of hard to track more than two at a time.
The setup is fairly simple, provided you can reliably affix your projector to something sturdy. [Kyle] used a Structure sensor for the 3D scanner, but you could easily use a Kinect instead. Conversely, the calibration was challenging. [Kyle] ended up using a DSP math trick known as the inverse bilinear transform to be able to calibrate the system using the 3D scanner itself.
If you’re more into scaring the children, just rig up a coffin bell. Either way, don’t forget about our Halloween Hackfest contest, running now through Monday, October 11th. There are more details over on IO. While you’re there, why not check out the list of entries?
We should teach kids to squash bugs, not spiders.
… it’s a game …
Don’t kill bugs either.
Squash ghosts!!!
Squash farmers who spray pesticides, if you want to really make a pro-insect (or pro-arachnid) change in the world.
But it’s also just a game. And despite my years of playing games, I don’t think it’s ok to hit real moles on the heads with mallets or to sink actual battleships.
So I’m going with OK to squash video spiders as well. Real ones should be moved outside where they can get something to eat. The issue of real farmers and real pesticides is a little more complex.
Guess what? Spiders eat (read: need) bugs. Like mosquitoes and stuff…
Spiders reproduce by thousands, as do most insects. Squashing a few, isn’t going to make them extinct… Most were here, long before man could walk on hind legs. Though most spiders aren’t venomous, they all inject digestive enzymes. Some do powerful damage to tissue. We aren’t food, but we can get ‘bit’, unintentionally. Plenty of room for bugs to live and breed, in the ‘wild’ places. We don’t need them in, or around our homes.
If there are spiders in your home, it’s because they are finding a food source. Eliminate the spiders, the food source population will grow, possibly to infestation. Better to leave them be. When the food source dies off, so will the spiders.
We never smash or relocate spiders inside our house, with one exception: Black Widows. Those we move out to the garage or somewhere on the exterior near the house. They love to eat crickets and cockroaches.
But those six-legged cartoon spiders that vanish in a magic POOF cloud when you stomp on them are THE WORST!
I´m doing my part!
The calibration part of this was by far the most difficult part to implement. I knew how I wanted it to operate, but doing a generalized inverse bilinear transform to try to remap the 3D points from OpenNI back to the calibrated playfield area (and do it in a way that yielded reasonable performance) was a massive pain to figure out. In the end, it works quite well and is easy to use, but it was really pushing my math skills. There’s more optimization that could be done, but eh, it was good enough to work.
Also didn’t help that this is the first thing I’d ever written in Processing, so that took some getting used to, so please forgive the non-idiomatic coding style. The Processing interface for OpenNI looked both more stable and better documented than the equivalent C/C++ functionality at the time, so it was easier to just try to pick up a new language. But a determined Real Programmer can write C/C++ programs in any language, right?
I’ve used this for several years now, and the second year when I pulled it out of storage, it really surprised me how well it worked to just fire it up again. I often expect that older programs, particularly when not compiled with static libraries, will experience some incompatibility with updated versions of things without some additional work. But that has not yet been the case with this program, so there’s a good possibility it will be easily replicated on other systems without too much tweaking.
At any rate, hopefully someone else will enjoy this and turn it into something a little more professional than what I was able to hack together! Good luck, and please be sure to file a bug if you have any problems!
File a bug, so that Kyle can stomp it…