Git Product home page Git Product logo

prograda / skybolt Goto Github PK

View Code? Open in Web Editor NEW
544.0 544.0 44.0 1.77 MB

Planetary rendering engine and aerospace simulation tools

License: Other

C++ 87.14% GLSL 4.79% C 3.04% CMake 3.15% Python 1.88%
aerial-imagery atmospheric-scattering cigi flight-simulation flight-simulator geospatial-visualization image-generator jsbsim ocean-wave-simulation open-street-map planetary-data rendering-engine volumetric-cloud

skybolt's Introduction

Skybolt Engine

Skybolt is a real-time planetary environment rendering engine, designed for flight simulators, aerospace R&D, and geospatial applications. Skybolt is written in C++, based on OpenSceneGraph, and supports CIGI for communicating with host applications. Skybolt also features a Python API for easy integration with science and engineering research tools.

The Skybolt repository includes Sprocket, a GUI application providing a sandbox for interactive scenario execution and testing.

alt text alt text alt text alt text

Features

  • Realistic environment rendering at a range of levels of detail, from ground level through to outer space
  • Tile streaming from geospatial data sources
  • Atmospheric scattering
  • Volumetric clouds
  • 3D Vegetation based on tree coverage data
  • FFT-based ocean wave simulation and rendering
  • Extensible entity component framework
  • CIGI support
  • JSBSim flight dynamics model integration
  • Bullet physics integration
  • Python API
  • Sprocket GUI application, a sandbox for interactive scenario execution and testing

Contact

Skybolt created and maintained by Matthew Reid. To submit a bug report, please raise an issue on the GitHub repository. For other queries, please our contact form.

License

This project is licensed under the Mozilla Public License Version 2.0 - see the License.txt file for details.

Usage Examples

Building

Skybolt uses the CMake meta-build system, and supports the Conan package manager. Using Conan usage is optional but strongly encouraged, as it automates dependency acquisition and build configuration.

A list of skybolt dependencies can be found in conanfile.py.

Building With Conan

Install Conan

Conan can be installed with pip: pip3 install conan.

Installing Skybolt's Dependencies

To install dependencies with default Skybolt configuraion:

conan install %SKYBOLT_SOURCE% --install-folder=%SKYBOLT_BUILD%

To use a custom configuration instead, configuration options may be supplied with the -o argument, for example:

conan install %SKYBOLT_SOURCE% --install-folder=%SKYBOLT_BUILD% -o openscenegraph-mr:shared=True -o enable_python=True -o enable_sprocket=True -o enable_bullet=True -o enable_cigi=True

Please refer to conanfile.py for a full list of available configuration options.

Building Skybolt

Once dependencies have been installed, Skybolt CMake project can be generated and compiled with:

conan build %SKYBOLT_SOURCE% --build-folder=%SKYBOLT_BUILD%

Installing Asset Packages

At runtime, Skybolt uses assets such as meshes, textures, and shaders. These assets are organized into packages. Each package is a folder containing a hierarchy of asset files on disk.

Skybolt searches for asset packages in these locations:

  1. /Assets
  2. Paths in the SKYBOLT_ASSETS_PATH environment variable

To run Skybolt, you must ensure the required packages are avilable to Skybolt using either of the above mechanisms.

Core Package (Required)

Skybolt cannot run without the Core package. It is located under /Assets in this repository.

SkyboltAssets Packages (Required for Example Applications)

Additional packages for running the example applications are located in the SkyboltAssets repository. SkyboltAssets uses DVC for remote storage and retrieval of large files which are not stored in the git repository itself.

To checkout the SktboltAssets repository:

  1. If you do not already have DVC installed, run pip install dvc[s3] to install with pip
  2. Clone SkyboltAssets and checkout desired git branch/tag
  3. Run dvc pull command in the SkyboltAssets root directory to fetch the remote files

NLCD Land Cover (Optional)

Land cover tiles for USA. Used by Skybolt to place trees on terrain in forest areas. This package can be downloaded here.

Seattle Map Features (Optional)

Map features (buildings, roads, lakes etc) for the city of Seattle. These features were generated from OpenStreetMap data using the MapFeaturesConverter tool. This package can be downloaded here.

Running

Settings

Engine settings are stored in a json file, which may be manually edited with a text editor, or edited in Sprocket with the Tools->Settings dialog. An example settings file template is available in this repository under src/SkyboltExamples/ExamplesCommon/ExampleSettings.json.

The settings file can be loaded by example applications with the --settingsFile commandline option. If the option is not specified, a default Settings.json in the Operating System user's home directory will be used. On windows, this is located at C:/Users/%USERNAME%/AppData/Local/Skybolt/Settings.json.

Environment Variables

  • SKYBOLT_PLUGINS_PATH sets plugin search locations. The /plugins folder in the application executable's directory is searched in additional to this path.
  • SKYBOLT_CACHE_DIR sets the directory where cached terrain tiles are read from and written to. If not set, the default directory is C:/Users/%USERNAME%/AppData/Local/Skybolt/Cache
  • SKYBOLT_ASSETS_PATH sets the search locations for asset packages.
  • SKYBOLT_MAX_CORES sets the maximum number of CPU cores the engine may use. If not set, all cores are used.

Using third party Map APIs

By default, the PlanetEarth entity uses mapbox for albedo and elevation data. To use mapbox, you must acquire an API key from https://mapbox.com Without an API key, the tiles will not download, the the planet will not render correctly. If desired, PlanetEarth can be edited to use Bing maps for albedo instead. A bing key can be obtained from https://docs.microsoft.com/en-us/bingmaps/getting-started/bing-maps-dev-center-help/getting-a-bing-maps-key Keys are stored in the engine json settings file (see above).

skybolt's People

Contributors

matthew-reid avatar rouseabout avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

skybolt's Issues

How to build project

Hi all,

I am an aerospace engineer by trade and hence have not had extensive training on how to use CMake. Is there any chance that you could include a one-paragraph ish tutorial on how to use it and where to point CMake to, what options to use, etc? I am notoriously bad at understanding Cmake and the documentation for how to use it on their website is a little complicated. I have been frustrated with CMake many times on other projects as well.

Usage:

