[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21940] branches/blender2.5/blender: readonly face normal option eg.

Campbell Barton ideasman42 at gmail.com
Mon Jul 27 20:17:23 CEST 2009


Revision: 21940
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21940
Author:   campbellbarton
Date:     2009-07-27 20:17:21 +0200 (Mon, 27 Jul 2009)

Log Message:
-----------
readonly face normal option eg.
 me.faces[0].normal

Modified Paths:
--------------
    branches/blender2.5/blender/release/io/export_ply.py
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_mesh.c

Modified: branches/blender2.5/blender/release/io/export_ply.py
===================================================================
--- branches/blender2.5/blender/release/io/export_ply.py	2009-07-27 18:11:49 UTC (rev 21939)
+++ branches/blender2.5/blender/release/io/export_ply.py	2009-07-27 18:17:21 UTC (rev 21940)
@@ -130,12 +130,10 @@
 		
 		
 		smooth = f.smooth
-		# XXX need face normals
-		"""
 		if not smooth:
-			normal = tuple(f.no)
+			normal = tuple(f.normal)
 			normal_key = rvec3d(normal)
-		"""
+		
 		if faceUV:
 			uv = active_uv_layer[i]
 			uv = uv.uv1, uv.uv2, uv.uv3, uv.uv4 # XXX - crufty :/
@@ -149,12 +147,10 @@
 		pf= ply_faces[i]
 		for j, vidx in enumerate(f_verts):
 			v = mesh_verts[vidx]
-			"""
+			
 			if smooth:
-				normal=		tuple(v.no)
+				normal=		tuple(v.normal)
 				normal_key = rvec3d(normal)
-			"""
-			normal_key = None # XXX
 			
 			if faceUV:
 				uvcoord=	uv[j][0], 1.0-uv[j][1]

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_mesh.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_mesh.c	2009-07-27 18:11:49 UTC (rev 21939)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_mesh.c	2009-07-27 18:17:21 UTC (rev 21940)
@@ -39,6 +39,7 @@
 #include "DNA_scene_types.h"
 
 #include "BLI_editVert.h"
+#include "BLI_arithb.h"
 
 #include "BKE_customdata.h"
 #include "BKE_depsgraph.h"
@@ -110,6 +111,17 @@
 	medge->crease= (char)(CLAMPIS(value*255.0f, 0, 255));
 }
 
+static void rna_MeshFace_normal_get(PointerRNA *ptr, float *values)
+{
+	Mesh *me= (Mesh*)ptr->id.data;
+	MFace *mface= (MFace*)ptr->data;
+	
+	if(mface->v4)
+		CalcNormFloat4(me->mvert[mface->v1].co, me->mvert[mface->v2].co, me->mvert[mface->v3].co, me->mvert[mface->v4].co, values);
+	else
+		CalcNormFloat(me->mvert[mface->v1].co, me->mvert[mface->v2].co, me->mvert[mface->v3].co, values);
+}
+
 /* notice red and blue are swapped */
 static void rna_MeshColor_color1_get(PointerRNA *ptr, float *values)
 {
@@ -892,6 +904,13 @@
 	prop= RNA_def_property(srna, "smooth", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_SMOOTH);
 	RNA_def_property_ui_text(prop, "Smooth", "");
+	
+	prop= RNA_def_property(srna, "normal", PROP_FLOAT, PROP_VECTOR);
+	RNA_def_property_array(prop, 3);
+	RNA_def_property_range(prop, -1.0f, 1.0f);
+	RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+	RNA_def_property_float_funcs(prop, "rna_MeshFace_normal_get", NULL, NULL);
+	RNA_def_property_ui_text(prop, "face normal", "local space unit length normal vector for this face");
 }
 
 static void rna_def_mtface(BlenderRNA *brna)





More information about the Bf-blender-cvs mailing list