Monday, December 22, 2008

Boring Progress

Tonight I got the keyboard input to work with my CyberTable solution. Keyboard input worked in Battle Kart prior to the Ogre version upgrade, but now with Ogre 1.6.0 input is handled a little differently. Mouse input should be pretty easy to implement now that I have the keyboard working.

My next task is stripping down the cybertable project so that it basically loads up a level on startup. This will allow me to mockup a level in maya, export it, and load it up in game quickly.

I am still pretty pissed that CEGUI doesn't currently work, because I had an awesome gui system setup in Battle Kart that would allow me to prototype quickly and see output easily.

Saturday, December 20, 2008

Laid Off

So last Tuesday (12/16/08) I got laid off. I worked at Midway Games - Chicago and they laid off about 150 people from the studio. Midway has been a sinking ship for some time, but I was definitely caught off guard by being laid off right before Christmas. Bummer.

Anyways, I just got the the Ogre .scene exporter working for Maya. This will allow me to create levels in Maya and export them to .scene files with physics information attached. The .scene file just contains the positions, orientations, and physics info on different meshes.

Next I am going to copy Battle Kart to a new solution and gut it so that it just loads a .scene file straight up. Once I have this solution setup, I can start working on the CyberTable specific stuff and run tests with different scenes.

Monday, December 15, 2008

Sometimes It Just Feels Good To Win One

Yesterday, I was able to accomplish some really important tasks without too much frustration:
- Install Adobe Photoshop CS3
- Install Maya Unlimited 7.0.1
- Install FaceAPI
- Convert Battle Kart to compile/run with the newest OgreSDK (somewhat gimped)

Accomplishing these items definitely felt great, especially after Saturday's nauseating drama. I tried out the FaceAPI example apps, which compiled without fuss, and they worked brillantly. My only concern with FaceAPI is if it can identify a face that is beyond 3 feet away.

I'm really excited to have Maya installed because that will allow me to create levels and objects to test with. The next thing I will probably do is hookup the Ogre scene exporter that has Newton physics integration. The scene exporter was made by a member of the Ogre community, but I tweaked it so that it could export physics material info.

To recap, here is my remaining task list:
- Copy the gimped Battle Kart project to a new CyberTable project
- Gut CyberTable project code so that it can easily load up a level
- Install Maya .scene exporter
- Install PS Eyetoy as Webcam
- Install AR Toolkit
- Compile AR Toolkit in VS 2005 to get 2005 version libs
- Compile Mr. Planet in VS 2005 to get 2005 version libs
- Fix Flipped Webcam image problem

Sunday, December 14, 2008

A Weekend of Work


This weekend I spent a great deal of time working on the CyberTable. I have been taking my Battle Kart project from college and trying to update it to Ogre 1.6.0 Shaggoth. This caused a plethora of problems. I had to comment out all of the keyboard functionality and comment out all of the graphical user interface code. I also had to download the Newton SDK and the OgreNewt solution so that I could link the newest Ogre and Newton.

