0

当我们加载大 3D 模型或大视频时,加载资产(资源)和渲染资源需要时间,所以我想显示加载屏幕或加载 Gif 文件或加载 A-Box - 直到整个资产加载和渲染已完成,在屏幕上或在图案上。请检查我的故障,它的工作但需要 10-15 秒才能加载和渲染。

我尝试添加资产加载管理器,但没有成功。我尝试了所有方法,但没有奏效

<!DOCTYPE html>
<html lang="en">
   <head>
      <title>Hello!</title>
      <meta charset="utf-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <script type="text/javascript" src="https://aframe.io/releases/0.8.2/aframe.min.js"></script>
      <script type="text/javascript" src="https://cdn.rawgit.com/jeromeetienne/AR.js/1.7.2/aframe/build/aframe-ar.min.js"></script>
      <script type="text/javascript" src="https://cdn.rawgit.com/donmccurdy/aframe-extras/v6.0.0/dist/aframe-extras.min.js"></script>
      <script src="https://unpkg.com/aframe-animation-component@5.1.2/dist/aframe-animation-component.min.js"></script>
   </head>
   <body>
      <a-scene vr-mode-ui="enabled: false" artoolkit='sourceType: webcam; detectionMode: mono; maxDetectionRate: 90;' arjs='debugUIEnabled: false;detectionMode: mono_and_matrix; matrixCodeType: 3x3;'>
         <a-assets>
            <a-entity src="https://cdn.glitch.com/a5ca03d3-3024-44dc-9256-0b75c4247613%2Fscene.gltf?v=1563255364433" id="model"></a-entity>
         </a-assets>
         <a-marker preset="hiro">
            <a-entity  gltf-model="#model" material='transparent:true;shader:flat;side:double;metelness:2' scale="0.04 0.04 0.04" ></a-entity>
         </a-marker>
         <a-entity camera></a-entity>
         <a-entity shadow="cast: true"></a-entity>
      </a-scene>
      <script>
         // Workaround for an AR.js bug (https://github.com/jeromeetienne/AR.js/issues/410)
         const sceneEl = document.querySelector('a-scene');
         sceneEl.addEventListener('loaded', () => {
           sceneEl.camera = new THREE.PerspectiveCamera();
           scene.add( camera );
         });
      </script>
   </body>
</html>

显示HIRO模式后,加载和渲染需要 10-15 秒(取决于 Internet 速度)。我想显示一些预加载器或加载屏幕或一些Gif 加载图像以显示直到对象(资产)完全加载并在渲染和加载完成后渲染并消失......

提前致谢

4

1 回答 1

1

对于模型,您可以使用model-loaded事件:

<a-marker preset="hiro">
   <a-entity id='loadingEl'></a-entity>
   <a-entity gltf-model="#model"></a-entity>
</a-marker>


可能有一个带有“加载”图像的#loadingEl原始框,当模型加载时,您删除(实体或其可见性):

AFRAME.registerComponent('foo', {
   init: function() {
      this.el.addEventListener('model-loaded', e => {
          document.querySelector("#loadingEl").remove()
      })
   }
})

故障在这里


系统发出<a-assets>了一个loaded事件,您也可以将它用于视频。

于 2019-07-16T07:23:31.250 回答