From 51f33a2e55e6e269545ff319e0d99da67ea08b40 Mon Sep 17 00:00:00 2001 From: Gaia Clary Date: Wed, 6 May 2015 17:03:24 +0200 Subject: collada:custom normals generated by normals modifier have not been exported correctly. Also triangulating during export did not work. --- source/blender/collada/GeometryExporter.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'source/blender/collada/GeometryExporter.cpp') diff --git a/source/blender/collada/GeometryExporter.cpp b/source/blender/collada/GeometryExporter.cpp index 1353d988137..b29b4c9c484 100644 --- a/source/blender/collada/GeometryExporter.cpp +++ b/source/blender/collada/GeometryExporter.cpp @@ -82,9 +82,6 @@ void GeometryExporter::operator()(Object *ob) this->export_settings->apply_modifiers, this->export_settings->triangulate); - Mesh *mesh = (Mesh *) ob->data; - me->flag = mesh->flag; - std::string geom_id = get_geometry_id(ob, use_instantiation); std::vector nor; std::vector norind; @@ -610,16 +607,19 @@ void GeometryExporter::create_normals(std::vector &normals, std::vector< MVert *verts = me->mvert; MLoop *mloops = me->mloop; float(*lnors)[3]; + bool use_custom_normals = false; BKE_mesh_calc_normals_split(me); if (CustomData_has_layer(&me->ldata, CD_NORMAL)) { lnors = (float(*)[3])CustomData_get_layer(&me->ldata, CD_NORMAL); + use_custom_normals = true; } for (int poly_index = 0; poly_index < me->totpoly; poly_index++) { MPoly *mpoly = &me->mpoly[poly_index]; + bool use_vertex_normals = use_custom_normals || mpoly->flag & ME_SMOOTH; - if (!(mpoly->flag & ME_SMOOTH)) { + if (!use_vertex_normals) { // For flat faces use face normal as vertex normal: float vector[3]; @@ -634,7 +634,7 @@ void GeometryExporter::create_normals(std::vector &normals, std::vector< BCPolygonNormalsIndices poly_indices; for (int loop_index = 0; loop_index < mpoly->totloop; loop_index++) { unsigned int loop_idx = mpoly->loopstart + loop_index; - if (mpoly->flag & ME_SMOOTH) { + if (use_vertex_normals) { float normalized[3]; normalize_v3_v3(normalized, lnors[loop_idx]); -- cgit v1.2.3