全景游览的内存管理

时间:2019-09-04 16:56:19

标签: memory aframe panoramas

浏览iPhone部分全景图。 其中有40多种,似乎移动设备上的内存已用完。

此外,使用A-frame 0.5.0版,以下代码可在台式机上运行,​​但在最新的0.9.2版中无效。

<a-entity id="pano_01" visible="true">
<a-curvedimage asset-on-demand="src: ../Html_Templates/pix/Upgrade.jpg" height="145" radius="100" theta-length="300" rotation="0 33 0"></a-curvedimage>
<a-sky asset-on-demand="src: ../Html_Templates/pix/Upgrade_sky.jpg" rotation="0 -90 0"></a-sky>
<a-image asset-on-demand="src: ../Html_Templates/pix/UI_Next.png" position="0 -0.5 -3" scale="0.35 0.35 0.35" onclick="setpano_02()"></a-image>
</a-entity>

<a-entity id="pano_02" visible="false">
<a-sky asset-on-demand="src: ../Html_Templates/pix/JRO_Arrive_sky.jpg"></a-sky>
<a-curvedimage asset-on-demand="src: ../Html_Templates/pix/JRO_Arrive.jpg" height="140" radius="100.0" theta-length="300" rotation="0 60 0"></a-curvedimage>
<a-image asset-on-demand="src: ../Html_Templates/pix/UI_Next.png" position="1 -0.5 -3" scale="0.35 0.35 0.35" onclick="setpano_03()"></a-image>
<a-image asset-on-demand="src: ../Html_Templates/pix/UI_Back.png" position="-1 -0.5 -3" scale="0.35 0.35 0.35" onclick="setpano_01()"></a-image>
</a-entity>

支持上述内容的Java:

function setpano_01() {
 document.getElementById('pano_01').setAttribute('visible', 'true')
 document.getElementById('pano_02').setAttribute('visible', 'false')
}
function setpano_02() {
 document.getElementById('pano_01').setAttribute('visible', 'false')
 document.getElementById('pano_02').setAttribute('visible', 'true')
 document.getElementById('pano_03').setAttribute('visible', 'false')

我的期望是按需资产脚本将有助于释放内存资源,但似乎不适用于该策略。 另外,我希望最新版本的A-Frame能够改善内存管理。

(我希望这个问题现在措辞更好)

1 个答案:

答案 0 :(得分:0)

有一个自定义组件,称为按需资产。 https://www.npmjs.com/package/aframe-asset-on-demand-component

它动态地将图像作为资产加载,也将其从内存中删除。 这可能会解决您的图形内存问题。

“不再需要从内存中删除资产。如果仅从实体中删除纹理,则不会从THREE.JS中完全删除它,而仍会使用宝贵的内存(特别是在移动设备上非常宝贵)。A帧Asset OnDemand确保以释放可用内存的方式删除Asset。”

我通过搜索“ aframe动态加载资产”发现了这一点