Jump to content

[SOLVED] How to play animation stored in primary mesh file in Editor


photo

Recommended Posts

I want to create ObjectMeshSkinned with single mesh file - with mesh data and animation in it. How can I play the embedded animation in Editor? I was trying to setAnimName() with name of embedded animation - this does not work, name is highlighted with Red as missing file. Is there any solution?

Link to comment

Лучше писать по-русски? Здравствуйте, подскажите - пытаюсь воспроизвести в ObjectMeshSkinned анимацию, встроенную в Mesh файл - возможно ли это? Или обязательно нужен отдельный файл?

Link to comment
3 minutes ago, KuDeSnik33 said:

Лучше писать по-русски? Здравствуйте, подскажите - пытаюсь воспроизвести в ObjectMeshSkinned анимацию, встроенную в Mesh файл - возможно ли это? Или обязательно нужен отдельный файл?

Добрый день!

К сожалению, не совсем понятно, в чём заключается проблема. Вы используете редактор или пытаетесь сделать это через наше API? В данный момент при использовании редактора всё работает как задумано. После импорта модели создаётся файл ".anim", который автоматически назначается в поле "Preview Animation" и воспроизводится после нажатия кнопки "Play".

Можете, пожалуйста, более точно описать шаги для воспроизведения проблемы или предоставить нам простой семпл, чтобы мы могли повторить проблему у себя?

P.S. Вы можете писать так, как вы будет удобно, используя любой язык :)

Спасибо!

Link to comment

Спасибо за ответ, я делаю плагин для редактора и генерирую Mesh без сохранения в файл. С самим мешем проблем нет, проблема с анимацией, встроенной в него. Потому мой вопрос - есть ли возможность воспроизвести анимацию, встроенную в тот же Mesh файл - хотябы через API, а лучше и в самом редакторе.

Link to comment
20 minutes ago, KuDeSnik33 said:

Спасибо за ответ, я делаю плагин для редактора и генерирую Mesh без сохранения в файл. С самим мешем проблем нет, проблема с анимацией, встроенной в него. Потому мой вопрос - есть ли возможность воспроизвести анимацию, встроенную в тот же Mesh файл - хотябы через API, а лучше и в самом редакторе.

Как вы добавляете анимацию в меш? Если в меше есть анимация, то при создании ObjectMeshSkinned она сразу будет загружена. Можно проверить через getNumAnimations(). Потом можно взять её id и настроить на нулевой слой. Потом просто play() и должно работать.

Если возможно, пришлите сниппет кода, пожалуйста.

Спасибо!

Link to comment

Этот вариант для своего кода - а в редакторе воспроизвести такую анимацию по кнопке Play возможности нет?

Link to comment
18 hours ago, KuDeSnik33 said:

Этот вариант для своего кода - а в редакторе воспроизвести такую анимацию по кнопке Play возможности нет?

Такая возможность есть, посмотрите пожалуйста ассет в аттаче - в данном случае ".anim" вшит в ".mesh" и воспроизводится из редактора по кнопке Play как и ожидается.

skinned_01.mesh

Link to comment

Спасибо, почти всё получилось - единственная проблема, не могу запустить анимацию с нулевой скоростью.
 

    auto result = Unigine::ObjectMeshSkinned::create(m_mesh);
    result->setNumLayers(1);
    int resultAnimIdx = result->findAnimation("pointRailAnim");
    if (resultAnimIdx != -1)
    {
      result->setAnimation(0, resultAnimIdx);
      result->setLayer(0, true, 1.0f);
      result->setSpeed(0.0f);
      result->play();
      result->setTime(0.0f);
    }

Анимация не воспроизводится после создания - кости в исходной позиции. Если я сделаю повторно 

int animIdx = skinnedNode->findAnimation("pointRailAnim");
if (animIdx >= 0)
{
 skinnedNode->setAnimation(0, animIdx);
 skinnedNode->setTime(0.0f);
 skinnedNode->play();
}

То кадр применится

Link to comment

Это корректное поведение для нулевой скорости. Время не меняется, а значит и кадры новые применять в play() не нужно. Т.е. new_time == old_time и ничего не делаем. Все заработает с изменением времени. Иначе бы каждый кадр в пустую вычисляли все трансформации костей и применяли без всяких изменений.

Спасибо!

Link to comment
  • silent changed the title to [SOLVED] How to play animation stored in primary mesh file in Editor
×
×
  • Create New...