diff --git a/qglengine/formats/loader_assimp.cpp b/qglengine/formats/loader_assimp.cpp index 13d3ed6..8f6e376 100644 --- a/qglengine/formats/loader_assimp.cpp +++ b/qglengine/formats/loader_assimp.cpp @@ -27,6 +27,7 @@ #include #include +QString fromAiString (const aiString & s) {return QString::fromLocal8Bit(s.C_Str());} QVector3D fromAiVector3D(const aiVector3D & v) {return QVector3D(v.x, v.y, v.z);} Vector3i fromAiFace (const aiFace & v) {return Vector3i(v.mIndices[0], v.mIndices[1], v.mIndices[2]);} QMatrix4x4 fromAiMatrix4D(const aiMatrix4x4 & v) {return QMatrix4x4(v.a1, v.a2, v.a3, v.a4, @@ -97,17 +98,17 @@ float aiMatFloat(const aiMaterial * m, const char * key, uint s0, uint s1, float QString aiMatString(const aiMaterial * m, const char * key, uint s0, uint s1) { aiString p; aiReturn r = const_cast(m)->Get(key, s0, s1, p); - //qDebug() << "GetTexture" << key << s0 << r << p.C_Str(); + //qDebug() << "GetTexture" << key << s0 << r << fromAiString(p); if (r != aiReturn_SUCCESS) return QString(); - return QString(p.C_Str()); + return fromAiString(p); } Material * assimpMaterial(const aiMaterial * m) { if (!m) return 0; Material * ret = new Material(); - ret->name = const_cast(m)->GetName().C_Str(); + ret->name = fromAiString(const_cast(m)->GetName()); //qDebug() << "mat" << ret->name; //for (int i = 0; i < m->mNumProperties; ++i) - // qDebug()<< m->mProperties[i]->mKey.C_Str(); + // qDebug()<< fromAiString(m->mProperties[i]->mKey); ret->color_diffuse = aiMatColor(m, AI_MATKEY_COLOR_DIFFUSE); ret->color_specular = aiMatColor(m, AI_MATKEY_COLOR_SPECULAR); ret->color_emission = aiMatColor(m, AI_MATKEY_COLOR_EMISSIVE); @@ -125,7 +126,7 @@ Material * assimpMaterial(const aiMaterial * m) { Light * assimpLight(const aiLight * l) { if (!l) return 0; Light * ret = new Light(); - ret->setName(l->mName.C_Str()); + ret->setName(fromAiString(l->mName)); ret->setPos(fromAiVector3D(l->mPosition)); ret->setDirection(fromAiVector3D(l->mDirection)); ret->decay_const = l->mAttenuationConstant ; @@ -149,7 +150,7 @@ ObjectBaseList assimpObject(const aiNode * n, const QVector & meshes, a if (!n) return ObjectBaseList(); ObjectBaseList ret; ObjectBase * obj = 0; - QString name = n->mName.C_Str(); + QString name = fromAiString(n->mName); Light * light = light_by_name.value(name, 0); if (light) { obj = light->clone();