Licensed under The GNU General Public License v3.0 (GPLv3)
Any modification, re-utilization or copy of the source or binary format in other software or publications should mention a CITATION of this library.
Copyright (c) 2016-2018 by Authors (Jin Yan, Guanghong Gong, Ni Li and Luhao Xiao)
cfMMOC represents a consolidated framework of multi-resolution management and occlusion culling.
cfMMOC library is a planet-scale out-of-core terrain rendering framework on top of OGRE v1.9.
|Fedora 27 64-bit|
|Ubuntu 17.10 64-bit|
- Two-processes based framework
- Out-of-core rendering
- Terrain with level-of-details
- Occlusion culling for invisibles
- Data fetching over networks
Screenshot and Video
A demo video could be found at https://github.com/cfmmoc/cfmmoc-mics/blob/master/cfMMOC-short.mp4?raw=true.
A longer version of video is here: https://www.youtube.com/watch?v=8BmP0gtMc1M.
Install the following dependences (given versions are not mandatory) for cfMMOC:
libcurl-7.55.1-8.fc27.x86_64for fetching data from server
poco-foundation-1.7.8p3-2.fc27.x86_64for supporting multi-threading
In addtion, OGRE and libRQTS are also dependencies for cfMMOC, headers and binary of OGRE v1.9 is included in this repository. For compiling binary of OGRE, please refers to https://github.com/OGRECave/ogre. ORGE should be compiled with multithreading support by configuring OGRE_THREAD_SUPPORT = 2 and OGRE_THREAD_PROVIDER = 2 (i.e., using POCO libraries as thread provider). Source and compilation guide of libRQTS could be found at https://github.com/cfmmoc/libRQTS.
Install compiler and dependences (given versions are not mandatory) for building cfMMOC:
freeimage-3.17.0-12.fc27.x86_64(also for compiling)
zziplib-0.13.62-10.fc27.x86_64(also for compiling)
libatomic-7.2.1-2.fc27.x86_64(also for compiling)
libXaw-1.0.13-7.fc27.x86_64(also for compiling)
Download the source (https://github.com/cfmmoc/cfmmoc/archive/master.zip), extract it.
Directories are listed as follows:
|Ogre/||headers of OGRE|
|browser/||headers and sources for
|include/||headers for shared libraries
After installing the prerequisites, build cfMMOC as follows::
mkdir obj cd obj/ make all -f ../Makefile make install -f ../Makefile
make install -f ../Makefile, will copy the binary file to the
Datasets can be downloaded from: https://github.com/cfmmoc/cfmmoc-dataset-ll
System Specific Installation Instructions
Fedora is recommendation system for compiling and running cfMMOC.
The following specifics augment the foregoing general instructions for rapid installation on the following systems:
Install pre-requisites for run-time:
apt install libatomic1 libois-1.3.0v5 libpocofoundation48
Install pre-requisites for compiling:
apt install make g++ libpoco-dev libois-dev libcurl3-dev libzzip-0-13 libfreeimage3
Change directory to bin/ using
./cfMMOC runs for the first time, do not select full screen mode in configuration dialog, and select video mode to be a value lower than screen resolution. You could also change that in file
/home/user/.ogre/Ghadamon/ogre.cfg. Sample of
Render System=OpenGL Rendering Subsystem [OpenGL Rendering Subsystem] Display Frequency=60 Hz FSAA=0 Fixed Pipeline Enabled=Yes Full Screen=No RTT Preferred Mode=FBO VSync=No Video Mode=800 x 600 sRGB Gamma Conversion=No
./cfMMOC in terminal, and then select cfMMOC-back, 384x210 resolution is used as default in cfMMOC-back, if it is incorrect, see Troubleshooting section.
./cfMMOC in a new terminal, and then select cfMMOC-fore, 1280x700 resolution is used as default in cfMMOC-fore, you could change it in
Do NOT run cfMMOC on virtual machines.
Refer to this page, https://github.com/cfmmoc/cfmmoc-dataset-ll, for downloading and configuring dataset and data server.
Remote resource directory could be configured in bin/resources.cfg file, locate the line starting with 'cURL=http://', change resource directory there (further see troubleshooting for server accessibility).
cfMMOC could also fetch data from https://raw.githubusercontent.com/cfmmoc/cfmmoc-dataset-ll/master/***/*/*/*/* (NOT recommended, ONLY for data connectivity and accessibility), but no real-time performace is guaranteed by using resources from Internet URLs. Downloading dataset from https://github.com/cfmmoc/cfmmoc-dataset-ll to server on local storage is recommanded.
When data server is configured, change working directory to bin/, run
./cfMMOC command, and select cfMMOC-back sample to run.
./cfMMOC command again, and select cfMMOC-fore sample to run.
If terrain tiles are not renderred in either back-end process or fore-end process --> check resource directory starting with
bin/resources.cfg, access file http://localhost/com/u/s/s/t.mesh via web browser to check server accessibility. Note that a trailing slash (
/) is required at the end of that resource directory line.
./cfMMOC: error while loading shared libraries: libOgreMain.so.1.9.0: cannot open shared object file: No such file or directory or similar error, please run
cfMMOC-back runs in incorrect resolution (384x210 is correct by default), then edit
/home/user/.ogre/Ghadamon/ directory (see Running cfMMOC section).
If other problem occurs, post an issue at https://github.com/cfmmoc/cfmmoc/issues/new.