|
@@ -4,7 +4,6 @@
|
|
|
|
|
|
namespace Assimp {
|
|
namespace Assimp {
|
|
|
|
|
|
-static int get_vertex_index(const SMikkTSpaceContext *context, int iFace, int iVert);
|
|
|
|
static int get_num_faces(const SMikkTSpaceContext *context);
|
|
static int get_num_faces(const SMikkTSpaceContext *context);
|
|
static int get_num_vertices_of_face(const SMikkTSpaceContext *context, int iFace);
|
|
static int get_num_vertices_of_face(const SMikkTSpaceContext *context, int iFace);
|
|
static void get_position(const SMikkTSpaceContext *context, float outpos[], int iFace, int iVert);
|
|
static void get_position(const SMikkTSpaceContext *context, float outpos[], int iFace, int iVert);
|
|
@@ -13,20 +12,20 @@ static void get_tex_coords(const SMikkTSpaceContext *context, float outuv[], int
|
|
static void set_tspace_basic(const SMikkTSpaceContext *context, const float tangentu[], float fSign, int iFace, int iVert);
|
|
static void set_tspace_basic(const SMikkTSpaceContext *context, const float tangentu[], float fSign, int iFace, int iVert);
|
|
|
|
|
|
static int get_num_faces(const SMikkTSpaceContext *context) {
|
|
static int get_num_faces(const SMikkTSpaceContext *context) {
|
|
- aiMesh *currentMesh = static_cast<aiMesh*>(context->m_pUserData);
|
|
|
|
|
|
+ const aiMesh *currentMesh = static_cast<aiMesh*>(context->m_pUserData);
|
|
const int numFaces = static_cast<int>(currentMesh->mNumFaces);
|
|
const int numFaces = static_cast<int>(currentMesh->mNumFaces);
|
|
|
|
|
|
return numFaces;
|
|
return numFaces;
|
|
}
|
|
}
|
|
|
|
|
|
static int get_num_vertices_of_face(const SMikkTSpaceContext *context, int iFace) {
|
|
static int get_num_vertices_of_face(const SMikkTSpaceContext *context, int iFace) {
|
|
- aiMesh *currentMesh = static_cast<aiMesh*>(context->m_pUserData);
|
|
|
|
|
|
+ const aiMesh *currentMesh = static_cast<aiMesh*>(context->m_pUserData);
|
|
const aiFace &face = currentMesh->mFaces[iFace];
|
|
const aiFace &face = currentMesh->mFaces[iFace];
|
|
return face.mNumIndices;
|
|
return face.mNumIndices;
|
|
}
|
|
}
|
|
|
|
|
|
static void get_position(const SMikkTSpaceContext *context, float outpos[], int /*iFace*/, int iVert) {
|
|
static void get_position(const SMikkTSpaceContext *context, float outpos[], int /*iFace*/, int iVert) {
|
|
- aiMesh *currentMesh = static_cast<aiMesh*>(context->m_pUserData);
|
|
|
|
|
|
+ const aiMesh *currentMesh = static_cast<aiMesh*>(context->m_pUserData);
|
|
const aiVector3D &v = currentMesh->mVertices[static_cast<size_t>(iVert)];
|
|
const aiVector3D &v = currentMesh->mVertices[static_cast<size_t>(iVert)];
|
|
outpos[0] = v.x;
|
|
outpos[0] = v.x;
|
|
outpos[1] = v.y;
|
|
outpos[1] = v.y;
|
|
@@ -34,15 +33,15 @@ static void get_position(const SMikkTSpaceContext *context, float outpos[], int
|
|
}
|
|
}
|
|
|
|
|
|
static void get_normal(const SMikkTSpaceContext *context, float outnormal[], int /*iFace*/, int iVert) {
|
|
static void get_normal(const SMikkTSpaceContext *context, float outnormal[], int /*iFace*/, int iVert) {
|
|
- aiMesh *currentMesh = static_cast<aiMesh*>(context->m_pUserData);
|
|
|
|
|
|
+ const aiMesh *currentMesh = static_cast<aiMesh*>(context->m_pUserData);
|
|
const aiVector3D &n = currentMesh->mNormals[static_cast<size_t>(iVert)];
|
|
const aiVector3D &n = currentMesh->mNormals[static_cast<size_t>(iVert)];
|
|
outnormal[0] = n.x;
|
|
outnormal[0] = n.x;
|
|
- outnormal[0] = n.y;
|
|
|
|
- outnormal[0] = n.z;
|
|
|
|
|
|
+ outnormal[1] = n.y;
|
|
|
|
+ outnormal[2] = n.z;
|
|
}
|
|
}
|
|
|
|
|
|
static void get_tex_coords(const SMikkTSpaceContext *context, float outuv[], int /*iFace*/, int iVert) {
|
|
static void get_tex_coords(const SMikkTSpaceContext *context, float outuv[], int /*iFace*/, int iVert) {
|
|
- aiMesh *currentMesh = static_cast<aiMesh*>(context->m_pUserData);
|
|
|
|
|
|
+ const aiMesh *currentMesh = static_cast<aiMesh*>(context->m_pUserData);
|
|
aiVector3D &t = currentMesh->mTextureCoords[static_cast<size_t>(iVert)][0];
|
|
aiVector3D &t = currentMesh->mTextureCoords[static_cast<size_t>(iVert)][0];
|
|
if (currentMesh->mNumUVComponents[iVert] == 2) {
|
|
if (currentMesh->mNumUVComponents[iVert] == 2) {
|
|
outuv[0] = t.x;
|
|
outuv[0] = t.x;
|
|
@@ -55,14 +54,14 @@ static void get_tex_coords(const SMikkTSpaceContext *context, float outuv[], int
|
|
}
|
|
}
|
|
|
|
|
|
static void set_tspace_basic(const SMikkTSpaceContext *context, const float tangentu[], float /*fSign*/, int /*iFace*/, int iVert) {
|
|
static void set_tspace_basic(const SMikkTSpaceContext *context, const float tangentu[], float /*fSign*/, int /*iFace*/, int iVert) {
|
|
- aiMesh *currentMesh = static_cast<aiMesh*>(context->m_pUserData);
|
|
|
|
|
|
+ const aiMesh *currentMesh = static_cast<aiMesh*>(context->m_pUserData);
|
|
currentMesh->mTangents[iVert].x = tangentu[0];
|
|
currentMesh->mTangents[iVert].x = tangentu[0];
|
|
currentMesh->mTangents[iVert].y = tangentu[1];
|
|
currentMesh->mTangents[iVert].y = tangentu[1];
|
|
- currentMesh->mTangents[iVert].z = tangentu[1];
|
|
|
|
|
|
+ currentMesh->mTangents[iVert].z = tangentu[2];
|
|
}
|
|
}
|
|
|
|
|
|
bool GenerateMikkTSpaceTangents::IsActive(unsigned int pFlags) const {
|
|
bool GenerateMikkTSpaceTangents::IsActive(unsigned int pFlags) const {
|
|
- const bool active = ((pFlags & aiProcess_CalcTangentSpace) != 0);
|
|
|
|
|
|
+ const bool active = (pFlags & aiProcess_CalcTangentSpace) != 0;
|
|
if (mActive) {
|
|
if (mActive) {
|
|
return active;
|
|
return active;
|
|
}
|
|
}
|