W3C HTML5
This website relies solely on user submissions.
Reviews, speculations, how-tos; anything to share?
Follow us:
#vronlinux @Freenode
Steam Group

To comment or submit articles, register and login.

Opinion: I Am Using VR on Linux with My Vive and Vrui

(vronlinux.com)
Posted by Norbert, 4 months and 2 days agoThu, 24 Nov 2016, 11:08 (5 comments)
In mid-October, we reported that Vive support on Linux had arrived with the release of Vrui version 4.2-002. Back then I personally didn't have any success with Vrui. Vrui is now at version 4.2-006 and this version works for me! Face-smile-big I have no idea how to make a proper screenshot of the headset's display, so below is a photograph I took of one of the lenses.

(continues after the image)

image

It shows a basic drawing I made with the Curve Editor of the ClusterJello application. Think of it as an extremely basic Tilt Brush. I've also made several more complex 3D drawings. It's fun to work in 3D space and to be able to stand inside drawings. If you want to join me and start drawing, simply follow the steps Oliver Kreylos (Doc-Ok, @okreylos) outlined in his blog post. First:

$ wget http://idav.ucdavis.edu/~okreylos/ResDev/Vrui/Build-Ubuntu.sh
$ bash Build-Ubuntu.sh
$ cd ~/src/Vrui-4.2-006
$ sudo make installudevrules


Then start and keep running:

$ RunViveTracker.sh


Finally, launch ClusterJello:

$ cd ~/src/Vrui-4.2-006/ExamplePrograms
$ make INSTALLDIR=/usr/local
$ sudo make INSTALLDIR=/usr/local install
$ ClusterJello -rootSection Vive


Then put on the Vive headset, use the controller to open the program's menu, and pick the Curve Editor from the Utility menu. Anyway, I'm off, I have some more drawing to do.
avatar
Mint Steam
anchor Comment by Norbert, 4 months and 2 days agoThu, 24 Nov 2016, 14:08
See also the follow-up article about walking around in Quake III Arena maps!
avatar
Debian Website Steam Twitter Youtube
anchor Comment by Seegras, 4 months and 13 hours agoFri, 25 Nov 2016, 14:17
Depending on the distribution, Vrui will bomb:

VRDeviceDaemon: relocation error: x86_64-linux-gnu/Vrui-4.2/libMisc.g++-3.so.4: symbol _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm, version GLIBCXX_3.4.21 not defined in file libstdc++.so.6 with link time reference

The reason for this is a too new compiler, with depending libraries compiled with an older compiler.

What I did was to add

CFLAGS += -D_GLIBCXX_USE_CXX11_ABI=0


to the makefile.

For some reason, most of the examples in ExamplePrograms decided to ignore CFLAGS, so I actually had to "#define _GLIBCXX_USE_CXX11_ABI 0" in several files.


Also, looking for steam via
STEAMVRDIR = $(shell find $(HOME) -name SteamVR | grep common/SteamVR)

is an excellent stupid idea. My home is several terabytes big, it would take hours. So you might want to edit that as well and put in hardcoded values.


avatar
Linux
anchor Comment by Doc_Ok, 4 months and 5 hours agoFri, 25 Nov 2016, 21:57
Also, looking for steam via ... find ... is an excellent stupid idea. My home is several terabytes big, it would take hours.


I think that might be a bit of an exaggeration. I just ran

find /some/path -name \*Foo\*


on a 1.1TB directory hierarchy containing 6428 sub-directories (on a spinning platter, not an SSD), and it took 2.1s wall clock time.

Find does not read the contents of the files it is searching, only their directory entries. Unless you have millions of very small files in your home directory, it is fast.

Would you mind providing a data point and running the makefile's find command on your home directory to see how long it actually takes?
avatar
Linux
anchor Comment by Doc_Ok, 4 months and 4 hours agoFri, 25 Nov 2016, 23:02
For some reason, most of the examples in ExamplePrograms decided to ignore CFLAGS, so I actually had to "#define _GLIBCXX_USE_CXX11_ABI 0" in several files.


I forgot to ask -- can you give the name of a source file that ignored CFLAGS? I just did a test where I added
CFLAGS += -DFOO=42
to the ExamplePrograms makefile, directly after the "all" target is defined, and the option was passed to the compiler for all files. You can see the compiler command lines by adding
SHOWCOMMAND=1
to make's command line. Here is what I got for one of them (all were the same):

/usr/bin/g++ -MD -c -o o/g++-3.g0.O3/EditableGrid.o -g0 -O3  -DFOO=42   -I/home/okreylos/Vrui-4.2/include -I/usr/include/dbus-1.0 -I/usr/lib64/dbus-1.0/include  EditableGrid.cpp
avatar
Debian Website Steam Twitter Youtube
anchor Comment by Seegras, 4 months agoSun, 27 Nov 2016, 10:27
Don't underestimate git, when it comes to putting millions of files on to terabyte disks.

Anyway, CFLAGS: I put them on to the front of the makefile, right after DEBUG. I guess (now) I should have put this after the include-statements..

Here's the files.

ClusterJello.cpp:#define _GLIBCXX_USE_CXX11_ABI 0
EarthquakeQueryTool.cpp:#define _GLIBCXX_USE_CXX11_ABI 0
EarthquakeSet.cpp:#define _GLIBCXX_USE_CXX11_ABI 0
EarthquakeTool.cpp:#define _GLIBCXX_USE_CXX11_ABI 0
GridEditor.cpp:#define _GLIBCXX_USE_CXX11_ABI 0
ImageSequenceViewer.cpp:#define _GLIBCXX_USE_CXX11_ABI 0
ImageViewer.cpp:#define _GLIBCXX_USE_CXX11_ABI 0
Jello.cpp:#define _GLIBCXX_USE_CXX11_ABI 0
SharedJello.cpp:#define _GLIBCXX_USE_CXX11_ABI 0
ShowEarthModel.cpp:#define _GLIBCXX_USE_CXX11_ABI 0
VruiCustomToolDemo.cpp:#define _GLIBCXX_USE_CXX11_ABI 0
VruiEventToolDemo.cpp:#define _GLIBCXX_USE_CXX11_ABI 0
VruiLocatorDemo.cpp:#define _GLIBCXX_USE_CXX11_ABI 0
VruiSceneGraphDemo.cpp:#define _GLIBCXX_USE_CXX11_ABI 0

But I don't think this matters if one would put the CFLAGS where they're not ignored.
To comment, register and login.