diff --git a/src/components/gltf-model-plus.js b/src/components/gltf-model-plus.js
index 6e79da6ff80c4282685dd8da5024cd8f618135ad..7128e506a138f56b4f4d177e7af2a8c895a9c174 100644
--- a/src/components/gltf-model-plus.js
+++ b/src/components/gltf-model-plus.js
@@ -209,23 +209,6 @@ async function loadEnvMap() {
   return texture;
 }
 
-function resolveURL(url, path) {
-  // Invalid URL
-  if (typeof url !== "string" || url === "") return "";
-
-  // Absolute URL http://,https://,//
-  if (/^(https?:)?\/\//i.test(url)) return url;
-
-  // Data URI
-  if (/^data:.*,.*$/i.test(url)) return url;
-
-  // Blob URL
-  if (/^blob:.*$/i.test(url)) return url;
-
-  // Relative URL
-  return path + url;
-}
-
 async function loadGLTF(src, preferredTechnique, onProgress) {
   const { raw, origin, contentType } = await resolveMedia(src);
   const basePath = THREE.LoaderUtils.extractUrlBase(origin);
@@ -253,7 +236,7 @@ async function loadGLTF(src, preferredTechnique, onProgress) {
 
   if (images) {
     for (const image of images) {
-      const imagePromise = resolveMedia(resolveURL(image.uri, parser.options.path)).then(({ raw }) => {
+      const imagePromise = resolveMedia(new URL(image.uri, parser.options.path).href).then(({ raw }) => {
         image.uri = raw;
       });
 
@@ -263,7 +246,7 @@ async function loadGLTF(src, preferredTechnique, onProgress) {
 
   if (buffers) {
     for (const buffer of buffers) {
-      const bufferPromise = resolveMedia(resolveURL(buffer.uri, parser.options.path)).then(({ raw }) => {
+      const bufferPromise = resolveMedia(new URL(buffer.uri, parser.options.path).href).then(({ raw }) => {
         buffer.uri = raw;
       });