May 102011
I don’t even know…
Okay, I guess I do know, I made it.
Why?
I don’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__ == bge.types.KX_GameObject: obList.append(o) def calcGrav(obA, obB, G): m1 = obA.mass; m2 = obB.mass m = m1*m2 loc1 = obA.worldPosition loc2 = obB.worldPosition v = loc1 - loc2 r = v.length F = G * ( (m) / (r*r) ) return -v * F def loopGrav(obs, G): for obA in obs: fV = Vector((0,0,0)) for obB in obs: if obA != obB: fV += calcGrav(obA, obB, G) obA.applyForce(fV, False) loopGrav(obList, 1) keyb = bge.logic.keyboard if keyb.events[bge.events.ZKEY]>0: for ob in obList: ob.applyTorque(Vector((0,0,50)), False) if keyb.events[bge.events.XKEY]>0: loopGrav(obList, -2.5) if keyb.events[bge.events.CKEY]>0: loopGrav(obList, 15)
HOW TO:
– copy/paste script into blender text editor.
– setup an EMPTY object with logic nodes as shown.
– change ‘Engine’ from ‘Blender Render’ to ‘Blender Game’
– set World>Physics>Gravity to 0.0 (under Bullet)
– create some objects.
– hit ‘p’
This script will (should/might) make all meshes in the scene obey Newton.
Up until the first rag doll shows sup, it looks like a bunch of rectanguloid piranhas having dinner. After skipping breakfast and lunch.