AVFoundation 拍片专用

720场景显示和panoramaGL的导入

2016-11-21  本文已影响123人  光明程辉

这个是一个静态的,全景图演示,一个完整的全景图需要6张图片合成,还要注意图片排放顺序,如果要是其它的全景图是实时的话,要使用其它SDK。

其实,使用Unity3d 也是可以做的。下面讲的是配合panoramaGL使用:达到720全景效果。

这个需要翻墙 (不会翻墙的可以留言给我!!!)

这是一个3D的图片.png

javascript 3D 技术:

https://threejs.org

Demo 链接


属性、方法介绍


https://github.com/robbykraft/Panorama

http://blog.csdn.net/hardworkingbee/article/details/48295179

http://blog.csdn.net/jiayani/article/details/37501997

https://github.com/hanton/HTY360Player

首先使用一个框架:panoramaGL

[译]


1.项目描述

panoramagl库是世界上第一个开放源码库看到全景的iPhone和iPod的触摸。支持的功能在版本0.1:

运行在iPhone,iPod Touch和iPad

支持OpenGL ES 1.1

支持球形、立方和柱面全景图像

允许滚动和连续滚动

支持滚动从左到右、从上到下的加速度计的使用

允许使用惯性停止滚动

支持缩放(移动屏幕上的两个手指)

支持复位(将三个手指在屏幕或摇动装置)

允许您控制旋转范围在X轴和Y轴

查看活动支持

支持热点

.

4.如何导入panoramagl框架

官网的 是12年的说明:有点过时了!!!

A.下载panoramagl_0.1.zip repositoryb或下载源代码。如果你下载的ZIP文件,然后descompress的filec。
在你的项目文件夹复制panoramagl文件夹。
在你的项目导入panoramagl文件夹(你可以拖放文件夹里面Xcode)
F.进口框架:- CoreMotion - CoreLocation - mobilecoreservices -配置- quartzcore -代表-最- UIKit -基础- coregraphicsg。
导入库:-libxml2.dylib -libz.dylib


注意:这个库是MRC的意味着你要,改为支持ARC (原创)转载请注明!

之前笔者找panoramaGL 库的配置,网上都是 复制别人的,都说配置很麻烦!!!没什么人说到底怎么配置,只知道自己怎么改都是那几十个错,运行不起来,真的那么难吗?
.
答案: NO!!! 学不到家就觉得很麻烦!根据Xcode 的出错就可以一步步解决,好了,下面直接介绍:这里我就不贴太多图了!不懂直接 留言!!!笔者使用的是Xcode8.1 :

首先: 1、导入库文件夹,导入-libxml2.dylib -libz.dylib
      2、对 panoramaGL 里的文件进行添加(如下图): -fno-objc-arc
      3、注意:在 PLImage  类出错时,
      // 1、使用
    #import <Foundation/Foundation.h>
    #import <UIKit/UIKit.h>
    // 自带的 (注释掉)
    //#import <UIKit/UIImage.h>
    //#import <Foundation/NSData.h>

     如果是类:PLRange 、PLStructs  出错,导入 头文件
     #import <UIKit/UIKit.h>
     
     如果是  PLUtils 类出错。
     导入头文件: 导入 #import <Foundation/Foundation.h>
         
    4、出现 Object->isa 错,这个是运行时写法,由于写法过旧,跟着提示做就可以了。
    
    5、PLPanoramaBase 出错!
   //  默认是 下面这2 个 (指向指针)
    PLTexture **previewTextures;
    PLTexture **textures;

    应该修改为:
    PLTexture *__unsafe_unretained *previewTextures;
PLTexture *__unsafe_unretained *textures;

添加-fno-objc-arc.png 屏幕快照 2016-12-07 10.50.07.png

导入框架和库必须:

5.如何在你的应用程序中使用panoramagl

下一个例子,我有一个球形图像在


pano_f.jpg

项目为pano.jpg。

5.1用界面生成器

