From 460c0b842cc32a21589b182deef2886c6e55b379 Mon Sep 17 00:00:00 2001
From: qianqian <linefateme@gmail.com>
Date: Tue, 9 May 2023 15:45:52 +0800
Subject: [PATCH] =?UTF-8?q?fix:=20GLTFLoader=E5=8A=A0=E8=BD=BD=E6=9C=89?=
 =?UTF-8?q?=E9=A2=9D=E5=A4=96=E7=BA=B9=E7=90=86=E9=85=8D=E7=BD=AE=E7=9A=84?=
 =?UTF-8?q?gltf=E6=A8=A1=E5=9E=8B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../packageAPI/pages/ar/loaders/gltf-loader.js  | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/miniprogram/packageAPI/pages/ar/loaders/gltf-loader.js b/miniprogram/packageAPI/pages/ar/loaders/gltf-loader.js
index 788b1dad..8382fc69 100644
--- a/miniprogram/packageAPI/pages/ar/loaders/gltf-loader.js
+++ b/miniprogram/packageAPI/pages/ar/loaders/gltf-loader.js
@@ -999,7 +999,7 @@ export function registerGLTFLoader(THREE) {
       var json = this.json;
       var options = this.options;
       var textureLoader = this.textureLoader;
-      var URL = global.URL;
+      // var URL = global.URL;
       var textureDef = json.textures[textureIndex];
       var textureExtensions = textureDef.extensions || {};
       var source;
@@ -1013,11 +1013,14 @@ export function registerGLTFLoader(THREE) {
       if (source.bufferView !== undefined) {
         sourceURI = parser.getDependency('bufferView', source.bufferView).then(function(bufferView) {
           isObjectURL = true;
-          var blob = new global.Blob([bufferView], {
-            type: source.mimeType
-          });
-          sourceURI = URL.createObjectURL(blob);
-          return sourceURI
+          // var blob = new global.Blob([bufferView], {
+          //   type: source.mimeType
+          // });
+          // sourceURI = URL.createObjectURL(blob);
+          // 小程序不支持 Blob 对象,使用 base64 编码的字符串来创建 data URI
+          const base64Str = wx.arrayBufferToBase64(bufferView);
+          sourceURI = `data:${source.mimeType};base64,${base64Str}`;
+          return sourceURI;
         })
       }
       return Promise.resolve(sourceURI).then(function(sourceURI) {
@@ -1030,7 +1033,7 @@ export function registerGLTFLoader(THREE) {
         })
       }).then(function(texture) {
         if (isObjectURL === true) {
-          URL.revokeObjectURL(sourceURI)
+          // URL.revokeObjectURL(sourceURI)
         }
         texture.flipY = false;
         if (textureDef.name !== undefined) texture.name = textureDef.name;