[Bf-blender-cvs] [a3e3ac0] master: Fix T42351: Freestyle will not render edges selected by Edge Type: Material Boundary, if the materials are different, but look identical.

Tamito Kajiyama noreply at git.blender.org
Thu Oct 23 15:02:42 CEST 2014


Commit: a3e3ac03ff3c75ae28cce391204fffdf31391760
Author: Tamito Kajiyama
Date:   Thu Oct 23 20:26:39 2014 +0900
Branches: master
https://developer.blender.org/rBa3e3ac03ff3c75ae28cce391204fffdf31391760

Fix T42351: Freestyle will not render edges selected by Edge Type: Material Boundary, if the materials are different, but look identical.

===================================================================

M	source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp

===================================================================

diff --git a/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp b/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp
index 57882cb..dfcc77d 100644
--- a/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp
+++ b/source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp
@@ -457,6 +457,7 @@ void BlenderFileLoader::insertShapeNode(ObjectInstanceRen *obi, int id)
 	unsigned nSize = vSize;
 	float *normals = new float[nSize];
 	unsigned *numVertexPerFaces = new unsigned[numFaces];
+	vector<Material *> meshMaterials;
 	vector<FrsMaterial> meshFrsMaterials;
 
 	IndexedFaceSet::TRIANGLES_STYLE *faceStyle = new IndexedFaceSet::TRIANGLES_STYLE[numFaces];
@@ -588,20 +589,21 @@ void BlenderFileLoader::insertShapeNode(ObjectInstanceRen *obi, int id)
 			tmpMat.setPriority(mat->line_priority);
 		}
 
-		if (meshFrsMaterials.empty()) {
+		if (meshMaterials.empty()) {
+			meshMaterials.push_back(mat);
 			meshFrsMaterials.push_back(tmpMat);
 			shape->setFrsMaterial(tmpMat);
 		}
 		else {
-			// find if the material is already in the list
+			// find if the Blender material is already in the list
 			unsigned int i = 0;
 			bool found = false;
 
-			for (vector<FrsMaterial>::iterator it = meshFrsMaterials.begin(), itend = meshFrsMaterials.end();
+			for (vector<Material *>::iterator it = meshMaterials.begin(), itend = meshMaterials.end();
 			     it != itend;
 			     it++, i++)
 			{
-				if (*it == tmpMat) {
+				if (*it == mat) {
 					ls.currentMIndex = i;
 					found = true;
 					break;
@@ -609,6 +611,7 @@ void BlenderFileLoader::insertShapeNode(ObjectInstanceRen *obi, int id)
 			}
 
 			if (!found) {
+				meshMaterials.push_back(mat);
 				meshFrsMaterials.push_back(tmpMat);
 				ls.currentMIndex = meshFrsMaterials.size() - 1;
 			}




More information about the Bf-blender-cvs mailing list