# FAQ - [How can I enable logging?](#how-can-i-enable-logging) - [How can I control playback?](#how-can-i-control-playback) - [How do I run the kinect2 example?](#how-do-i-run-the-kinect2-example) - [How do I run the openni2 example?](#how-do-i-run-the-openni2glsl-example) - [Where can I find cubemap images?](#where-can-i-find-images-for-cube-maps) - [Where can I find volumetric data?](#where-can-i-find-volumetric-data) ## How can I enable logging? You can enable various log levels through environment variables - grimoire: `RUST_LOG=info,debug` - GStreamer: `GST_DEBUG=3`, see https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/gst-running.html ## How can I control playback? - **ESC**: close the window and exit the application - **F1**: toggle play/pause (freezes/unfreezes iTime and iFrame) - **F2**: decrement iFrame by 1, and iTime by 16ms, does not increment video or audio - **F3**: increment iFrame by 1, and iTime by 16ms, does not decrement video or audio - **F4**: reset iTime and iFrame to 0 The controls are mapped to the function keys because I believe that these keys are the least likely to also be used in a shader using the keyboard resource. It is likely that I will make use of the remaning function keys for future features. Users should avoid using the function keys in shaders that require keyboard input. ## How do I run the [kinect2 example](https://github.com/jshrake/grimoire-examples/blob/master/kinect2.glsl)? Here are the steps I took to use the `freenect2src` GStreamer element provided by [https://github.com/lubosz/gst-plugins-vr](https://github.com/lubosz/gst-plugins-vr) on MacOS. Change set: (https://github.com/jshrake/gst-plugins-vr/compare/master...jshrake:grimoire?expand=1) Build and install libfreenect2 from source: ```console $ brew install libusb $ git clone https://github.com/OpenKinect/libfreenect2.git $ cd libfreenect2 $ cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release $ cmake --build build $ sudo make -C build install ``` Build and install [my fork of gst-plugins-vr](https://github.com/jshrake/gst-plugins-vr/tree/grimoire). ```console $ git clone https://github.com/jshrake/gst-plugins-vr $ cd gst-plugins-vr $ git checkout grimoire $ ./configure $ make $ sudo make install ``` Run the example: ```console $ LIBFREENECT2_PIPELINE=cl cargo run -- examples/kinect2.glsl ``` If the `cl` libfreenect2 pipeline doesn't work, try `cpu` or `cuda`. grimoire is currently not compatible with the default `gl` pipeline. ## How do I run the [openni2.glsl example](https://github.com/jshrake/grimoire-examples/blob/master/openni2.glsl)? **This shader uses an experimental GStreamer plugin than can cause grimoire to segfault** Here are the steps I took to use the `openni2src` GStreamer element provided by [gst-plugins-bad](https://github.com/GStreamer/gst-plugins-bad/tree/master/ext/openni2) on MacOS. I [forked gst-plugins-bad and made changes to the openni2src element](https://github.com/jshrake/gst-plugins-bad/compare/1.14.1...jshrake:grimoire-1.14.1). Note that using this plugin causes grimoire to sefault on TOML configuration changes. Build and install libfreenect2 from source: ```console $ brew install libusb $ git clone https://github.com/OpenKinect/libfreenect2.git $ cd libfreenect2 $ cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release $ cmake --build build $ sudo make -C build install ``` Install openni2 (https://github.com/totakke/homebrew-openni2) and manually create a pkg-config file for libopenni2: ```console $ brew install openni2 $ vim /usr/local/lib/pkgconfig/libopenni2.pc prefix=/usr/local exec_prefix=${prefix} libdir=${exec_prefix}/lib/ni2 includedir=${prefix}/include/ni2 Name: OpenNI2 Description: A general purpose driver for all OpenNI cameras. Version: 2.2.0.0 Cflags: -I${includedir} Libs: -L${libdir} -lOpenNI2 -L${libdir}/OpenNI2/Drivers -lOniFile -lPS1080 ``` Build and install [my fork of gst-plugins-bad](https://github.com/jshrake/gst-plugins-bad/tree/grimoire-1.14.1) from source. Ensure that the openni2 plugin builds! If it doesn't, ensure `pkg-config --debug libopenni2` returns something sane. ```console $ git clone https://github.com/jshrake/gst-plugins-bad $ cd gst-plugins-bad $ git checkout grimoire-1.14.1 $ ./configure $ make $ sudo make install ``` Run the example: ```console $ LIBFREENECT2_PIPELINE=cl cargo run -- examples/openni2.glsl ``` If the `cl` libfreenect2 pipeline doesn't work, try `cpu` or `cuda`. grimoire is currently not compatible with the default `gl` pipeline. ## Where can I find images for cube maps? http://www.custommapmakers.org/skyboxes.php contains many high resolution skyboxes ## Where can I find volumetric data? You can download datasets from http://schorsch.efi.fh-nuernberg.de/data/volume/. At this time, grimoire does not support loading in the pvm file format. Instead, users will need to download https://sourceforge.net/projects/volren/, build the source, and run a tool that converts the pvm data into a raw format. I was able to successfully build the project and run the tool as follows on MacOS: ``` $ wget https://downloads.sourceforge.net/project/volren/VIEWER-5.2.zip $ unzip VIEWER-5.2.zip $ cd viewer $ cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release $ cmake --build build $ wget http://schorsch.efi.fh-nuernberg.de/data/volume/Foot.pvm $ ./build/tools/pvm2raw Foot.pvm Foot.raw reading PVM file found volume with width=256 height=256 depth=256 components=1 and data checksum=4FAD56F0 ``` Take note of width, height, depth, and components values, as you'll need to specify these in the resource configuration.