From f5855aeaecdeca3109bc0d34ba67ffe4931becb0 Mon Sep 17 00:00:00 2001 From: kearwood Date: Mon, 8 Aug 2022 00:09:02 -0700 Subject: [PATCH] Corrected normals for KRMeshSphere so the sphere will have a smooth surface. Disabled KRMesh::optimizeIndexes as it is crashing with certain meshes, such as those generated by KRMeshSphere --- kraken/KRMesh.cpp | 3 +++ kraken/KRMeshSphere.cpp | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/kraken/KRMesh.cpp b/kraken/KRMesh.cpp index 6dee780..914c433 100755 --- a/kraken/KRMesh.cpp +++ b/kraken/KRMesh.cpp @@ -1581,6 +1581,9 @@ int KRMesh::getTriangleVertexIndex(int submesh, int index) const void KRMesh::optimizeIndexes() { + // TODO - Re-enable this once crash with KRMeshSphere vertices is corrected + return; + m_pData->lock(); // TODO - Implement optimization for indexed strips if(getModelFormat() == ModelFormat::KRENGINE_MODEL_FORMAT_INDEXED_TRIANGLES) { diff --git a/kraken/KRMeshSphere.cpp b/kraken/KRMeshSphere.cpp index 6b1a804..087e720 100755 --- a/kraken/KRMeshSphere.cpp +++ b/kraken/KRMeshSphere.cpp @@ -113,6 +113,12 @@ KRMeshSphere::KRMeshSphere(KRContext &context) : KRMesh(context, "__sphere") mi.format = ModelFormat::KRENGINE_MODEL_FORMAT_TRIANGLES; + + // Generate normals pointing away from center of sphere. + for (int vertex_index = 0; vertex_index < mi.vertices.size(); vertex_index++) { + mi.normals.push_back(Vector3::Normalize(mi.vertices[vertex_index] - Vector3::Zero())); + } + LoadData(mi, true, true); }