“core:propertyTypes:warn “#bot”资产未找到。“ - aframe-master.js

Posted

技术标签:

【中文标题】“core:propertyTypes:warn “#bot”资产未找到。“ - aframe-master.js【英文标题】:"core:propertyTypes:warn "#bot" asset not found. " - aframe-master.js 【发布时间】:2022-01-13 18:14:16 【问题描述】:

最近开始使用带有 react 的 aframe 和 ar.js。到目前为止,工作就像一个魅力。不幸的是,现在无法加载 gltf 模型。

这是我的场景:

<a-scene
        vr-mode-ui="enabled: false;"
        arjs="debugUIEnabled: false; patternRatio: 0.70"
        device-orientation-permission-ui="enabled: true">

          <a-assets timeout='3000'>
            <a-asset-item id="bot" src="url(/assets/robot_walking/scene.gltf)"></a-asset-item>
          </a-assets>

          <a-marker type="pattern" url="markers/07ratio/fly/pattern-fly.patt" id="m3" registermarker >
            <a-entity
              id="hat"
              gltf-model="#bot"
              animation-mixer
              visible="true"
              scale="0.05 0.05 0.05"
              position="0 0 0"
              rotation="0 0 0">
            </a-entity>
          </a-marker>

          <a-entity camera look-controls id="camera"></a-entity>

      </a-scene>

它在反应组件中呈现。 Aframe 和 Ar.js 已使用 npm 安装。 它已经使用了不同的 gltf

gltf-mode="url(/assets/sun_straw_hat/scene.gltf)"

内联。那个模型没有任何动画,也没有那么大。但我也不能在那里使用资产管理器。有人知道我在这里做错了什么吗?到目前为止,我尝试导入 aframe-extras,在 index.html 中使用&lt;script&gt; 标签导入 afram 和 ar.js,使用 src 而不是 gltf-model,使用 &lt;a-gltf-model&gt; 和 src,并改变资产超时。没有运气。

亲切的问候 奥利斯

【问题讨论】:

它是否在 react 之外工作(或者没有 arjs)? 嘿 Piotr,感谢您的快速回复。我在没有 ar.js 的情况下运行它并做出反应,它运行良好(带有动画)。使用 ar.js 的纹理会稍微关闭,但它仍然有效(也适用于动画)。发现,规模比以前的模型小得多。现在它也出现在反应中。但是动画仍然不起作用,我仍然必须在没有资产管理器的情况下导入它。 (我在 react 中导入的 aframe-extras 与使用 你有没有机会在glitch 上抛出一个最小的例子?动画是在没有反应的情况下工作,还是根本无法工作? 啊现在它的工作......只需添加'clip:*; ' 到动画混合器。非常感谢您的回复。如果不是只有 aframe 场景的白色背景,就不会看到它太小了。 ^^ 很高兴它的工作:) 享受框架的乐趣! 【参考方案1】:

我可能会简化很多,但是 afaik:


通常,在这样的设置中:

<a-assets>
  <a-asset-item id="model" src="scene.gltf"></a-asset-item>
</a-assets>
<a-entity gltf-model="#model"></a-entity>

gltf-model 组件假定&lt;a-asset-item&gt; 节点已准备就绪。但是 react 有自己的 algorithm 和 when to render which node。

因为gltf-model不能查询#model节点,所以报错:

core:propertyTypes:warn "#bot" asset not found.

我想我们可以:

1) 直接从 url 加载模型

gltf-model="url(path_to_model.gltf)"

应该可以正常工作(as it is in this remix of your glitch):

2) 尝试在 [gltf-model] one 之前渲染a-assets 节点

可能有更好的方法,但我已经:

    将marker + camera放在另一个react组件中(即&lt;Scene&gt;

    跟踪安装场景+资产的时间

      class App extends React.Component 
    
        constructor(props) 
          super(props);
          this.state = assetsReady: false;
        
        componentDidMount() 
          this.setState(assetsReady: true);
          // for whatever reason i need to set it manually?
          this.state.assetsReady = true
        
    

    在安装时使用条件渲染&lt;Scene/&gt;

    <a-scene>
      <a-assets>
         <a-asset-item id="model" 
                       src="https://cdn.glitch.me/fc511399-d148-4898-ad51-f0b6fafd32a6/scene.gltf"></a-asset-item>  
         </a-assets>
       
           // this is inside Apps render() function
           this.state.assetsReady == true &&
           <Scene />
                   
    </a-scene> 
    

在this remix of your glitch 中查看它似乎也有效:


模型由于比例而出现故障(将模型缩放 30 - 50 倍) - 一个简单的解决方案是使用 logarithmic depth buffer:

<a-scene renderer="logarithmicDepthBuffer: true"></a-scene>

【讨论】:

感谢您的支持。将实体放在单独的组件中不仅解决了问题,而且现在代码看起来也更清晰了。

以上是关于“core:propertyTypes:warn “#bot”资产未找到。“ - aframe-master.js的主要内容,如果未能解决你的问题,请参考以下文章