Tutorial: How to create physics joints in SP simulation
-
Hi there..
Now probably all of u guyz have used Sketchyphysics at some point, and created physics joints in them.The problem though, is that sumtimes the joints become glitchy : they either become floppy or fall off completely... not good...
The solution to the problem is to create a joint while the simulation is running.
Ever explored the scripts which make up Sketchyphysics? If so, u've probably seen the module "NewtonServer" sumwhere... . this module is just about the kernel of the Sketchyphysics system. It creates nearly every physical feature of Sketchyphysics, from joints to forces to gravity and so on.
We need one of its methods, which is "createJoint"...
# this example creates a hinge joint parent={grp} # a grouped object that encases the joint child={grp} # a grouped object that is attached to the joint type="hinge" min=0 max=0 accel=0 damp=0 breakingForce=1000000 limits=[min,max,accel,damp,0,0,breakingForce] # parameters for the joint xform=parent.transformation pinDir=xform.zaxis.to_a # the axis of the joint parentBody=DL;;PtrData.new(parent.get_attribute("SPOBJ","body",nil)) # converted parent body childBody=DL;;PtrData.new(child.get_attribute("SPOBJ","body",nil)) # converted child body jnt=NewtonServer.createJoint(type,xform.origin.to_a.pack("f*"), pinDir.pack("f*"), childBody,parentBody, limits.pack("f*") ) # the joint itself
Important: in general, all array objects need ".pack("f*")" after them, and all grouped bodies need to be converted into DL::PtrData (by using "DL::PtrData.new({grp}.get_attribute("SPOBJ","body",nil))" )
The created joint doesnt have the bugs normal joints have. (hopefully... )
Have fun "Sketchyphysic"ing (!)
Advertisement