本記事ではLightWave 2018の出力したFBXを正常に読み込むため、assimpにいくつかの不具合修正を行なった。
これらの不具合修正はLightWave以外でも有効と考えられる。
各修正内容については、ソースコードと実行ファイルを参照
その他、miniz.h内でエラーになる場合は、mz_zip_array_push_backを下記のように修正する。
static MZ_FORCEINLINE mz_bool mz_zip_array_push_back(mz_zip_archive *pZip, mz_zip_array *pArray, const void *pElements, size_t n)
{
size_t orig_size = 0;
if (n==0) return MZ_TRUE;
assert(NULL!=pElements);
orig_size = pArray->m_size; if (!mz_zip_array_resize(pZip, pArray, orig_size + n, MZ_TRUE)) return MZ_FALSE;
memcpy((mz_uint8*)pArray->m_p + orig_size * pArray->m_element_size, pElements, n * pArray->m_element_size);
return MZ_TRUE;
}
LightWave 2018を使用する。FBXを出力できるツールなら何でも良いとは思うが、ツールによって出力に癖があるため、対応が必要。