Выбор Raycasting отлично работает для моего проекта на статических сетках, однако для анимированных сеток выбор луча, похоже, не видит движения сетки и реагирует только на неанимированную (оригинальную) позицию сетки.
Это анимированная модель, которая может только подобрать состояние позы ниже первого кадра и создает небольшую красную точку, когда я обнаруживаю модель. Кости-матрицы вычисляются процессором, но новые позиции вершин вычисляются графическим процессором. Таким образом, процессор имеет доступ только к первой позе. Вот почему RayCasting не работает (правильно) для экранированных сеток.
Моя идея - обновить позицию модели при обновлении анимации или использовать вычисления графического процессора для получения местоположения, но я не знаю, как это сделать. Я с нетерпением жду ваших предложений. Спасибо.
В настоящее время raycasting в three.js поддерживает цели морфинга (только для THREE.Geometry
), реплицируя вычисления вершинного шейдера на CPU.
Итак, теоретически вы можете добавить те же функции для поддержки THREE.Geometry
для THREE.Geometry
сеток как для THREE.Geometry
и для THREE.BufferGeometry
. Однако более эффективным подходом было бы использовать "сбор GPU".
Вы можете найти пример выбора GPU в этом примере. В примере объекты не анимированы, но концепция одинаков.
three.js r.98