[置顶] 实现360度全景图像的利器--PanoramaGL
传送门 ☞轮子的专栏 ☞转载请注明 ☞ http://blog.csdn.net/leverage_1229
介绍
本指南将介绍一个PanoramaGL 0.1类库的简单用法,更多的细节请签出 HelloPanoramaGL示例查看。
细节
1如何导入PanoramaGL类库?
1.1从源代码中导入
(1)下载PanoramaGL_0.1.zip或从代码仓库下载源代码
(2)如果你下载zip文件然后解压该文件
(3)在Eclipse中导入PanoramaGL项目:
点击“File”选择“Import”菜单;
选择“General”目录中的“Existing Projects into Workspace”,点击“Next”按钮;
点击“Browse”按钮,选择PanoramaGL项目文件夹
点击“Finish”按钮。
(4)右键单击你的项目并选择“Properties”选项
(5)选择左侧面板“Android”选项
(6)找到右侧面板“Library”部分,点击“Add...”按钮
(7)选择“PanoramaGL”类库,点击“OK”按钮
(8)在属性窗口的右下角选择“OK”按钮表示接受更改
1.2从编译后的文件中导入
(1)下载libglues.zip
(2)解压zip文件并复制到你的项目的“libs”文件夹中
(3)下载PanoramaGL 0.1.jar
(4)复制jar文件到你的项目的“libs”文件夹中
(5)在你的项目中导入jar文件:
右键单击你的项目并选择“Properties”选项;
选择左侧面板“Java Build Path”选项;
选择“Libraries”选项卡;
点击“Add JARs”按钮;
在你的项目中选择“libs/PanoramaGL_0.1.jar”文件;
点击“OK”按钮;
在属性窗口的右下角选择“OK”按钮表示接受更改。
2在应用程序中如何使用PanoramaGL?
(1)如前面描述那样导入类库
(2)在“res/raw”文件夹中导入一个球面图像(如:pano_sphere.jpg)
(3)在Activity中,你需要构建一个全景图像的查看器,具体做法如下:
继承PLView类
public class YourActivity extends PLView
在onCreate()方法中加载全景图像
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
PLSphericalPanorama panorama = new PLSphericalPanorama();
panorama.setImage(this.getCurrentGL(), PLImage.imageWithBitmap(PLUtils.getBitmap(this, R.raw.pano_sphere)));
this.setPanorama(panorama);
}
注意:如果有必要的话,你也可以从其他方法中加载全景图像或事件。
3简单JSON协议
同样,你可以使用JSON协议加载全景图像。
注意:在该版本中,JSON协议被限制只处理本地文件。
3.1源代码
this.load(new PLJSONLoader(this, "res://raw/json_spherical"));
注意:在我的应用程序的“res/raw”文件夹中有一个名为“json_spherical.data”的文件,可以使用这段代码加载。或
this.load(new PLJSONLoader(this, "file:///sdcard/files/json_spherical.data"));
注意:在Android设备的“/sdcard/files”文件夹中有一个名为“json_spherical.data”的文件,可以使用这段代码加载。
3.2JSON协议
{
"urlBase": "file:///sdcard/files", //URL base where the files are
//The options are res:// for application resources and file:// for file system (this feature will be improved to support the http protocol)
"type": "spherical", //Panorama type: [spherical, spherical2, cubic, cylindrical]
"sensorialRotation": false, //Automatic rotation using sensors [true, false] <Optional>
"scrolling": //Scrolling section <Optional>
{
"enabled": false //Enable scrolling feature [true, false] <Optional>
},
"inertia": //Inertia section <Optional>
{
"enabled": false, //Enable inertia feature [true, false] <Optional>
"interval": 3 //Inertia's interval in seconds <Optional>
},
"accelerometer": //Accelerometer section <Optional>
{
"enabled": false, //Enable the accelerometer feature [true, false] <Optional>
"interval": 0.033, //Update interval of accelerometer (this value must be calculated as 1/frequency) <Optional>
"sensitivity": 10.0, //Sensitivity of the accelerometer <Optional>
"leftRightEnabled": true, //Enable the direction of movement with the accelerometer (left/right) <Optional>
"upDownEnabled": false //Enable the direction of movement with the accelerometer (up/down) <Optional>
},
"images": //Panoramic images section
//A property can be a name e.g. preview.jpg, preview or URL e.g. file:///sdcard/files/preview.jpg, res://raw/preview
//if a property only have a name, the real path will be the urlBase + image name
{
"preview": "preview.jpg", //Preview image name or URL (this option will be used with http protocol) <Optional>
"image": "pano.jpg" //Panoramic image name or URL for spherical, spherical2 and cylindrical panoramas
"front": "front.jpg", //Front image name or URL for cubic panorama (only use with cubic panorama)
"back": "back.jpg", //Back image name or URL for cubic panorama (only use with cubic panorama)
"left": "left.jpg", //Left image name or URL for cubic panorama (only use with cubic panorama)
"right": "right.jpg", //Right image name or URL for cubic panorama (only use with cubic panorama)
"up": "up.jpg", //Up image name or URL for cubic panorama (only use with cubic panorama)
"down": "down.jpg" //Down image name or URL for cubic panorama (only use with cubic panorama)
},
"camera": //Camera settings section <Optional>
{
"vlookat": 0, //Initial vertical position [-90, 90]
"hlookat": 0, //Initial horizontal position [-180, 180]
"atvmin": -90, //Min vertical position [-90, 90]
"atvmax": 90, //Max vertical position [-90, 90]
"athmin": -180, //Min horizontal position [-180, 180]
"athmax": 180 //Max horizontal position [-180, 180]
},
"hotspots": [ //Hotspots section (this section is an array of hotspots) <Optional>
{
"id": 1, //Hotspot identifier (long)
"atv": 0, //Vertical position [-90, 90]
"ath": 0, //Horizontal position [-180, 180]
"width": 0.08, //Width
"height": 0.08, //Height
"image": "hotspot.png" //Image name or URL
}
]
}
3.3看到
PLJSONLoader类和PLView加载方法。
json_spherical.data、json_spherical2、json_cylindrical.data和json_cubic.data都位于
HelloPanoramaGL示例的“res/raw”文件夹中。
4更多信息
想获得更多信息,请签出HelloPanoramaGL示例,该示例运行在Android2.x或以上版本。
5效果图
[置顶] 实现360度全景图像的利器--PanoramaGL的更多相关文章
- [置顶] ios 360度旋转效果demo
demo功能:用UIimageView实现360度旋转效果. demo说明:iPhone6.1 测试成功.主要代码在:FVImageSequence.m中.在touchesMoved事件中,通过替换U ...
- jQuery Panorama Viewer – 360度全景展示插件
jQuery Panorama Viewer 这款插件可以帮助你在网站中嵌入全景图片.要做到这一点,首先只需要在页面中引入最新的 jQuery 库,以及 jquery.panorama_viewer. ...
- 基于Three.js的360度全景--photo-sphere-viewer--简介
这个是基于three.js的全景插件 photo-sphere-viewer.js ---------------------------------------- 1.能添加热点: 2.能调用陀 ...
- HTML5 Canvas实现360度全景图
原文:http://blog.csdn.net/jia20003/article/details/17172571 很多购物网站现在都支持360实物全景图像,可以360度任意选择查看样品,这样 对购买 ...
- WebGL three.js学习笔记 法向量网格材质MeshNormalMaterial的介绍和创建360度全景天空盒的方法
WebGL学习----Three.js学习笔记(5) 点击查看demo演示 Demo地址:https://nsytsqdtn.github.io/demo/360/360 简单网格材质 MeshNor ...
- 【Android开发VR实战】二.播放360°全景视频
转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53924006 本文出自[DylanAndroid的博客] [Android开发 ...
- js之滚动置顶效果
0.js获取高度 ? 1 2 3 4 5 6 document.all // 只有ie认识 document.body.clientHeight // 文档的高,屏幕 ...
- 利用Canvas实现360度浏览
前言:最近几个月来到新公司,主要从事移动端方面的开发,有时候也挺忙挺累的,于是就好一段时间没写博客了.其实自己在这几个月里,自己对canvas以及createjs和egret都有了一定程度上的认识与掌 ...
- 使用Javascript来创建一个响应式的超酷360度全景图片查看幻灯效果
360度的全景图片效果常常可以用到给客户做产品展示,今天这里我们推荐一个非常不错的来自Robert Pataki的360全景幻灯实现教程,这里教程中将使用javascript来打造一个超酷的全景幻灯实 ...
随机推荐
- js 正则学习小记之匹配字符串优化篇
原文:js 正则学习小记之匹配字符串优化篇 昨天在<js 正则学习小记之匹配字符串>谈到 个字符,除了第一个 个,只有 个转义( 个字符),所以 次,只有 次成功.这 次匹配失败,需要回溯 ...
- Activity的LaunchMode情景思考
此链接:http://blog.csdn.net/xiaodongrush/article/details/28597855 1. 有哪几种类型?分别有什么用? http://developer.an ...
- 1秒破解 js packer 加密
原文:1秒破解 js packer 加密 其实有点标题党了,不过大概就是这个意思. 进入正题, eval(function(p,a,c,k,e,d){e=function(c){return(c< ...
- .net EF 事物 订单流水号的生成 (二):观察者模式、事物、EF
针对.net EF 事物 订单流水号的生成 (一) 的封装. 数据依然不变. using System; using System.Linq; using System.Transactions; ...
- SVN记录使用过程中出现的错误(一)
由于使用SVN时间不长,故障各种奇怪的问题是不可避免的,这里记录,自己的方便还是菜鸟跟我一样的参考 一个问题: dzt@dzt-All-Series:~/D/dzt/workarea/7301_mp/ ...
- Linux 安装 httpd2.4.16
假设: apr安装在: /opt/httpd/apr apr-util安装在 /opt/httpd/apr-suite/apr-util apr-iconv安装在/opt/httpd/apr-suit ...
- hibernate的orphanRemoval
在@OneToMany与@OneToOne中使用orphanRemoval = true时候 改动保存时候setXXX org.springframework.orm.hibernate3.Hiber ...
- 出现Deprecated: Function ereg_replace() is deprecated in 的原因及解决方法
在 php5.3环境下运行oscommerce,常常会出现Deprecated: Function ereg() is deprecated in...和Deprecated: Function er ...
- 使用Scala操作Mongodb
介绍 Scala是一种功能性面向对象语言.它融汇了很多前所未有的特性.而同一时候又执行于JVM之上.随着开发人员对Scala的兴趣日增,以及越来越多的工具支持,无疑Scala语言将成为你手上一件不可缺 ...
- GDI+ 摘要: 保存图像文件
要保存图像文件,必须先获得图像的编码格式信息.可是GDI+没有直接提供这个函数:GetEncoderClsid(const WCHAR* format, CLSID* pClsid) 因此须要我们自己 ...