![]() |
|
#1
|
|||
|
|||
|
getVisible unexpected behaviour
I wanted to use the visibility of a object to execute (or not) certain code in a vizAction to my surprise all object returned getVisible() is True while I knew that the certain parent object where invisible. A simple test confirmed that child object don't return the correct visibility value
Code:
groupA = viz.addGroup() groupB = viz.addGroup(parent = groupA) groupA.visible(viz.OFF) print groupB.getVisible() >>> True |
|
#2
|
|||
|
|||
|
This is by design. The node.getVisible() command returns the visible flag of the node. It does not take into account the visible flag of any parents.
You can use the node.getParents() command to determine the visibility state taking into account all parent nodes. Example: Code:
import viz
import vizact
viz.go()
group1 = viz.addGroup()
group2 = viz.addGroup(parent=group1)
ball = viz.addChild('beachball.osgb',parent=group2,pos=(0,1.8,2))
label = viz.addText('',parent=viz.ORTHO,fontSize=50,pos=(10,10,0))
def isNodeActuallyVisible(node):
if not node.getVisible():
return False
parents = node.getParents()
if parents:
return any(isNodeActuallyVisible(p) for p in parents)
return True
def UpdateLabel():
if isNodeActuallyVisible(ball):
label.message('visible')
else:
label.message('not visible')
vizact.ontimer(0,UpdateLabel)
vizact.onkeydown('1',group1.visible,viz.TOGGLE)
vizact.onkeydown('2',group2.visible,viz.TOGGLE)
vizact.onkeydown('3',ball.visible,viz.TOGGLE)
|
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Strange Ball Joint behaviour | mkmatlock | Vizard | 1 | 11-04-2010 05:49 PM |
| Unexpected carriage return | vizmaster | Vizard | 3 | 01-23-2007 01:46 PM |
| Tk with Vizard abnormal behaviour | Gilliard | Vizard | 2 | 08-04-2005 02:14 AM |