720场景显示和panoramaGL的导入

这个是一个静态的,全景图演示,一个完整的全景图需要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 *
摄像头 ;
/ /属性允许我们更改或拿相机的参数

  • (无效)
    addTexture:(PLTexture *)质感;
    //添加要使用的质地,在球形和圆柱形单一视图的情况下,一旦调用此方法,在立方视图的情况下使用此方法6次(每面一个纹理)
  • (无效)
    removeTexture:(PLTexture *)质感;
    //删除视图的纹理类型的对象
  • (无效)
    removeTextureAtIndex:(NSUInteger)指数;
    //由视图索引中删除纹理类型的对象
  • (无效)
    **removeAllTextures
    ** ;
    //删除所有该视图可以使用纹理
    **PLTexture
    **类允许我们加载将由视图可使用纹理,其属性和方法是:
    GLuint
    **textureId
    ** ;
    //只读属性赋予一个OpenGL纹理的标识符
    INT
    **宽度
    **,
    **高度
    ** ;
    //只读加载的纹理的宽度和高度属性
    BOOL
    **的isValid
    ** ;
    //物业知道,如果纹理加载失败
  • (id)的
    **初始化
    ** ;
    //默认的构造函数
  • (ID)
    **initWithImage
    *:(的UIImage)图像;
    //构造函数接收类型的UIImage的对象,其中的图像必须被加载
  • (ID)
    **initWithImage
    *:(的UIImage)图像
    **旋转
    **(INT)角;
    //同以前的方法,但可以将图像旋转90,180,270度
  • (ID)
    **initWithPath
    *:( NSString的)路径;
    //接收图像路径构造函数(JPEG,PNG)
  • (ID)
    **initWithPath
    *:( NSString的)路径
    **旋转
    **(INT)角;
    //同以前的方法,但可以将图像旋转90,180,270度
    与相同参数操作//构造静态类型的初始化同等功能
    +(ID)
    *textureWithImage
    :(的UIImage)图像;
    +(ID)
    textureWithPath
    *:( NSString的)路径;
    +(ID)
    **textureWithImage
    *:(的UIImage)图像
    **旋转
    **(INT)角;
    +(ID)
    **textureWithPath
    *:( NSString的)路径
    **旋转
    **(INT)角;
  • (BOOL)
    **loadTextureWithImage
    *:(的UIImage)图像;
    //根据图像对象加载纹理
  • (BOOL)
    **loadTextureWithImage
    *:(的UIImage)图像旋转(INT)角;
    / /同以前的方法,但可以将图像旋转90,180,270度
  • (BOOL)
    **loadTextureWithPath
    *:( NSString的)路径,//将图片路径纹理(JPEG,PNG)
  • (BOOL)
    **loadTextureWithPath
    *:( NSString的)路径旋转(INT)角;
    / /同以前的方法,但可以将图像旋转90,180,270度
    隐藏
    复制代码

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,016评论 4 62
  • 前言:事隔多年,梦儿恍悟:人这一生,深入骨髓的爱也许只有一次…… 一、岁月如歌 太郎的真名叫柳,而小心眼子是太郎对...
    红色的鱼儿阅读 462评论 1 4
  • 难得想出一个英文题目,hahaha,感慨一下吧。 大四了,我一直以为时间会跟着我的脚步走,结果却发现它好像一直...
    林___夕阅读 372评论 0 1
  • 1、安装PHPExcel到thinkphp5直接使用composer require phpoffice/phpe...
    廷裕同学阅读 630评论 0 4