View Single Post
Old 06-23-2017, 09:22 AM
rdkirkden rdkirkden is offline
Join Date: May 2017
Posts: 19
Problem largely solved

Well, I found a solution in a related thread: This involved using the Vizconnect utility to configure the behaviour of my hardware (HMD, tracker and gamepad) for me. Even this was not straightforward, as the documentation in Vizard is so poor. I found the easiest way was to use the wizard (option 2 on the startup page) to set up a basic configuration and then modify a few settings in the advanced configuration menu (option 3). In particular, I had to decrease the ‘rotation acceleration’, ‘max rotation speed’ and ‘rotation auto breaking drag coeff’ in the ‘Transports’ settings to prevent a feeling of nausea when using the gamepad to rotate the view.

Vizconnect proved to be great for getting my hardware devices to interact correctly with one another, but I found that it presented some difficulties when it came to accessing and controlling objects in the script. This is because it created a number of objects (handles and links and so on for my devices and for an avatar) which it was not obvious how to reference; and also because some basic methods of ‘viz’ and ‘viz.MainWindow’ would no longer work.

In case anybody else is following this thread and has not used Vizconnect before, I’ll mention a couple of issues that I managed to solve either by stumbling across nuggets buried in the Vizard documentation or elsewhere, or by examining the Vizconnect configuration file script, or by trial and error.

1) To get rid of the disembodied gloved hand that vizconnect insists on displaying: ‘vizconnect.getAvatar().getNode3d().visible( viz.OFF )’. (Warning: do not delete the glove because there’s a hideous zombie hand underneath!!)

2) To set the avatar’s initial viewpoint in the environment (normally achieved using ‘room = viz.addChild(‘name’)’ and ‘room.setPosition([x,y,z])’), you have to first reference the tracker’s link object (‘tracker_link = vizconnect.getTracker('head_tracker').getLink()’), then straighten out the view because vizconnect unaccountably makes it crooked (‘tracker_link.reset(viz.RESET_ORI_HEADING)’), and finally set the viewpoint you want using ‘postTrans’ (e.g. tracker_link.postTrans([0,1.8,-8])’).

3) Collision control can’t be set up using the normal ‘viz.collision(viz.ON)’ command because vizconnect prevents this from working. It is also impossible to separately set the collision status of objects that are later added to the environment, although their gravity status can be set. Instead, it is necessary to set a uniform control collision for the whole environment by importing the ‘view_collision’ script that is in Vizconnect’s ‘utils’ folder. Instructions for using this script are at: But note that the version of ‘view_collision’ that comes with Vizard 5.2 doesn’t work in several respects. I ended up using the version that came with Vizard 5.5 instead, and this was fine in most respects, except that it causes the avatar to bounce off some objects in the environment (though not the walls) with quite a judder. This last issue is the only thing I’ve not been able resolve (I haven’t needed to yet as in the environment I’m working on the objects are all low enough that the avatar can float over them – it’s the walls that I wanted to make collision-proof).
Reply With Quote