a. Create a ViewControllerb. Open ViewController with Interface Builderc. Select the View in "Objects" paneld. Show "Identity Inspector" (View->Utilities->Show Identity Inspector or Alt+Cmd+5)e. Change in "Custom Class" the Class from UIView to PLViewf. Go to ViewController.h and import PLView.h (eg. #import "PLView.h")g. Open ViewController.m, go to viewDidLoad method and put this code: PLView *plView = (PLView *)self.view; PLSpherical2Panorama *panorama = [PLSpherical2Panorama panorama]; [panorama setImage:[PLImage imageWithPath:[[NSBundle mainBundle] pathForResource:@"pano" ofType:@"jpg"]]]; [plView setPanorama:panorama];
5.2 只有代码

a. Import PLView.h in your class (eg. #import "PLView.h")b. Create a variable of type PLView (eg. PLView *plView)c. Create the view (eg. plView = [[PLView alloc] initWithFrame:CGRectMake(x,y,w,h)])d. Load panorama: PLView *plView = [[PLView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; PLSpherical2Panorama *panorama = [PLSpherical2Panorama panorama]; [panorama setImage:[PLImage imageWithPath:[[NSBundle mainBundle] pathForResource:@"pano" ofType:@"jpg"]]]; [plView setPanorama:panorama];e. Add panorama view to the window or view: [window addSubview:plView] or [your_view addSubview:plView]f. Release the view [plView release];
6 简单的JSON协议

另外,你可以使用JSON协议加载全景。

注:JSON协议是有限的在这个版本的本地文件。(在本地创建的)

源代码:

  [plView load:[PLJSONLoader loaderWithPath:[[NSBundle mainBundle] pathForResource:@"json" ofType:@"data"]]];

注意:此代码,我有一个在我的应用程序命名为json.data文件。

介绍 panoramagl 的属性 文档:

类的文档
然后进行简单介绍一下使用的类的操作:
PLView


类,这个类是允许一组简单的功能,电源显示全景图像的图(UIView的继承)。
的属性和这个类的方法是:
BOOL
**isDeviceOrientationEnabled
** ;
//如果视图,您可以启用该设备支持的方向(手动,属于典型的图书馆)
UIDeviceOrientation
**deviceOrientation
** ;
//让我们看看什么方向都有这种看法,或设置,我们希望出现的视图方向。
**例如。
**plView.deviceOrientation = UIDeviceOrientationLandscapeLeft;
PLOrientationSupported
deviceOrientationSupported ;
** //这个属性允许你告诉那个方向的位置被启用并运行视图。例如。
**PlView.deviceOrientationSupported =(PLOrientationSupportedPortrait | PLOrientationSupportedLandscapeLeft)< -在这种情况下,只允许采用纵向和LandscapeLeft
BOOL
**isAccelerometerEnabled
** ;
//这个属性使得加速度计的操作
BOOL
**isAccelerometerLeftRightEnabled
** ;
//该属性仅在x轴激活所述加速度计的操作,并且取决于该活性属性isAccelerometerEnabled
BOOL
**isAccelerometerUpDownEnabled
** ;
//该属性仅在y轴激活所述加速度计的操作,并且取决于该活性属性isAccelerometerEnabled

**accelerometerSensitivity
** ;
//设置与操作加速度计的灵敏度(动作感应)
NSTimeInterval
accelerometerInterva ;
//设置的加速度秒的刷新时间
CGPoint 的startPoint ;
//这个属性告诉我们他做了事件发生时,第一触摸(触摸事件开始)的位置CGPoint 端点 ;
//同时在屏幕上移动手指该属性将被冷却(触摸移动事件)
BOOL
isScrollingEnabled ;
//这个属性告诉我们,如果你可以让在听证会上,滚动如不积极,只有当移动手指在屏幕上移动
NSUInteger
minDistanceToEnableScrolling ;
必须用手指能够行驶//最小距离激活滚动
BOOL
isInertiaEnabled ;
/ /检查意味着,当有人进行滚动惯性启动缓慢滚动停止运动的惯性
NSTimeInterval
inertiaInterval ;
//以秒为单位的惯性时间
BOOL
isResetEnabled ;
//属性可以在屏幕上放置三根手指时启用到视图复位到其初始位置
PLViewType ;
//视所使用的类型可以是(PLViewTypeSpherical,PLViewTypeCubeFaces,PLViewTypeCylindrical)PLCamera *
摄像头 ;
/ /属性允许我们更改或拿相机的参数

Eg. PLTexture * texture = [PLTexture textureWithPath:[[NSBundle mainBundle] pathForResource:@"pano" ofType:@"jpg"]]; [plView addTexture:[PLTexture textureWithPath:texture]];
**PLCamera

**类允许我们改变听证会的显示设置,其性质是:

BOOL

**IsFovEnabled

** ;
//启用放大或缩小

**如。

**plView.camera.isFovEnabled = NO;

**FOV

** ;
//听证缩放级别

**如。

**plView.camera.fov = 10;

**fovSensitivity

** ;
//当你把两个手指在屏幕变焦的灵敏度

**如。

**plView.camera.fovSensitivity = 70;

PLRange

**fovRange

** ;
//范围中值,这将允许默认缩放从-180到180

**如。

**plView.camera.fovRange = PLRangeMake(-10.10);

PLRange

**fovFactorRange

** ;
//范围中的变焦internaly工作(这个范围与fovFactor物业内部使用)

BOOL

**isXAxisEnabled

**,

**isYAxisEnabled

**,

**isZAxisEnabled

** ;

** **//启用这个特性,如果相机在X,Y,Z移动

**如。

**plView.camera.isXAxisEnabled = NO;

PLPosition

**位置

** ;
//属性将相机放置在一个位置上。
PLPosition具有属性x,Y,Z

**如。

**plView.camera.x = 6;

PLRange

**XRANGE

**,

**yRange

**,

**zRange

** ;
//定义在其中所用的X,Y,Z移动的范围

**如。

**plView.camera.xRange = PLRangeMake(-100,100);

BOOL

**isPitchEnabled

**,

**isYawEnabled

**,

**isRollEnabled

** ;
//这些性质使该轴可旋转摄像头的x,y和z如。
plView.camera.isPitchEnabled = NO;

BOOL

**IsReverseRotation

** ;
//启用相机位移的旋转反向相关于用户与触摸或加速计来执行。

**例如。

**plView.camera.isReverseRotation = YES;

PLRotation

**旋转

** ;
//相机的x,y和z的旋转(度)的角度

**例如。

**plView.camera.rotation.pitch = 80;

PLRange

**pitchRange

**,

**yawRange

**,

**rollRange

** ;
//范围,其中照相机可以在X,Y,Z旋转

**例如。

**plView.camera.pitchRange

**=

** PLRangeMake(-90,90);
< - x轴只能旋转角- 90 90

**rotateSensitivity

** ;
//灵敏度,其中当用户移动视图例如照相机将旋转的值。
plView.camera.rotateSensitivity = 40;

**复位

** ;
/ /让我们恢复相机设置回相机的原始位置

**如。

**[plView.camera复位]

隐藏

复制代码

Eg. plView.camera.yawRange = PLRangeMake(-70, 70);
许多属性和前一节中命名的方法都没有在实施例中实现,但它作为为希望下载PanoramaGL库并开始使用在他们的项目的那些参考文献。

720度全景(Panorama)展示和序列帧展示 Demo

上一篇下一篇

猜你喜欢

热点阅读