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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...