[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21163] trunk/blender/release/scripts/ vertexpaint_selfshadow_ao.py: using the edge length to weight the vertex blue wasnt wokring very well ( removed)

Campbell Barton ideasman42 at gmail.com
Fri Jun 26 04:22:54 CEST 2009


Revision: 21163
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21163
Author:   campbellbarton
Date:     2009-06-26 04:22:53 +0200 (Fri, 26 Jun 2009)

Log Message:
-----------
using the edge length to weight the vertex blue wasnt wokring very well (removed)

Modified Paths:
--------------
    trunk/blender/release/scripts/vertexpaint_selfshadow_ao.py

Modified: trunk/blender/release/scripts/vertexpaint_selfshadow_ao.py
===================================================================
--- trunk/blender/release/scripts/vertexpaint_selfshadow_ao.py	2009-06-26 02:11:08 UTC (rev 21162)
+++ trunk/blender/release/scripts/vertexpaint_selfshadow_ao.py	2009-06-26 02:22:53 UTC (rev 21163)
@@ -43,7 +43,7 @@
 import BPyMesh
 
 
-def vertexFakeAO(me, PREF_BLUR_ITERATIONS, PREF_BLUR_RADIUS, PREF_MIN_EDLEN, PREF_CLAMP_CONCAVE, PREF_CLAMP_CONVEX, PREF_SHADOW_ONLY, PREF_SEL_ONLY):
+def vertexFakeAO(me, PREF_BLUR_ITERATIONS, PREF_BLUR_STRENGTH, PREF_CLAMP_CONCAVE, PREF_CLAMP_CONVEX, PREF_SHADOW_ONLY, PREF_SEL_ONLY):
 	Window.WaitCursor(1)
 	Ang= Mathutils.AngleBetweenVecs
 	
@@ -83,32 +83,34 @@
 		if vert_tone_count[i]:
 			vert_tone[i] = vert_tone[i] / vert_tone_count[i]
 
+	
+	# Below we use edges to blur along so the edges need counting, not the faces
+	vert_tone_count=	[0] *	len(me.verts)
+	for ed in me.edges:
+		vert_tone_count[ed.v1.index] += 1
+		vert_tone_count[ed.v2.index] += 1
 
-	# BLUR TONE
-	edge_lengths= [ ed.length for ed in me.edges]
+
+	# Blur tone
+	blur		= PREF_BLUR_STRENGTH
+	blur_inv	= 1.0 - PREF_BLUR_STRENGTH
 	
 	for i in xrange(PREF_BLUR_ITERATIONS):
+		
+		# backup the original tones
 		orig_vert_tone= list(vert_tone)
-		for ii, ed in enumerate(me.edges):
+		
+		for ed in me.edges:
+			
 			i1= ed.v1.index
 			i2= ed.v2.index
-			l= edge_lengths[ii]
+		
+			val1= (orig_vert_tone[i2]*blur) +  (orig_vert_tone[i1]*blur_inv)
+			val2= (orig_vert_tone[i1]*blur) +  (orig_vert_tone[i2]*blur_inv)
 			
-			f=1.0
-			if l > PREF_MIN_EDLEN and l < PREF_BLUR_RADIUS:
-				f= l/PREF_BLUR_RADIUS
-				
-				len_vert_tone_list_i1 = vert_tone_count[i1]
-				len_vert_tone_list_i2 = vert_tone_count[i2]
-					
-				if not len_vert_tone_list_i1: len_vert_tone_list_i1=1
-				if not len_vert_tone_list_i2: len_vert_tone_list_i2=1
-				
-				val1= (orig_vert_tone[i2]/len_vert_tone_list_i1)/ f
-				val2= (orig_vert_tone[i1]/len_vert_tone_list_i2)/ f
-				
-				vert_tone[i1]+= val1
-				vert_tone[i2]+= val2
+			# Apply the ton divided by the number of faces connected
+			vert_tone[i1]+= val1 / max(vert_tone_count[i1], 1)
+			vert_tone[i2]+= val2 / max(vert_tone_count[i2], 1)
 	
 
 	min_tone= min(vert_tone)
