Fix incorrect normal after texture auto unwrapped

glTF normal export temporarily disabled.
master
Jeremy Hu 2018-10-20 21:30:59 +08:00
parent debdd79a7a
commit ec47c20919
4 changed files with 6 additions and 5 deletions

View File

@ -26,7 +26,7 @@ GltfFileWriter::GltfFileWriter(MeshResultContext &resultContext,
const std::map<int, AutoRiggerVertexWeights> *resultRigWeights, const std::map<int, AutoRiggerVertexWeights> *resultRigWeights,
const QString &filename) : const QString &filename) :
m_filename(filename), m_filename(filename),
m_outputNormal(true), m_outputNormal(false),
m_outputAnimation(true), m_outputAnimation(true),
m_outputUv(true), m_outputUv(true),
m_testOutputAsWhole(false) m_testOutputAsWhole(false)
@ -221,6 +221,7 @@ GltfFileWriter::GltfFileWriter(MeshResultContext &resultContext,
m_json["accessors"][bufferViewIndex]["min"] = {minX, minY, minZ}; m_json["accessors"][bufferViewIndex]["min"] = {minX, minY, minZ};
bufferViewIndex++; bufferViewIndex++;
/*
if (m_outputNormal) { if (m_outputNormal) {
bufferViewFromOffset = (int)binaries.size(); bufferViewFromOffset = (int)binaries.size();
m_json["bufferViews"][bufferViewIndex]["buffer"] = 0; m_json["bufferViews"][bufferViewIndex]["buffer"] = 0;
@ -243,7 +244,7 @@ GltfFileWriter::GltfFileWriter(MeshResultContext &resultContext,
m_json["accessors"][bufferViewIndex]["count"] = part.second.vertices.size(); m_json["accessors"][bufferViewIndex]["count"] = part.second.vertices.size();
m_json["accessors"][bufferViewIndex]["type"] = "VEC3"; m_json["accessors"][bufferViewIndex]["type"] = "VEC3";
bufferViewIndex++; bufferViewIndex++;
} }*/
if (m_outputUv) { if (m_outputUv) {
bufferViewFromOffset = (int)binaries.size(); bufferViewFromOffset = (int)binaries.size();

View File

@ -252,7 +252,7 @@ MeshLoader::MeshLoader(MeshResultContext &resultContext) :
for (auto i = 0; i < 3; i++) { for (auto i = 0; i < 3; i++) {
int vertexIndex = it.indicies[i]; int vertexIndex = it.indicies[i];
const ResultVertex *srcVert = &part.second.vertices[vertexIndex]; const ResultVertex *srcVert = &part.second.vertices[vertexIndex];
const QVector3D *srcNormal = &part.second.interpolatedVertexNormals[vertexIndex]; const QVector3D *srcNormal = &part.second.interpolatedTriangleVertexNormals[x * 3 + i];
const ResultVertexUv *srcUv = &part.second.vertexUvs[vertexIndex]; const ResultVertexUv *srcUv = &part.second.vertexUvs[vertexIndex];
//const Material *srcMaterial = &part.second.material; //const Material *srcMaterial = &part.second.material;
const QVector3D *srcTangent = &part.second.triangleTangents[x]; const QVector3D *srcTangent = &part.second.triangleTangents[x];

View File

@ -339,7 +339,6 @@ void MeshResultContext::calculateResultParts(std::map<QUuid, ResultPart> &parts)
bool isSeamVertex = m_seamVertices.end() != m_seamVertices.find(triangle.indicies[i]); bool isSeamVertex = m_seamVertices.end() != m_seamVertices.find(triangle.indicies[i]);
if (isNewVertex || isSeamVertex) { if (isNewVertex || isSeamVertex) {
int newIndex = resultPart.vertices.size(); int newIndex = resultPart.vertices.size();
resultPart.interpolatedVertexNormals.push_back(normal);
resultPart.verticesOldIndicies.push_back(triangle.indicies[i]); resultPart.verticesOldIndicies.push_back(triangle.indicies[i]);
resultPart.vertices.push_back(vertices[triangle.indicies[i]]); resultPart.vertices.push_back(vertices[triangle.indicies[i]]);
ResultVertexUv vertexUv; ResultVertexUv vertexUv;
@ -352,6 +351,7 @@ void MeshResultContext::calculateResultParts(std::map<QUuid, ResultPart> &parts)
} else { } else {
newTriangle.indicies[i] = it->second; newTriangle.indicies[i] = it->second;
} }
resultPart.interpolatedTriangleVertexNormals.push_back(normal);
} }
resultPart.triangles.push_back(newTriangle); resultPart.triangles.push_back(newTriangle);
resultPart.uvs.push_back(triangleUvs()[x]); resultPart.uvs.push_back(triangleUvs()[x]);

View File

@ -57,7 +57,7 @@ struct ResultPart
Material material; Material material;
std::vector<ResultVertex> vertices; std::vector<ResultVertex> vertices;
std::vector<int> verticesOldIndicies; std::vector<int> verticesOldIndicies;
std::vector<QVector3D> interpolatedVertexNormals; std::vector<QVector3D> interpolatedTriangleVertexNormals;
std::vector<ResultTriangle> triangles; std::vector<ResultTriangle> triangles;
std::vector<ResultTriangleUv> uvs; std::vector<ResultTriangleUv> uvs;
std::vector<ResultVertexUv> vertexUvs; std::vector<ResultVertexUv> vertexUvs;