我想将一个物体*附加到一个特定的骨头上,所以它会随着那个骨骼一起移动(想想把一个帽子放在一个角色的头上,比如说)。在three.js中,我可以做类似的事情:
mesh.skeleton.bones[someindex].add(mesh2)
在框架中执行此操作的最佳方式是什么?
替代方案可能是将对象父项提供给模型上的特定顶点,但我也不确定如何做到这一点。
*:" object",我认为我的意思是"具有位置和轮换的实体"用A帧术语
答案 0 :(得分:1)
据我所知,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()
进行定位和旋转,我无法想到任何重大好处。