The CEGUI (crazy eddie's graphical user interface) stuff really pissed me off because it worked so well in Battle Kart. When I had to update to the new Ogre, the CEGUI .dll's that I had no longer worked because they were not linked against Ogre 1.6.0. As of right now none of the gui stuff that I had in Battle Kart works, which could make things difficult going forward.
Anyways, this weekend was stressful and frustrating because I was doing all of the tedius BS that is required when setting up a project. Going forward I will be stripping down Battle Kart to its bare essentials. My starting point will be a code base where I can easily get a level loaded from Maya. Then I can start working on the new tech for the project.

Friday, December 12, 2008

Bitter Sweet

Last night I was able to make some head way:

- Install XBox360 Controllers
- Test Battle Kart to ensure that my games work on my new system

The sweet part is that after a few hours of painstakingly removing errors caused by the transition to Ogre 1.6.0, I finally got the game to compile. At that point I got all jazzed up because I thought everything was good to go.

The bitter part is that there were errors when I tried to boot the game. At first there were problems with OgreMain.dll, but those were remedied by copying over the new .dll's from the SDK into my project's bin folder. After that there was a problem with the CEGUI.dll. At that point it was around 1am and I had to go to bed for work in the morning.

Unfortunately this task still stands:
- Convert Battle Kart to compile/run with the newest OgreSDK



Thursday, December 11, 2008

Frustration!

So after a few days of being busy with other stuff (my company potentially closing down), I got some time to work on the CyberTable.

Last night I completed these tasks:

- Install Visual Studio 2005
- Install Latest OgreSDK
- Install DirectX SDK

Let me say that Vista sucks! I couldn't even compile the example Ogre apps because the damn OS would not give Visual Studio the ability to write files when building. I had to waste a half hour online to figure out that I needed to set "open as Administrator" in the properties tab of the VS devenv.exe. WTF?
I am really not impressed with Vista so far. The graphics are nice, but the constant barrage of questions about everything sucks hard. I knew that starting this project on a new machine would be difficult so I am just going to have to grin and bear it.
Next on my agenda:

- Install XBox360 Controllers
- Test Battle Kart to ensure that my games work on my new system
- Convert Battle Kart to compile/run with the newest OgreSDK

Wednesday, December 10, 2008

FaceApi

I found this kick ass system called FaceApi made by Seeing Machines. It looks like it does pretty advanced head tracking using only a webcam. I looked at their website and I guess the license is free provided that it is being used for a non-commercial hobby project, which I would be using it for.

Cool Projector Project

Here is a cool project that I found a while ago. Like my project it uses top down projection, Ogre for rendering, and overhead cameras. Definitely a cool project.

He is the website for the company and here is the showcase thread on the Ogre Forums.

Monday, December 8, 2008

Laptop Has Arrived

Alright so after 5 days, I finally have my laptop that was supposed to come with next day delivery.

The screen is only 15.4", but its way bigger than I expected. I had to go through about an hour of setup time. I also had to download new video drivers because the only available refresh rate was 18 hertz.

I am installing Visual Studio 2005 right now. In the next couple of days I will be installing all of the needed software.

Friday, December 5, 2008

Head Tracking

So I was originally going to do a home brew head tracking solution ala Johnny Lee (see Wii Head Tracking vid below), but now I am considering using TrackIR which is a consumer product that I can buy for around $100. The big problem with using TrackIR is that I don't know how my program would interface with it. Perhaps there is an SDK that comes along with it. I will have to research further.

Wii Head Tracking

TrackIR

Thursday, December 4, 2008

Laptops Away!

I sent a bitchy email to NewEgg and I finally got confirmation that my order has gone through. Ideally my laptop would arrive tomorrow, but I doubt it. Once I get my laptop I have to get setup for development. This involves:

- Install Visual Studio 2005
- Install Latest OgreSDK
- Install DirectX SDK
- Install XBox360 Controllers
- Test Battle Kart to ensure that my games work on my new system
- Convert Battle Kart to compile/run with the newest OgreSDK
- Install PS Eyetoy as Webcam
- Install AR Toolkit
- Compile AR Toolkit in VS 2005 to get 2005 version libs
- Compile Mr. Planet in VS 2005 to get 2005 version libs
- Fix Flipped Webcam image problem
- Install Maya
- Install Photoshop

After these steps are completed I will be able to start integrating the relevant AR Toolkit and Mr. Planet code into a new CyberTable project solution. That solution will be a hollowed out version of Battle Kart. This will work well because it will already be setup to load maya scene files. Not to mention it will have Newton physics integrated as well!

This will be a lot of work to get to the starting line, but I believe this is a kick ass project and I am ready to get going!

New Laptop Debacle

Yesterday I ordered my laptop from NewEgg.com. I got an email saying that my card was declined so I checked to see that I had the available credit and that my info was entered correctly. I resubmitted and got the same "card declined" email. I called citi and they said that the purchase was flagged and that if I tried again the purchase would go through.

I reordered the laptop, but this time I got an email that my address did not match the one on file at citi. I wanted the laptop shipped to my work address so I had to call citi again and have them put down my work address as a valid alternative to my billing address.

I live chatted with someone at NewEgg and she said that she would have the bank called again so that the order would go through. Three hours passed with no word from NewEgg so I live chatted someone again for answers. He gave me free shipping for my troubles and said that he would have the bank called again.

This morning I still had not heard from NewEgg so I contacted them again. They said that the order had been resubmitted and that it should go through shortly. That was 2 hours ago already. WTF NewEgg?

Wednesday, December 3, 2008

Head Tracking Projection

The projection done in the CyberTable relies on the knowledge of where the viewers head is. If the CyberTable knows the location and orientation of the user's head, it can use this information to draw the projected world in such away that the objects appear to be 3D to the user.

Julian Beever's pavement drawings are a good example of this concept.
Since the artist knows where the viewer's head is, he is able to create his image in such a way that the world "pops out" of the sidewalk as if it were 3D. Viewing the image from a different angle shows the distortion in the image.

New Laptop

I just purchased a new laptop for development. My old computer was 6 years old. I don't think that it would be powerful enough to run the CyberTable program; not to mention it is slow as molasses when running visual studio.

It will take me some time to get up and running once I get the laptop, but overall I think this is for the best. A big part of what was preventing me from making progress is that I had to sit at my desk in my home office with my desktop computer. After working for 8 hours at a desk, working at a desk at home is the last thing I want to do. Now I will be able to code from the couch!

I got the laptop for $1100 which I think was a great deal for what it comes with:

ASUS M50Vm-X1
Operating System: Windows Vista Home Premium
CPU Type: Intel Core 2 Duo P8400 2.26G
Memory Size: 4GB DDR2
Graphics Card: NVIDIA GeForce 9600M GS
Screen: 15.4" WXGA
Hard Disk: 250GB
Video Memory: 1024MB
Weight: 6.7 lbs.

Tuesday, December 2, 2008

Needed Materials

All Components
- Computer
- Projector
- Projector Stand
- Webcam
- Table (white top)
- ARToolKit Patterns

Have
- Computer: its 6 yrs old and probably isn't up to the task
- Webcam: sony eyetoy
- ARToolKit Patterns

Need
- Computer: Probably want a laptop so I can develop on the couch. Looking for something with decent performance and a decent graphics card.
- Projector: Want 720P with component connections so that I can hook this up to my other electronics after this project is done.
- Projector Stand: Probably have to make this custom. I was thinking about making this out of black iron piping.
- Table: Probably could just buy a whiteboard and use that. Projector screens are probably too expensive.

Investment
- Computer: ~$1,000
- Projector: ~$700
- Projector Stand: ~$50
- Table: ~$50

Trying To Compile

I have tried for a couple days to get the source code for Mr. Planet to compile so that I can then tinker around. I have run into numerous hurdles. For one I had to figure out how to download the source from subversion. I downloaded Tortoise SVN and eventually figured out how to get the source files onto my computer. I am used to using Perforce.

In terms of getting the code to compile I needed to change the project settings to include the ARToolkit .h's and .libs. I also needed to include the .h and lib directories for the OgreSDK. Ofcourse the OgreSDK that Raxo used is not the same one that I have on my machine so there are a bunch of errors because of this.

I was able to get the debug build to compile, but I had linked it with an OgreSDK which was built using VS2005 (Mr. Planet and ARToolKit are VS2003 projects) so this didn't work. I tried building the release build with an VS2003 OgreSDK, but I ran into a bunch of errors because the VS2003 OgreSDK version is not the same as the VS2005 OgreSDK. I tried getting previous versions of the SDK off the Ogre site, but it doesn't look like they are available.

ARToolKit

Mr. Planet was an Ogre project developed by Raxo on the Ogre Forums. Here is a video of Mr. Planet in action.



Here is another video which illustrates some of the interaction components that I wish to incorporate into CyberTable. However, the CyberTable will not be used for the pervy Japanese antics that are shown in the vid ;)

