A raytraced virtual environment for simulating a bee's field of view suing the Giger algorithm (http://andygiger.com/science/beye/beyehome.html)
C++ Python QMake
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
LICENSE
README.md
ardroneommatidiamodel.py
ardroneommdata.h
beeworld.cpp
beeworld.cpp.old
beeworld.h
beeworld.pro
beeworld.pro.user
beeworldgiger.cpp
beeworldgiger.h
beeworldwindow.cpp
beeworldwindow.cpp.old
beeworldwindow.h
beeworldwindow.ui
checked.cpp
checked.h
cylinder.cpp
cylinder.h
gigerdata.h
gigerdatacam.h
gigerdatacam_ardrone.h
gigerommatidiamodel.py
gigerommatidiamodel_ardrone.py
gigerommatidiamodelbeeworld.py
main.cpp
plane.cpp
plane.h
rad_image.cpp
rad_image.h
radial.cpp
radial.h
sceneobject.cpp
sceneobject.h
scenetexture.cpp
scenetexture.h
sphere.cpp
sphere.h
spinemlnetworkserver.cpp
spinemlnetworkserver.h

README.md

beeworld

A raytraced virtual environment for simulating a bee's field of view using the Giger algorithm (http://andygiger.com/science/beye/beyehome.html)

The program is written using Qt 5, and should work with most versions of Qt.

This is research code, so unfortunately comments are sparse to non-existent. The main file of import is beeworldwindow.h/cpp, as this is the main hub of the program. It initialises the raytracer (beeworldgiger.h/cpp) and loads in config xml files. There are a few examples in the 'examples' folder. The program communicates with external SpineML models (see user SpineML on GitHub, or http://bimpa.group.shef.ac.uk/SpineML/index.php/Home for more details) using a tcp/ip interface - the xml file defines the interface by which the program will communicate, allowing the model to alter aspects of the beeworld 'in flight' (e.g. object locations/rotation, texture colors/scalings, bee location/attitude).

The world consists of a set of configurable primitives (sphere, plane, cylinder) which can be textured with a set of configurable textures (check, radial stripes). These are all subclasses of the master sceneobject and scenetexture classes, so can be extended if need be.

The xml files can be loaded by running the program and clicking 'open'. If this is done the tcp/ip port of the program will be fixed at 50091. Alternatively you can provide a filename and port number from the command line (i.e. beeworld2 ../myfile.xml 50092). See, I told you it was research code...

If you are interested then have a play and add Issues to the tracker if there are any questions!

Note: the renderer is threaded into 4 quarters, but is still not going to be super-optimal. There is no Octree or anything sensible, so your speed will go down rapidly with more objects in the scene. I don't use a GPU as the goal is to be using that for the models... feel free to optimise and throw me a pull request!