Ar.js 图像跟踪 NFT - 在 Worker 403 上加载标记时出错

Ar.js image tracking NFT - Error in loading marker on Worker 403

我正在尝试此处解释的图像跟踪示例 - https://github.com/AR-js-org/AR.js#get-started 我用自己的图像和视频替换了图像和视频,并将整个项目添加到 Amazon S3 存储桶中。 当我 运行 html 页面时,浏览器控制台出现错误 "Error in loading marker on Worker 403"。 我假设这表明 NFT 图像以某种方式未加载。控制台中没有指示 CORS 错误或任何其他未经授权的错误。

我在浏览一些关于堆栈溢出的页面后尝试过的事情(但它们没有帮助)-

有人可以帮我解决 NFT 正确加载的错误或缺失吗?

这是我的代码 -

    <script 
   src="https://cdn.jsdelivr.net/gh/aframevr/aframe@1c2407b26c61958baa93967b5412487cd94b290b/dist/aframe-master.min.js"></script>
<script src="https://raw.githack.com/AR-js-org/AR.js/master/aframe/build/aframe-ar-nft.js"></script>

<style>
  .arjs-loader {
    height: 100%;
    width: 100%;
    position: absolute;
    top: 0;
    left: 0;
    background-color: rgba(0, 0, 0, 0.8);
    z-index: 9999;
    display: flex;
    justify-content: center;
    align-items: center;
  }

  .arjs-loader div {
    text-align: center;
    font-size: 1.25em;
    color: white;
  }
</style>

<body style="margin : 0px; overflow: hidden;">
  <!-- minimal loader shown until image descriptors are loaded -->
  <div class="arjs-loader">
    <div>Loading, please wait...</div>
  </div>
  <a-scene
    vr-mode-ui="enabled: false;"
    renderer="logarithmicDepthBuffer: true;"
    embedded
    arjs="trackingMethod: best; sourceType: webcam;debugUIEnabled: false;"
  >
    <!-- we use cors proxy to avoid cross-origin problems -->
    <a-nft
      type="nft"
      url="https://ar-js-image-tracking-1.s3.ap-south-1.amazonaws.com/ar-js-image-tracking-1/images/pinball.jpg"
      smooth="true"
      smoothCount="10"
      smoothTolerance=".01"
      smoothThreshold="5"
    >
      <a-entity
        gltf-model="https://ar-js-image-tracking-1.s3.ap-south-1.amazonaws.com/ar-js-image-tracking-1/images/video1.mp4"
        scale="5 5 5"
        position="50 150 0"
      >
      </a-entity>
    </a-nft>
    <a-entity camera></a-entity>
  </a-scene>
</body>

更新: 我已经更改了我的代码以使用 nft merker 和视频。但我仍然遇到同样的错误。这是更新后的代码:

<script src="https://cdn.jsdelivr.net/gh/aframevr/aframe@1c2407b26c61958baa93967b5412487cd94b290b/dist/aframe-master.min.js"></script>
<script src="https://raw.githack.com/AR-js-org/AR.js/master/aframe/build/aframe-ar-nft.js"></script>

<style>
  .arjs-loader {
    height: 100%;
    width: 100%;
    position: absolute;
    top: 0;
    left: 0;
    background-color: rgba(0, 0, 0, 0.8);
    z-index: 9999;
    display: flex;
    justify-content: center;
    align-items: center;
  }

  .arjs-loader div {
    text-align: center;
    font-size: 1.25em;
    color: white;
  }
</style>

<body style="margin : 0px; overflow: hidden;">
  <!-- minimal loader shown until image descriptors are loaded -->
  <div class="arjs-loader">
    <div>Loading, please wait...</div>
  </div>
  <a-scene
    vr-mode-ui="enabled: false;"
    renderer="logarithmicDepthBuffer: true;"
    embedded
    arjs="trackingMethod: best; sourceType: webcam;debugUIEnabled: false;"
  >
    <!-- we use cors proxy to avoid cross-origin problems -->
    <a-nft
      type="nft"
      url="https://d2a3azuonia3td.cloudfront.net/ar-js-image-tracking-1/images/peacock-nft/peacock"
      smooth="true"
      smoothCount="10"
      smoothTolerance=".01"
      smoothThreshold="5"
    >
      <a-video
        src="https://d2a3azuonia3td.cloudfront.net/ar-js-image-tracking-1/images/video1.mp4"
        width="9"
        height="9"
        position="50 150 0"
      >
      </a-video>
    </a-nft>
    <a-entity camera></a-entity>
  </a-scene>
</body>

更新 2 - @Kalwalt 的解决方案解决了我的问题。此外,原来我的旧 html 文件仍然缓存在 Cloudfront 中。我必须使该文件无效,以便从 S3 存储桶中提取较新的版本。

您使用的标记是 .jpg 图片,这不是 a-nft 所需要的。您需要使用此 Carnaux NFT Marker Creator 从图像中制作 NFT(这需要时间)

或按照此文档获取 Node 版本 AR.js NFT Marker Creator Docs


编辑:此外,您使用的是 <a-entity gltf-model...>,但使用的是 .mp4(视频)。

gltf-model 适用于 .gltf.glb 格式(3D 模型)。如果您想使用视频,请使用 a-video

NFTN自然F自然Tracking 使用 "descriptors" 跟踪所需的图像。为此,您需要创建自己的描述符,即 NFT 标记,您有两种选择:

  1. 使用在线工具 carnaux.github.io/NFT-Marker-Creator/ 更容易但更慢
  2. nodejs 应用程序,但您需要下载或克隆 repository

按照 Readme or my tutorial 中的说明进行操作。

您遇到了那个错误 "Error in loading marker on Worker 403"。因为你试图使用 jpg 图片作为 NFT 标记,这是不允许的。

此外,您正在尝试加载视频而不是 gltf 模型。如果你想加载视频,你应该使用 <a-video> 原语。对于 gltf 提供扩展名为 .gltf 或 .glb 的 gltf 模型。