Shaking Out The Cobwebs

In college I created 3 video games using the Ogre 3d Graphics Engine. As a professional video game programmer, I work with C++ everyday. However, I haven't touched my old Ogre projects in years. I am dreading the thought of boning back up on all the subtleties of Ogre.

Also, I plan on leveraging the ARToolKit code from Mr. Planet as a jumping off point for my CyberTable. This code will give me the ability to capture video from a webcam and then discern the position/orientation of the toolkit's patterns.

I ran into trouble using the Mr. Planet demo. For some reason my webcam's video capture is flipped in the x direction and therefore cannot recognize the supplied patterns. As a hack, I flipped the pattern in MS Paint and pointed the webcam at the computer screen. When the webcam saw the flipped image on the computer monitor, it was able to recognize it and I was able to get the example Ninja mesh to appear in the Ogre window. I was also able to get one of my own meshes to work.

First Post

The CyberTable is an augmented reality project that projects virtual actors onto a table in such a way that the user perceives those actors to be physically existing on the table. Additionally, the user will be able to interact with those actors by using different paddles.

My overall goal for this project is to create a unique experience that people have never seen before. I want people to be full of awe and wonderment when they interact with the CyberTable, much like one would be when seeing a magic trick for the first time.

In building the CyberTable I am going to combine several existing technologies to create an innovative experience. The CyberTable will incorporate HeadTracking, AR ToolKit, and Projection.

I am very excited about this project and I can't wait to make some good headway!