PDA

View Full Version : How to call viz.go() from a GUI


Thummi
08-05-2015, 07:01 AM
Hey,

currently i am working on the GUI for a project and i got stuck on a stupid problem.
If i try to call viz.go() via a button it does not work as it should. I get stuck in the loading animation
http://i.imgur.com/wfagdkZ.png

If i call viz.go() in an otherwise empty script it works as it should.

I created the GUI with pyQT and qt Designer and the button is connected to a method which calls the method of an other object, which contains the viz.go() call.


def __init__(self):
super(MainWindow, self).__init__()
uic.loadUi('ballconfig.ui', self)
self.application = Application.application()
self.show()

.....

#Connect the buttons.
....
self.start_Button.clicked.connect(self.onStartSimu lation)
.....

def onStartSimulation(self):

self.application.start()

def start(self):
#Video settings
#viz.setMultiSample(4)
#viz.fov(110)

viz.go()
'''
rest
'''


That is the way the code looks like currently. I currently don't have the slightest clue why it does not work. Did i forget anything(i hope) or is this a known issue(i hope not) ?

Jeff
08-05-2015, 03:25 PM
The PyQt (http://kb.worldviz.com/articles/1666) article in our knowledge base shows how to embed the Vizard graphics window inside a PyQt application

Thummi
08-06-2015, 11:32 AM
Hey,

thanks for the information. Now i can view the running Simulation in an embedded window.:)

Now if you dont mind, i have two follow up questions.

1. Is there a way to use a method provided by the vizard libraries to display the simulation in fullscreen mode or do i have to use methods provided by the qt-framework? I assume the later, but i´m pretty new to working with QT/Viz, so sorry if it is a stupid question.

2. How do GUIs interact with a hmd, or an oculus rift to be more specific, in vizard ? Does hmd = oculus.Rift() work as normal or is theresomething else i have to consider ?

Jeff
08-06-2015, 02:30 PM
1. Try changing the size in the following line of the PyQt example script to match your screen resolution:

self.resize(800,600)

2. Take a look a the oculusExample.py script included with Vizard. That uses a GUI canvas (http://docs.worldviz.com/vizard/#GUI_canvas.htm) to place GUIs in the world at a fixed distance from the viewpoint.

Thummi
08-06-2015, 07:15 PM
Ok, thx for the answer for the first question.

And sorry, i formulated the second question badly.:o
What i meant was:
Can i display the simulation on an oculus rift, if i start it via a GUI that was designed with pyqt ?
What we want to to is configure some settings of the simulation with the GUI and then start and display it on an oculus rift.

Jeff
08-07-2015, 04:40 PM
Yes, it should work. I just tested the sample PyQt script with Direct HMD mode in the Oculus and the PyQt menu only appears in the mirrored window. Just make sure to add the oculus rift command:

viz.go(viz.EMBEDDED,window=int(self.widget.winId() ))

import oculus
hmd = oculus.Rift()
viz.link(hmd.getSensor(), viz.MainView)

Vizard also has a number of built-in GUI libraries (vizinfo, vizdlg, vizconfig, vizmenu) that you could use to select options before the simulation starts.