PDA

View Full Version : What causes the ghosting in our cave?


VizMars
02-11-2018, 01:24 PM
Hi all,

in our experiment we want to show participants different 3d scenes and track their eye movements. They are seated 70 cm in front of a 3D monitor (display width: 59.773 cm; display height: 33.622 cm) wearing shutter glasses (NVIDIA 3D Vision2).
Everything seems to work fine with Vizard's scenes (e.g., 'piazza.osgb'). However, when we use our own scenes there is severe ghosting. We tried changing the contrast, applied gamma correction, changed the IPD, the fusion distance and the stereo overlap but neither did really help. So, we are running out of ideas where the ghosting effcet comes from.

Is there something wrong with our code or are there some attributes of the scenes that we have to change?

Please find the script of our cave definition below and here is one of our scenes:
https://drive.google.com/file/d/16VexLFSfgGMCRpHyyUyQitT6yC4UojRq/view?usp=drive_web

import viz
import vizfx
import vizact
import vizcave

CAVE_WIDTH = 0.59773 # display width
CAVE_HEIGHT = 0.33622 # display height
DISTANCE = 0.70 # head to display = display to wall

viz.setMultiSample(8)

viz.go(viz.QUAD_BUFFER|viz.FULLSCREEN)

PowerWall = vizcave.Wall(upperLeft=[-CAVE_WIDTH/2.0, CAVE_HEIGHT/2.0, 0],
upperRight=[CAVE_WIDTH/2.0, CAVE_HEIGHT/2.0, 0],
lowerLeft=[-CAVE_WIDTH/2.0, -CAVE_HEIGHT/2.0, 0],
lowerRight=[CAVE_WIDTH/2.0, -CAVE_HEIGHT/2.0, 0])

cave = vizcave.Cave()
cave.addWall(PowerWall)

# creates a dummy-tracker (a group object is an empty node)
head_tracker = viz.addGroup( pos=[0, 0, -DISTANCE] )

cave.setTracker(head_tracker)

view = vizcave.CaveView(head_tracker)

cave.setIPD(0.06)

scene = vizfx.addChild('office.ive')
scene.hint(viz.ALLOW_NPOT_TEXTURE_HINT) # allow for non-power of two textures

view.setPosition([1.659, 1.819, -2.280], viz.ABS_GLOBAL)
view.setEuler([-5.432, 1.980, 0], viz.ABS_GLOBAL)

vizact.onkeydown('q', viz.quit)

VizMars
02-26-2018, 10:47 AM
EDIT:

There is ghosting when using Vizard's scenes (e.g. the piazza) with the following settings:

scene = vizfx.addChild('piazza.osgb')

view.setPosition([4.659, 1.819, -1.280], viz.ABS_GLOBAL)
view.setEuler([-5.432, 1.980, 0], viz.ABS_GLOBAL)