代码之家  ›  专栏  ›  技术社区  ›  Gabriel Grant

A帧:如何将对象附加到模型上的点(和/或其骨骼)

  •  0
  • Gabriel Grant  · 技术社区  · 7 年前

    我想把一个物体*附在一个特定的骨头上,这样它就会随着骨头一起移动(比如说,把帽子戴在角色的头上)。在3.js中,我可以做如下的事情:

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

    在A帧中,最好的方法是什么?

    另一种选择可能是将对象设置为模型上某个特定顶点的父对象,但我也不确定如何执行此操作。

    *:通过“对象”,我认为我的意思是A帧术语中的“位置和旋转实体”。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Piotr Adam Milewski    7 年前

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

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

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

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

    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() 功能)。