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:
authorCampbell Barton <ideasman42@gmail.com>2006-07-26 04:20:55 +0400
committerCampbell Barton <ideasman42@gmail.com>2006-07-26 04:20:55 +0400
commit6234c25678f621f4afb0e22db67093dfa0214600 (patch)
tree24396daad26183fdf268e44004cd539a81e56016 /release
parentad67ad845f02ef7c95c1f92d16b59347ea896e17 (diff)
This script randomizes the selected objects loc/size/rot a set ammount.
Diffstat (limited to 'release')
-rwxr-xr-xrelease/scripts/object_random_loc_sz_rot.py110
1 files changed, 110 insertions, 0 deletions
diff --git a/release/scripts/object_random_loc_sz_rot.py b/release/scripts/object_random_loc_sz_rot.py
new file mode 100755
index 00000000000..3cc08efbbb1
--- /dev/null
+++ b/release/scripts/object_random_loc_sz_rot.py
@@ -0,0 +1,110 @@
+#!BPY
+
+"""
+Name: 'Randomize Loc Size Rot'
+Blender: 241
+Group: 'Object'
+Tooltip: 'Randomize the selected objects Loc Size Rot'
+"""
+
+__bpydoc__=\
+'''
+This script randomizes the selected objects location/size/rotation.
+'''
+
+# ***** BEGIN GPL LICENSE BLOCK *****
+#
+# Script copyright (C) Campbell Barton
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# ***** END GPL LICENCE BLOCK *****
+# --------------------------------------------------------------------------
+
+from Blender import Object, Draw
+from Blender.Mathutils import Rand
+
+def rnd():
+ return Rand()-0.5
+
+def randomize(sel, PREF_LOC, PREF_SIZE, PREF_ROT, PREF_LINK_AXIS, PREF_X_AXIS, PREF_Y_AXIS, PREF_Z_AXIS):
+ for ob in sel:
+ if PREF_LOC:
+ if PREF_LINK_AXIS:
+ rand = PREF_LOC*rnd()
+ ob.loc = (ob.LocX+(rand*PREF_X_AXIS), ob.LocY+(rand*PREF_Y_AXIS), ob.LocZ+(rand*PREF_Z_AXIS))
+ else:
+ ob.loc = (ob.LocX+(PREF_LOC*rnd()), ob.LocY+(PREF_LOC*rnd()), ob.LocZ+(PREF_LOC*rnd()))
+
+ if PREF_SIZE:
+ if PREF_LINK_AXIS:
+ rand = 1 + (PREF_SIZE*rnd())
+ if PREF_X_AXIS: x= rand
+ else: x= 1
+ if PREF_Y_AXIS: y= rand
+ else: y= 1
+ if PREF_Z_AXIS: z= rand
+ else: z= 1
+ ob.size = (ob.SizeX*x, ob.SizeY*y, ob.SizeZ*z)
+ else:
+ if PREF_X_AXIS: x= 1+ PREF_SIZE*rnd()
+ else: x= 1
+ if PREF_Y_AXIS: y= 1+ PREF_SIZE*rnd()
+ else: y= 1
+ if PREF_Z_AXIS: z= 1+ PREF_SIZE*rnd()
+ else: z= 1
+
+ ob.size = (ob.SizeX*x, ob.SizeY*y, ob.SizeZ*z)
+ if PREF_ROT:
+ if PREF_LINK_AXIS:
+ rand = PREF_ROT*rnd()
+ ob.rot = (ob.RotX+rand, ob.RotY+rand, ob.RotZ+rand)
+ else:
+ ob.rot = (ob.RotX+(PREF_X_AXIS*PREF_ROT*rnd()), ob.RotY+(PREF_Y_AXIS*PREF_ROT*rnd()), ob.RotZ+(PREF_Z_AXIS*PREF_ROT*rnd()))
+
+
+def main():
+ sel= Object.GetSelected()
+ if not sel:
+ return
+
+ PREF_LOC= Draw.Create(0.0)
+ PREF_SIZE= Draw.Create(0.0)
+ PREF_ROT= Draw.Create(0.0)
+ PREF_LINK_AXIS= Draw.Create(0)
+ PREF_X_AXIS= Draw.Create(1)
+ PREF_Y_AXIS= Draw.Create(1)
+ PREF_Z_AXIS= Draw.Create(1)
+
+ pup_block = [\
+ 'Randomize...',\
+ ('loc:', PREF_LOC, 0.0, 10.0, 'Amount to randomize the location'),\
+ ('size:', PREF_SIZE, 0.0, 10.0, 'Amount to randomize the size'),\
+ ('rot:', PREF_ROT, 0.0, 10.0, 'Amount to randomize the rotation'),\
+ '',\
+ ('Link Axis', PREF_LINK_AXIS, 'Use the same random value for each objects XYZ'),\
+ '',\
+ ('X Axis', PREF_X_AXIS, 'Enable X axis randomization'),\
+ ('Y Axis', PREF_Y_AXIS, 'Enable Y axis randomization'),\
+ ('Z Axis', PREF_Z_AXIS, 'Enable Z axis randomization'),\
+ ]
+
+ if not Draw.PupBlock('Object Randomize', pup_block):
+ return
+
+ randomize(sel, PREF_LOC.val, PREF_SIZE.val, PREF_ROT.val, PREF_LINK_AXIS.val, PREF_X_AXIS.val, PREF_Y_AXIS.val, PREF_Z_AXIS.val)
+
+if __name__ == '__main__':
+ main() \ No newline at end of file