“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 中使用<script>
标签导入 afram 和 ar.js,使用 src 而不是 gltf-model,使用 <a-gltf-model>
和 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
组件假定<a-asset-item>
节点已准备就绪。但是 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组件中(即<Scene>
)
跟踪安装场景+资产的时间
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
在安装时使用条件渲染<Scene/>
:
<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的主要内容,如果未能解决你的问题,请参考以下文章