通过 Photo Sphere Viewer 展示全景图
简介
VR 图片广泛应用于房产、车辆、景区等展示推销和宣传作用,介于 360 全景相机较为昂贵,收费模式竟然按平米收取渲染费,国内这些厂家就很离谱。所以先以最低成本尝试实现一个 Demo,以后逐步完善成一个成品。
实现
下楼拍一组照片
下楼拍摄一组照片,全景相机的原理也是多个相机同时拍摄后拼接到一起,但是全景相机内使用的应该是鱼眼镜头,拥有超大广角,减少镜头数量就可以减少成本,如果使用手机拍摄就需要多拍一些了,把周身一圈 360 度拍满。
拼接图像
图像的拼接流程大概是:提取特征点 -> 特征点匹配 -> 对图片进行圆柱投影 -> 图片拼接 -> 色差矫正。
不过这里才不会实现这些内容呢,大部分软件都是集成了 OpenCV 的 Stitching 库。
可以使用以下软件:
- AutoStitch (推荐)
- PTGui (效果应该更好,但是付费)
- Photoshop Photomerge (图片过多时效果不尽人意)
- Hugin (不好用)
以 AutoStitch 举例,简单的添加所有图片后等待即可获得拼接后图片
使用 PS 修复缺失部分(可选)
由于手动拍摄难免出现缝隙,或者上下存在黑洞,就算使用全景相机架着三脚架拍摄,也难免把三脚架拍摄在内,可通过 PS 的 3D 功能修复。
PS 打开全景图片 -> 3D -> 球面全景 -> 通过选中的图层新建全景图图层 -> 拖拽到瑕疵的区域覆盖或修复(就像普通的P图一样) -> 导出全景图(PS会把内容自动抻展为平面)
展示
使用 Photo Sphere Viewer 库渲染
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| <!DOCTYPE html> <html>
<head> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/photo-sphere-viewer@4/dist/photo-sphere-viewer.min.css"/> </head> <script src="https://cdn.jsdelivr.net/npm/three/build/three.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/uevent@2/browser.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/photo-sphere-viewer@4/dist/photo-sphere-viewer.min.js"></script>
<body>
<div id="viewer" style="width: 100vw; height: 100vh;"></div>
</div> <script> const viewer = new PhotoSphereViewer.Viewer({ container: document.querySelector('#viewer'), panorama: 'image/pano.jpg', }); </script> <style> html, body, #viewer { margin: 0; width: 100%; height: 100%; } </style> </body>
</html>
|
预览