全景漫游常见制作方法对比

Example
- QQ 物联星球计划
- 公园全景地图
- 全景视频
krpano
Krpano 功能介绍
Krpano viewer 的主程序所使用的 XML 文件十分简洁,默认情况下仅可以做到场景的载入。其他所有功能,都以插件的形式实现,而每个插件既可以在自己的 XML 文件进行配置。 然后供主程序 XML 文件调用,也可以在主程序的 XML 文件中直接在<plugin>标签引入并进行配置。这样做的好处就是功能明确,结构清晰,便于扩展,利于维护。
Krpano 的所有标签如下
1 | <inelude>标签:载人其他的xml文件。 |
three.js
通过
pano2vr直接将鱼眼全景图生成立体空间的六个面;也可通过Photoshop或其他的专业 3D 建模工具,将鱼眼图贴到 3D 球面上,再将球面转为立方面,获得立体空间的六个面。使用到的 JS 库:
- three.min.js
- CSS3DRenderer.js
源码 Demo:https://mrleo.github.io/3DPanorama
参考:打造 H5 里的“3D 全景漫游”秘籍
设置相机
1 | camera = new THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 1, 1000) |
设置场景
1 | scene = new THREE.Scene() |
定义 3D 空间的 6 个面的背景
1 | var sides = [ |
将定义好的 6 各面添加到空间中,并为每个空间指定 ID
1 | for (var i = 0; i < sides.length; i++) { |
设置渲染器
1 | renderer = new THREE.CSS3DRenderer() //定义渲染器 |
空间实时渲染
1 | function animate() { |
为每个面构建空间的图标物件
1 | function addIcon() { |
窗体大小改变更新相机
1 | function onWindowResize() { |
监听鼠标事件
1 | function onDocumentMouseDown(event) { |
监听触摸事件
1 | function onDocumentTouchStart(event) { |
基于 Three.js 的 360X180 度全景图预览插件
Photo Sphere Viewer 是一款基于 Three.js 的 360X180 度全景图预览 js 插件。该 js 插件可以 360 度旋转查看全景图,也可以上下 180 度查看图片。使用该插件的唯一要求是浏览器支持 canvas 或 WebGL。
使用方法
使用该全景图插件时要引入 three.min.js 和 photo-sphere-viewer.min.js 文件。
1 | <script src="js/three.min.js"></script> |
HTML 结构
可以创建一个空的<div>来放置全景图,通过 CSS 来设置它的尺寸。
1 | <div id="container"></div> |
初始化插件
要初始化该全景图插件,可以创建一个新的 PhotoSphereViewer 对象,然后在这个对象中插入一个参数对象,有两个参数是必须设置的:
1 | var PSV = new PhotoSphereViewer({ |
配置参数
下面是该全景图插件的所有可用配置参数:
panorama:必填参数,全景图的路径。container:必填参数,放置全景图的div元素。autoload:可选,默认值为true,true为自动调用全景图,false为在后面加载全景图(通过.load()方法)。usexmpdata:可选,默认值为true,如果 Photo Sphere Viewer 必须读入 XMP 数据则为true。default_position:可选,默认值为{},定义默认的位置,及用户看见的第一个点,例如:{long: Math.PI, lat: Math.PI/2}。min_fov:可选,默认值为 30,观察的最小区域,单位 degrees,在 1-179 之间。max_fov:可选,默认值为 90,观察的最大区域,单位 degrees,在 1-179 之间。allow_user_interactions:可选,默认值为true,设置为false则禁止用户和全景图交互(导航条不可用)。tilt_up_max:可选,默认值为Math.PI/2,向上倾斜的最大角度,单位 radians。tilt_down_max:可选,默认值为Math.PI/2,向下倾斜的最大角度,单位 radians。zoom_level:可选,默认值为 0,默认的缩放级别,值在 0-100 之间。long_offset:可选,默认值为PI/360,mouse/touch 移动时每像素经过的经度值。lat_offset:可选,默认值为PI/180,mouse/touch 移动时每像素经过的纬度值。time_anim:可选,默认值为 2000,全景图在time_anim毫秒后会自动进行动画。(设置为 false 禁用它)theta_offset:过时的选项,可选,默认值为 1440,自动动画时水平方向的速度。anim_speed:可选,默认值为2rpm,动画的速度,每秒/分钟多少 radians/degrees/revolutions。navbar:可选值,默认为false。显示导航条。navbar_style:可选值,默认为{}。导航条的自定义样式。下面是可用的样式列表:backgroundColor:导航条的背景颜色,默认值为rgba(61, 61, 61, 0.5)。buttonsColor:按钮的前景颜色,默认值为transparent。activeButtonsBackgroundColor:按钮激活状态的背景颜色,默认值为rgba(255, 255, 255, 0.1)。buttonsHeight:按钮的高度,单位像素,默认值为20。autorotateThickness:autorotate 图标的厚度,单位像素,默认值为1。zoomRangeWidth:缩放的范围,单位显示,默认值 50。zoomRangeThickness:缩放的范围的厚度,单位像素,默认值 1。zoomRangeDisk:缩放范围的圆盘直径,单位像素,默认值为 7。fullscreenRatio:全屏图标的比例,默认值为3/4。fullscreenThickness:全屏图标的厚度,单位像素,默认值为 2。
loading_msg:可选,默认值为Loading…,图片加载时的提示文字。loading_img:可选,默认值为null,在加载时显示的图片的路径。size:可选,默认值null,全景图容器的最终尺寸。例如:{width: 500, height: 300}。onready:可选值,默认值为null。当全景图准备就绪并且第一张图片显示时的回调函数。
其他
- WebGL 中文网
- 720 云全景虚拟现实社区