评论

AR小程序持续踩坑指南

AR小程序踩坑指南

为了兼容安卓帧率问题,转而采用此方案,文档被删除,文档被删除,文档被删除,通过报错信息和朋友得知使用方法

初始化:<开发者工具限定1.0.5及其以上>

WXWebAssembly.instantiate(obsoluteWasmFilePath,importObject)

微信初始化胶水代码算法文件方式

WebAssembly:可以加载本地文件,微信8.0.2起WebAssembly对象被删除

WebAssembly.compile() // 已废弃,文档也已删除,先compile加载wasm文件,再instantiate实例化,其instantiate与WXWebAssembly.instantiate完全不同,传入的是一个arraybuffer对象

WXWebAssembly:没有compile方法,初始化仅支持加载代码包内的wasm绝对路径文件,如/pages/index/index.wasm;

WXWebAssembly.instantiate(obsoluteWasmFilePathath,importObject)

// obsoluteWasmFilePathath为非wxfile://和http开头且以.wasm结尾的绝对路径文件

// importObject为wasm算法模型文件中初始化引入的方法

wasm模型文件:

其中包括算法部分和模型部分<人脸检测,生物检测等等等等>,以及渲染素材,比如眉毛,腮红眼影等

可分拆为单独的data模型文件部分:人脸检测模型,渲染素材

鉴于人脸算法模型文件很容易就超出2M了,可做如下拆分:

Wasm文件可以缩减为仅包含核心算法库和渲染库部分,模型文件抽离成model.data文件,通过WXWebAssembly.instantiate实例化之后导入的方法远程加载模型

模型文件在tensflowjs内包含,model.json和model.bin文件,json文件加载bin文件,c++也是类似机制,一个完整的单独wasm文件包含了从c或者c++转译来的


微信文件系统分为:

代码包文件:仅支持绝对路径读取,且不允许动态增删改,如:/pages/index/index.wasm;

本地文件:通过网络方式下载的文件或缓存文件,其文件路径以wxfile://或http开头,且不允许硬编码为绝对路径,通过wx.env.USER_DATA_PATH也无法编译成绝对路径

本地文件的文件路径均为以下格式:

{{协议名}}://文件路径

其中,协议名在 iOS/Android 客户端为 "wxfile",在开发者工具上为 "http",开发者无需关注这个差异,也不应在代码中去硬编码完整文件路径。

相关阅读:微信小程序文件系统说明文档


以上是使用胶水代码小程序初始化过程中遇到相对棘手问题,分享出来,希望在文档出来前对大家有所帮助,持续更新,欢迎留言



最后一次编辑于  2021-04-14  
点赞 4
收藏
评论

2 个评论

  • Ronny
    Ronny
    2021-10-18

    编译了一个wasm 带上胶水js在普通网页上运行,是没问题的。但是放到小程序里面,就报错了。可以分享一下 怎么改造胶水js的吗?


    2021-10-18
    赞同 2
    回复 1
    • 汤圆🌕
      汤圆🌕
      2021-11-19
      遇到了同样的问题,请问大佬有思路了吗?该如何修改胶水js?谢谢!
      2021-11-19
      回复
  • 来一间
    来一间
    2021-04-15

    看了这篇少踩坑。

    2021-04-15
    赞同
    回复
登录 后发表内容