I opened CMake and set the source code directory to C:/Users/Owner/AppData/Local/Programs/Python/Python37/Lib/site-packages/Skybolt/ and I set the build directory to C:/Users/Owner/AppData/Local/Programs/Python/Python37/Lib/site-packages/Skybolt/bin . I used CMAKE_BUILD_TYPE --> RelWithDebInfo but I am not sure if I need to include CMAKE_INSTALL_PREFIX, other parameters etc. I also configured the compiler as MSVC 2017 and added 64 bit to that. I am using Windows 10 64 bit. Let me know what you think! Thanks for your help!

Here is the error message I got while building with CMake.

CMake Error at C:/Program Files/CMake/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake:164 (message):
Could NOT find Boost (missing: thread date_time) (found version "1.72.0")
Call Stack (most recent call first):
C:/Program Files/CMake/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake:445 (_FPHSA_FAILURE_MESSAGE)
C:/Program Files/CMake/share/cmake-3.17/Modules/FindBoost.cmake:2145 (find_package_handle_standard_args)
src/Skybolt/AircraftHud/CMakeLists.txt:6 (find_package)

Detecting CXX compiler ABI info compiled with the following output:
Change Dir: C:/Users/Owner/AppData/Local/Programs/Python/Python37/Lib/site-packages/Skybolt/bin/CMakeFiles/CMakeTmp

Run Build Command(s):C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/MSBuild/15.0/Bin/MSBuild.exe cmTC_21adf.vcxproj /p:Configuration=Debug /p:Platform=x64 /p:VisualStudioVersion=15.0 /v:m && Microsoft (R) Build Engine version 15.5.180.51428 for .NET Framework

Copyright (C) Microsoft Corporation. All rights reserved.

Microsoft (R) C/C++ Optimizing Compiler Version 19.12.25834 for x64

Copyright (C) Microsoft Corporation. All rights reserved.

cl /c /Zi /W3 /WX- /diagnostics:classic /Od /Ob0 /D WIN32 /D _WINDOWS /D "CMAKE_INTDIR="Debug"" /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /GR /Fo"cmTC_21adf.dir\Debug\" /Fd"cmTC_21adf.dir\Debug\vc141.pdb" /Gd /TP /errorReport:queue "C:\Program Files\CMake\share\cmake-3.17\Modules\CMakeCXXCompilerABI.cpp"

CMakeCXXCompilerABI.cpp

Customize the component display model

Hi Matthew,I customized a component to add a cow to the helicopter (probably weird, but just for testing), but I found that the cow became transparent and was obscured by the terrain

Terrain doesn't load in FlightSimApp.

[2024-03-21 16:58:11.742853] [0x00005894] [error] Error reading file https://api.mapbox.com/v4/mapbox.satellite/0/0/0.jpg?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx: file not handled
It gives this error when trying to load terrain, but when I open this url in the browser, it loads. It also works if I put a file path in the asset package. My OSGDB can't load internet images.

Using: conan + cmake Windows 11

example can't be run

The example can't run,
there is no entityFactory.createEntity("Camera");
EntityPtr planet = entityFactory.createEntity("PlanetEarth");
....
example will crash.

Hao to add two maps in the scene graph?

Hello matthew, my development environment cannot be connected to the internet, so I need to read map data from the geoserver. However, there is a blurry global map and a clear local map on the geoserver. After reading your source code, I found that it is impossible to add two maps. Do you have any good ideas?

Error loading 'PlanetEarth': key 'maxLevel' not found

Hi!

I managed to compile SkyBolt (great name btw). Now, I have the following error when running MinimalApp.exe.

[2022-06-10 09:43:47.723899] [0x000008bc] [info]    No --settingsFile program argument specified. Using default settings file location: '"C:\\Users\\xxxxx\\AppData\\Local\\Skybolt\\Settings.json"'
[2022-06-10 09:43:47.723899] [0x000008bc] [info]    Reading settings file '"C:\\Users\\xxxxx\\AppData\\Local\\Skybolt\\Settings.json"'
[2022-06-10 09:43:47.723899] [0x000008bc] [info]    12 CPU cores detected.  Creating 11 background threads.
[2022-06-10 09:43:47.723899] [0x000008bc] [info]    Registered asset package: Core
[2022-06-10 09:43:47.723899] [0x000008bc] [info]    Registered asset package: Globe
[2022-06-10 09:43:47.723899] [0x000008bc] [info]    Registered asset package: Movers
Error loading 'PlanetEarth': [json.exception.out_of_range.403] key 'maxLevel' not found

I managed to bypass the error by adding a maxLevel entry in PlanetEarth.json. I have no idea if it makes sense.

"forest": {
  "minLevel": 12,
  "maxLevel": 12,
  "treesPerLinearMeter": 0.04,
  "treeVisibilityRangeMeters": 10000
}

Thank you!

Black Screen

I got all tests passed and got a mapbox data key, but i got a black screen
image

Regarding all applications (FlightSimApp/MinimalApp) crashes [Resolved]

Hi,
I have successfully build the skybolt engine on windows. When I run the MinimalApp or FlightSimApp, the application closes and the console has this written. Can you please share why the textures are not loaded when they are contained in the Assets folder.

[2022-04-04 19:24:44.439233] [0x00001cd0] [info] Reading settings file '"XYZ:\Skybolt-master\src\SkyboltExamples\Exa
mplesCommon\ExampleSettings.json"'
[2022-04-04 19:24:44.442236] [0x00001cd0] [info] 8 CPU cores detected. Creating 7 background threads.
[2022-04-04 19:24:44.448242] [0x00001cd0] [info] Registered asset package: Assets
[2022-04-04 19:24:44.448242] [0x00001cd0] [info] Registered asset package: Core
void StateSet::setGlobalDefaults() ShaderPipeline disabled.
Error reading file Environment/Space/SunDisc.png: file not found
Error reading file Environment/Space/MoonDisc.jpg: file not found
Could not open image file: Environment/Space/MoonDisc.jpg

XYZ:\Skybolt-master\build\bin\Debug\FlightSimApp.exe (process 688) exited with code 0.
To automatically close the console when debugging stops, enable Tools->Options->Debugging->Automatically close the console when debugging stops.
Press any key to close this window . . .

