#1
|
|||
|
|||
physics problem
hey, first time poster here
currently, i'm trying to setup a balance board type apparatus that includes the board, and a ball that rests on the center. the board tilts up and down and is controlled by a wii remote controller. as the board tilts, the ball rolls down accordingly. all that is working fine and dandy, but a problem keeps occuring where the ball suddenly drops through the board, and i haven't been able to figure out why. i've tried playing with the density, bounce, and hardness of both the board and the ball, but still no luck. here's my script so far: Code:
#create balance board bar = vizshape.addBox(size=(20, 1,1)) bar.setPosition([0,2,5]) bar.color(1,0,0) barCollideShape = bar.collideMesh() #create ball ball = viz.add('ball.wrl') ball.setScale([1.5,1.5,1.5]) ball.setPosition([0, 7, 5]) ballCollideShape = ball.collideSphere() Code:
#Add wiimote extension wii = viz.add('wiimote.dle') #Connect to first available wiimote w = wii.addWiimote() def updateWiiMote(): w.led = wii.LED_1 | wii.LED_4 x,y,z = w.getAccel() x,y,z = threshIt(x,y,z) newEuler = (0,0,-x*10) print newEuler bar.setEuler(newEuler) #poll joystick continuously vizact.ontimer(0, updateWiiMote) Code:
#create rear guiderail farGuiderail = vizshape.addBox([30, 50, .01]) farGuiderail.setPosition([0,2,5.5]) farGuiderailMesh = farGuiderail.collideMesh() farGuiderail.disable(viz.RENDERING) farGuiderail.disable(viz.DEPTH_WRITE) #creat front guiderail nearGuiderail = vizshape.addBox([30, 50, .01]) nearGuiderail.setPosition([0,2,4.5]) nearGuiderailMesh = nearGuiderail.collideMesh() nearGuiderail.disable(viz.RENDERING) nearGuiderail.disable(viz.DEPTH_WRITE) |
#2
|
|||
|
|||
Try using a collideBox for the bar. Does that work?
Code:
barCollideShape = bar.collideBox() bar.disable(viz.DYNAMICS) |
#3
|
|||
|
|||
I tried the collide box but abandoned it because it made the balance board fall to the ground. I guess i could try using a fulcrum to support the board...
|
#4
|
|||
|
|||
Code:
bar.disable(viz.DYNAMICS) |
#5
|
|||
|
|||
thanks, but i'm still having the same problem. the ball passes through the balance board quite easily...
|
#6
|
|||
|
|||
In order to get the bar and the ball to collide correctly you'll need to move the bar by applying a force or torque to it:
Code:
import viz import vizact viz.go() viz.phys.enable() bar = viz.add('box.wrl') # Add a box bar.setScale(20,1,1) # Make it look more door like shape = bar.collideBox() # Enable physics on the box shape.setDensity(0.1) ball = viz.add('ball.wrl') ball.setScale([1.5,1.5,1.5]) ball.setPosition([0, 2, 0]) ballCollideShape = ball.collideSphere() joint = viz.phys.addHingeJoint(bar,None,pos=[0,0,0],axis0=[0,0,1]) # Hinge joint attached to world def push(): bar.applyTorque([0,0,20],duration=0.2) vizact.onkeydown('1',push) def pushBack(): bar.applyTorque([0,0,-20],duration=0.2) vizact.onkeydown('2',pushBack) def resetSimulation(): if ball.getPosition()[1] < -5: ball.reset() ball.setPosition([0, 2, 0]) bar.reset() bar.setEuler([0,0,0]) vizact.ontimer(1,resetSimulation) import vizcam vizcam.PivotNavigate(center=[0,0,0],distance=30) |
#7
|
|||
|
|||
i'm going to give this a try.
i was originally having the bar via the wiimote. so as the wiimote moved, the euler of the bar moved accordingly. could that be the reason, or at least one of the reasons why the ball kept falling through? |
#8
|
|||
|
|||
To make sure the physics engine calculates the collisions correctly you should apply a force or torque to the bar rather than manually setting it's orientation using the setEuler command. You can still use the wiimote data to decide what torque to apply.
|
#9
|
|||
|
|||
it works
thanks so much for all your help, much appreciated! |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Vizard problem | mizutani_jun | Vizard | 4 | 01-09-2011 03:39 PM |
Physics Problem | Sandro Holzer | Vizard | 4 | 03-29-2009 10:51 PM |
physics engine exception | ad_astra | Vizard | 3 | 03-25-2009 11:31 AM |
picking problem... | k_iwan | Vizard | 2 | 07-27-2007 07:57 PM |
problem with female animations | vmonkey | Vizard | 1 | 10-07-2005 10:36 AM |