PDA

View Full Version : drives two walls with a single PC and an nVidia graphics card


su.298@osu.edu
03-29-2012, 11:32 AM
Hi,

I am trying to use a single PC with an nVidia Quadro 6000 graphics card to drive a two wall (front and floor) system in Vizard 4.0.

Currently I have one project each connect to a DVI port of the graphics card.

I am using the following cave setting. However I always get one image which extends to two screens. Could anyone shed me a light? Thanks.

I am aware most setting is done with two PC sync by clustering. I just wonder this is possible.

My code is listed below.
Haijun
************************
import viz
import vizcave
import viztracker

# Declare constants defining the CAVE dimensions
W = 3.410 # 10 feet wide
H = 2.140 #7.5 feet tall
D = 2.200 # 7.5 feet deep
C0 = 0,H,0 # Front Wall: C1,C2,C5,C6
C1 = 0,H,D # Left Wall: C0,C1,C4,C5
C2 = W,H,D # Right Wall: C2,C3,C6,C7
C3 = W,H,0 # Bottom Wall: C5,C6,C4,C7
C4 = 0,0,0
C5 = 0,0,D
C6 = W,0,D
C7 = W,0,0

#Create front wall
FrontWall = vizcave.Wall( upperLeft=C1, # 0, 2.286, 3.048
upperRight=C2, # 3.048, 2.286, 3.048
lowerLeft=C5, # 0, 0, 3.048
lowerRight=C6, # 3.048, 0, 3.048
name='Front Wall' )

#Create left wall
LeftWall = vizcave.Wall( upperLeft=C0,
upperRight=C1,
lowerLeft=C4,
lowerRight=C5,
name='Left Wall' )

#Create right wall
RightWall = vizcave.Wall( upperLeft=C2,
upperRight=C3,
lowerLeft=C6,
lowerRight=C7,
name='Right Wall' )

#Create bottom wall
BottomWall = vizcave.Wall( upperLeft=C5,
upperRight=C6,
lowerLeft=C4,
lowerRight=C7,
name='Bottom Wall' )

#Initialize graphics window
viz.go(viz.FULLSCREEN)
#viz.go(viz.FULLSCREEN|viz.QUAD_BUFFER)

#Create cave object
cave = vizcave.Cave()

#Add each wall, make sure that they are ordered in the cluster software correctly to match this ordering
cave.addWall(FrontWall, mask=viz.MASTER)
#cave.addWall(LeftWall, mask=viz.CLIENT1)
#cave.addWall(RightWall, mask=viz.CLIENT2)
cave.addWall(BottomWall, mask=viz.CLIENT3)

#Create tracker object using the keyboard (WASD keys control the viewpoint, the user's eye location)
#Make the starting location for the user's eye the exact center of the CAVE
viewtracker = viztracker.KeyboardPos()
viewtracker.setPosition (W/2.0,H/2.0,D/2.0)

#Pass the viewpoint tracker into the cave object so it can be automatically updated
cave.setTracker(pos=viewtracker)

#Create CaveView object for manipulating the entire cave environment
#The caveorigin is a node that can be adjusted to move the entire cave around the virtual environment
caveorigin = vizcave.CaveView(viewtracker)

#Create another tracker using the keyboard and mouse (arrow keys adjust position, mouse changes orientation)
origintracker = viztracker.KeyboardMouse6DOF()

#Link the keyboard/mouse so that it moves the cave and user around the virtual environment
#originlink = viz.link (origintracker, caveorigin)

#Add gallery environment model
viz.add('gallery.ive')

************************

Jeff
03-30-2012, 09:53 AM
If you're running the CAVE on a single machine you can specify a Vizard window to draw each wall to rather than a master or client machine. If you take a look at the <vizcave:Cave>.addWall documentation this will be more clear. You can create a subwindow that takes up half the screen and place that next to Vizard's MainWindow, one for each wall.

You can also try using clustering on a single machine if you have the Enterprise version of Vizard. For this, check localhost in the cluster master utility. There is a count field where you can specify the number of clients. If you leave that number at 1 there will be two graphics windows created.