@@ -144,21 +146,19 @@
 	
 	me= ob.getData(mesh=1)
 	
-	PREF_BLUR_ITERATIONS= Draw.Create(1)	
-	PREF_BLUR_RADIUS= Draw.Create(0.05)
-	PREF_MIN_EDLEN= Draw.Create(0.01)
+	PREF_BLUR_ITERATIONS= Draw.Create(1)
+	PREF_BLUR_STRENGTH= Draw.Create(0.5)
 	PREF_CLAMP_CONCAVE= Draw.Create(90)
 	PREF_CLAMP_CONVEX= Draw.Create(20)
 	PREF_SHADOW_ONLY= Draw.Create(0)
 	PREF_SEL_ONLY= Draw.Create(0)	
 	pup_block= [\
 	'Post AO Blur',\
-	('  Iterations:', PREF_BLUR_ITERATIONS, 0, 40, 'Number times to blur the colors. (higher blurs more)'),\
-	('  Blur Radius:', PREF_BLUR_RADIUS, 0.01, 40.0, 'How much distance effects blur transfur (higher blurs more).'),\
-	('  Min EdgeLen:', PREF_MIN_EDLEN, 0.00001, 1.0, 'Minimim edge length to blur (very low values can cause errors).'),\
+	('Strength:', PREF_BLUR_STRENGTH, 0, 1, 'Blur strength per iteration'),\
+	('Iterations:', PREF_BLUR_ITERATIONS, 0, 40, 'Number times to blur the colors. (higher blurs more)'),\
 	'Angle Clipping',\
-	('  Highlight Angle:', PREF_CLAMP_CONVEX, 0, 180, 'Less then 180 limits the angle used in the tonal range.'),\
-	('  Shadow Angle:', PREF_CLAMP_CONCAVE, 0, 180, 'Less then 180 limits the angle used in the tonal range.'),\
+	('Highlight Angle:', PREF_CLAMP_CONVEX, 0, 180, 'Less then 180 limits the angle used in the tonal range.'),\
+	('Shadow Angle:', PREF_CLAMP_CONCAVE, 0, 180, 'Less then 180 limits the angle used in the tonal range.'),\
 	('Shadow Only', PREF_SHADOW_ONLY, 'Dont calculate highlights for convex areas.'),\
 	('Sel Faces Only', PREF_SEL_ONLY, 'Only apply to UV/Face selected faces (mix vpain/uvface select).'),\
 	]
@@ -166,19 +166,16 @@
 	if not Draw.PupBlock('SelfShadow...', pup_block):
 		return
 	
-	PREF_BLUR_ITERATIONS= PREF_BLUR_ITERATIONS.val
-	PREF_BLUR_RADIUS= PREF_BLUR_RADIUS.val
-	PREF_MIN_EDLEN= PREF_MIN_EDLEN.val
-	PREF_CLAMP_CONCAVE= PREF_CLAMP_CONCAVE.val
-	PREF_CLAMP_CONVEX= PREF_CLAMP_CONVEX.val
-	PREF_SHADOW_ONLY= PREF_SHADOW_ONLY.val
-	PREF_SEL_ONLY= PREF_SEL_ONLY.val
-	
 	if not me.vertexColors:
 		me.vertexColors= 1
 	
 	t= sys.time()
-	vertexFakeAO(me, PREF_BLUR_ITERATIONS, PREF_BLUR_RADIUS, PREF_MIN_EDLEN, PREF_CLAMP_CONCAVE, PREF_CLAMP_CONVEX, PREF_SHADOW_ONLY, PREF_SEL_ONLY)
+	vertexFakeAO(me,	PREF_BLUR_ITERATIONS.val, \
+						PREF_BLUR_STRENGTH.val, \
+						PREF_CLAMP_CONCAVE.val, \
+						PREF_CLAMP_CONVEX.val, \
+						PREF_SHADOW_ONLY.val, \
+						PREF_SEL_ONLY.val)
 	
 	if ob.modifiers:
 		me.update()





More information about the Bf-blender-cvs mailing list