### README OF VORACA ###
************************
Version     : 0.96 (Source)
Author      : Raphael Philipp Menges
License     : ISC (where Raphael Philipp is author)
Date		: 20th October 2014
Dependencies:
	- AntTweakBar 1.16
	http://anttweakbar.sourceforge.net/doc/
	- GLEW 1.10.0
	http://glew.sourceforge.net/
	- GLFW 3.0.4
	http://www.glfw.org/
	- GLM 0.9.4.6
	http://glm.g-truc.net/0.9.4/index.html
	- picoPNG
	http://lodev.org/lodepng/
	- RapidXML 1.13 (Boost Software License was chosen)
	http://rapidxml.sourceforge.net/

Thanks to Andre Taulien for supporting in the linux compatibility!
Thanks to Nils Hhner for supporting in the MacOS compatibility!

DESCRIPTION
This software is able to import DAT and decompressed PVM volume data. 
It visualizes them using a ray-casting algorithm implemented with GLSL 3.3.
One can define a custom 1D transfer function. Transfer function, ray-caster
properties and volume settings can be saved as XML file. For more information,
please feel free to read my bachelor thesis:
http://kola.opus.hbz-nrw.de/volltexte/2014/970/

DAT data can be found for example at:
http://www.cg.tuwien.ac.at/research/publications/2005/dataset-stagbeetle/
Just copy the downloaded file into "Data/Volumes/DAT", fill the filename
into the field "Volume To Load/Import" (Volume Management) of the editor 
bar and press the "Import DAT" button in the bar.

REQUIREMENTS
Graphics card and operation system must support OpenGL 3.3 and GLSL 3.3.
It was successfully tested on Windows 8.1 and ArchLinux.

GENERAL AND CONTROLS
Voraca use viewports and a handle based system. There is one main window with multiple 
viewports which hold the functionalities. Data like volumes, transfer functions and 
ray-caster properties are identified by handles. Each viewport has its own bar to
assign handles and edit data. In addition, the editor has one global bar for loading, 
importing and saving volumes. Currently, there are three types of viewports:

	- TfEditor
	Allows one to define a custom transfer function. Its bar holds the 
	management of transfer functions. Left mouse button set the point 
	beneath the cursor as active point of the transfer function 
	and can be moved. Right mouse button creates new points. Middle mouse 
	button is used for moving the camera. Pressing STRG while selecting a 
	point adds it to the current selection. Pressing SHIFT while 
	selecting a point selects all points between the now active and
	last active point, if there was one. Mouse wheel is used for zooming.
	
	- Renderer
	Combines volume data, transfer function and ray-casting properties and
	visualizes it. Camera can be moved by using the mouse cursor while the
	left mouse button is pressed. The mouse wheel is used for zooming.
	Its bar holds the management of the ray-caster properties.

	- Slicer
	Let one scroll through volume data using mouse wheel. The pivot is set 
	via the left mouse button. This pivot is used in any TfEditor that
	has assigned the same volume as the slicer.

COMPILING
RapidXML, picoPNG and GLM are included and should work out of the box.
Further information in the section for your operation system. Good luck!

COMPILING ON WINDOWS
Tested with Visual Studio 2012 on Windows 8.1. One just need the dependencies
(AntTweakBar, GLEW, GLFW) and put them into the right subfolders of the project.

COMPILING ON LINUX
Tested with GNU GCC Compiler and Code::Blocks on ArchLinux, using a Nvidia GPU. 
One need to collect the dependencies (AntTweakBar, GLEW, GLFW) and link them 
correctly. RapidXML seems to need "-fpermissive" as option of the compiler 
settings to get compiled.

COMPILING ON MAC OS
Tested with Apple LLVM 5.1 and Xcode on MacOS 10.9. AntTweakBar 1.16 cannot be
compiled on this system. In addition, some methods of RapidXML have to be 
shifted up or down. Let's hope there will be an update of AntTweakBar, soon.