GSoC Ends – Project Summary

Hi everyone! Okay, so GSoC finally comes to an end, and I’m going to miss it a lot. Working for Marble has become an addiction, and I am going to keep contributing to it in the future. However, here is a brief summary of what all I have been able to implement in Marble in the duration of the project.

My project is about implementing interactive tours in Marble, a feature by which we would be able to take a virtual tour of the planet, by making the camera fly from location to location on the globe, waiting at certain points, playing some music in the background through certain time-durations, and also possibly showing/hiding placemarks as well at certain moments during the tour. Tours are kml files consist of a playlist with five basic elements:
1) FlyTo : contains the latitude, longitude, altitude, etc. of the locations to which the camera is supposed to fly to.
2) Wait : contains the durations for which the camera should wait (not move) at some instances during the tour.
3) TourControl : these can be used to play / pause the tour automatically during its playback
4) SoundCue : these are required to play some music in the background while the tour is playing.
5) AnimatedUpdate : for being able to show/hide, or also create/delete balloon popups (info-boxes) at different coordinates during the tour.

-> There was a Tour Widget which showed a list-view of the different elements present in the kml tour file that has been loaded. Now I added the functionality to be able to edit the elements directly from the widget itself, thus modifying the tour without having to make any manual changes to the kml file, and providing a nice user-interface while doing so. Please go through my blog post for some screenshots and a clearer explanation of the feature.

-> Refactored tour playback logic, so that the tour is represented by only one serial track, containing of FlyTo, Wait, and TourControl items, and several parallel tracks, each representing either a SoundCue item, or an AnimatedUpdate item, which could overlap with other tracks, both serial and parallel. This refactoring of design was required in order to make the tours look more dynamic, and so that it is easier to handle and work with them in our subsequent codes.

-> Implemented seek functionality for tour playbacks, with a progress bar in the tour widget, which can be dragged manually by the user, to bring it to any position of the tour. Also, while dragging itself (not only just before and after), the respective changes, that is, the movements in the camera, along with the balloon visibility, can be seen getting changed in the map while dragging the slider itself, both forward and backward.

-> Added basic interpolation of tours in Marble, so that the camera makes smooth turns (not sharp ones) when flying from one location to the other (when the Fly-to-mode has been set to smooth). Please go though my blog post to know more about this, and the previous two features mentioned above [Note: In the kml file of the tour in the video shown there, the FlyTo modes are mostly not set to “smooth” so the “smooth interpolation” feature is not quite visible in that video, but the videos which are following later on in this blog, have all its flyto’s modes set to smooth, so it will be visible there.]

-> Next, I implemented the feature of being able to create / delete placemarks, and also to show / hide the popup balloons of existing placemarks, during the playback of the tours. The showing / hiding of popup balloons can be understood more clearly if you go through this video of a tour on the moon of the various landing sites made in it in the recent past. The creation / deletion of placemarks, during the playback of tours, can be understood from this very short video.

-> Then comes viewing of routes as tours. I implemented the functionality to preview routes as tours and showing turn-type icons in waypoints during a route preview, while adjusting the speed and range of the tour according to the density of waypoints in the current visible region in the map. This can get more clear if you look at this video.

-> Finally, I implemented the functionality of being able to create videos from tours directly, without having to play and record them manually in order to get the video. So, I added a new Play button in the Routing widget, clicking on which, a dialog box would come up where we can choose the destination filename with path, along with the fps rate with which we want the video to be written. Clicking on Start would start video recording, showing the % progress in the progress-bar. We can cancel video-recording any time by clicking on Cancel. Below are two pictures showing how it would look like, before and after the the video has finished being written.

Video Export Ongoing  Video Export Complete

 

I would like to thank my mentor Dennis, for his awesome help in making me be able to complete this project. Without his motivation, I wouldn’t have been able to make it to the very end. I am going to miss GSoC like hell. But I’ll obviously keep contributing to Marble in the future. It has been a hell of a great experience for me. Thanks again! 🙂

Advertisements

5 thoughts on “GSoC Ends – Project Summary

  1. Hey Sanjiban,

    this is awesome work – can’t wait to see smooth location flights pop up in the next Marble release 🙂 Thanks so much!

    One feature that I’ve been wanting for a long time is very closely related – potentially something you might be willing to look into: photo slideshows with Marble FlyTos in between. Imagine a bunch of holiday pictures, taken in different locations (and GPS-tagged). How awesome would it if Digikam/Gwenview/Kipi slideshow would add a x-second Marble flight animation in between two pictures that were taken more than y kilometers apart? This way, one could automagically present roadtrips and excursions in a way that would leave any Windoze user speechless… Next year’s GSoC? 😉

    Cheers and keep contributing!

    • Hmm, I think what you are talking about is a photo overlay whose coordinates would change continuously keeping in sync with the coordinates emitted by the centerOn() signal when the camera flies from one point to the other. Well, I guess this can actually be realized currently using a very looong kml, using a series of photo overlays in AnimatedUpdate items (which are parallel tracks, so can run parallel with the FlyTo, and each should have a different subsequent coordinate) but it would definitely be great if there were an inbuilt Marble feature to do it without the long kml file as well. Yeah, so let’s see, this can be done in next year’s GSoC as well as mentioned by you! 🙂

      • I think what I suggested is much easier (though yours would be cool, too;-). It’s rather about using Marble as a map-video-generator in between two slidewhow pictures.

        Here’s a little example:
        Starting in Gewnview, I start an “advanced slideshow” (Alt Shift F9) in an album with four GPS-tagged pictures:
        Pic 1 (taken in New York City)
        Pic 2 (taken very close to Pic 1, for instance Manhattan vs. Brooklyn)
        Pic 3 (taken on a day-trip to Philadelphia)
        Pic 4 (taken very close to Pic 3)

        So my wannabe-feature would be a check box and an entry field in the “advanced slideshow” dialog: “[x] render Marble map animations between pictures taken more than [50] km apart”

        Result:
        Resulting slideshow goes Pic 1, Pic 2, *fancy Marble flight from NYC to Philadelphia*, Pic 3, Pic 4

        Hope this clarifies things, I would simply love to have this 🙂

      • Yes, I think I get you now. The feature would be really cool. I guess I will need to talk to Dennis about this feature for sure, to know more about how to be able to make the implementations correctly. Thanks for suggesting this idea! 🙂

  2. Pingback: GSoC Ends – Project Summary | Bartle Doo Articles

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s