WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   Highlighter tool on nodes in model (https://forum.worldviz.com/showthread.php?t=5626)

Seadna 02-03-2016 07:21 AM

Highlighter tool on nodes in model
 
Hi folks,

I'm really struggling with this one.

I have a large model imported with many nodes. I want to be able to highlight the objects in the model with the highlighter tool.

From the looks of the sample code i need to set the items that are selectable by the highlighter tool.

What i'm trying to do (instead of manually entering hundreds of items) is pull the list of nodes using tool.setItems(Model.getNodeNames()) but this does not work at all.

I have also tried using tool.setItems(','.join(Model.getNodeNames())) to remove the single quotation marks but it still generates an error:

Code:

Traceback (most recent call last):
  File "C:\Program Files\WorldViz\Vizard5\python\vizact.py", line 3183, in _callGroup
    val = e.call(arg)
  File "C:\Program Files\WorldViz\Vizard5\python\vizact.py", line 2949, in _callStatic
    return func(*args,**kwargs)
  File "C:\Program Files\WorldViz\Vizard5\python\tools\highlighter.py", line 627, in _intersectBoundingBox
    bs = item.getBoundingSphere(viz.ABS_GLOBAL)
AttributeError: 'str' object has no attribute 'getBoundingSphere'


Seadna 02-04-2016 02:35 AM

I'm trying something different. I certainly cannot figure out how to get the highlighter to highlight sub-nodes (so far).

Can I use the pick function instead? How can I use pick() when wearing an Oculus Rift? I can use it with my mouse on screen in the tutorial but when combined with my vizconnect configuration on Oculus I do not have a mouse pointer. Can i do this with an arrow similar to the laser pointer tool? How can this be implemented is there any example code?

As usual any help is much appreciated!

Erikvdb 02-04-2016 04:11 AM

Highlighter works, you just need to declare the sub-nodes as objects.

Code:

gallery = viz.addChild('gallery.ive')
nodes = {}

for name in gallery.getNodeNames():
    node = gallery.getChild(name) #create child object
    nodes[node] = name #store in dict with its name

from tools import highlighter
tool = highlighter.Highlighter()
tool.setItems(nodes.keys())

def onHighlight(e):
    if e.new in nodes:
        print '{} is highlighted'.format(nodes[e.new])

viz.callback(highlighter.HIGHLIGHT_EVENT,onHighlight)

There might be an easier way to get the node name from the selected object so you don't need to store it in a dictionary, but hey.

Seadna 02-04-2016 04:14 AM

Thanks Erik,

I will try this after lunch!

Seadna 02-05-2016 05:31 AM

Thanks again Erik, this works great.

Do you know how I can get this to print the sub-node name?

Erikvdb 02-11-2016 05:17 AM

I don't understand your question, printing the name of the pointed-at sub-node is literally the only thing the script I posted does!?


All times are GMT -7. The time now is 01:29 AM.

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