WorldViz User Forum  

Go Back   WorldViz User Forum > Vizard

Reply
 
Thread Tools Rating: Thread Rating: 3 votes, 5.00 average. Display Modes
  #1  
Old 03-20-2009, 03:00 PM
dtidrow dtidrow is offline
Member
 
Join Date: Dec 2008
Posts: 13
Four-wall CAVE using two PCs

We've trying to add a second computer to our CAVE and are running into problems with configuring the windows for the cave walls. Each computer has two gfx cards, with each card driving one wall. How do I specify that a window only get created on the client system? I've tried doing this:

Code:
	viz.cluster.pushMask(viz.CLIENT1)
	window4 = viz.addWindow(pos=(0,0.5),size=(1.0,0.5))
	window4.fov(72.0,1.25)
	window4.clearcolor(GD_vars.CLEAR_COLOR)
	window4.stereo(viz.QUAD_BUFFER)
	viz.cluster.popMask()
...
	BottomWall = vizcave.Wall(upperLeft=(-scr_hw,0,5*0.3048),
				  upperRight=(scr_hw,0,5*0.3048),
				  lowerLeft=(-scr_hw,0,-3*0.3048),
				  lowerRight=(scr_hw,0,-3*0.3048),
				  name='BottomWall' )
...
	cave.addWall(BottomWall,window=window4, mask=viz.CLIENT1)
	window4.visible(GD_vars.CAVE_FLOOR)
but am getting errors like this when I run the code:
Code:
Traceback (most recent call last):
  File "<string>", line 11, in ?
  File "abrams_interior_don.py", line 43, in ?
    import GD_Displays
  File "Y:\Users\tidrow\devel\CAVE\GD_python\GD_Displays.py", line 51, in ?
    window4.setPosition(0,5)
  File "C:\Program Files\WorldViz\Vizard30/python\viz.py", line 3457, in setPosition
    _ipcSend(_VIZ_WINDOWPOS,self.id,mode,'',left,top,0.0,0.0)
TypeError: param1 must be an int
How should I set up two subwindows on both the master and client machine?

Don
Reply With Quote
  #2  
Old 03-20-2009, 08:18 PM
Gladsomebeast Gladsomebeast is offline
Member
 
Join Date: Mar 2005
Location: Isla Vizta, CA
Posts: 397
Hmm... Not sure if this is the problem, but the traceback seems to be pointing to a line ( window4.setPosition(0,5) ) that is not in your posted code. Have you tried wrapping that line in viz.cluster.pushMask(viz.CLIENT1) and viz.cluster.popMask()?

Me thinks you are getting this error on the master because you did not create a window4 there due to your pushMask commands. Seems the Python variable is valid on the master, but the window does not exist in the engine, and self.id, aka param1, is probably None/NULL.
__________________
Paul Elliott
WorldViz LLC
Reply With Quote
  #3  
Old 03-23-2009, 10:55 AM
virtualray virtualray is offline
Member
 
Join Date: Aug 2007
Posts: 3
Don,

Just curious, were you able to get this to work? How is performance with multiple screens per system with big models?

Ray
Reply With Quote
  #4  
Old 03-24-2009, 12:38 PM
dtidrow dtidrow is offline
Member
 
Join Date: Dec 2008
Posts: 13
Quote:
Originally Posted by virtualray View Post
Don,

Just curious, were you able to get this to work? How is performance with multiple screens per system with big models?

Ray
Not yet, I'm still trying to figure out how to open multiple windows on two clustered computers. I'm setting up a simple script that just does the cave walls & windows without all the extra crap that the full app does - hopefully then I can get it working, or at least be able to post a simple script for others to critique.

Don
Reply With Quote
  #5  
Old 03-24-2009, 01:08 PM
dtidrow dtidrow is offline
Member
 
Join Date: Dec 2008
Posts: 13
Quote:
Originally Posted by Gladsomebeast View Post
Hmm... Not sure if this is the problem, but the traceback seems to be pointing to a line ( window4.setPosition(0,5) ) that is not in your posted code. Have you tried wrapping that line in viz.cluster.pushMask(viz.CLIENT1) and viz.cluster.popMask()?

Me thinks you are getting this error on the master because you did not create a window4 there due to your pushMask commands. Seems the Python variable is valid on the master, but the window does not exist in the engine, and self.id, aka param1, is probably None/NULL.
I was trying out a couple of different ways of setting up the windows, and they were all failing with errors similar to what I posted. I want windows 1 and 2 created on the master (for two of the CAVE walls) and windows 3 & 4 created only on client1. Is there perhaps some other way to set things up so that the master is aware of them but they only get rendered on the client?

Also I've seen some references to a 'vizcore.cfg' file, should I add this file and include a line like this:
viz.cluster.master.clients = ['master', 'client']

Or is this taken care of by the Vizard Cluster Master and Client apps?

The docs I've seen so far aren't especially clear on how to open multiple windows on the client machines, if somebody could paste a link to docs that explain it better I'd appreciate it.
Reply With Quote
  #6  
Old 03-24-2009, 03:51 PM
farshizzo farshizzo is offline
WorldViz Team Member
 
Join Date: Mar 2003
Posts: 2,849
You don't need to specify the cfg options if you are using the cluster master app.

Regarding your original problem, Gladsomebeast is correct. You cannot use the push/popMask commands around viz.add commands. The way to deal with this is to add the object to all computers and use the mask to modify the settings for each client. If I understand your specific scenario correctly, you have the master and one client in your cluster, and each will display 2 windows? If this is the case, then here is some pseudo-code that should set this up:
Code:
#Need to initialize window with viz.QUAD_BUFFER flag
viz.go(viz.QUAD_BUFFER)

#Resize main window to take up left half of screen
window1 = viz.MainWindow
window1.setSize(0.5,1.0)

#Create window to take up right half of screen
window2 = viz.addWindow(pos=(0.5,1.0),size=(0.5,1.0))
window2.stereo(viz.QUAD_BUFFER)

#Create 4 walls
wall1 = vizcave.Wall(...)
wall2 = vizcave.Wall(...)
wall3 = vizcave.Wall(...)
wall4 = vizcave.Wall(...)

#Add walls to cave
cave.addWall(wall1,window=window1,mask=viz.MASTER)
cave.addWall(wall2,window=window2,mask=viz.MASTER)
cave.addWall(wall3,window=window1,mask=viz.CLIENT)
cave.addWall(wall4,window=window2,mask=viz.CLIENT)
The vizcave module will handle updating the view frustum for each window on each client, assuming you use the cave.setTracker command.

In the code you posted above, you were using the window.fov command. Keep in mind that the vizcave module will update the projection matrix of the window every frame based on the position of the tracker. So the value you specified will be overwritten.
Reply With Quote
Reply

Thread Tools
Display Modes Rate This Thread
Rate This Thread:

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

Similar Threads
Thread Thread Starter Forum Replies Last Post
orthographic projection in a head-tracked cave environment michaelrepucci Vizard 5 12-14-2011 11:29 AM
Problems implementing Vizard in a CAVE with Shutter Glasses shivanangel Vizard 7 05-20-2009 12:47 PM
CAVE PPT Tracker Help with Orientation Inversion on Up and Down shivanangel Vizard 3 03-11-2009 10:14 PM
3D stereo on a secondary monitor (projected wall) michaelrepucci Vizard 1 07-29-2008 12:25 PM
navigation in cave environment Andy Vizard 4 03-28-2008 02:32 AM


All times are GMT -7. The time now is 10:00 AM.


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