2017-10-17 24 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

これは、私のための資産インポーター-Libのバグのようです。 glTF-exporterがシーンをエクスポートすることができるとき、それはまったく有効である。 回避策として、glFTファイルとしてエクスポートし、blenderを使用してインポートし、colladaファイルとしてエクスポートすることができます。

Github/assimpに関する問題報告を作成できますか?問題を再現するモデルは本当に素晴らしいでしょう。

関連する問題