Can skyblt load tms tiles?

When I use the XyzYileSource load the tms tile,I find the following Phenomenon.
123

I don't know if I'm doing the right thing

runtime settings for api keys

Hello,

I did a vcpkg based build and then tried the minimal sample. Moon was loaded fine but then nothing much happened. The console logged some failures because of missing API keys.. Where do I set these keys ? Is there a config file I need to populate ? Please advise, thank you.

image

Building the v1.5.0 with package earcut not found

CMake Error at src/Skybolt/SkyboltVis/CMakeLists.txt:32 (find_package):
  By not providing "Findearcut.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "earcut", but
  CMake did not find one.

  Could not find a package configuration file provided by "earcut" with any
  of the following names:

    earcutConfig.cmake
    earcut-config.cmake

  Add the installation prefix of "earcut" to CMAKE_PREFIX_PATH or set
  "earcut_DIR" to a directory containing one of the above files.  If "earcut"
  provides a separate development package or SDK, be sure it has been
  installed.


-- Configuring incomplete, errors occurred!
See also "/home/jtomczak/git/Skybolt/build/CMakeFiles/CMakeOutput.log".
ERROR: conanfile.py (skybolt/1.5.0): Error in build() method, line 116
	cmake.configure()
	ConanException: Error 1 while executing cd '/home/jtomczak/git/Skybolt/build' && cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="Release" -DCONAN_IN_LOCAL_CACHE="OFF" -DCONAN_COMPILER="gcc" -DCONAN_COMPILER_VERSION="9" -DCONAN_CXX_FLAGS="-m64" -DCONAN_SHARED_LINKER_FLAGS="-m64" -DCONAN_C_FLAGS="-m64" -DCONAN_LIBCXX="libstdc++" -DBUILD_SHARED_LIBS="OFF" -DCMAKE_INSTALL_PREFIX="/home/jtomczak/git/Skybolt/build/package" -DCMAKE_INSTALL_BINDIR="bin" -DCMAKE_INSTALL_SBINDIR="bin" -DCMAKE_INSTALL_LIBEXECDIR="bin" -DCMAKE_INSTALL_LIBDIR="lib" -DCMAKE_INSTALL_INCLUDEDIR="include" -DCMAKE_INSTALL_OLDINCLUDEDIR="include" -DCMAKE_INSTALL_DATAROOTDIR="share" -DCONAN_CMAKE_POSITION_INDEPENDENT_CODE="ON" -DCMAKE_MODULE_PATH="/home/jtomczak/git/Skybolt/build" -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY="ON" -DCONAN_EXPORTED="1" -DBoost_STATIC_LIBS="True" -DOSG_STATIC_LIBS="True" -DSKYBOLT_PLUGINS_STATIC_BUILD="False" -DCMAKE_POSITION_INDEPENDENT_CODE="True" -DBUILD_FFT_OCEAN_PLUGIN="true" -DCMAKE_TOOLCHAIN_FILE="conan_paths.cmake" -Wno-dev '/home/jtomczak/git/Skybolt'

Hi, I got this error when trying to build project with conan build command. Earcut package seems to be installed in ~/.conan/data/.

System: Ubuntu 20.04

SkyboltExamples MinimalApp failure

I am experiencing a segfault when attempting to run the MinimalApp in SkyboltExamples in Ubuntu 20.04. I assume this is due to some configuration issues on my part, but I am not sure. I am fairly new with gl programming so let me know if I can provide any addition information.

The segfault seems to occur when attempting to load tile images. I am running with OpenSceneGraph 3.6.4 and am using a settings file with my mapbox apikey. I have downloaded all 3 asset packages you provided (Core, EarthMed, Seattle). When I run the app, a window is created (it is all black) and a few moments later it segfaults.

I attempted to run the app without loading the PlanetEarth entity to avoid the issue. This does not produce a segfault and the app doesnt die, but the window is just filled black and it doesnt seem to be taking any inputs. Also, I can't close the app via the esc key or the 'x' in the window.

Here is my callstack if it helps:

