{"id":4025,"date":"2022-10-24T23:01:14","date_gmt":"2022-10-24T22:01:14","guid":{"rendered":"https:\/\/wildlab.org\/?p=4025"},"modified":"2022-10-24T23:14:41","modified_gmt":"2022-10-24T22:14:41","slug":"4025","status":"publish","type":"post","link":"https:\/\/wildlab.org\/index.php\/2022\/10\/24\/4025\/","title":{"rendered":"Blender python code for generating objects with forces"},"content":{"rendered":"<p>Blender python code for generating many icospheres at random places + parenting forces.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">import bpy\r\nimport random\r\n\r\nMAX_LOC = 120\r\nFACT_MIN = 0.5\r\nFACT_MAX = 2\r\n\r\nbpy.ops.object.select_all(action='SELECT')\r\n# selecting all\r\n\r\nbpy.ops.object.delete()\r\n# deleting all\r\n\r\nbpy.ops.object.select_all(action='DESELECT')\r\n\r\nbpy.ops.object.camera_add(enter_editmode=False, align='VIEW', location=(0, -200, 0), rotation=(1.6, 0.0, 0), scale=(1, 1, 1))\r\n#bpy.ops.object.camera_add( location=(0, -5, 0), rotation=(1.6, 0.0, 0), scale=(1, 1, 1))\r\n#adding camera\r\n\r\nbpy.context.object.data.lens = 35\r\n#setting camera lens focal length\r\n\r\nbpy.ops.object.light_add(type='SUN', align='WORLD', location=(0, 0, 20), scale=(1, 1, 1))\r\n#adding some light\r\n\r\nbpy.context.object.data.energy = 20\r\n\r\n\r\nbpy.context.scene.frame_current = 1\r\n#always starting from the first frame\r\n\r\nbpy.context.scene.frame_end = 1000\r\n\r\n#bpy.context.space_data.context = 'SCENE'\r\n#bpy.data.scenes[\"Scene\"].(null) = 1000\r\n#not working - must manually change from 250 to 1000 in scene cache\r\n\r\ndef spawn(ob):\r\n    \r\n    factor = random.uniform(FACT_MIN, FACT_MAX)\r\n    #bpy.ops.object.select_all(action='DESELECT')\r\n\r\n    lx = random.uniform(-MAX_LOC, MAX_LOC)\r\n    ly = random.uniform(-MAX_LOC, MAX_LOC)\r\n    lz = random.uniform(-MAX_LOC, MAX_LOC)\r\n                    \r\n    sx = factor\r\n    sy = factor\r\n    sz = factor\r\n                    \r\n    bpy.ops.mesh.primitive_ico_sphere_add(location=(lx, ly, lz), scale=(sx, sy, sz))\r\n    #(adding icosphere)\r\n\r\n    bpy.ops.rigidbody.object_add()\r\n    bpy.context.object.rigid_body.mass *= factor\r\n\r\n    ico_sphere = bpy.context.object #novo!\r\n\r\n    bpy.ops.object.effector_add(type='FORCE', location=(lx, ly, lz), scale=(sx, sy, sz))\r\n    #(adding force)\r\n\r\n    bpy.context.object.field.strength = -50\r\n    bpy.context.object.field.use_gravity_falloff = False\r\n\r\n    effector = bpy.context.object\r\n    #parenting finished\r\n\r\nif __name__ == '__main__':\r\n    selected = bpy.context.selected_objects[0] #was [-1]\r\n    for i in range (150):\r\n        spawn(selected)\r\n\r\n<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Blender python code for generating many icospheres at random places + parenting forces. import bpy import random MAX_LOC = 120 FACT_MIN = 0.5 FACT_MAX = 2 bpy.ops.object.select_all(action=&#8217;SELECT&#8217;) # selecting all bpy.ops.object.delete() # deleting all bpy.ops.object.select_all(action=&#8217;DESELECT&#8217;) bpy.ops.object.camera_add(enter_editmode=False, align=&#8217;VIEW&#8217;, location=(0, -200, 0), rotation=(1.6, 0.0, 0), scale=(1, 1, 1)) #bpy.ops.object.camera_add( location=(0, -5, 0), rotation=(1.6, 0.0, 0), scale=(1, 1, &hellip; <a href=\"https:\/\/wildlab.org\/index.php\/2022\/10\/24\/4025\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Blender python code for generating objects with forces<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"aside","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/wildlab.org\/index.php\/wp-json\/wp\/v2\/posts\/4025"}],"collection":[{"href":"https:\/\/wildlab.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wildlab.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wildlab.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wildlab.org\/index.php\/wp-json\/wp\/v2\/comments?post=4025"}],"version-history":[{"count":3,"href":"https:\/\/wildlab.org\/index.php\/wp-json\/wp\/v2\/posts\/4025\/revisions"}],"predecessor-version":[{"id":4028,"href":"https:\/\/wildlab.org\/index.php\/wp-json\/wp\/v2\/posts\/4025\/revisions\/4028"}],"wp:attachment":[{"href":"https:\/\/wildlab.org\/index.php\/wp-json\/wp\/v2\/media?parent=4025"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wildlab.org\/index.php\/wp-json\/wp\/v2\/categories?post=4025"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wildlab.org\/index.php\/wp-json\/wp\/v2\/tags?post=4025"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}