Предположим, что якорь загружается из блендера, вызывая AI_SCENE_FLAGS_INCOMPLETE - PullRequest
1 голос
/ 05 апреля 2020

Я работаю над системой скелетной анимации, использующей assimp для анализа файлов .fbx. sh - это возможность загружать файл .fbx, который содержит только арматуру (каркас / оснастка). Затем я загружаю эту арматуру в свою собственную структуру данных и назначаю ссылку на нее как на элемент me sh (несколько ячеек, указывающих на одни и те же данные арматуры).

После загрузки моего файла .fbx, который содержит единственную арматуру (экспортированную из блендера). Предполагается, что ассимп загружает все как положено:

enter image description here

Однако, похоже, что бит AI_SCENE_FLAGS_INCOMPLETE работает перевернулся по какой-то причине, так как я оказался в следующем блоке:

if (this->aiScene->mFlags & AI_SCENE_FLAGS_INCOMPLETE)
{
    std::string errorMessage = this->aiImporter.GetErrorString();
    std::cout << "ERROR::ASSIMP::" << errorMessage << "\n";
    std::cin.get();
    exit(EXIT_FAILURE);
}

... only this->aiImporter.GetErrorString() возвращает пустую строку, не предоставляя информации о том, почему это может быть.

Так что мой вопрос ... Почему бит AI_SCENE_FLAGS_INCOMPLETE переворачивается в true, когда загружается только арматура? Должен ли я просто проигнорировать это и продолжить свой веселый путь, или есть какая-то причина для беспокойства?

(Да, я загрузил несколько других файлов, содержащих сетки без арматуры и сетки с арматурой без сообщений об ошибках. только проблема с файлом, содержащим ТОЛЬКО арматуру.)

РЕДАКТИРОВАТЬ (скриншот из отладки) enter image description here

1 Ответ

1 голос
/ 05 апреля 2020

Я считаю, что вы должны быть в состоянии безопасно игнорировать это. Этот флаг устанавливается только тогда, когда нет загруженных сеток (что, если я правильно понимаю, является преднамеренным в вашем случае).

Здесь вы можете увидеть условие для этого флага: https://github.com/assimp/assimp/blob/7e5a0acc48efc54d7aa7900c36cd63db1fbeec9b/code/Blender/BlenderLoader.cpp#L411 -L417

...