【发布时间】:2019-02-18 07:19:21
【问题描述】:
我正在编写一个简单的脚本来在 VR 中显示 360 度图像,同时动态更改图像。 目前,下一个图像源由一个简单的超时设置(在 4 个本地 .jpg 中),但我计划从远程相机获取图像,然后每 x 秒更新一次天空视图。
我能够更改 a-sky src 属性并设置不同的 n.jpg。 但我无法将 blob 设置为源。
现在我只是将本地 jpg 转换为 blob,但下一步是要求远程相机 api 获取 jpg 二进制文件,并将其转换为 blob url。 无论如何,没有显示新图像。 它似乎仅在您将静态内容作为 src 时才有效。
我该怎么办? 谢谢
这里部分出处:
setInterval(updatePanImg, 2000);
var seq = 1;
function updatePanImg() {
let blob_src;
if (seq >= 4) seq = 1; else seq++;
blob_src = seq + ".jpg";
console.log('blob_src update ' + blob_src);
//1-working (/imgname.jpg)
//document.getElementById('asky').setAttribute("material", "src", blob_src);
//2-not working (/blob:......)
return fetch(blob_src)
.then((response)=> {
return response.blob();
})
.then(blob => {
let blob_src_url = URL.createObjectURL(blob);
document.getElementById('asky').setAttribute("material", "src", blob_src_url);
return blob_src_url;
});
}
<script src="aframe-master.min.js"></script>
<a-scene>
<a-sky id="asky" material="opacity:1; src: 4.jpg" rotation="0 -130 0" foo></a-sky>
</a-scene>
【问题讨论】:
-
这两个看起来都应该可以工作......你能多说点什么不适合 (2) 吗?您在 JS 控制台中看到错误了吗?理想情况下,现场演示会更好。
-
@DonMcCurdy 在控制台中没有错误。您可以在此处查看 sn-p:jsfiddle.net/w1z5kgc3/9
-
也试过改变标准的'src'标签而不是材料,但行为是一样的。它不喜欢数据 url..
-
根据我的经验,数据 url(例如
setAttribute("src", "data:image/...;base64,..."))似乎有效,但我无法让 blob 出现。
标签: blob aframe src virtual-reality