A-рамка: как прикрепить объект к точке на модели (и / или костей)

Я хочу прикрепить объект * к определенной кости, чтобы он двигался вместе с этой костью (скажем, наденьте шляпу на голову персонажа). В three.js я мог бы сделать что-то вроде:

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

Какой лучший способ сделать это в рамке?

Альтернативой может быть родительский объект для конкретной вершины модели, но я тоже не уверен, как это сделать.

*: Под "объектом" я думаю, что я имею в виду "объект с положением и вращением" в терминах A-кадра

1 ответ

Насколько я знаю, a-frame имеет только небольшой API для работы с моделями, основанными на Three.js погрузчики. (+ Анимационный микшер Дона МакКерди).

Единственное касание "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() функция).

Другие вопросы по тегам