[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [2127] trunk/py/scripts/addons/ object_grease_scatter.py: pep8 cleanup
Campbell Barton
ideasman42 at gmail.com
Sun Jul 17 15:24:20 CEST 2011
Revision: 2127
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=2127
Author: campbellbarton
Date: 2011-07-17 13:24:20 +0000 (Sun, 17 Jul 2011)
Log Message:
-----------
pep8 cleanup
Modified Paths:
--------------
trunk/py/scripts/addons/object_grease_scatter.py
Modified: trunk/py/scripts/addons/object_grease_scatter.py
===================================================================
--- trunk/py/scripts/addons/object_grease_scatter.py 2011-07-17 13:15:24 UTC (rev 2126)
+++ trunk/py/scripts/addons/object_grease_scatter.py 2011-07-17 13:24:20 UTC (rev 2127)
@@ -37,44 +37,43 @@
"category": "Object"}
from mathutils import Vector, Matrix, Quaternion
-from math import radians
from random import uniform, shuffle
import bpy
+
def _main(self, DENSITY=1.0, SCALE=0.6, RAND_LOC=0.8, RAND_ALIGN=0.75):
from math import radians
-
+
C = bpy.context
o = C.object
# print(o.ray_cast(Vector(), Vector(0,0,0.2)))
-
+
OFS = 0.2
- SEEK = 2.0 # distance for ray to seek
- BAD_NORMAL = Vector((0,0,-1))
+ SEEK = 2.0 # distance for ray to seek
+ BAD_NORMAL = Vector((0.0, 0.0, -1.0))
WALL_LIMIT = radians(45.0)
- mats = [
- Matrix.Rotation(radians(-45), 3, 'X'),
- Matrix.Rotation(radians( 45), 3, 'X'),
- Matrix.Rotation(radians(-45), 3, 'Y'),
- Matrix.Rotation(radians( 45), 3, 'Y'),
- Matrix.Rotation(radians(-45), 3, 'Z'),
- Matrix.Rotation(radians( 45), 3, 'Z')]
+ mats = [Matrix.Rotation(radians(-45), 3, 'X'),
+ Matrix.Rotation(radians(+45), 3, 'X'),
+ Matrix.Rotation(radians(-45), 3, 'Y'),
+ Matrix.Rotation(radians(+45), 3, 'Y'),
+ Matrix.Rotation(radians(-45), 3, 'Z'),
+ Matrix.Rotation(radians(+45), 3, 'Z'),
+ ]
-
- Z_UP = Vector((0,0,1.0))
- dirs = [
- Vector((0,0,OFS)),
- Vector((0,0,-OFS))]
+ Z_UP = Vector((0.0, 0.0, 1.0))
+ dirs = [Vector((0.0, 0.0, OFS)),
+ Vector((0.0, 0.0, -OFS)),
+ ]
'''
Vector(0,OFS,0),
Vector(0,-OFS,0),
Vector(OFS,0,0),
Vector(-OFS,0,0)
'''
-
+
group = bpy.data.groups.get(o.name)
-
+
if not group:
self.report({'WARNING'}, "Group '%s' not found, must match object name" % o.name)
return
@@ -105,14 +104,11 @@
faces_flat = [v for f in faces for v in treat_face(f)]
self.faces.foreach_set("verts_raw", faces_flat)
del faces_flat
-
-
-
- def debug_edge(v1,v2):
+ def debug_edge(v1, v2):
mesh = bpy.data.meshes.new("Retopo")
- mesh.from_pydata([v1,v2], [(0,1)], [])
-
+ mesh.from_pydata([v1, v2], [(0.0, 1.0)], [])
+
scene = bpy.context.scene
mesh.update()
obj_new = bpy.data.objects.new("Torus", mesh)
@@ -122,20 +118,21 @@
#ray = C.scene.ray_cast
DEBUG = False
+
def fix_point(p):
for d in dirs:
# print(p)
hit, no, ind = ray(p, p + d)
if ind != -1:
if DEBUG:
- return [p, no, None]
+ return [p, no, None]
else:
# print("good", hit, no)
- return [hit, no, None]
+ return [hit, no, None]
# worry!
print("bad!", p, BAD_NORMAL)
-
+
return [p, BAD_NORMAL, None]
def get_points(stroke):
@@ -159,7 +156,7 @@
if not gp:
gp = scene.grease_pencil
-
+
if not gp:
self.report({'WARNING'}, "No grease pencil layer found")
return
@@ -173,13 +170,13 @@
# print(p, n)
if n is BAD_NORMAL:
continue
-
+
# # dont self intersect
best_nor = None
- best_hit = None
+ #best_hit = None
best_dist = 10000000.0
pofs = p + n * 0.01
-
+
n_seek = n * SEEK
m_alt_1 = Matrix.Rotation(radians(22.5), 3, n)
m_alt_2 = Matrix.Rotation(radians(-22.5), 3, n)
@@ -192,25 +189,24 @@
best_dist = dist
best_nor = nor
#best_hit = hit
-
+
if best_nor:
pt[1].length = best_dist
best_nor.negate()
pt[2] = best_nor
-
#scene.cursor_location[:] = best_hitnyway
# bpy.ops.wm.redraw_timer(type='DRAW_WIN_SWAP', iterations=1)
# debug_edge(p, best_hit)
# p[:] = best_hit
-
+
# Now we need to do scattering.
# first corners
hits = []
nors = []
oris = []
for s in splines:
- for p,n,n_other in s: # point, normal, n_other the closest hit normal
+ for p, n, n_other in s: # point, normal, n_other the closest hit normal
if n is BAD_NORMAL:
continue
if n_other:
@@ -218,31 +214,31 @@
n_down = (n * -SEEK)
l = n_down.length
n_other.length = l
-
+
vantage = p + n
if DEBUG:
p[:] = vantage
-
+
# We should cast rays between n_down and n_other
#for f in (0.0, 0.2, 0.4, 0.6, 0.8, 1.0):
TOT = int(10 * DENSITY)
#for i in list(range(TOT)):
- for i in list(range(TOT))[int(TOT/1.5):]: # second half
- f = i/(TOT-1)
-
+ for i in list(range(TOT))[int(TOT / 1.5):]: # second half
+ f = i / (TOT - 1)
+
# focus on the center
'''
f -= 0.5
f = f*f
f += 0.5
'''
-
- ntmp = f * n_down + (1.0 - f)*n_other
- # randomize
+
+ ntmp = f * n_down + (1.0 - f) * n_other
+ # randomize
ntmp.x += uniform(-l, l) * RAND_LOC
ntmp.y += uniform(-l, l) * RAND_LOC
ntmp.z += uniform(-l, l) * RAND_LOC
-
+
hit, hit_no, ind = ray(vantage, vantage + ntmp)
# print(hit, hit_no)
if ind != -1:
@@ -251,30 +247,28 @@
nors.append(hit_no)
oris.append(n_other.cross(hit_no))
#oris.append(n_other)
-
-
-
+
if 0:
mesh = bpy.data.meshes.new("Retopo")
mesh.from_pydata(hits, [], [])
-
+
scene = bpy.context.scene
mesh.update()
obj_new = bpy.data.objects.new("Torus", mesh)
scene.objects.link(obj_new)
obj_new.layers[:] = o.layers
-
+
# Now setup dupli-faces
obj_new.dupli_type = 'VERTS'
ob_child = bpy.data.objects["trash"]
ob_child.location = obj_new.location
ob_child.parent = obj_new
else:
-
+
def apply_faces(triples):
# first randomize the faces
shuffle(triples)
-
+
obs = group.objects[:]
tot = len(obs)
tot_div = int(len(triples) / tot)
@@ -282,26 +276,26 @@
for inst_ob in obs:
triple_subset = triples[0:tot_div]
triples[0:tot_div] = []
-
+
vv = [tuple(v) for f in triple_subset for v in f]
mesh = bpy.data.meshes.new("Retopo")
- mesh.from_pydata(vv, [], [(i*3, i*3+1, i*3+2) for i in range(len(triple_subset))])
+ mesh.from_pydata(vv, [], [(i * 3, i * 3 + 1, i * 3 + 2) for i in range(len(triple_subset))])
scene = bpy.context.scene
mesh.update()
obj_new = bpy.data.objects.new("Torus", mesh)
scene.objects.link(obj_new)
obj_new.layers[:] = o.layers
-
+
# Now setup dupli-faces
obj_new.dupli_type = 'FACES'
obj_new.use_dupli_faces_scale = True
obj_new.dupli_faces_scale = 100.0
-
+
inst_ob.location = obj_new.location
inst_ob.parent = obj_new
-
+
# BGE settings for testiing
'''
inst_ob.game.physics_type = 'RIGID_BODY'
@@ -310,38 +304,39 @@
inst_ob.game.collision_margin = 0.1
obj_new.select = True
'''
-
-
+
# build faces from vert/normals
- tri = Vector((0, 0 ,0.01)), Vector((0, 0, 0)), Vector((0.0, 0.01, 0.01))
-
+ tri = (Vector((0.0, 0.0, 0.01)),
+ Vector((0.0, 0.0, 0.0)),
+ Vector((0.0, 0.01, 0.01)))
+
coords = []
- face_ind = []
+ # face_ind = []
for i in range(len(hits)):
co = hits[i]
no = nors[i]
ori = oris[i]
quat = no.to_track_quat('X', 'Z')
-
+
# make 2 angles and blend
- angle = radians(uniform(-180, 180.0))
- angle_aligned = -(ori.angle(Vector((0,1,0)) * quat, radians(180.0)))
-
- quat = Quaternion(no, (angle * (1.0-RAND_ALIGN)) + (angle_aligned * RAND_ALIGN)).cross(quat)
+ angle = radians(uniform(-180, 180.0))
+ angle_aligned = -(ori.angle(Vector((0.0, 1.0, 0.0)) * quat, radians(180.0)))
+ quat = Quaternion(no, (angle * (1.0 - RAND_ALIGN)) + (angle_aligned * RAND_ALIGN)).cross(quat)
+
f = uniform(0.1, 1.2) * SCALE
-
+
coords.append([co + ((tri[0] * f) * quat), co + ((tri[1] * f) * quat), co + ((tri[2] * f) * quat)])
# face_ind.append([i*3, i*3+1, i*3+2])
-
-
+
apply_faces(coords)
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-extensions-cvs
mailing list