Я видел на форуме похожий вопрос, но в нем предлагалось частное решение для эмиттера который ездит по кругу, а мне нужно общее.
1. Я хочу прицепить эффект к подвижному объекту в 3D сцене (объект может двигаться, поворачиваться и т.д.). В общем случае я не знаю какой эффект сделает художник, он возможно применит анимацию эмиттера и будет его двигать или вращать.
Я не могу использовать model-view матрицу от 3D объекта при отрисовке эффекта, потому что это сломает ориентацию частиц на камеру. Вызвать Magic_SetEmitterPosition() и Magic_SetEmitterDirection() я не могу потому что это сломает анимацию движения эмиттера из редактора, которую задавал художник. Что делать?
2. Я думал что могу поместить эффект в анимированную папку, она как бы создаст новую неанимированную систему координат и я смогу двигать/вращать/скейлить эту папку не ломая анимацию вложенного в неё эмиттера. Но при попытке сделать Magic_SetScale() для анимированной папки эффект вообще визуально сломался. Мне показалось (могу ошибаться) что scale применился к размеру частиц вложенного в папку эмиттера, но не применился к их координатам. Как правильно двигать, масштабировать анимированные папки?
3. Как действуют вызовы API применяемые к анимированным папкам на вложенные эффекты? То есть в каких случаях вообще нужен вызов Magic_GetEmitter()? В доках написано что это нужно для визуализации эмиттеров из папки, но как я понял они все таки визуализируются "сами" когда делаешь Magic_PrepareRenderArrays() для анимированной папки.