Я загрузил миксамо анимацию в сцену через ImportMe sh (примечание: это clojurescript, но это не должно относиться к обсуждению):
(.ImportMesh js/BABYLON.SceneLoader "" "models/ybot_boxing/" "ybot_boxing.glb" main-scene/scene
#(mixamo-model-loaded %1 %2 %3 picked-mesh)))
После импорта модель отображает и анимирует как и ожидалось. Однако, как часть моей логики сцены c, пользователь сможет щелкнуть плитку, на которой стоит модель, и выключить модель (т.е. больше не отображать):
(let [mesh1 (.getMeshByID main-scene/scene "__root__")]
(if (.isEnabled mesh1)
(.setEnabled mesh1 false)
(.setEnabled mesh1 true)))
Однако, когда я смотрю, я вызываю Scene Explorer:
(-> main-scene/scene (.-debugLayer) (.show))
И я смотрю в разделе «Группы анимации» и вижу, что анимация для отключенных моделей все еще работает. Я понимаю, что с дополнительными усилиями я могу приостановить animationGroup, но когда я приостанавливаю анимацию (вручную, с помощью Scene Explorer) и использую диспетчер задач windows (да, я знаю, грубый инструмент), я не вижу разницы в CPU или GPU между приостановкой или отсутствием приостановки анимации, или когда модель отображается или не отображается.
Поскольку анимация не является динамической c и «предварительно рассчитывается», действительно ли она использует какую-либо больше процессора / графического процессора, чем модель, которая не анимирована? Даже если это произойдет, будет ли это так, если модель скрыта / не визуализирована? В итоге у меня будет загружено около шестнадцати различных моделей миксамо, а модели / анимация миксамо довольно ресурсоемки. Итак, сначала blu sh, кажется очевидным, что вы должны остановить анимацию, но, поскольку я действительно не хочу поддерживать состояние, независимо от того, анимируется ли что-то или нет, было бы неплохо просто действительно просто спрячьте / отключите me sh и не беспокойтесь о том, что анимация работает в фоновом режиме.
Вавилон. js v4.1.0-бета.20 - WebGL2