Filament加载网络gltf文件

在这里插入图片描述
默认情况下,filament 加载glft文件时,所依赖的图片资源是从本地src/main/assets 文件夹里读取的。当我们从加载远程gltf文件时,图片资源也被base64编码成字符串,一起放进了json文件,这种情况,可以按照下面的方法处理:

private suspend fun loadBytesModel(byteArray: ByteArray?, isGltf: Boolean) {
    val byteBuffer = ByteBuffer.wrap(byteArray)
    val rewound = byteBuffer.rewind()
    withContext(Dispatchers.Main) {
      modelViewer.destroyModel()
      if (isGltf) {
        modelViewer.loadModelGltf(rewound) { uri ->
          val s = uri.split(",") // ----------------------🚩
          if (s.size == 2) {
            ByteBuffer.wrap(java.util.Base64.getDecoder().decode(s[1].toByteArray(Charsets.UTF_8)))
          } else {
            return@loadModelGltf byteBuffer
          }
        }
      } else {
        modelViewer.loadModelGlb(rewound)
      }
      modelViewer.transformToUnitCube()
    }
  }

标🚩处代码说明:
在gltf的json文件里,图片资源按Base64 编码,样式如下:
"data:image/png;base64,abcdefg",所以我们以字符,分隔,解码后面的字符串喂到filamentmodelView里去。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值