WorldViz User Forum  

Go Back   WorldViz User Forum > Vizard

 
 
Thread Tools Rating: Thread Rating: 3 votes, 5.00 average. Display Modes
Prev Previous Post   Next Post Next
  #6  
Old 02-09-2006, 12:22 PM
farshizzo farshizzo is offline
WorldViz Team Member
 
Join Date: Mar 2003
Posts: 2,849
Hi,

In this case you will need to create a Vizard node for each object that you want to be viewable by the user. If you have one model file with individually viewable objects, then you need to call getchild on each sub-object to ensure that a Vizard node is created for it.

You might want to create your own class that handles which objects are viewable and detects them for you. I've made a simple version here:
Code:
import viz
viz.go()

class NodeDetector:
	def __init__(self):
		self.__nodes = []
		
	def addNode(self,node,name):
		node.name = name
		self.__nodes.append(node)
		
	def detectNode(self,pos):
		line = viz.screentoworld(pos)
		info = viz.intersect(line[:3],line[3:])
		if info.intersected:
			if info.object in self.__nodes:
				return info.object
		return None

Cube1 = viz.add('theCube.ac')
Cube2 = viz.add('theCube.ac')
Cube3 = viz.add('theCube.ac')

Cube1.translate(-3,0,15)
Cube2.translate(0,0,15)
Cube3.translate(3,0,15)

nd = NodeDetector()
nd.addNode(Cube1,'Cube1')
nd.addNode(Cube2,'Cube2')
nd.addNode(Cube3,'Cube3')

def mijntimer(num):
	node = nd.detectNode(viz.mousepos())
	if node:
		print 'you are over object : ', node.name
		
viz.callback(viz.TIMER_EVENT,mijntimer)
viz.starttimer(0,0.5,viz.FOREVER)
Reply With Quote
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 02:51 PM.


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