Featured post

new redirect for blender.org bpy docs.

http://www.blender.org/api/blender_python_api_current/ As of 10/11 november 2015 we can now link to the current api docs and not be worr...

September 24, 2012

tripping metaballs python

import bpy
from random import random, randrange
set_layer = lambda y: tuple(i == y for i in range(0, 20))
co = (0, 0, 0)
add_metaball = bpy.ops.object.metaball_add
add_metaball(type='BALL', enter_editmode=True, location=co, layers=set_layer(0))
obj = bpy.context.active_object.data
for i in range(20):
obj.elements.new()
x, y, z = tuple(randrange(-4,4) * random() for i in range(3))
obj.elements[-1].co = (x, y, z)
print('done')
view raw metaballs.py hosted with ❤ by GitHub
I had never really used metaballs, should be neat for motion graphics.
here's a more efficient way to do it (prompted by a blender.stackexchange question):
import bpy
import random
scene = bpy.context.scene
# add metaball object
mball = bpy.data.metaballs.new("MetaBall")
obj = bpy.data.objects.new("MetaBallObject", mball)
scene.objects.link(obj)
mball.resolution = 0.2 # View resolution
mball.render_resolution = 0.02
for i in range(20):
coordinate = tuple(random.uniform(-4,4) for i in range(3))
element = mball.elements.new()
element.co = coordinate
element.radius = 2.0
view raw omfg.py hosted with ❤ by GitHub