fspp - Flash Spherical Panorama Player


fspp is a little flash applet, that’s able to view interactively panoramic images in equirectangular projection mapped on a sphere.


  • based on Flash 9 technology, doesn’t require QuickTime or Java
  • small footprint, fast to load
  • open-source, GPL licensed
  • supports keyboard and mouse control
  • fullscreen mode

Homesite with a demo (excuse me for the bad stitching :)):


Please, use it as you like and share your results here :slight_smile:

love it, very nice example :slight_smile:
i will try as soon as i find a projection like that i like :slight_smile:


really awesome. looks better then those quick time ones, which are all blurry.
But for me the scroll zooms in as I scroll up and down the page.

kool bar.

Excellent! I love how simple it is to use. No java or other major coding; just plop two files in a folder and write a bit of html. The flash code also looks really straightforward.
I had a panorama ready to go, so I had to test it out: link

I do have two bits of [hopefully] constructive criticism for you:

  1. Is there any particular reason that the picture has to be mirrored to come out correctly? I’m not familiar with Flash programming, but could this be the culprit?
material.opposite = true;
  1. Would it be possible to pass upper and lower limits of the x-axis rotation through the html code to your calcCameraRotation() function? This would be nice if a panorama doesnt have the full 180 degrees visible. You could force the stitched jpg to contain all 180 degrees so it wraps around the sphere correctly, but you could forbid the end user from seeing the black spots. In my test, I didn’t have the full field of view, so I just cropped out the top and bottom. It worked out okay in this case, I think.

Also, have you tried recent SVN/CVS versions of Hugin and Enblend? They usually work really well, even if you don’t have a panoramic head . Close-quarters shots are still tough, though. Nice shot of that bar, and welcome to the forums!

cool! so how would I render a panorama in blender and be able to use it?

This is a GREAT way to showcase Blender work. Thanks bunches for this!

Also, papervision is truly great.

This is very nice.

Concerning the showcasing of work, I noticed recently that Autodesk have release an FBX plugin for Quicktime. I found it while looking for a different codec:

Might be handy for showing 3D models. Blender exports to FBX thanks to Cambo so it might be worth a look. Linux users can possibly run it under Crossover.

Yeah, there’s a problem with the scroll wheel. I have to find a way to intercept the event from Flash and don’t pass it further (this is my first educational Flash project, Papervision3D inspired me :)). In the mean time the workaround is not to have enough content on the page to scroll :slight_smile:

Nice test!
You critisism is constructive :slight_smile:

  1. This line basically says “invert normals”, because you’re inside the sphere and want to see material from inside. The mirrored picture is kind of annoying, however, I’ll try to fix it.
  2. This is exactly the next intended improvement I have in mind :slight_smile:
    I have tried the last stable versions of Hugin and Enblend, but will take a look on the CVS versions.

You can look in > this thread < for a discussion on ways how to render a spherical panorama.

I look forward to the improvements!

Ah, I don’t know if there are any stitching improvements over Hugin 0.7, but the ease of use is much better, you can now optimize white balance, vignetting, etc. like they show on the website, and you can stitch together and output HDRs. I think the zenith/nadir problem with Enblend was being worked on, too, but I’m not sure if it’s working yet.

New version released, 0.02

Added a lot of parameters, now fspp can be used as a cylindrical panorama player, too :slight_smile:

Thanks! Most of the new parameters seem to work well, but there are a couple things:

  1. On your test page, it says that allowFullScreen defaults to “true”. If you change the extra allowFullScreen=“true” parameter in the “embed” line to “false”, full screen mode is disabled, as expected. But if you remove the parameter entirely, it defaults to false. Also, adding &allowFullScreen=true after the image name doesn’t enable it. It looks okay in your .as file, but I might be doing something wrong. If it works fine for you, I’ll try fiddling around with it some more.

  2. The pitch angle limits seem to be passed just fine, but they don’t take into account the vertical field of view. After looking in a few places, I found a comment here, seemingly made by one of papervision’s devs. Basically, you’d have to do some calculations that include the zoom and focus parameters as well as the image size. He says they’ll try working on it for the next version, though. In the meantime, disabling full screen mode and zooming works.

Thanks for testing :slight_smile:

  1. I should put a little clarification and update the doc.
    This “allowFullScreen” you were modifying is a parameter, passed to Flash Player, not to fspp. It says “allow this flash object to use fullscreen mode”. It doesn’t need to be modified.
    The parameters that are passed to fspp are the ones after the “?” (and there are 2 fragments, one for the <object> and one for the <embed> tag, this is because of browser compatibility)

  2. Thanks for the link, I’ll check the info. There are minor issues with the event handling too (try rotating left with the keyboard and then press the “right” key - you’ll rotate one more step to the left), so the next version will be a bugfix one :slight_smile:

This looks neat. Thank you for listing it for us.

Ah, interesting. Thanks for the clarification.

I was wondering about that doubling up of html code, but I figured it was because I don’t know much more than the basics. Compatibility stuff is good to know about!

New version released, 0.03


  • removed zoom, minZoom, maxZoom parameters, they are obsolete now

  • added commandline parameters:
    FOV - set initial vertical field of view in degrees, default = 70
    minFOV - set minimal FOV, default = 40
    maxFOV - set maximal FOV, default = 120

  • field of view now is consistent, regardless of windows size or fullscreen mode

  • added load progress indicator

  • Papervision3D engine is now bundled with the source for easier maintaining

This is really very interesting. Thank you for your link.
If someone would be interest how to make these 360 pictures in Blender there is a tutorial in alienhelpdesk -Panorama maker:

Blender Go Cubic script outputs 6 cube faces, right?

I use this utility for converting 6 cube faces to 1 equirectangular image and vice versa (for editing panoramas):
Simple and effective for my needs.

Here are other ways:

Great little app! Some thots: on your “usage” page it might be good to complete your instructions by indicating all the steps (for the complete n00b) of how it can be used in a web page, examples of how to create the source “equirectangular projections” and etc. In order to maximize your software’s appeal, you need to “hand-hold” your users through every little step like they are fresh off of a deserted island. It sounds rediculous to someone who’s a pro, but it comes accross as friendly to your site’s visitors. …just suggestin’

Also, how difficult would it be to “invert” this app’s functionality to produce a flash-based interactive “flyaround” of a rendered object (similar to thoro’s 3DNP, but with features like in yours.)

If you use BGC script you need a way to convert 6 cubic faces to one equirectangular image. I use these tools: http://www.pinlady.net/vr/#anchor3

Maybe you’re right about the usage instructions. Making equirectangular images isn’t trivial process to describe, but some links could be useful. And a downloadable sample would be nice also.

It’s not quite possible to “invert” the app, because when you look around you from a fixed point the surrounding world can be projected on a sphere (or cube, or any closed, convex surface), but when you rotate the object it can self-occlude. 3DNP keeps image from every possible angle of the object to overcome this and it wouldn’t be quite meaningful just to translate it into Actionscript - there wouldn’t be any space or speed savings (just the added requirement of Flash Player). However, there’s may be a way to pack these images in a FLV movie, so they can take much less space…

However, it’s possible to make a simple viewer for 3d models in Flash, using Papervision3D that accepts parameters and dynamically loads models and textures. And a lot of code can be borrowed from fspp - for example for event handling, 3D engine initialization, loading of resources. But there will be polycount limit.