全景漫游常见制作方法对比
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 云全景虚拟现实社区