osgdb_curl.so!osg_curl::EasyCurl::StreamObject::write(char const*, unsigned long) (Unknown Source:0)
osgdb_curl.so!osg_curl::EasyCurl::StreamMemoryCallback(void*, unsigned long, unsigned long, void*) (Unknown Source:0)
libcurl-gnutls.so.4![Unknown/Just-In-Time compiled code] (Unknown Source:0)
libcurl-gnutls.so.4!curl_multi_perform (Unknown Source:0)
libcurl-gnutls.so.4!curl_easy_perform (Unknown Source:0)
osgdb_curl.so!osg_curl::EasyCurl::read(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, osg_curl::EasyCurl::StreamObject&, osgDB::Options const*) (Unknown Source:0)
osgdb_curl.so!osg_curl::ReaderWriterCURL::readFile(osg_curl::ObjectType, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, osgDB::Options const*) const (Unknown Source:0)
osgdb_curl.so!osg_curl::ReaderWriterCURL::readImage(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, osgDB::Options const*) const (Unknown Source:0)
libosgDB.so.160!osgDB::Registry::ReadImageFunctor::doRead(osgDB::ReaderWriter&) const (Unknown Source:0)
libosgDB.so.160!osgDB::Registry::read(osgDB::Registry::ReadFunctor const&) (Unknown Source:0)
libosgDB.so.160!osgDB::Registry::readImplementation(osgDB::Registry::ReadFunctor const&, osgDB::Options::CacheHintOptions) (Unknown Source:0)
libosgDB.so.160!osgDB::Registry::readImageImplementation(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, osgDB::Options const*) (Unknown Source:0)
osgDB::Registry::readImage(osgDB::Registry * const this, const std::__cxx11::string & fileName, const osgDB::Options * options) (/usr/include/osgDB/Registry:222)
skybolt::vis::readImageWithoutWarnings(const std::__cxx11::string & filename) (/home/keaton/Documents/GLRepos/Skybolt-master/src/Skybolt/SkyboltVis/OsgImageHelpers.cpp:138)
skybolt::vis::XyzTileSource::createImage(skybolt::QuadTreeTileKey const&, std::function<bool ()>) const(const skybolt::vis::XyzTileSource * const this, const skybolt::QuadTreeTileKey & key, std::function<bool()> cancelSupplier) (/home/keaton/Documents/GLRepos/Skybolt-master/src/Skybolt/SkyboltVis/Renderable/Planet/Tile/TileSource/XyzTileSource.cpp:40)
skybolt::vis::SphericalMercatorToPlateCarreeTileSource::createImage(skybolt::QuadTreeTileKey const&, std::function<bool ()>) const(const skybolt::vis::SphericalMercatorToPlateCarreeTileSource * const this, const skybolt::QuadTreeTileKey & key, std::function<bool()> cancelSupplier) (/home/keaton/Documents/GLRepos/Skybolt-master/src/Skybolt/SkyboltVis/Renderable/Planet/Tile/TileSource/SphericalMercatorToPlateCarreeTileSource.cpp:97)
skybolt::vis::CachedTileSource::createImage(skybolt::QuadTreeTileKey const&, std::function<bool ()>) const(const skybolt::vis::CachedTileSource * const this, const skybolt::QuadTreeTileKey & key, std::function<bool()> cancelSupplier) (/home/keaton/Documents/GLRepos/Skybolt-master/src/Skybolt/SkyboltVis/Renderable/Planet/Tile/TileSource/CachedTileSource.cpp:36)
skybolt::vis::TileImageLoader::<lambda(const skybolt::QuadTreeTileKey&)>::operator()(const skybolt::QuadTreeTileKey &) const(const skybolt::vis::TileImageLoader::<lambda(const skybolt::QuadTreeTileKey&)> * const __closure, const skybolt::QuadTreeTileKey & key) (/home/keaton/Documents/GLRepos/Skybolt-master/src/Skybolt/SkyboltVis/Renderable/Planet/Tile/TileImageLoader.cpp:138)
std::_Function_handler<osg::ref_ptr<osg::Image>(const skybolt::QuadTreeTileKey&), skybolt::vis::TileImageLoader::load(const skybolt::QuadTreeTileKey&, std::function<bool()>) const::<lambda(const skybolt::QuadTreeTileKey&)> >::_M_invoke(const std::_Any_data &, const skybolt::QuadTreeTileKey &)(const std::_Any_data & __functor,  __args#0) (/usr/include/c++/8/bits/std_function.h:283)
std::function<osg::ref_ptr<osg::Image> (skybolt::QuadTreeTileKey const&)>::operator()(skybolt::QuadTreeTileKey const&) const(const std::function<osg::ref_ptr<osg::Image>(const skybolt::QuadTreeTileKey&)> * const this,  __args#0) (/usr/include/c++/8/bits/std_function.h:687)
skybolt::vis::TileImageLoader::getOrCreateImage(skybolt::QuadTreeTileKey const&, skybolt::vis::TileImageLoader::CacheIndex, std::function<osg::ref_ptr<osg::Image> (skybolt::QuadTreeTileKey const&)>) const(const skybolt::vis::TileImageLoader * const this, const skybolt::QuadTreeTileKey & requestedKey, skybolt::vis::TileImageLoader::CacheIndex cacheIndex, skybolt::vis::TileImageLoader::Factory factory) (/home/keaton/Documents/GLRepos/Skybolt-master/src/Skybolt/SkyboltVis/Renderable/Planet/Tile/TileImageLoader.cpp:202)
skybolt::vis::TileImageLoader::load(skybolt::QuadTreeTileKey const&, std::function<bool ()>) const(const skybolt::vis::TileImageLoader * const this, const skybolt::QuadTreeTileKey & key, std::function<bool()> cancelSupplier) (/home/keaton/Documents/GLRepos/Skybolt-master/src/Skybolt/SkyboltVis/Renderable/Planet/Tile/TileImageLoader.cpp:137)
skybolt::vis::AsyncTileLoader::<lambda()>::operator()(void) const(const skybolt::vis::AsyncTileLoader::<lambda()> * const __closure) (/home/keaton/Documents/GLRepos/Skybolt-master/src/Skybolt/SkyboltVis/Renderable/Planet/Tile/AsyncTileLoader.cpp:49)
std::_Function_handler<void(), skybolt::vis::AsyncTileLoader::load(const skybolt::QuadTreeTileKey&, skybolt::vis::Box2d, const OsgTilePtrPtr&, const ProgressCallbackPtr&)::<lambda()> >::_M_invoke(const std::_Any_data &)(const std::_Any_data & __functor) (/usr/include/c++/8/bits/std_function.h:297)
std::function<void ()>::operator()() const(const std::function<void()> * const this) (/usr/include/c++/8/bits/std_function.h:687)
px_sched::Scheduler::WorkerThreadMain(px_sched::Scheduler * schd, px_sched::Scheduler::Worker * worker_data) (/home/keaton/Documents/GLRepos/SkyboltDependenciesHeaderOnly-master/px_sched/include/px_sched/px_sched.h:1130)
std::__invoke_impl<void, void (*)(px_sched::Scheduler*, px_sched::Scheduler::Worker*), px_sched::Scheduler*, px_sched::Scheduler::Worker*>(void (*&&)(px_sched::Scheduler *, px_sched::Scheduler::Worker *) __f) (/usr/include/c++/8/bits/invoke.h:60)
std::__invoke<void (*)(px_sched::Scheduler*, px_sched::Scheduler::Worker*), px_sched::Scheduler*, px_sched::Scheduler::Worker*>(void (*&&)(px_sched::Scheduler *, px_sched::Scheduler::Worker *) __fn) (/usr/include/c++/8/bits/invoke.h:95)
std::thread::_Invoker<std::tuple<void (*)(px_sched::Scheduler*, px_sched::Scheduler::Worker*), px_sched::Scheduler*, px_sched::Scheduler::Worker*> >::_M_invoke<0ul, 1ul, 2ul>(std::thread::_Invoker<std::tuple<void (*)(px_sched::Scheduler*, px_sched::Scheduler::Worker*), px_sched::Scheduler*, px_sched::Scheduler::Worker*> > * const this) (/usr/include/c++/8/thread:244)
std::thread::_Invoker<std::tuple<void (*)(px_sched::Scheduler*, px_sched::Scheduler::Worker*), px_sched::Scheduler*, px_sched::Scheduler::Worker*> >::operator()(std::thread::_Invoker<std::tuple<void (*)(px_sched::Scheduler*, px_sched::Scheduler::Worker*), px_sched::Scheduler*, px_sched::Scheduler::Worker*> > * const this) (/usr/include/c++/8/thread:253)
std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (*)(px_sched::Scheduler*, px_sched::Scheduler::Worker*), px_sched::Scheduler*, px_sched::Scheduler::Worker*> > >::_M_run(std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (*)(px_sched::Scheduler*, px_sched::Scheduler::Worker*), px_sched::Scheduler*, px_sched::Scheduler::Worker*> > > * const this) (/usr/include/c++/8/thread:196)
libstdc++.so.6![Unknown/Just-In-Time compiled code] (Unknown Source:0)
libpthread.so.0!start_thread(void * arg) (/build/glibc-ZN95T4/glibc-2.31/nptl/pthread_create.c:477)
libc.so.6!clone() (/build/glibc-ZN95T4/glibc-2.31/sysdeps/unix/sysv/linux/x86_64/clone.S:95)

Another note (that may or may not be related) is when I run the SkyboltVisTests, I am getting 2 failures. Here is the output for that:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SkyboltVisTests is a Catch v2.9.2 host application.
Run with -? for options

-------------------------------------------------------------------------------
Precomputed BruentonAtmosphere matches Bruenton's reference implementation
-------------------------------------------------------------------------------
/home/keaton/Documents/GLRepos/Skybolt-master/src/Skybolt/SkyboltVisTests/BrunetonAtmosphereGeneratorTests.cpp:117
...............................................................................

/home/keaton/Documents/GLRepos/Skybolt-master/src/Skybolt/SkyboltVisTests/BrunetonAtmosphereGeneratorTests.cpp:117: FAILED:
due to unexpected exception with message:
  Could not open file: Shaders/ThirdParty/BrunetonAtmosphere/definitions.glsl

No protocol specified
-------------------------------------------------------------------------------
CompositingPipeline renders expected images
-------------------------------------------------------------------------------
/home/keaton/Documents/GLRepos/Skybolt-master/src/Skybolt/SkyboltVisTests/CompositingPipelineFactoryTests.cpp:170
...............................................................................

/home/keaton/Documents/GLRepos/Skybolt-master/src/Skybolt/SkyboltVisTests/CompositingPipelineFactoryTests.cpp:170: FAILED:
due to unexpected exception with message:
  Could not create offscreen OpenGL graphics context

===============================================================================
test cases: 13 | 11 passed | 2 failed
assertions: 34 | 32 passed | 2 failed

Missing Environment/Ground/Ground026_1K_Color.jpg

I download the data file from offical webset,but when I run the minimalApp the application crash and tell me Environment/Ground/Ground026_1K_Color.jpg can not be found, then I check the related path on my disk, the result is there is no such file.

Run minimalApp found camera are so sensitive

When I ran the minimalApp example, I found that the movement of the mouse caused the scene to move very quickly, so that I couldn't observe the world very well,please help me.

Problem running example application

Hi,

I built Skybolt using conan and also set SKYBOLT_ASSETS_PATH environment variable correctly. I am getting an error while building

Building

osg.lib(CopyOp.obj) : error LNK2005: "public: virtual class osg::Array * __cdecl osg::CopyOp::operator()(class osg::Arr
ay const *)const " (??RCopyOp@osg@@UEBAPEAVArray@1@PEBV21@@Z) already defined in osg.lib(osg.dll) [C:\Softwares\Skybolt
-master\Skybolt-build\src\Skybolt\SkyboltEnginePlugins\FftOceanTests\FftOceanTests.vcxproj]

