#1
|
|||
|
|||
Getting an object location
I'm feeling a little frustrated right now. I am trying to get the 3D position of an object within an exported OSGB scene. I know the name of my object; I've called it target. I can even find this object using the following snippet of code:
Code:
for nodeName in WholeEnviroment.getNodeNames(): if(nodeName == 'Target'): node = WholeEnviroment.getChild(nodeName) print node Code:
print node.getPosition() Code:
print node.getPosition(viz.ABS_GLOBAL) Neither are correct. The correct position of this object is [-11.54891, 2.32127, -16.42012]. I am able to use viz.pick to select the object and I get the correct position which is great. However, viz.pick() seems to return the lowest level of an object (the material name in this instance). Why am I unable to get a sensible value from simply specifying the node name? I'm either missing something very obvious or it's just another annoying quirk of Vizard. This is how the structure of this node looks like in Vizard inspector: http://prntscr.com/dg30pa Last edited by chris2307; 12-06-2016 at 09:03 AM. |
#3
|
|||
|
|||
Hi Jeff,
Thanks for the speedy reply. I've uploaded the model using the link provided (1677024). The target object is called "target". |
#4
|
|||
|
|||
Try using either the node.getTransform command or the node.getChild command with the viz.CHILD_REPLACE_TRANSFORM flag:
Code:
import viz viz.go() scene = viz.addChild('scene.osgb') #Get a linkable for controlling a sub-transform of the node target = scene.getTransform('Target') #Create a new Vizard <node3d> object from the underlying scene graph node #target = scene.getChild('Target',flags=viz.CHILD_REPLACE_TRANSFORM) print target.getPosition(viz.ABS_GLOBAL) |
#5
|
|||
|
|||
Hey
i got a pretty similar problem, so i just add this here and hope you can help me i want to locate both arms from my avatar, to get the distance from the Grabbing point (grabber is attached to avatars arms) to the object i want to grab. Code:
ground = viz.addChild('ground_gray.osgb') Heizung = viz.addChild('heiz1.osgb') pyramid = vizshape.addPyramid(base=(0.2,0.2),height=0.2,pos=[-0.5,1.7,1],alpha=0.7) torus = vizshape.addTorus(radius=0.1,tubeRadius=0.015,axis=vizshape.AXIS_X, pos=[0,1.7,1]) box = vizshape.addCube(size=0.1, pos=[0.5,1.7,1],alpha=0.8) pyramid.texture(viz.addTexture('images/tile_slate.jpg')) torus.texture(viz.addTexture('images/tile_wood.jpg')) shapes = [Heizung,pyramid,torus,box] basicly what i want to do is to get the locations of both the box, pyramid, and torus shapes and from the grabber tool from my vizconnect program and give them out |
Thread Tools | |
Display Modes | Rate This Thread |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
How to render a texture of the transparent object and then blur it | whj | Vizard | 1 | 09-25-2012 04:15 PM |
checking object location in an inclosed area of the world | Chapre | Vizard | 2 | 10-08-2010 01:57 AM |
retrieve Object names | Geoffrey | Vizard | 11 | 12-11-2009 05:26 AM |
Gps input for viewpoint location? | realvision | Vizard | 3 | 03-19-2008 01:37 PM |
rotate to object | jargon | Vizard | 1 | 08-08-2005 01:20 PM |