Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Salazar <zanqdo@gmail.com>2010-12-15 11:21:58 +0300
committerDaniel Salazar <zanqdo@gmail.com>2010-12-15 11:21:58 +0300
commiteac46088e5a63991d2894197bbe14971864541ed (patch)
tree4d900e5a5900e656887723e15a5c9d094400ef6e /release
parentdbd3081895b6b03c8b321803e0fe2900b7577beb (diff)
Randomize Transform operator:
Added support for working on delta transformations instead of plain transform. this should help the fact that you cant randomize animated objects (still need to check into that) Removed minimun scale since it was not well done, need a stronger version of this
Diffstat (limited to 'release')
-rw-r--r--release/scripts/op/object_randomize_transform.py54
1 files changed, 32 insertions, 22 deletions
diff --git a/release/scripts/op/object_randomize_transform.py b/release/scripts/op/object_randomize_transform.py
index f60f25242c7..7d962892c6a 100644
--- a/release/scripts/op/object_randomize_transform.py
+++ b/release/scripts/op/object_randomize_transform.py
@@ -21,7 +21,7 @@
import bpy
-def randomize_selected(seed, loc, rot, scale, scale_even, scale_min):
+def randomize_selected(seed, delta, loc, rot, scale, scale_even):
import random
from random import uniform
@@ -35,20 +35,31 @@ def randomize_selected(seed, loc, rot, scale, scale_even, scale_min):
for obj in bpy.context.selected_objects:
if loc:
- obj.location += rand_vec(loc)
+ if delta:
+ obj.delta_location += rand_vec(loc)
+ else:
+ obj.location += rand_vec(loc)
else: # otherwise the values change under us
uniform(0.0, 0.0), uniform(0.0, 0.0), uniform(0.0, 0.0)
if rot: # TODO, non euler's
vec = rand_vec(rot)
- obj.rotation_euler[0] += vec[0]
- obj.rotation_euler[1] += vec[1]
- obj.rotation_euler[2] += vec[2]
+ if delta:
+ obj.delta_rotation_euler[0] += vec[0]
+ obj.delta_rotation_euler[1] += vec[1]
+ obj.delta_rotation_euler[2] += vec[2]
+ else:
+ obj.rotation_euler[0] += vec[0]
+ obj.rotation_euler[1] += vec[1]
+ obj.rotation_euler[2] += vec[2]
else:
uniform(0.0, 0.0), uniform(0.0, 0.0), uniform(0.0, 0.0)
if scale:
- org_sca_x, org_sca_y, org_sca_z = obj.scale
+ if delta:
+ org_sca_x, org_sca_y, org_sca_z = obj.delta_scale
+ else:
+ org_sca_x, org_sca_y, org_sca_z = obj.scale
if scale_even:
sca_x = sca_y = sca_z = uniform(scale[0], - scale[0])
@@ -57,22 +68,15 @@ def randomize_selected(seed, loc, rot, scale, scale_even, scale_min):
sca_x, sca_y, sca_z = rand_vec(scale)
aX = sca_x + org_sca_x
- bX = org_sca_x * scale_min
aY = sca_y + org_sca_y
- bY = org_sca_y * scale_min
aZ = sca_z + org_sca_z
- bZ = org_sca_z * scale_min
- if aX < bX:
- aX = bX
- if aY < bY:
- aY = bY
- if aZ < bZ:
- aZ = bZ
-
- obj.scale = aX, aY, aZ
+ if delta:
+ obj.delta_scale = aX, aY, aZ
+ else:
+ obj.scale = aX, aY, aZ
else:
uniform(0.0, 0.0), uniform(0.0, 0.0), uniform(0.0, 0.0)
@@ -89,8 +93,11 @@ class RandomizeLocRotSize(bpy.types.Operator):
description="Seed value for the random generator",
default=0, min=0, max=1000)
+ use_delta = BoolProperty(name="Transform Delta",
+ description="Randomize delta transform values instead of regular transform", default=False)
+
use_loc = BoolProperty(name="Randomize Location",
- description="Randomize the scale values", default=True)
+ description="Randomize the location values", default=True)
loc = FloatVectorProperty(name="Location",
description="Maximun distance the objects can spread over each axis",
@@ -109,9 +116,9 @@ class RandomizeLocRotSize(bpy.types.Operator):
scale_even = BoolProperty(name="Scale Even",
description="Use the same scale value for all axis", default=False)
- scale_min = FloatProperty(name="Minimun Scale Factor",
+ '''scale_min = FloatProperty(name="Minimun Scale Factor",
description="Lowest scale percentage possible",
- default=0.15, min=-1.0, max=1.0, precision=3)
+ default=0.15, min=-1.0, max=1.0, precision=3)'''
scale = FloatVectorProperty(name="Scale",
description="Maximum scale randomization over each axis",
@@ -119,16 +126,19 @@ class RandomizeLocRotSize(bpy.types.Operator):
def execute(self, context):
from math import radians
+
seed = self.random_seed
+ delta = self.use_delta
+
loc = None if not self.use_loc else self.loc
rot = None if not self.use_rot else self.rot * radians(1.0)
scale = None if not self.use_scale else self.scale
scale_even = self.scale_even
- scale_min = self.scale_min
+ #scale_min = self.scale_min
- randomize_selected(seed, loc, rot, scale, scale_even, scale_min)
+ randomize_selected(seed, delta, loc, rot, scale, scale_even)
return {'FINISHED'}