osg.lib(CopyOp.obj) : error LNK2005: "public: virtual class osg::Callback * __cdecl osg::CopyOp::operator()(class osg::
Callback const *)const " (??RCopyOp@osg@@UEBAPEAVCallback@1@PEBV21@@Z) already defined in osg.lib(osg.dll) [C:\Software
s\Skybolt-master\Skybolt-build\src\Skybolt\SkyboltEnginePlugins\FftOceanTests\FftOceanTests.vcxproj]

osg.lib(CopyOp.obj) : error LNK2005: "public: virtual class osg::Drawable * __cdecl osg::CopyOp::operator()(class osg::
Drawable const *)const " (??RCopyOp@osg@@UEBAPEAVDrawable@1@PEBV21@@Z) already defined in osg.lib(osg.dll) [C:\Software
s\Skybolt-master\Skybolt-build\src\Skybolt\SkyboltEnginePlugins\FftOceanTests\FftOceanTests.vcxproj]

osg.lib(CopyOp.obj) : error LNK2005: "public: virtual class osg::Image * __cdecl osg::CopyOp::operator()(class osg::Ima
ge const *)const " (??RCopyOp@osg@@UEBAPEAVImage@1@PEBV21@@Z) already defined in osg.lib(osg.dll) [C:\Softwares\Skybolt
-master\Skybolt-build\src\Skybolt\SkyboltEnginePlugins\FftOceanTests\FftOceanTests.vcxproj]

osg.lib(CopyOp.obj) : error LNK2005: "public: virtual class osg::Node * __cdecl osg::CopyOp::operator()(class osg::Node
 const *)const " (??RCopyOp@osg@@UEBAPEAVNode@1@PEBV21@@Z) already defined in osg.lib(osg.dll) [C:\Softwares\Skybolt-ma
ster\Skybolt-build\src\Skybolt\SkyboltEnginePlugins\FftOceanTests\FftOceanTests.vcxproj]

osg.lib(CopyOp.obj) : error LNK2005: "public: virtual class osg::Object * __cdecl osg::CopyOp::operator()(class osg::Ob
ject const *)const " (??RCopyOp@osg@@UEBAPEAVObject@1@PEBV21@@Z) already defined in osg.lib(osg.dll) [C:\Softwares\Skyb
olt-master\Skybolt-build\src\Skybolt\SkyboltEnginePlugins\FftOceanTests\FftOceanTests.vcxproj]

