And*_* AR 5 javascript three.js 360-panorama
如何使用多分辨率图像实现三个 js 全景查看器,如 pannellum:https ://pannellum.org/documentation/examples/multiresolution/ 。
当前的代码在这里使用three.js所:(//codepen.io/w3core/pen/vEVWML
)。
所以我尝试加载多分辨率图像而不是单个等距柱状图。
我在下面尝试的解决方案:
将单个等距柱状图图像转换为低分辨率 6 立方体地图图像。
并像此示例一样渲染这些图像。( https://threejs.org/examples/canvas_geometry_panorama.html )
var materials = [
loadTexture('px.jpg'), // right
loadTexture('nx.jpg'), // left
loadTexture('py.jpg'), // top
loadTexture('ny.jpg'), // bottom
loadTexture('pz.jpg'), // back
loadTexture('nz.jpg') // front
];
mesh = new THREE.Mesh(new THREE.BoxGeometry(300, 300, 300, 7, 7, 7), materials);
mesh.scale.x = -1;
scene.add(mesh);
Run Code Online (Sandbox Code Playgroud)如果放大任何立方体贴图图像,我需要渲染另一个中等分辨率的图像。
打到这里
如何进行下面的事情
在下面的示例缩放图像中...
我已将缩放级别设为 0,但无法进行渲染缩放 1、2、3 等。
缩放:0(低分辨率立方体贴图正面图像示例)
缩放:1(缩放时,需要渲染下一组中等分辨率的瓷砖正面图像,如下所示)
几个月来我一直在努力解决你所谈论的问题。这不是一件容易的事,但最终还是成功了。我创建了基于 Threejs 的多分辨率全景查看器开源包。它可以在 GitHub 上找到:Avansel Viewer,文档位于此处。
首先,安装包:
npm i avansel
Run Code Online (Sandbox Code Playgroud)
这是如何使用它的示例:
import { Avansel } from "avansel"
const container = document.querySelector('#avansel')
const params = [
{ tileSize: 374, size: 374, fallback: true },
{ tileSize: 512, size: 749 },
{ tileSize: 512, size: 1498 },
{ tileSize: 512, size: 2996 },
{ tileSize: 512, size: 5992 },
]
new Avansel(container)
.multires(params, () => (s, l, x, y) => {
l = parseInt(l) + 1
return `/assets/images/multires-1/${l}/${s}${y}_${x}.jpg`
}).start()
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助。如果您发现任何问题或需要对脚本进行任何调整,请告诉我。我很乐意提供帮助!