diff options
author | Campbell Barton <ideasman42@gmail.com> | 2006-05-13 09:24:58 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2006-05-13 09:24:58 +0400 |
commit | 2bcf11defb2f570b625b4f05d31662a1af18cc10 (patch) | |
tree | 194c21d3c58370ccaef4cd3b481330ac2d3c6223 /release | |
parent | 50a1d9fc8bfcd376ba808da54a0fa828aa32c9f2 (diff) |
BPyMesh_redux: Fixed a rare bug in mesh redux's, collapsed location.
BPyMesh_redux: made redux support non UV Meshes.
vertexpaint_selfshadow_ao: turned vertex selfshadow scale into radius.
Diffstat (limited to 'release')
-rw-r--r-- | release/scripts/bpymodules/BPyMesh_redux.py | 29 | ||||
-rw-r--r-- | release/scripts/vertexpaint_selfshadow_ao.py | 24 |
2 files changed, 30 insertions, 23 deletions
diff --git a/release/scripts/bpymodules/BPyMesh_redux.py b/release/scripts/bpymodules/BPyMesh_redux.py index a758eeca99b..e99a2fa2ef6 100644 --- a/release/scripts/bpymodules/BPyMesh_redux.py +++ b/release/scripts/bpymodules/BPyMesh_redux.py @@ -4,9 +4,11 @@ Ang= Blender.Mathutils.AngleBetweenVecs LineIntersect= Blender.Mathutils.LineIntersect import BPyMesh - -#import psyco -#psyco.full() +try: + import psyco + psyco.full() +except: + pass def uv_key(uv): return round(uv.x, 5), round(uv.y, 5) @@ -42,7 +44,6 @@ def redux(ob, factor=0.5): # Select all verts, de-select as you collapse. for v in me.verts: v.sel=0 - # Store new locations for collapsed edges here edge_new_locations= [None] * len(me.edges) @@ -249,21 +250,23 @@ def redux(ob, factor=0.5): ed_between= (ed_user.v1.co+ed_user.v2.co) * 0.5 v1_scale= ed_between + ((ed_user.v1.co-ed_between) * 100) v2_scale= ed_between + ((ed_user.v2.co-ed_between) * 100) - line1x, line2x= LineIntersect(between-nor, between+nor, v1_scale, v2_scale) - - new_location_count += 1 - new_location+= line1x + line_xs= LineIntersect(between-nor, between+nor, v1_scale, v2_scale) + if line_xs: # did we intersect? - None if we didnt + new_location_count += 1 + new_location+= line_xs[0] - if not new_location_count: + # Failed to generate a new location or x!=X (NAN) + # or, out new location is crazy and further away from the edge center then the edge length. + if not new_location_count or\ + new_location.x!=new_location.x or\ + (new_location-between).length > (length/2): new_location= between else: new_location= new_location * (1.0/new_location_count) new_location = (new_location + between) * 0.5 - if new_location.x!=new_location.x: - # NAN - new_location= between + # NEW NEW LOCATUON - + # print 'loop', len(me.faces) # Store the collapse location to apply later edge_new_locations[i] = new_location diff --git a/release/scripts/vertexpaint_selfshadow_ao.py b/release/scripts/vertexpaint_selfshadow_ao.py index 557e7cd3f29..9323fc8d97b 100644 --- a/release/scripts/vertexpaint_selfshadow_ao.py +++ b/release/scripts/vertexpaint_selfshadow_ao.py @@ -43,7 +43,7 @@ import BPyMesh # reload(BPyMesh) -def vertexFakeAO(me, PREF_BLUR_ITERATIONS, PREF_BLUR_SCALE, PREF_CLAMP_CONCAVE, PREF_CLAMP_CONVEX, PREF_SHADOW_ONLY, PREF_SEL_ONLY): +def vertexFakeAO(me, PREF_BLUR_ITERATIONS, PREF_BLUR_RADIUS, PREF_CLAMP_CONCAVE, PREF_CLAMP_CONVEX, PREF_SHADOW_ONLY, PREF_SEL_ONLY): Window.WaitCursor(1) V=Mathutils.Vector M=Mathutils.Matrix @@ -98,7 +98,7 @@ def vertexFakeAO(me, PREF_BLUR_ITERATIONS, PREF_BLUR_SCALE, PREF_CLAMP_CONCAVE, # BLUR TONE - edge_lengths= [ ((ed.v1.co-ed.v2.co).length + 1) / PREF_BLUR_SCALE for ed in me.edges] + edge_lengths= [ ed.length for ed in me.edges] for i in xrange(PREF_BLUR_ITERATIONS): orig_vert_tone= list(vert_tone) @@ -107,14 +107,18 @@ def vertexFakeAO(me, PREF_BLUR_ITERATIONS, PREF_BLUR_SCALE, PREF_CLAMP_CONCAVE, i2= ed.v2.index l= edge_lengths[ii] + f=1.0 + if 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 - vert_tone[i1]+= (orig_vert_tone[i2]/len_vert_tone_list_i1)/ l - vert_tone[i2]+= (orig_vert_tone[i1]/len_vert_tone_list_i2)/ l + vert_tone[i1]+= (orig_vert_tone[i2]/len_vert_tone_list_i1)/ f + vert_tone[i2]+= (orig_vert_tone[i1]/len_vert_tone_list_i2)/ f min_tone= min(vert_tone) @@ -148,16 +152,16 @@ def main(): Draw.PupMenu('Error, The active mesh does not have texface/vertex colors. aborting') return - PREF_BLUR_ITERATIONS= Draw.Create(0) - PREF_BLUR_SCALE= Draw.Create(1.0) + PREF_BLUR_ITERATIONS= Draw.Create(1) + PREF_BLUR_RADIUS= Draw.Create(0.05) PREF_CLAMP_CONCAVE= Draw.Create(180) PREF_CLAMP_CONVEX= Draw.Create(180) PREF_SHADOW_ONLY= Draw.Create(0) PREF_SEL_ONLY= Draw.Create(0) pup_block= [\ 'Post AO Blur',\ - (' Iterations:', PREF_BLUR_ITERATIONS, 1, 40, 'Number times to blur the colors. (higher blurs more)'),\ - (' Blur Radius:', PREF_BLUR_SCALE, 0.1, 10.0, 'How much distance effects blur transfur (higher blurs more).'),\ + (' 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).'),\ '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.'),\ @@ -169,14 +173,14 @@ def main(): return PREF_BLUR_ITERATIONS= PREF_BLUR_ITERATIONS.val - PREF_BLUR_SCALE= PREF_BLUR_SCALE.val + PREF_BLUR_RADIUS= PREF_BLUR_RADIUS.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 #t= sys.time() - vertexFakeAO(me, PREF_BLUR_ITERATIONS, PREF_BLUR_SCALE, PREF_CLAMP_CONCAVE, PREF_CLAMP_CONVEX, PREF_SHADOW_ONLY, PREF_SEL_ONLY) + vertexFakeAO(me, PREF_BLUR_ITERATIONS, PREF_BLUR_RADIUS, PREF_CLAMP_CONCAVE, PREF_CLAMP_CONVEX, PREF_SHADOW_ONLY, PREF_SEL_ONLY) #print 'done in %.6f' % (sys.time()-t) if __name__=='__main__': main() |