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()
функция).