У меня есть модель блендера, на которой есть несколько ключей формы.Я экспортирую эту модель и использую ее в 3js.Допустим, это куб.Затем я создаю Three.Points, который рисует маленькие сферы на вершинах этой модели (т.е. Cube).
var cube = loadGLTFFromBlender(gltfFile); // This loads the model
var points = new THREE.Points(cube.geometry, pointMaterial); //got my points
Теперь, используя morphTargets, я анимирую куб.Пока все хорошо.
//Some code that uses the shapee keys
cube.morphTargetInfluences[0] = 0.2; // <-- I animate this value
, но я ожидал, что точки также будут изменяться / анимироваться, поскольку точки используют одну и ту же геометрию.Но, похоже, не работает из коробки.
Некоторые из Google предположили, что морфинг происходит на уровне графического процессора, а данные геометрии в объекте не изменяются.В одном из вопросов StackOverflow ( Three.js: Получить обновленные вершины с морфируемыми целями ), @WestLangley предложил сделать те же самые обновления Geometry на CPU и затем использовать его.
Мои вопросы:
- Существуют ли другие варианты решения этой проблемы.
- Вычисление морфа ЦП кажется медленнее, и я пытаюсь увидеть, есть лиДругой способ синхронизировать мои Three.Points с морфированным кубом?Куб анимирован с помощью morphtargets, и я ожидаю, что Three.Points сделают то же самое.
Полагаю, # 1 - это не вариант, если анимации клавиш формы в Blender более активны?
В идеале может помочь что-то вроде следующего:
cube.morphTargetInfluences[0] = 0.2; // <-- I animate this value
var morphedGeometry = getMorphedGeometry(cube);
syncPointsGeometry(morphedGeometry);