WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   getting position relative to an object (https://forum.worldviz.com/showthread.php?t=3973)

fivel_lab 10-24-2011 10:12 AM

getting position relative to an object
 
i'm running an experiment using vizard, and the experiment consists of having a balance board apparatus with a block placed at the boards center. the board starts to tilt at the start of a trial, and as it does so the block starts to slide accordingly. participants are tasked with keeping the board stable and the block within a target region that is located 1/4 of the board's length on the left side.

the board's color is black, as is the block's. the target region is denoted by a white block that has been added as a child to the board.

what i would like to do is have the block's color change to white whenever it is within the target region. problem is, i don't know how to obtain the block's position relative to the board, rather than the world without setting the block as a child of the board. any suggestions?

Jeff 10-24-2011 06:28 PM

Why don't you want the block to be a child of the board?

If you are using world coordinates you could get the distance between the block position and the target position using the vizmat.Distance command. If it's within a certain then change it's color.

fivel_lab 10-26-2011 01:45 PM

works, thanks =-)

as for why i didn't want the block to be a child of the board, whenever i had it set up that way, the ball wouldn't slide the way i wanted it to. again, not sure why...

fivel_lab 10-26-2011 02:08 PM

ok, new issue...

the block slides off more often than i expected during my trial runs, so i'm thinking of including "bookends" on the ends of each side of the board.

Code:

       
        global bar
        bar = viz.add('box.wrl')
        bar.setScale([BARLENGTH, CUBESIZE,CUBESIZE])
        bar.setPosition(CENTERPOS)
        bar.color(viz.BLACK)
        barCollideShape = bar.collideBox()
        barCollideShape.setDensity(DENSITY)
        barCollideShape.setFriction(FRICTION)

        end1=bar.add('box.wrl')
        end1.setPosition((CENTERPOS[0]-.55, CENTERPOS[1]-4,    CENTERPOS[2]-5))
        end1.color(viz.WHITE)
        end1.setScale([.05,3,1])
        end1Collide = end1.collideBox()
        end1.disable(viz.DYNAMICS)
        end1Collide.setDensity(DENSITY)

when i use .disable(viz.DYNAMICS), the block slides right through the bookend, but without it, the bookend itself behaves crazily.

Jeff 11-02-2011 07:24 PM

If you increase the scale value for the X dimension does it make a difference?
Code:

end1.setScale([.05,3,1])


All times are GMT -7. The time now is 04:49 AM.

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