Unity中全景场景搭建

发表于2018-04-25
评论0 5.4k浏览
全景场景能够直观的展现一部分区域的全貌,在全景场景中我们能360°观看周围的景象,仿佛自身就在这个场景中,在场景的外部,我们能发现场景就是一个密封的球体,我们是处在球体的内部观察周围,在球内部观察四周看到的都是球的内表面,所以我们看到的全景其实就是贴在密封球体内的一张全景图片。接下来就和大家下如何在unity中用一个球体来搭建全景场景。

一、场景搭建的准备

接下来介绍的是使用暴风魔镜观看的全景场景,我们要先下载一个暴风魔镜在unity中运用的SDK插件,一张全景图片。这样我们通过SDK插件就能实现360°视觉观看的效果,而观看全景肯定需要图片,全景图片就是为观看全景环境而准备的。我们可以发现全景图片在一些地方是有扭曲的,这些就是方便这张图首尾的衔接自然,达到整个图片的完整性。如果使用一张普通的图片而非全景图片,在图片衔接时就会产生图像的扭曲。图片和插件准备好后就可以进行全景场景的搭建。

二、搭建场景

在unity中先导入SDK插件,然后创建一个Sphere球体,把原有的摄像头删除,加入SDK插件中的预制体MojingMain,这个预制体其实就相当于暴风魔镜的眼镜,把预制体放在球体的内部 ,灯光也得放在球体内部。接下来搭建场景的最重要的部分就是让全景图片贴在球体的内部。要让图片贴在物体上就需要用到渲染器 Shader,我们需要创建一个渲染器脚本,然后把图片拖入脚本中,这样就能改变图片的渲染方式,把图片拖入球体中,设置材质的渲染方式,就能让图片贴在球体内部。

渲染器脚本:
Shader "Unlit/DoubleSided"   
{   
    Properties   
    {   
        _Color("Main Color", Color) = (1,1,1,1)   
        _MainTex("Texture", 2D) = "white" {}   
    }   
        SubShader   
    {   
        //Ambient pass   
        Pass   
        {   
            Name "BASE"   
            Tags {"LightMode" = "Always" /* Upgrade NOTE: changed from PixelOrNone to Always */}   
            Color[_PPLAmbient]   
            SetTexture[_BumpMap]   
            {   
                constantColor(.5,.5,.5)   
                combine constant lerp(texture) previous   
            }   
        SetTexture[_MainTex]   
    {   
        constantColor[_Color]   
        Combine texture * previous DOUBLE, texture *constant   
    }  
        }  
        //Vertex lights   
        Pass{   
        Name "BASE"   
        Tags {"LightMode" = "Vertex"}   
        Material   
    {   
        Diffuse[_Color]   
        Emission[_PPLAmbient]   
        Shininess[_Shininess]   
        Specular[_SpecColor]   
    }  
        SeparateSpecular On   
        Lighting On   
        cull off   
        SetTexture[_BumpMap]   
        {   
            constantColor(.5,.5,.5)   
            combine constant lerp(texture) previous   
        }   
        SetTexture[_MainTex]   
        {   
            Combine texture *previous DOUBLE, texture *primary   
        }   
    }  
    }  
        FallBack "Diffuse", 1   
}  

脚本中的unlit/DoubleSided就是设置渲染器所用的选项,如下图

当材质贴图设置好后,图片就会从球的外表面变为内表面,如下图
这样球体全景便搭建好了。

三、场景体验

运行项目,会发现整个场景被分为两部分,分别为眼镜的左右眼,按住Alt键移动鼠标就能自由移动视角观看场景。如果打包成APK文件,安装到手机上,就可以戴暴风魔镜进行全景观看,通过眼镜晃动头就可以观看四周的景象。

四、总结

全景搭建主要就是用球体来设置全景环境,把图片放入球体内部,从而达到360°无死角全景观看,也能够让图片进行无缝衔接,全景中最重要的就是让图片能够渲染在球体内部,把摄像头放置在球体内部就是一个简单的360°全景场景。

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引