WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   Introducing a rotation offset into a link (https://forum.worldviz.com/showthread.php?t=4871)

EnvisMJ 11-10-2013 03:56 PM

Introducing a rotation offset into a link
 
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?

Frank Verberne 11-13-2013 05:51 AM

I think you're looking for something like this:
Code:

positionOffsets = [x,y,z]
rotationOffsets = [yaw,pitch,roll]
grabLink = viz.link(hand,object,1)
grabLink.preTrans(positionOffsets)
grabLink.preEuler(rotationOffsets)

You mentioned in your question that you want to offset the position, but in the piece of code below, there is a variable called rotationOffsets. You can offset the rotation of a link with link.preEuler() and the position of a link with link.preTrans(). Both are described in the code above. Hope that solves your problem!


All times are GMT -7. The time now is 11:12 AM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Copyright 2002-2023 WorldViz LLC