Как экспортировать формат fbx из импортированного объекта obj с помощью assimp

#c #fbx #assimp

#c #fbx #assimp

Вопрос:

Я создаю свой игровой движок на C , и я хотел иметь возможность экспортировать свои сцены, используя формат FBX.

Итак, когда я попытался экспортировать формат FBX из ранее импортированного OBJ-файла, он действительно отображается правильно. Но он экспортируется неправильно при экспорте во что-либо, отличное от того, из чего он был первоначально импортирован.

 std::unique_ptr<Assimp::Exporter> exporter = std::make_unique<Assimp::Exporter>();

const auto* scene = mesh->mScene;
exporter->Export(scene, "fbx", "assets/output.fbx");
 

Здесь mesh->mScene находится aiScene импортированный ранее файл.

Этот код действительно работает и Export() возвращает успех; однако выходной файл не содержит правильных данных сетки. Только при импорте из FBX он корректен и может быть импортирован в Maya без проблем.

Мне нужен способ конвертировать Assim::aiScene для экспорта в формат FBX, потому Assimp что позволяет экспортировать сетки только в тот формат, из которого они импортированы.

Кроме того, я хотел иметь возможность изменять сетки, допустим, я хочу заменить диффузную текстуру.

 //Yeah, sorry I am still a beginner :)
auto* aiMaterial = mesh->mScene->mMaterials[index];


if (aiMaterial->RemoveProperty("$clr.diffuse") != 0 || aiMaterial->AddProperty(texture->getPath().c_str(), 1, "$clr.diffuse") != 0)
{
    assert(false, "Failed to add property!");
}
 

Этот код также работает нормально, но он ничего не меняет в сетке.