I am working in a immersive VR simulator, and I am picking up and moving objects around.
Grabbing an object is pretty easy:
Code:
grabLink = viz.link(hand,object,1)
This allows it to follow translation and orientation exactly
I can also modify the link to act in a couple different ways by modifying the link like so:
Creating a 'locked rotations' link (the grabbed object follows the translations of the hand, but it's orientation is locked at [0,0,0] exactly)
Code:
grabLink.setEuler([0,0,0]) #set the yaw, pitch and roll to zero
Create a 'z-pinned' link (the grabbed object follows rotations exactly, but the block is only able to translate in the z-axis)
Code:
yPos = object.getPosition()[1] #y position of object
xPos = object.getPosition()[0] #x position of object
grabLink.clampPosY([yPos,yPos],1,viz.LINK_FULL_OP) #clamp item's vertical motion
grabLink.clampPosX([xPos,xPos],1,viz.LINK_FULL_OP) #clamp item's lateral motion
Create a 'movement bounded' link (object can't move past the zBound point on the z-axis)
grabLink.clampPosZ([None,zBound],1,viz.LINK_FULL_OP) #clamp item's forward motion
Ok, so all that is working well and good. But now I need to 'offset' the position of the object vs. the hand with a set of offsets
Code:
rotationOffsets = [x,y,z]
Anyone know how to get this done?