Monday, August 6, 2007

simplifying user experience // PaperVision 1.5 AS 3.0

There is a brand new release of PaperVision 3D 1.5 made fully in Action Script 3.0. Really nice. Performance is expected to speed up to 40%. The engine is growing and growing making its way to provide great, free 3D experience. You can download full API from www.blog.papervision3d.org. Enjoy it!

Also during my coffee break I thought and wrote a bit about simplifying user experience. You can make a quick read here in pdf format or in the post below.

We are always in pursuit to simplify things. The word “simplify” is a key word if it comes to all processes in company life. The simplified flow of information, without interference of unnecessary objects can bring better understanding of what and why is happening, highlight drawbacks of our organization and bring us nothing but profits.

Few days ago I had an idea of simplifying the process of data creation in the project. To create a 3D world that we desire we need to build it from existing raster maps in Google Earth, that was the intention because we assumed that user wants to create a 3D environment for a specific area that he wants to use on the web page. For instance to show his neighbourhood, university campus, etc he must locate the area in Google Earth, then draw polygons and save them to kml file. My idea here is very simple and comes from the question “what if user is not interested in data creation?” It means that we have to provide him with data and what is more, give him universal interface to achieve that. In other words we want our solution to work more like a Google Maps rather than local solution, users get the data on the plate, and they don’t need to create it. So if the user specifies a point on the earth (any point) we will give him that area in 3D, without data creation, without KML file creation, just by specifying the longitude and latitude coordinates. Now, one of the possible ways to achieve that is of course to use existing sources from internet as we need to create data on the fly. Let me first show you on a simple outline what I have on my mind.
The only thing that user needs to do in that approach would be just to specify the longitude and latitude values that he is interested in. That would make the solution more universal and surely unburden user intervention to achieve what he wants. Additional parameters could be the boundaries of the area for instance. Ok, that sounds great, but how actually we will create 3D data for that area (the x box in diagram) and return it in playable swf file?
Now first thing that popped up in my mind is image recognition algorithm. If we used Google Earth before to draw polygons on building roofs, on a raster... maybe we would be able to make this process automatic by using image recognition algorithms. We have high quality images that we can achieve from Web Services or Google Maps, the buildings are mostly square and the edges visible. As we can expect it would be really difficult because images that we are interested in are mostly urban areas with high complexity of objects. However I would not be worried by that as we can use Google vector maps instead. Now, if you dig internet on that subject you should find some very interesting whitepapers like “Building Detection from High-resolution Satellite Image Using Probability Model” by LIU Wei and Veronique PRINET. By specifying features vectors and using probabilistic theory they are able to distinguish building contours (process also involves Douglas-Peucker line approximation algorithm). The results are quite
interesting and can be seen in a picture.

White lines mark the recognized parts of buildings. By tweaking the algorithm we could achieve 60-70 % reality of buildings shapes, without taking its height under consideration of course. We
cannot achieve that while examining the raster image. Another thing is that computation takes time, approximately 3 minutes which is a lot of time if it comes to acquire response to such a inquiry, not to mention the time needed later to create 3D environment swf file from it. Another problem I find is that the environment that user will get is not exactly the thing that he expects (not precise and without height). This is not really what I would like to get as a simple user… even if I would have to wait 10 minutes I would expect more usable result. So the more logical step will be to use the image recognizing algorithm locally on a Google Earth raster and then tweak the polygons manually. However that requires intervention of user and is not really what we wanted to achieve. So maybe there is another way? Let’s see again the outline of the flow.
The only reasonable solution here would be, instead using image recognition algorithm, find data
sources that are already in XML format (exclude the Image recognition box from sketch above). That way we would achieve a fast and universal flow for creating data. In next post I’ll try to find that type of resources available in internet o public.

Saludos
By Marcin Czech