微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AR.js/Three.js 使用多个 NFT 标记时性能不佳

如何解决AR.js/Three.js 使用多个 NFT 标记时性能不佳

不是简单地放在这里供其他人参考的问题。

对于在 AR.js 中跟踪多个 NFT 标记时遇到严重滞后的其他任何人,我已添加到 ar-nft.dev.js 文件中以减慢对非可见标记的检查以提高性能

  1. 页面底部的加载函数中,将标记 URL 添加标记结果对象中,这在不活动时将是未定义的,而在活动时将被定义

     ar.addEventListener('getNFTMarker',function(ev) {
                        // let AR.js kNow that a NFT marker has been found,with its matrix for positioning
                        markerResult = {
                            type: 'found',matrix: JSON.stringify(ev.data.matrix),markerURL: nftMarkerUrl,//add this line
                        };
                    });
  1. 在handleNFT中备份,将以下内容添加函数底部配置文件调用

process(ev.data.markerURL);

  1. 将以下内容添加到流程函数
function process(yeet) {
worker.postMessage({ type: "process",imagedata: imageData,yeet:yeet},[imageData.data.buffer]);
  1. 回到底部再次将消息更改为:
this.onmessage = function(e) {
            var msg = e.data;
            console.log("ID: "+msg.yeet);
            switch (msg.type) {
                case "init":
                    {
                        load(msg);
                        return;
                    }
                case "process":
                    {
                        next = msg.imagedata;
                        if(typeof msg.yeet == 'undefined'){
                            setTimeout(process,1000);
                        }else{
                            process();
                        }
                        // 
                        
                        return;
                    }
            }
        };

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。