{"id":423,"date":"2011-05-10T06:41:31","date_gmt":"2011-05-10T06:41:31","guid":{"rendered":"http:\/\/www.funkboxing.com\/wordpress\/?p=423"},"modified":"2021-01-03T18:14:03","modified_gmt":"2021-01-03T18:14:03","slug":"something-else-with-gravity-and-ragdolls","status":"publish","type":"post","link":"http:\/\/funkboxing.com\/wordpress\/?p=423","title":{"rendered":"Something else with gravity and ragdolls"},"content":{"rendered":"<p>I don&#8217;t even know&#8230;<br \/>\n<iframe loading=\"lazy\" width=\"640\" height=\"390\" src=\"http:\/\/www.youtube.com\/embed\/AyKZVkyfJiY\" frameborder=\"0\" allowfullscreen><\/iframe><\/p>\n<p>Okay, I guess I do know, I made it.<br \/>\nWhy?<br \/>\nI don&#8217;t even know.<br \/>\nHow?<br \/>\nbge and a simple gravity script of course.<br \/>\nwanna hear it? here is go!<\/p>\n<div style=\"height: 300px; width: 800px; font: 12px\/16px Georgia,Garamond,Serif; overflow: scroll;\">\n<pre class=\"brush:py\">import bge\nfrom mathutils import Vector\nco = bge.logic.getCurrentController()\nscene = bge.logic.getCurrentScene()\n\nobList = []\nfor o in scene.objects:\n    if o.__class__ == bge.types.KX_GameObject:\n        obList.append(o)\n\ndef calcGrav(obA, obB, G):\n    m1 = obA.mass; m2 = obB.mass\n    m = m1*m2\n    loc1 = obA.worldPosition\n    loc2 = obB.worldPosition\n    v = loc1 - loc2\n    r = v.length\n    F = G * ( (m) \/ (r*r) )\n    return -v * F\n\ndef loopGrav(obs, G):\n    for obA in obs:\n        fV = Vector((0,0,0))\n        for obB in obs:\n            if obA != obB:\n                fV += calcGrav(obA, obB, G)\n        obA.applyForce(fV, False)\n\nloopGrav(obList, 1)\n\nkeyb = bge.logic.keyboard\nif keyb.events[bge.events.ZKEY]&gt;0:\n    for ob in obList:\n        ob.applyTorque(Vector((0,0,50)), False)\n\nif keyb.events[bge.events.XKEY]&gt;0:\n    loopGrav(obList, -2.5)\n\nif keyb.events[bge.events.CKEY]&gt;0:\n    loopGrav(obList, 15)<\/pre>\n<\/div>\n<p><a><br \/>\n<a href=\"http:\/\/www.funkboxing.com\/wordpress\/wp-content\/uploads\/2011\/02\/bgeGRAVITYdoc.jpg\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-medium wp-image-426\" title=\"bgeGRAVITYdoc\" src=\"http:\/\/www.funkboxing.com\/wordpress\/wp-content\/uploads\/2011\/02\/bgeGRAVITYdoc-300x204.jpg\" alt=\"\" width=\"300\" height=\"204\" \/><\/a><\/p>\n<p>HOW TO:<br \/>\n&#8211; copy\/paste script into blender text editor.<br \/>\n&#8211; setup an EMPTY object with logic nodes as shown.<br \/>\n&#8211; change &#8216;Engine&#8217; from &#8216;Blender Render&#8217; to &#8216;Blender Game&#8217;<br \/>\n&#8211; set World&gt;Physics&gt;Gravity to 0.0 (under Bullet)<br \/>\n&#8211; create some objects.<br \/>\n&#8211; hit &#8216;p&#8217;<\/p>\n<p>This script will (should\/might) make all meshes in the scene obey Newton.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I don&#8217;t even know&#8230; Okay, I guess I do know, I made it. Why? I don&#8217;t even know. How? bge and a simple gravity script of course. wanna hear it? here is go! import bge from mathutils import Vector co = bge.logic.getCurrentController() scene = bge.logic.getCurrentScene() obList = [] for o in scene.objects: if o.__class__ == <a href='http:\/\/funkboxing.com\/wordpress\/?p=423' class='excerpt-more'>[&#8230;]<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3,5,47],"tags":[28,30],"_links":{"self":[{"href":"http:\/\/funkboxing.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/423"}],"collection":[{"href":"http:\/\/funkboxing.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/funkboxing.com\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/funkboxing.com\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/funkboxing.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=423"}],"version-history":[{"count":1,"href":"http:\/\/funkboxing.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/423\/revisions"}],"predecessor-version":[{"id":2630,"href":"http:\/\/funkboxing.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/423\/revisions\/2630"}],"wp:attachment":[{"href":"http:\/\/funkboxing.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=423"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/funkboxing.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=423"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/funkboxing.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=423"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}