Swift RealityKit BlendShapes не работает во время воспроизведения анимацииIOS

Программируем под IOS
Ответить
Anonymous
 Swift RealityKit BlendShapes не работает во время воспроизведения анимации

Сообщение Anonymous »

У меня возникла проблема с RealityKit 3.0+ при попытке анимировать BlendShapes (ShapeKeys) для персонажа во время воспроизведения предопределенной анимации (из модели .usdz). Независимо от того, что я пытаюсь сделать, клавиши формы не анимируются должным образом, если какая-либо анимация в данный момент воспроизводится с помощью playAnimation().
Что я пытаюсь сделать
Я хочу воспроизвести анимацию персонажа (например, волну), одновременно смешивая выражение лица (например, моргание или движение губ) с помощью BlendShapeWeightsComponent.
Это отлично работает, когда анимация не воспроизводится, но когда я запускаю анимацию с помощью entity.playAnimation(...), ключи формы, кажется, полностью игнорируются или переопределяются во время этого воспроизведения.
Моя настройка
Модель: Оснащенный персонаж с BlendShapes и анимацией внутри файла .usdz (экспортированный из Blender)
Я вручную анимирую ключи формы с помощью setBlendShapes(...), как показано ниже.

Код: Выделить всё

func setBlendShapes(_ blendShapes: [String: Float]) {
guard let root = modelEntity,
let armatureEntity = findEntity(named: "Armature", in: root),
var blendShapeComponent = armatureEntity.components[BlendShapeWeightsComponent.self] else { return }

let weightNames = blendShapeComponent.weightSet[0].weightNames
var weights = blendShapeComponent.weightSet[0].weights

for (blendShapeName, weight) in blendShapes {
if let index = weightNames.firstIndex(of: blendShapeName) {
weights[index] = weight
}
}

blendShapeComponent.weightSet[0].weights = weights
armatureEntity.components.set(blendShapeComponent)
}
Это прекрасно работает… пока я не активирую что-то вроде:

Код: Выделить всё

modelEntity.playAnimation(trimmedAnimation)
Как только воспроизводится анимация, формы смешивания больше не обновляются видимым образом — даже несмотря на то, что журналы говорят, что значения меняются.
В SceneKit та же модель работает хорошо, формы смешивания анимируются вместе с воспроизведением анимации.
Как я могу анимировать или обновлять BlendShapes во время воспроизведения анимации (из модели)?
Это ограничение в RealityKit, или я упускаю что-то критическое в как комбинировать скелетную анимацию с весами BlendShape?
Чтобы упростить воспроизведение, я создал демонстрационный проект и буду рад поделиться им при необходимости.
Заранее спасибо!
Анимация поясных форм вместе с воспроизведением анимации

Подробнее здесь: https://stackoverflow.com/questions/797 ... n-playback
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»