Skip to content
Spherical panorama view, iOS
Objective-C Ruby
Branch: master
Clone or download
Pull request Compare This branch is 14 commits ahead, 23 commits behind robbykraft:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Panorama.xcodeproj
Panorama
PanoramaTests
readme
LICENSE
PanoramaView.podspec
readme.md

readme.md

360° panorama view

equirectangular projections

OpenGL, device-oriented, touch-interactive

sample

acceptable image sizes: (4096×2048), 2048×1024, 1024×512, 512×256, 256×128 ...

  • (4096 supported on iPhone 4s and iPad2 onward)

#methods

image

-(void) setImage:(NSString*)fileName;  // path or bundle. will check at both

orientation

 // auto-update (usually only one of these at a time is recommended)
-(void) setOrientToDevice:(BOOL)   // activate motion sensors
-(void) setTouchToPan:(BOOL)       // activate UIPanGesture

 // aligns z-axis (into screen)
-(void) orientToVector:(GLKVector3)
-(void) orientToAzimuth:(float) Altitude:(float)

field of view

-(void) setFieldOfView:(float)     // in degrees
-(void) setPinchToZoom:(BOOL)      // activate UIPinchGesture

touches

-(void) setShowTouches:(BOOL)      // overlay latitude longitude intersects
-(BOOL) touchInRect:(CGRect)       // hotspot detection in world coordinates

2D - 3D conversion

-(CGPoint) screenLocationFromVector:(GLKVector3) // 2D screen point from a 3D point
-(GLKVector3) vectorFromScreenLocation:(CGPoint) // 3D point from 2D screen point
-(CGPoint) imagePixelAtScreenLocation:(CGPoint)  // 3D point from 2D screen point
  // except this 3D point is expressed as 2D pixel unit in the panorama image

usage

make your ViewController a subclass of GLKViewController

panoramaView = [[PanoramaView alloc] init];
 // load image and any other customization
[self setView:panoramaView];

also in your GLKViewController:

-(void) glkView:(GLKView *)view drawInRect:(CGRect)rect{
    [panoramaView draw];
}

make sure

  • no device landscape/portrait auto-rotation

device

  • works properly under any of the 4 device orientations

orientation

  • azimuth and altitude
  • look direction, the Z vector pointing through the center of the screen

coordinates

The program begins by facing the center column of the image, or azimuth 0°

wikipedia

about equirectangular

equirectangular images mapped to the inside of a celestial sphere come out looking like the original scene, and the math is relatively simple http://en.wikipedia.org/wiki/Equirectangular_projection

license

MIT

You can’t perform that action at this time.