git-svn-id: svn://db.shs.com.ru/libs@685 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
@@ -27,6 +27,7 @@
|
|||||||
#include <assimp/mesh.h>
|
#include <assimp/mesh.h>
|
||||||
#include <assimp/material.h>
|
#include <assimp/material.h>
|
||||||
|
|
||||||
|
QString fromAiString (const aiString & s) {return QString::fromLocal8Bit(s.C_Str());}
|
||||||
QVector3D fromAiVector3D(const aiVector3D & v) {return QVector3D(v.x, v.y, v.z);}
|
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]);}
|
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,
|
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) {
|
QString aiMatString(const aiMaterial * m, const char * key, uint s0, uint s1) {
|
||||||
aiString p;
|
aiString p;
|
||||||
aiReturn r = const_cast<aiMaterial*>(m)->Get(key, s0, s1, p);
|
aiReturn r = const_cast<aiMaterial*>(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();
|
if (r != aiReturn_SUCCESS) return QString();
|
||||||
return QString(p.C_Str());
|
return fromAiString(p);
|
||||||
}
|
}
|
||||||
Material * assimpMaterial(const aiMaterial * m) {
|
Material * assimpMaterial(const aiMaterial * m) {
|
||||||
if (!m) return 0;
|
if (!m) return 0;
|
||||||
Material * ret = new Material();
|
Material * ret = new Material();
|
||||||
ret->name = const_cast<aiMaterial*>(m)->GetName().C_Str();
|
ret->name = fromAiString(const_cast<aiMaterial*>(m)->GetName());
|
||||||
//qDebug() << "mat" << ret->name;
|
//qDebug() << "mat" << ret->name;
|
||||||
//for (int i = 0; i < m->mNumProperties; ++i)
|
//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_diffuse = aiMatColor(m, AI_MATKEY_COLOR_DIFFUSE);
|
||||||
ret->color_specular = aiMatColor(m, AI_MATKEY_COLOR_SPECULAR);
|
ret->color_specular = aiMatColor(m, AI_MATKEY_COLOR_SPECULAR);
|
||||||
ret->color_emission = aiMatColor(m, AI_MATKEY_COLOR_EMISSIVE);
|
ret->color_emission = aiMatColor(m, AI_MATKEY_COLOR_EMISSIVE);
|
||||||
@@ -125,7 +126,7 @@ Material * assimpMaterial(const aiMaterial * m) {
|
|||||||
Light * assimpLight(const aiLight * l) {
|
Light * assimpLight(const aiLight * l) {
|
||||||
if (!l) return 0;
|
if (!l) return 0;
|
||||||
Light * ret = new Light();
|
Light * ret = new Light();
|
||||||
ret->setName(l->mName.C_Str());
|
ret->setName(fromAiString(l->mName));
|
||||||
ret->setPos(fromAiVector3D(l->mPosition));
|
ret->setPos(fromAiVector3D(l->mPosition));
|
||||||
ret->setDirection(fromAiVector3D(l->mDirection));
|
ret->setDirection(fromAiVector3D(l->mDirection));
|
||||||
ret->decay_const = l->mAttenuationConstant ;
|
ret->decay_const = l->mAttenuationConstant ;
|
||||||
@@ -149,7 +150,7 @@ ObjectBaseList assimpObject(const aiNode * n, const QVector<Mesh * > & meshes, a
|
|||||||
if (!n) return ObjectBaseList();
|
if (!n) return ObjectBaseList();
|
||||||
ObjectBaseList ret;
|
ObjectBaseList ret;
|
||||||
ObjectBase * obj = 0;
|
ObjectBase * obj = 0;
|
||||||
QString name = n->mName.C_Str();
|
QString name = fromAiString(n->mName);
|
||||||
Light * light = light_by_name.value(name, 0);
|
Light * light = light_by_name.value(name, 0);
|
||||||
if (light) {
|
if (light) {
|
||||||
obj = light->clone();
|
obj = light->clone();
|
||||||
|
|||||||
Reference in New Issue
Block a user