A-рамка: как прикрепить объект к точке на модели (и / или костей) - PullRequest
0 голосов
/ 23 мая 2018

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

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

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

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

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

1 Ответ

0 голосов
/ 28 мая 2018

Насколько я знаю, 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()).
...