osg.lib(CopyOp.obj) : error LNK2005: "public: virtual class osg::PrimitiveSet * __cdecl osg::CopyOp::operator()(class o
sg::PrimitiveSet const *)const " (??RCopyOp@osg@@UEBAPEAVPrimitiveSet@1@PEBV21@@Z) already defined in osg.lib(osg.dll)
[C:\Softwares\Skybolt-master\Skybolt-build\src\Skybolt\SkyboltEnginePlugins\FftOceanTests\FftOceanTests.vcxproj]

osg.lib(CopyOp.obj) : error LNK2005: "public: virtual class osg::Referenced * __cdecl osg::CopyOp::operator()(class osg
::Referenced const *)const " (??RCopyOp@osg@@UEBAPEAVReferenced@1@PEBV21@@Z) already defined in osg.lib(osg.dll) [C:\So
ftwares\Skybolt-master\Skybolt-build\src\Skybolt\SkyboltEnginePlugins\FftOceanTests\FftOceanTests.vcxproj]

osg.lib(CopyOp.obj) : error LNK2005: "public: virtual class osg::Shape * __cdecl osg::CopyOp::operator()(class osg::Sha
pe const *)const " (??RCopyOp@osg@@UEBAPEAVShape@1@PEBV21@@Z) already defined in osg.lib(osg.dll) [C:\Softwares\Skybolt
-master\Skybolt-build\src\Skybolt\SkyboltEnginePlugins\FftOceanTests\FftOceanTests.vcxproj]

osg.lib(CopyOp.obj) : error LNK2005: "public: virtual class osg::StateAttribute * __cdecl osg::CopyOp::operator()(class
 osg::StateAttribute const *)const " (??RCopyOp@osg@@UEBAPEAVStateAttribute@1@PEBV21@@Z) already defined in osg.lib(osg
.dll) [C:\Softwares\Skybolt-master\Skybolt-build\src\Skybolt\SkyboltEnginePlugins\FftOceanTests\FftOceanTests.vcxproj]

osg.lib(CopyOp.obj) : error LNK2005: "public: virtual class osg::StateAttributeCallback * __cdecl osg::CopyOp::operator
()(class osg::StateAttributeCallback const *)const " (??RCopyOp@osg@@UEBAPEAVStateAttributeCallback@1@PEBV21@@Z) alread
y defined in osg.lib(osg.dll) [C:\Softwares\Skybolt-master\Skybolt-build\src\Skybolt\SkyboltEnginePlugins\FftOceanTests
\FftOceanTests.vcxproj]

osg.lib(CopyOp.obj) : error LNK2005: "public: virtual class osg::StateSet * __cdecl osg::CopyOp::operator()(class osg::
StateSet const *)const " (??RCopyOp@osg@@UEBAPEAVStateSet@1@PEBV21@@Z) already defined in osg.lib(osg.dll) [C:\Software
s\Skybolt-master\Skybolt-build\src\Skybolt\SkyboltEnginePlugins\FftOceanTests\FftOceanTests.vcxproj]

osg.lib(CopyOp.obj) : error LNK2005: "public: virtual class osg::Texture * __cdecl osg::CopyOp::operator()(class osg::T
exture const *)const " (??RCopyOp@osg@@UEBAPEAVTexture@1@PEBV21@@Z) already defined in osg.lib(osg.dll) [C:\Softwares\Skybolt-master\Skybolt-build\src\Skybolt\SkyboltEnginePlugins\FftOceanTests\FftOceanTests.vcxproj]

osg.lib(CopyOp.obj) : error LNK2005: "public: virtual class osg::Uniform * __cdecl osg::CopyOp::operator()(class osg::U
niform const *)const " (??RCopyOp@osg@@UEBAPEAVUniform@1@PEBV21@@Z) already defined in osg.lib(osg.dll) [C:\Softwares\Skybolt-master\Skybolt-build\src\Skybolt\SkyboltEnginePlugins\FftOceanTests\FftOceanTests.vcxproj]

osg.lib(CopyOp.obj) : error LNK2005: "public: virtual class osg::UniformCallback * __cdecl osg::CopyOp::operator()(clas
s osg::UniformCallback const *)const " (??RCopyOp@osg@@UEBAPEAVUniformCallback@1@PEBV21@@Z) already defined in osg.lib(
osg.dll) [C:\Softwares\Skybolt-master\Skyboltbuild\src\Skybolt\SkyboltEnginePlugins\FftOceanTests\FftOceanTests.vcxpro
j]

C:\Softwares\Skybolt-master\Skybolt-build\bin\Release\plugins\FftOceanTests.exe : fatal error LNK1169: one or more multiply defined symbols found [C:\Softwares\Skybolt-master\Skybolt-build\src\Skybolt\SkyboltEnginePlugins\FftOceanTests\FftOceanTests.vcxproj]

and I got an error while running MinimalApp in Examples.
Running MinimalApp

[2022-11-06 18:07:34.208917] [0x000025c8] [info]    No --settingsFile program argument specified. Using default settings file location: '"C:\\Users\\rkaly\\AppData\\Local\\Skybolt\\Settings.json
[2022-11-06 18:07:34.209905] [0x000025c8] [warning] Settings file not found: C:\\Users\\rkaly\\AppData\\Local\\Skybolt\\Settings.json
[2022-11-06 18:07:34.209905] [0x000025c8] [info]    Loaded plugin: FftOcean.dll
[2022-11-06 18:07:34.210905] [0x000025c8] [info]    12 CPU cores detected.  Creating 11 background threads.
[2022-11-06 18:07:34.210905] [0x000025c8] [info]    Registered asset package: Core
[2022-11-06 18:07:34.210905] [0x000025c8] [info]    Registered asset package: Globe
[2022-11-06 18:07:34.210905] [0x000025c8] [info]    Registered asset package: Movers
void StateSet::setGlobalDefaults() ShaderPipeline disabled.

when I run any app from Examples.
I used conan to build this.
The exact commands are somehow like this. Apologies I never used conan before, so found all these commands searching online.

pip install conan
conan install . --install-folder C:\Softwares\Skybolt-master\Skybolt-build --build=missing
conan build --install-folder C:\Softwares\Skybolt-master\Skybolt-install --build-folder C:\Softwares\Skybolt-master\Skybolt-build .

