PDA

View Full Version : pick() & "GEODE" problem


Renato Lima
09-21-2010, 07:59 PM
I created a plane on 3DS, applied a texture and exported it to .IVE

Now I am trying to get the NAME of this object (wall01) through pick(). However I get either "Material #39" on objects with texture or "Wall01-GEODE" for objects without texture. How do I get "wall01" for an object with texture? And how can I make the export not generate these -GEODE things?


Code:

object = viz.pick(1, viz.WORLD)
print object.name


I tried pretty much everything I could find on the forum, and I still have no clue as to how get "wall01" as a return to pick(). Any ideas???

Renato Lima
09-22-2010, 07:11 AM
After switching to .3DS, the problem is gone. Is this a problem or limitation with the .IVE file format?

Jeff
09-23-2010, 11:19 AM
The object.name field will hold the name of the lowest level transform. In the case of the .ive file that is a texture unless there is no texture. What you can do is get a handle to the child object using <node3D>.getChild and then check to see if that was picked:
import viz
import vizact

viz.go()
gallery = viz.addChild('gallery.ive')
painting = gallery.getChild('art04-FACES')


def showPicked():
object = viz.pick()
if object == painting:
viz.logNotice('Dali painting picked')

vizact.onmousedown(viz.MOUSEBUTTON_LEFT,showPicked )

The following article shows what you can do when you get a handle to the GEODE sub-object in your script:

http://kb.worldviz.com/articles/1157