2017-10-17 146 views
1

我有我的格式的一些3D模型,並希望將它們更改爲標準格式並在我的項目中使用它們,所以我開始使用Assimp庫。我爲創建aiScene代碼:Assimp導入導出格式錯誤

const aiScene* GenerateScene(int NumberOftexture, float *texture, int NumberOfVertex, double *verftex, int NumberOftri, double *tri) { 

MATFile *pmat; 
const char **dir; 
const char *name; 
int ndir; 
int i; 
aiScene* scene=new aiScene(); 

scene->mRootNode = new aiNode(); 


scene->mMaterials = new aiMaterial*[1]; 
scene->mMaterials[0] = nullptr; 
scene->mNumMaterials = 1; 

scene->mMaterials[0] = new aiMaterial(); 

scene->mMeshes = new aiMesh*[1]; 
scene->mMeshes[0] = nullptr; 
scene->mNumMeshes = 1; 
scene->mMeshes[0] = new aiMesh(); 
scene->mMeshes[0]->mMaterialIndex = 0; 
scene->mRootNode->mMeshes = new unsigned int[1]; 
scene->mRootNode->mMeshes[0] = 0; 
scene->mRootNode->mNumMeshes = 1; 

auto pMesh = scene->mMeshes[0]; 

pMesh->mTextureCoords[0] = new aiVector3D[NumberOftexture]; 
pMesh->mNumUVComponents[0] = NumberOftexture; 
for (int i = 0; i < NumberOftexture; i++) 
    pMesh->mTextureCoords[0][i] = aiVector3D(texture[i], (float)texture[i + NumberOftexture], (float)texture[i + 2 * NumberOftexture]); 

pMesh->mVertices = new aiVector3D[NumberOfVertex]; 
pMesh->mNumVertices = NumberOfVertex; 
for (int i = 0; i < NumberOfVertex; i++) 
    pMesh->mVertices[i] = aiVector3D((float)verftex[i], (float)verftex[i + NumberOfVertex], (float)verftex[i + 2 * NumberOfVertex]); 

pMesh->mFaces = new aiFace[NumberOftri]; 
pMesh->mNumFaces = NumberOftri; 

for (int i = 0; i < NumberOftri;i++) { 
    aiFace& face = pMesh->mFaces[i]; 
    face.mIndices = new unsigned int[3]; 
    face.mNumIndices = 3; 
    face.mIndices[0] = (int)tri[i]; 
    face.mIndices[1] = (int)tri[i + NumberOftri]; 
    face.mIndices[2] = (int)tri[i + 2* NumberOftri]; 
} 

aiExportScene(scene, "collada", "D:\\myColladaFile.dae", 0); 

return scene;} 

它運行正常,但是當我去打開文件,Assimp圖書館我有錯誤。我的導入代碼是

scene = aiImportFile(path, aiProcessPreset_TargetRealtime_MaxQuality);

,我得到了錯誤:

Info, T10040: Load D:\myColladaFile.dae 
Info, T10040: Found a matching importer for this file format: Collada Importer. 
Info, T10040: Import root directory is 'D:\' 
Error, T10040: Collada: D:\myColladaFile.dae - Invalid data index (32500/32500) in primitive specification 
Info, T10040: Load D:\myColladaFile.dae 
Info, T10040: Found a matching importer for this file format: Collada Importer. 
Info, T10040: Import root directory is 'D:\' 
Error, T10040: Collada: D:\myColladaFile.dae - Invalid data index (32500/32500) in primitive specification 
Info, T10040: Load D:\myColladaFile.dae 
Info, T10040: Found a matching importer for this file format: Collada Importer. 
Info, T10040: Import root directory is 'D:\' 
Error, T10040: Collada: D:\myColladaFile.dae - Invalid data index (32500/32500) in primitive specification 

但是,當我導出爲GLTF格式是正確的。所以我怎樣才能導出和導入正確的格式?

回答

0

這聽起來像一個Bug Asset-Importer-Lib對我來說。當glTF-exporter能夠導出場景時,它應該是有效的。 作爲解決方法,您可以嘗試將其導出爲glFT文件,然後使用攪拌器將其導出並將其導出爲collada文件。

您能否在Github/assimp上創建問題報告?重現此問題的模式將非常棒。