IMO I dont think that the above error is the reason for the message void StateSet::setGlobalDefaults() ShaderPipeline disabled. as it appears while building FftOceanTests.exe
Do you know what might be the problem here?

Thanks.

How to use?

I have some special issues when install that package.
In my case i use vcpkg and Visual studio 2017.
So what i do:

  1. Install some libs on vcpkg:
vcpkg install boost:x64-windows
vcpkg install boost:x64-windows-static
  1. Shared vcpkg libs into "CMakeLists.txt":
if(CMAKE_TOOLCHAIN_FILE)
    include(${CMAKE_TOOLCHAIN_FILE})
endif(CMAKE_TOOLCHAIN_FILE)
  1. Configure project on cmake(gui).exe (add some libs from repo SkyboltDependenciesHeaderOnly)
Found Boost: C:/temp/vcpkg/installed/x64-windows/include (found version "1.79.0") found components: log log_setup filesystem thread regex chrono atomic 
Configuring done
Generating done

but have some warning on SkyboltVis:

CMake Warning at C:/Program Files/CMake/share/cmake-3.23/Modules/FindBoost.cmake:1384 (message):
  New Boost version may have incorrect or missing dependencies and imported
  targets
Call Stack (most recent call first):
  C:/Program Files/CMake/share/cmake-3.23/Modules/FindBoost.cmake:1507 (_Boost_COMPONENT_DEPENDENCIES)
  C:/Program Files/CMake/share/cmake-3.23/Modules/FindBoost.cmake:2117 (_Boost_MISSING_DEPENDENCIES)
  C:/temp/vcpkg/installed/x64-windows/share/boost/vcpkg-cmake-wrapper.cmake:11 (_find_package)
  C:/temp/vcpkg/scripts/buildsystems/vcpkg.cmake:778 (include)
  src/Skybolt/SkyboltVis/CMakeLists.txt:7 (find_package)

Summary when i build (F7) (MinimalApi) VS project :
LNK2019 Skybolt.Vis
what i do wrong? maybe version of boost?

ERROR: 0:1686: 'OUT' : failed to expand macro

Hi Matthew,

Here is a small extract of errors I now encounter (they are all similar) :

[2022-06-10 10:27:26.411027] [0x00000c94] [error]   FRAGMENT glCompileShader "Shaders/Ocean.frag" FAILED
[2022-06-10 10:27:26.411027] [0x00000c94] [error]   FRAGMENT Shader "Shaders/Ocean.frag" infolog:
ERROR: 0:1686: 'OUT' : failed to expand macro
[2022-06-10 10:27:26.426685] [0x00000c94] [error]   VERTEX glCompileShader "Shaders/OceanProjected.vert" FAILED
[2022-06-10 10:27:26.426685] [0x00000c94] [error]   VERTEX Shader "Shaders/OceanProjected.vert" infolog:
ERROR: 0:1737: 'OUT' : failed to expand macro

What could be causing this?

Thanks.

RuntimeError: Could not find 'Core' assets package.

Hi everyone!
I get

Traceback (most recent call last):
  File "C:\temp\test.py", line 4, in <module>
    engine = sb.createEngineRootWithDefaults()
RuntimeError: Could not find 'Core' assets package. Ensure working directory or SKYBOLT_ASSETS_PATH is set correctly. Please refer to Skybolt documentation for information about finding assets.

Obviously, only Globe and Movers reside in Assets.

Most of the time, the terrain does not show and it fails silently

Hi Matthew,

I've recompiled with the latest version of the master branch (thanks for that). I've been able to see the terrain load properly several times, but most of the time, it does not even show, without errors or warning. It seems thought that the cache is being populated.

Independent from the fact that the terrain does not show, here are some of the errors/warnings I get.

[2022-06-11 06:53:55.435785] [0x000051f4] [error]   Error reading file Tiles/Earth/Attributes/0/0/0.png: file not found
[2022-06-11 06:53:55.440790] [0x000051f4] [error]   Could not load image from XyzTileSource with URL template 'Tiles/Earth/Attributes/{z}/{x}/{y}.png.

Error while building in Assets/Core/Shaders/Util/Specular.h

When building the project on LinuxMint 20.1 (Ubuntu 20.04) I got this error:
Building CXX object src/Skybolt/SkyboltVisTests/CMakeFiles/SkyboltVisTests.dir/QuadTreeTileLoaderTests.cpp.o
In file included from /home/cel/Projekty/var/Skybolt/master/Skybolt-master/src/Skybolt/SkyboltVisTests/../../../Assets/Core/Shaders/Brdfs/PrincipledBrdfDirectionalLight.h:13,
from /home/cel/Projekty/var/Skybolt/master/Skybolt-master/src/Skybolt/SkyboltVisTests/PrincipledBrdfTests.cpp:26:
/home/cel/Projekty/var/Skybolt/master/Skybolt-master/src/Skybolt/SkyboltVisTests/../../../Assets/Core/Shaders/Util/Specular.h: In function ‘glm::vec3 fresnelSchlickRoughness(float, glm::vec3, float)’:
/home/cel/Projekty/var/Skybolt/master/Skybolt-master/src/Skybolt/SkyboltVisTests/../../../Assets/Core/Shaders/Util/Specular.h:57:58: error: cannot convert ‘glm::vec<3, float, glm::packed_highp>::rgb’ from type ‘glm::vec<3, float, glm::packed_highp> (glm::vec<3, float, glm::packed_highp>::)() const’ to type ‘glm::vec3’ {aka ‘glm::vec<3, float, glm::packed_highp>’}
57 | return clamp( a0 + F0 * ( a1 - a0 ), vec3(0), vec3(1) ).rgb;

I was able to go around this by simply adding round parentheses:
return clamp( a0 + F0 * ( a1 - a0 ), vec3(0), vec3(1) ).rgb();

But I'm not sure if this is the right way.

Error while linking FlightSimApp

