zoukankan      html  css  js  c++  java
  • [置顶] 实现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效果图

     

  • 相关阅读:
    2019年4月
    20190423
    20190419
    20190418
    20190417
    free命令详解(转载)
    https改造过程中的一个坑
    GitLab 实现代码自动部署(转载自https://segmentfault.com/a/1190000011561808)
    js和php写日历
    shell递归遍历目录的方法
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3223748.html
Copyright © 2011-2022 走看看