Tuesday, April 26, 2011

Sunday, April 24, 2011


Check out my poster . Please leave me with your comments and suggestions. I have some time before i need to get this printed. Any and all suggestions for improvement are always welcome.
Click here for High Res

ShowStopper !!!!

It's that time to get extremely nervous and spend all night with coffee tying to get most important bit to work . I'm stuck at an extremely crucial point in my project where it kind of is a show stopper. I've spent nearly 3 days now, in trying to debug / understand the collada importer library i'm using. The problem i'm having is, it just draws one collada file . It treats one file as the scene and does not let me have multiple scene loaded in one canvas frame. I've gotten as far as getting two files into my application, and the first one gets loaded but is immediately over written by the scene that is loaded the last. I have my camera controls, my logic for loading the next grid set up, but i need to be able to load another grid to move forward. I've sought help from the programmers of the library, and trying alternative techniques as well.

Yes ! This is a SHOW STOPPER !!!! Nervousness !!!!! :-|

Monday, April 18, 2011

Difficulties .......

Well, i have just over one week left and a lot of work to do. I was working with City Engine in trying to sort out the export issues i'm having with it. When i export out a file, because of a limit on the size of the file, the file gets exported in parts. After a little bit of googling, figured out it was just a setting that i had to modify to get the whole scene exported as one file. This was needed as i had to start modifying them in Maya. Now that i have the whole scene in one file, the amount of time it takes for this file to load in Maya is a lot. I waited to get the whole file loaded and i figure out some interesting things happening with the scene. The way the exporter wrote out the data was such that, there are lots of disjoint meshes. The side wall of a building is duplicated in multiple places in the city, but all of these duplicates are combined in one single mesh. My guess is, this was done for performance reasons in City Engine, but i would be more happier if each building was a mesh of it's own. This will need some scene modifications in Maya from my part. I'm not sure how much time this is going to consume, but this might be mandatory for my grid segmentation.

It would be interesting to see if i can turn this off using City Engine, but i'm not sure if i have the time to invest in City Engine right now. So i imported the Collada file in Maya 2008 because the plug in i found works only with Maya 2008 and 2009. I saved it out using 2008 as a maya binary and opened it back on Maya 2010 64 bit. World of difference with respect to usability. Scene load time in Maya 2010 64 bit was much lower and inspite of the scene being big, i'm still able to use it freely without any huge drop in frame rate.

Long night ahead !

Friday, April 8, 2011

Project goes open source

My alpha review is fast approaching . My personal goals for the review is to get a basic framework up and running. That would include a simple game environment loaded and same basic camera controls implemented as well . SpiderGL helps me to set up camera controls and Mesh Loading wrappers take care of loading a mesh as well. I also want this to be hosted on a web server locally running on my machine . These were a few of my concerns as i have not worked with this at all , i was not exactly sure of how this would work out. I've got Apache up and running and hosting basic 101 experiment pages running on my machine. Soon i've have these uploaded as well.

I have also created a sourceforge repository for my development. You can find it here. Over the weekend i plan to get the rest of my development done and posted. Long weekend ahead :) !

Friday, April 1, 2011

Update 01

Phew ! It has been quite a week and here i am to document events that have happened over this week and my progress with the project. The SIG lab has provided me with a machine that has CityEngine installed. CityEngine for a newbie is definitely overwhelming. CityEngine has a few awesome examples and for now i would be using the sample cities that are given to me. Thanks to their exporter i can get them exported to FBX and imported to Maya. I will have to break out a really small chunk of the map and see how it plays and get some performance tests done with that before moving further ahead with it.

I also experimented with a few WebGL libraries to make working on this project easier. After playing around with a few of them i've decided to use SpiderGL . I find the library easier to work with and the samples have a lot of work that could help me in my effort.

Rest in the next !

Wednesday, March 23, 2011

CIS 565 : Final Project


Rendering game worlds has always been an interesting topic in computer graphics. Rendering massive worlds, with relatively lower or no load times has been a very interesting challenge that the online gaming community has been posed with. With more and more internet games gaining popularity, the demand for better looking graphics paved the way for WebGL. This project aims at rendering massive game worlds with non-noticeable load times. This makes the game world seems huge but only a portion of the world is loaded into memory as network latency, bandwidth and load times are important issues that affect game play in an online game world. This project attempts to render such an extensive game world in first person view, in a seamless fashion.

I have broken down the implementation into threee major steps.
  • Segmenting the game world: The game world would be a city, generated using CityEngine. This city would then be exported as a Collada file and imported to Maya. The city would have to be segmented into multiple grids. The dimension of the grid size for each grid would be something that depends on load times per grid and how much load a web-worker thread would be able to handle. Segmenting the world and saving them out as a separate Collada files would be done in Maya using a MEL script.
  • Deciding which grids to load: The game would set to a first person camera mode. So the initial grid(s) for the game would be loaded on launch. The decision as to what grids to be loaded would be based on a few basic tests, including view distance and occlusion.
  • Pre-Loading the next grid: For seamless game play, parsing and loading a grid into memory should happen without the user’s noticing. For this, it would be essential to figure out a way to know in advance which grid we would have to load next. Once we know that, parsing and loading the file into memory could happen on a separate web-worker thread.
Personally, Unfamiliarity with the framework is definitely going to be a challenge for me. I have not worked much with JavaScript, WebGL , or any features of HTML5. Getting a good grasp of these technologies and associated concepts is time is going to be crucial. Finding a suitable compromise between load time and JavaScript speed is also an interesting challenge.

To speed up my development process, i'm considering a few third party WebGL libraries. SpiderGL and PhiloGL are two front runners. I'm going to do some poking around their libraries and samples later this week and decide on a library that i will be using for the rest of my implementation.