首页 > 解决方案 > A-frame:如何将对象附加到模型上的某个点(和/或其骨骼)

问题描述

我想将一个对象*附加到一个特定的骨头上,所以它会随着那个骨头移动(比如把帽子戴在角色的头上)。在 three.js 中,我可以执行以下操作:

mesh.skeleton.bones[someindex].add(mesh2)

在框架中执行此操作的最佳方法是什么?

另一种方法可能是将对象作为模型上特定顶点的父对象,但我也不知道该怎么做。

*:通过“对象”,我想我的意思是“具有位置和旋转的实体”在 A 框架术语中

标签: aframe

解决方案


据我所知,a-frame只有一个小的 API 用于处理构建在Three.js加载器上的模型。(+ Don McCurdys 动画混音器)。

我能想到的唯一“A-Frame”触摸是创建和访问基本模型。有:

<a-entity gltf-model="url(model.gltf)" foo>

您可以创建一个框架组件来抓取模型,并将新网格附加到骨骼:

AFRAME.registerComponent("foo", {
  init:function() {
    let mesh = this.el.getObject3D("mesh")
    // or this.el.components["gltf-model"].model
    let mesh2; // get create the model using any THREE loader
    mesh.skeleton.bones[someindex].add(mesh2)
  }
})


<a-element gltf-model="url(hat.gltf)">如果您通过创建帽子并尝试setAttribute()在每个渲染循环(在tick()函数中)上使用它来定位和旋转它 ,我想不出任何重大好处。


推荐阅读