While linking FlightSimApp on LinuxMint 20.1 (Ubuntu 20.04 LTS) i got this error:
Linking CXX executable ../../../bin/FlightSimApp
/usr/bin/ld: ../../../lib/libExamplesCommon.a(HudSystem.cpp.o): in function skybolt::HudSystem::updatePostDynamics(skybolt::sim::System::StepArgs const&)': /home/cel/Projekty/var/Skybolt/master/Skybolt-master/src/SkyboltExamples/ExamplesCommon/HudSystem.cpp:170: undefined reference to skybolt::HeadingRibbonModel::draw(float, float*)'
/usr/bin/ld: /home/cel/Projekty/var/Skybolt/master/Skybolt-master/src/SkyboltExamples/ExamplesCommon/HudSystem.cpp:178: undefined reference to skybolt::HudHoverVelModel::draw(glm::vec<2, float, (glm::qualifier)0> const&)' /usr/bin/ld: /home/cel/Projekty/var/Skybolt/master/Skybolt-master/src/SkyboltExamples/ExamplesCommon/HudSystem.cpp:185: undefined reference to skybolt::PitchLadderModel::draw(float, float)'
/usr/bin/ld: /home/cel/Projekty/var/Skybolt/master/Skybolt-master/src/SkyboltExamples/ExamplesCommon/HudSystem.cpp:190: undefined reference to skybolt::AltitudeBarModel::draw(float, float const*)' /usr/bin/ld: /home/cel/Projekty/var/Skybolt/master/Skybolt-master/src/SkyboltExamples/ExamplesCommon/HudSystem.cpp:193: undefined reference to skybolt::RollAngleRibbonModel::draw(float)'
/usr/bin/ld: ../../../lib/libExamplesCommon.a(HudSystem.cpp.o): in function std::_MakeUniq<skybolt::HeadingRibbonModel>::__single_object std::make_unique<skybolt::HeadingRibbonModel, skybolt::VisHud*, skybolt::HeadingRibbonModel::Parameters&>(skybolt::VisHud*&&, skybolt::HeadingRibbonModel::Parameters&)': /usr/include/c++/9/bits/unique_ptr.h:857: undefined reference to skybolt::HeadingRibbonModel::HeadingRibbonModel(skybolt::HudDrawer*, skybolt::HeadingRibbonModel::Parameters const&)'
/usr/bin/ld: ../../../lib/libExamplesCommon.a(HudSystem.cpp.o): in function std::_MakeUniq<skybolt::HudHoverVelModel>::__single_object std::make_unique<skybolt::HudHoverVelModel, skybolt::VisHud*, double, double>(skybolt::VisHud*&&, double&&, double&&)': /usr/include/c++/9/bits/unique_ptr.h:857: undefined reference to skybolt::HudHoverVelModel::HudHoverVelModel(skybolt::HudDrawer*, float, float)'
/usr/bin/ld: ../../../lib/libExamplesCommon.a(HudSystem.cpp.o): in function std::_MakeUniq<skybolt::PitchLadderModel>::__single_object std::make_unique<skybolt::PitchLadderModel, skybolt::VisHud*, skybolt::PitchLadderModel::Parameters&>(skybolt::VisHud*&&, skybolt::PitchLadderModel::Parameters&)': /usr/include/c++/9/bits/unique_ptr.h:857: undefined reference to skybolt::PitchLadderModel::PitchLadderModel(skybolt::HudDrawer*, skybolt::PitchLadderModel::Parameters const&)'
/usr/bin/ld: ../../../lib/libExamplesCommon.a(HudSystem.cpp.o): in function std::_MakeUniq<skybolt::AltitudeBarModel>::__single_object std::make_unique<skybolt::AltitudeBarModel, skybolt::VisHud*, skybolt::AltitudeBarModel::Parameters&>(skybolt::VisHud*&&, skybolt::AltitudeBarModel::Parameters&)': /usr/include/c++/9/bits/unique_ptr.h:857: undefined reference to skybolt::AltitudeBarModel::AltitudeBarModel(skybolt::HudDrawer*, skybolt::AltitudeBarModel::Parameters const&)'
/usr/bin/ld: ../../../lib/libExamplesCommon.a(HudSystem.cpp.o): in function std::_MakeUniq<skybolt::RollAngleRibbonModel>::__single_object std::make_unique<skybolt::RollAngleRibbonModel, skybolt::VisHud*, skybolt::RollAngleRibbonModel::Parameters&>(skybolt::VisHud*&&, skybolt::RollAngleRibbonModel::Parameters&)': /usr/include/c++/9/bits/unique_ptr.h:857: undefined reference to skybolt::RollAngleRibbonModel::RollAngleRibbonModel(skybolt::HudDrawer*, skybolt::RollAngleRibbonModel::Parameters const&)'
collect2: error: ld returned 1 exit status

I was able to go around this by changing src/SkyboltExamples/FlightSimApp/CMakeLists.txt:
set(LIBS
-Wl,--start-group
AircraftHud
ExamplesCommon
-Wl,--end-group
)

SkyboltExamples MinimalApp error

Hello,
I tried to run MinimalApp and got the following error: Could not locate file: Tiles/Earth/Features

Here is the output:

C:\Users\Leonid.Minkov\Documents\proj\skybolt\bld-17\bin\Debug>minimalapp --sett
ingsFile Settings.json
[2021-04-11 21:42:03.263782] [0x00001ba4] [info] Reading settings file '"Sett
ings.json"'
[2021-04-11 21:42:03.277783] [0x00001ba4] [info] 4 CPU cores detected. Creati
ng 3 background threads.
[2021-04-11 21:42:03.280783] [0x00001ba4] [info] Registered asset module: Cor
e
[2021-04-11 21:42:03.280783] [0x00001ba4] [info] Registered asset module: Sha
ders
[2021-04-11 21:42:12.933335] [0x00001ba4] [error] Could not locate file: Tiles
/Earth/Features

I registered at mapbox.com and got a key.

Here is the content of the settings file:
{
"tileApiKeys": {

    "mapbox": "pk.eyJ1IjoibG1pbmtvdiIsImEiOiJja25ja2MxZHMw....."
}

}

I downloaded 'Core_1_0_0' folder, and copied "Core" folder from it into 'C:\Users\Leonid.Minkov\Documents\proj\skybolt\bld-17\bin\Debug\Assets' but 'Core\Tiles\Earth' folder does not have 'Features' folder.

Please help. Thank you.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.