mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-02-22 04:49:12 -06:00
Merged master into NewAtmopshere branch.
This commit is contained in:
4
CONTRIBUTING.md
Normal file
4
CONTRIBUTING.md
Normal file
@@ -0,0 +1,4 @@
|
||||
## How to contribute
|
||||
The easiest way to contribute is through a separate fork of the repository and submitting a pull-request. One of the core developers will judge the pull request and integrate it into the main `master` branch. Preferably, there is an accompanying issue (created by you or not) which is solved by the PR. In this case, feel free to use the phrase "(closes #XXX)" in the text of the pull request, where `XXX` is the number of the issue that you have solved. The PR should be in its own separate branch following the naming `pr/feature`, where `feature` is a short, descripting name of the additional feature or bug contained in the PR.
|
||||
|
||||
For more information we refer to the [Wiki](https://github.com/OpenSpace/OpenSpace/wiki). If there are any questions, feel free to contact us via [email](mailto:alexander.bock@me.com?subject=OpenSpace: Contributing).
|
||||
@@ -1,16 +1,26 @@
|
||||
Alexander Bock
|
||||
Joakim Kilby
|
||||
Emil Axelsson
|
||||
Eric Myers
|
||||
Jonathas Costa
|
||||
Matthew Territo
|
||||
Gene Payne
|
||||
Kalle Bladin
|
||||
Erik Sundén
|
||||
|
||||
Jonas Strandstedt
|
||||
Hans-Christian Helltegen
|
||||
Michal Marcinkowski
|
||||
Anton Arbring
|
||||
Tomas Forsyth Rosin
|
||||
Kalle Bladin
|
||||
Erik Broberg
|
||||
Michael Nilsson
|
||||
Sebastian Piwell
|
||||
Niclas Hultberg
|
||||
Rickard Lindtstedt
|
||||
Michael Sjöström
|
||||
Michael Novén
|
||||
Oskar Carlbaum
|
||||
|
||||
Anteige
|
||||
noahdasanaike
|
||||
@@ -1,4 +1,4 @@
|
||||
Copyright (c) 2014-2016
|
||||
Copyright (c) 2014-2017
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this
|
||||
software and associated documentation files (the "Software"), to deal in the Software
|
||||
9
README.md
Normal file
9
README.md
Normal file
@@ -0,0 +1,9 @@
|
||||
OpenSpace is an open source, non-commercial, and freely available interactive data visualization software designed to visualize the entire known universe and portray our ongoing efforts to investigate the cosmos. Bringing the latest techniques from data visualization research to the general public, OpenSpace supports interactive presentation of dynamic data from observations, simulations, and space mission planning and operations. The software works on multiple operating systems (Windows, Linux, MacOS) with an extensible architecture powering high resolution tiled displays and planetarium domes, making use of the latest graphic card technologies for rapid data throughput. In addition, OpenSpace enables simultaneous connections across the globe creating opportunity for shared experiences among audiences worldwide.
|
||||
|
||||
The project stems from the same academic collaboration between Sweden’s Linköping University (LiU) and the American Museum of Natural History (AMNH) that led to the creation of Uniview and its parent company SCISS. Development of the software began several years ago through a close collaboration with NASA Goddard’s Community Coordinated Modeling Center (CCMC) to model space weather forecasting and continued last year with visualization of NASA’s New Horizons mission to Pluto and ESA’s Rosetta mission. This promising set of preliminary work provided a foundation for recent NASA funding, which has extended the collaboration to include the University of Utah’s Scientific Computing and Imaging (SCI) Institute, New York University’s Tandon School of Engineering, multiple informal science institutions across the United States, and multiple, international vendors. Current areas of focus within OpenSpace include:
|
||||
|
||||
- Visualization of dynamic simulations via interactive volumetric rendering, as a priority for communicating research in astrophysics.
|
||||
- Utilization of NASA’s SPICE observational geometry system with its Planetary Data Service (PDS) to enable space mission visualization that reveal how missions are designed to gather science.
|
||||
- Globe browsing techniques across spatial and temporal scales to examine scientific campaigns on multiple planets, including close up surface exploration.
|
||||
|
||||
This repository contains the source code and example scenes for OpenSpace, but does not contain any data. To build and install the client, we refer to the [Wiki](https://github.com/OpenSpace/OpenSpace/wiki) pages here on GitHub, specifically [building](https://github.com/OpenSpace/OpenSpace/wiki/General-Getting-Started-Guide%3A-Compiling-OpenSpace) for [Windows](https://github.com/OpenSpace/OpenSpace/wiki/Guides-Compile-OpenSpace-on-Windows), [Linux](https://github.com/OpenSpace/OpenSpace/wiki/Guides-Compile-OpenSpace-on-Linux), and [MacOS](https://github.com/OpenSpace/OpenSpace/wiki/Guides-Compile-OpenSpace-on-OSX). Required preexisting dependencies are: [NASM](http://www.nasm.us/), [Boost](http://www.boost.org/), and [Qt](http://www.qt.io/download). Feel free to create issues for missing features, bug reports, or compile problems or contact us via [email](mailto:alexander.bock@me.com?subject=OpenSpace:).
|
||||
@@ -1,26 +1,28 @@
|
||||
#########################################################################################
|
||||
# #
|
||||
# OpenSpace #
|
||||
# #
|
||||
# Copyright (c) 2014-2015 #
|
||||
# #
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy of this #
|
||||
# software and associated documentation files (the "Software"), to deal in the Software #
|
||||
# without restriction, including without limitation the rights to use, copy, modify, #
|
||||
# merge, publish, distribute, sublicense, and/or sell copies of the Software, and to #
|
||||
# permit persons to whom the Software is furnished to do so, subject to the following #
|
||||
# conditions: #
|
||||
# #
|
||||
# The above copyright notice and this permission notice shall be included in all copies #
|
||||
# or substantial portions of the Software. #
|
||||
# #
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, #
|
||||
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A #
|
||||
# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT #
|
||||
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF #
|
||||
# CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE #
|
||||
# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #
|
||||
#########################################################################################
|
||||
##########################################################################################
|
||||
# #
|
||||
# OpenSpace #
|
||||
# #
|
||||
# Copyright (c) 2014-2017 #
|
||||
# #
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy of this #
|
||||
# software and associated documentation files (the "Software"), to deal in the Software #
|
||||
# without restriction, including without limitation the rights to use, copy, modify, #
|
||||
# merge, publish, distribute, sublicense, and/or sell copies of the Software, and to #
|
||||
# permit persons to whom the Software is furnished to do so, subject to the following #
|
||||
# conditions: #
|
||||
# #
|
||||
# The above copyright notice and this permission notice shall be included in all copies #
|
||||
# or substantial portions of the Software. #
|
||||
# #
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, #
|
||||
# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A #
|
||||
# PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT #
|
||||
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF #
|
||||
# CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE #
|
||||
# OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #
|
||||
##########################################################################################
|
||||
|
||||
include(${GHOUL_BASE_DIR}/support/cmake/CopySharedLibraries.cmake)
|
||||
|
||||
set(APPLICATION_NAME OpenSpace)
|
||||
set(APPLICATION_LINK_TO_OPENSPACE ON)
|
||||
@@ -29,50 +31,98 @@ if (WIN32)
|
||||
set(RESOURCE_FILE ${OPENSPACE_APPS_DIR}/OpenSpace/openspace.rc)
|
||||
endif ()
|
||||
|
||||
##OpenVR section start####################
|
||||
|
||||
########################
|
||||
# OpenVR section start #
|
||||
########################
|
||||
option(OPENSPACE_OPENVR_SUPPORT "Build OpenSpace application with OpenVR support" OFF)
|
||||
|
||||
if(OPENSPACE_OPENVR_SUPPORT)
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${OPENSPACE_EXT_DIR}/sgct/cmake/modules/")
|
||||
|
||||
find_package(OpenVR REQUIRED)
|
||||
|
||||
set(SGCT_OPENVR_DEFINITIONS OPENVR_SUPPORT)
|
||||
if (OPENSPACE_OPENVR_SUPPORT)
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${OPENSPACE_EXT_DIR}/sgct/cmake/modules/")
|
||||
|
||||
find_package(OpenVR REQUIRED)
|
||||
|
||||
set(SGCT_OPENVR_DEFINITIONS OPENVR_SUPPORT)
|
||||
|
||||
if(NOT SGCT_OPENVR_INCLUDE_DIRECTORY)
|
||||
if( WIN32 )
|
||||
find_path(SGCT_OPENVR_INCLUDE_DIRECTORY
|
||||
NAMES SGCTOpenVR.h
|
||||
PATHS $ENV{SGCT_ROOT_DIR}/additional_includes/openvr ${OPENSPACE_EXT_DIR}/sgct/additional_includes/openvr NO_DEFAULT_PATH
|
||||
REQUIRED)
|
||||
else()
|
||||
find_path(SGCT_OPENVR_INCLUDE_DIRECTORY
|
||||
NAMES SGCTOpenVR.h
|
||||
PATH_SUFFIXES SGCTOpenVR
|
||||
PATHS $ENV{SGCT_ROOT_DIR}/additional_includes/openvr ${OPENSPACE_EXT_DIR}/sgct/additional_includes/openvr
|
||||
REQUIRED)
|
||||
endif()
|
||||
else()
|
||||
set(SGCT_OPENVR_FILES ${SGCT_OPENVR_INCLUDE_DIRECTORY}/SGCTOpenVR.h ${SGCT_OPENVR_INCLUDE_DIRECTORY}/SGCTOpenVR.cpp)
|
||||
endif()
|
||||
if(NOT SGCT_OPENVR_INCLUDE_DIRECTORY)
|
||||
if( WIN32 )
|
||||
find_path(SGCT_OPENVR_INCLUDE_DIRECTORY
|
||||
NAMES SGCTOpenVR.h
|
||||
PATHS $ENV{SGCT_ROOT_DIR}/additional_includes/openvr ${OPENSPACE_EXT_DIR}/sgct/additional_includes/openvr NO_DEFAULT_PATH
|
||||
REQUIRED)
|
||||
else()
|
||||
find_path(SGCT_OPENVR_INCLUDE_DIRECTORY
|
||||
NAMES SGCTOpenVR.h
|
||||
PATH_SUFFIXES SGCTOpenVR
|
||||
PATHS $ENV{SGCT_ROOT_DIR}/additional_includes/openvr ${OPENSPACE_EXT_DIR}/sgct/additional_includes/openvr
|
||||
REQUIRED)
|
||||
endif()
|
||||
else()
|
||||
set(SGCT_OPENVR_FILES ${SGCT_OPENVR_INCLUDE_DIRECTORY}/SGCTOpenVR.h ${SGCT_OPENVR_INCLUDE_DIRECTORY}/SGCTOpenVR.cpp)
|
||||
endif()
|
||||
else()
|
||||
set(OPENVR_INCLUDE_DIRS "")
|
||||
set(SGCT_OPENVR_INCLUDE_DIRECTORY "")
|
||||
set(OPENVR_LIBRARY "")
|
||||
set(SGCT_OPENVR_DEFINITIONS "")
|
||||
set(OPENVR_INCLUDE_DIRS "")
|
||||
set(SGCT_OPENVR_INCLUDE_DIRECTORY "")
|
||||
set(OPENVR_LIBRARY "")
|
||||
set(SGCT_OPENVR_DEFINITIONS "")
|
||||
endif()
|
||||
##OpenVR section end####################
|
||||
########################
|
||||
# OpenVR section end #
|
||||
########################
|
||||
|
||||
########################
|
||||
# Spout section start #
|
||||
########################
|
||||
if (WIN32)
|
||||
option(OPENSPACE_SPOUT_SUPPORT "Build OpenSpace application with Spout support" OFF)
|
||||
endif ()
|
||||
|
||||
set(SPOUT_INCLUDE_DIRS "")
|
||||
set(SPOUT_LIBRARY "")
|
||||
set(SPOUT_DEFINITIONS "")
|
||||
if (OPENSPACE_SPOUT_SUPPORT)
|
||||
set(SPOUT_INCLUDE_DIRS ${OPENSPACE_APPS_DIR}/OpenSpace/ext/spout)
|
||||
set(SPOUT_LIBRARY ${OPENSPACE_APPS_DIR}/OpenSpace/ext/spout/SpoutLibrary.lib)
|
||||
set(SPOUT_DEFINITIONS "OPENSPACE_HAS_SPOUT")
|
||||
endif ()
|
||||
|
||||
########################
|
||||
# Spout section end #
|
||||
########################
|
||||
|
||||
add_executable(${APPLICATION_NAME}
|
||||
${SGCT_OPENVR_FILES}
|
||||
${SGCT_OPENVR_FILES}
|
||||
${OPENSPACE_APPS_DIR}/OpenSpace/main.cpp
|
||||
${RESOURCE_FILE}
|
||||
)
|
||||
target_include_directories(${APPLICATION_NAME} PUBLIC ${OPENSPACE_BASE_DIR}/include ${OPENVR_INCLUDE_DIRS} ${SGCT_OPENVR_INCLUDE_DIRECTORY})
|
||||
target_link_libraries(${APPLICATION_NAME} libOpenSpace ${OPENVR_LIBRARY})
|
||||
target_compile_definitions(${APPLICATION_NAME} PUBLIC ${SGCT_OPENVR_DEFINITIONS})
|
||||
if (OPENSPACE_SPOUT_SUPPORT)
|
||||
copy_files(
|
||||
${APPLICATION_NAME}
|
||||
${OPENSPACE_APPS_DIR}/OpenSpace/ext/spout/SpoutLibrary.dll
|
||||
)
|
||||
endif ()
|
||||
|
||||
target_include_directories(
|
||||
${APPLICATION_NAME} PUBLIC
|
||||
${OPENSPACE_BASE_DIR}/include
|
||||
${OPENVR_INCLUDE_DIRS}
|
||||
${SGCT_OPENVR_INCLUDE_DIRECTORY}
|
||||
${SPOUT_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
target_link_libraries(${APPLICATION_NAME}
|
||||
libOpenSpace
|
||||
${OPENVR_LIBRARY}
|
||||
${SPOUT_LIBRARY}
|
||||
)
|
||||
|
||||
target_compile_definitions(${APPLICATION_NAME} PUBLIC
|
||||
${SGCT_OPENVR_DEFINITIONS}
|
||||
${SPOUT_DEFINITIONS}
|
||||
)
|
||||
|
||||
if (MSVC)
|
||||
target_link_libraries(${APPLICATION_NAME} Dbghelp.lib)
|
||||
set_target_properties(${APPLICATION_NAME} PROPERTIES LINK_FLAGS
|
||||
"/NODEFAULTLIB:LIBCMTD.lib /NODEFAULTLIB:LIBCMT.lib"
|
||||
)
|
||||
|
||||
8
apps/OpenSpace/ext/readme.md
Normal file
8
apps/OpenSpace/ext/readme.md
Normal file
@@ -0,0 +1,8 @@
|
||||
The spout folder is a copy of the folder:
|
||||
SpoutSDK/Source in the repository:
|
||||
https://github.com/leadedge/Spout2.git/SpoutSDK/Source/SPOUT_LIBRARY/Binaries
|
||||
and
|
||||
https://github.com/leadedge/Spout2.git/SpoutSDK/Source/SPOUT_LIBRARY/Include
|
||||
|
||||
Last update:
|
||||
https://github.com/leadedge/Spout2/commit/28dbea6059cd7968c4d2b296d6739a5fdebe9104
|
||||
BIN
apps/OpenSpace/ext/spout/SpoutLibrary.dll
Normal file
BIN
apps/OpenSpace/ext/spout/SpoutLibrary.dll
Normal file
Binary file not shown.
90
apps/OpenSpace/ext/spout/SpoutLibrary.h
Normal file
90
apps/OpenSpace/ext/spout/SpoutLibrary.h
Normal file
@@ -0,0 +1,90 @@
|
||||
//
|
||||
// SpoutLibrary.dll
|
||||
//
|
||||
// Spout SDK dll compatible with any C++ compiler
|
||||
//
|
||||
|
||||
#include <windows.h>
|
||||
#include <GL/GL.h>
|
||||
|
||||
#define SPOUTLIBRARY_EXPORTS // defined for this DLL. The application imports rather than exports
|
||||
|
||||
#ifdef SPOUTLIBRARY_EXPORTS
|
||||
#define SPOUTAPI __declspec(dllexport)
|
||||
#else
|
||||
#define SPOUTAPI __declspec(dllimport)
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// COM-Like abstract interface.
|
||||
// This interface doesn't require __declspec(dllexport/dllimport) specifier.
|
||||
// Method calls are dispatched via virtual table.
|
||||
// Any C++ compiler can use it.
|
||||
// Instances are obtained via factory function.
|
||||
//
|
||||
struct SPOUTLIBRARY
|
||||
{
|
||||
// Sender
|
||||
virtual bool CreateSender(const char *Sendername, unsigned int width, unsigned int height, DWORD dwFormat = 0) = 0;
|
||||
virtual void ReleaseSender(DWORD dwMsec = 0) = 0;
|
||||
virtual bool UpdateSender(const char* Sendername, unsigned int width, unsigned int height) = 0;
|
||||
virtual bool SendTexture(GLuint TextureID, GLuint TextureTarget, unsigned int width, unsigned int height, bool bInvert = true, GLuint HostFBO = 0) = 0;
|
||||
virtual bool SendImage(const unsigned char* pixels, unsigned int width, unsigned int height, GLenum glFormat = GL_RGBA, bool bInvert=false) = 0;
|
||||
|
||||
// Receiver
|
||||
virtual bool CreateReceiver(char* Sendername, unsigned int &width, unsigned int &height, bool bUseActive = false) = 0;
|
||||
virtual void ReleaseReceiver() = 0;
|
||||
virtual bool ReceiveTexture(char* Sendername, unsigned int &width, unsigned int &height, GLuint TextureID = 0, GLuint TextureTarget = 0, bool bInvert = false, GLuint HostFBO = 0) = 0;
|
||||
virtual bool ReceiveImage(char* Sendername, unsigned int &width, unsigned int &height, unsigned char* pixels, GLenum glFormat = GL_RGBA, bool bInvert = false, GLuint HostFBO=0) = 0;
|
||||
virtual bool CheckReceiver(char* Sendername, unsigned int &width, unsigned int &height, bool &bConnected) = 0;
|
||||
virtual bool GetImageSize(char* sendername, unsigned int &width, unsigned int &height, bool &bMemoryMode) = 0;
|
||||
|
||||
virtual bool BindSharedTexture() = 0;
|
||||
virtual bool UnBindSharedTexture() = 0;
|
||||
|
||||
virtual bool DrawSharedTexture(float max_x = 1.0, float max_y = 1.0, float aspect = 1.0, bool bInvert = true) = 0;
|
||||
virtual bool DrawToSharedTexture(GLuint TextureID, GLuint TextureTarget, unsigned int width, unsigned int height, float max_x = 1.0, float max_y = 1.0, float aspect = 1.0, bool bInvert = false, GLuint HostFBO = 0) = 0;
|
||||
|
||||
virtual int GetSenderCount() = 0;
|
||||
virtual bool GetSenderName(int index, char* sendername, int MaxSize = 256) = 0;
|
||||
virtual bool GetSenderInfo(const char* sendername, unsigned int &width, unsigned int &height, HANDLE &dxShareHandle, DWORD &dwFormat) = 0;
|
||||
virtual bool GetActiveSender(char* Sendername) = 0;
|
||||
virtual bool SetActiveSender(const char* Sendername) = 0;
|
||||
|
||||
// Utilities
|
||||
virtual bool SetDX9(bool bDX9 = true) = 0; // User request to use DirectX 9 (default is DirectX 11)
|
||||
virtual bool GetDX9() = 0; // Return the flag that has been set
|
||||
virtual bool SetMemoryShareMode(bool bMem = true) = 0;
|
||||
virtual bool GetMemoryShareMode() = 0;
|
||||
virtual int GetMaxSenders() = 0; // Get maximum senders allowed
|
||||
virtual void SetMaxSenders(int maxSenders) = 0; // Set maximum senders allowed
|
||||
virtual bool GetHostPath(const char *sendername, char *hostpath, int maxchars) = 0; // The path of the host that produced the sender
|
||||
virtual int GetVerticalSync() = 0;
|
||||
virtual bool SetVerticalSync(bool bSync = true) = 0;
|
||||
virtual bool SelectSenderPanel(const char* message = NULL) = 0;
|
||||
|
||||
// Access to globals
|
||||
virtual bool GetSpoutSenderName(char * sendername, int maxchars) = 0; // get the global sender name
|
||||
virtual bool IsSpoutInitialized() = 0; // has the class been initialized
|
||||
|
||||
// Adapter functions
|
||||
virtual int GetNumAdapters() = 0; // Get the number of graphics adapters in the system
|
||||
virtual bool GetAdapterName(int index, char *adaptername, int maxchars) = 0; // Get an adapter name
|
||||
virtual bool SetAdapter(int index = 0) = 0; // Set required graphics adapter for output
|
||||
virtual int GetAdapter() = 0; // Get the SpoutDirectX global adapter index
|
||||
|
||||
// Library release function
|
||||
virtual void Release() = 0;
|
||||
|
||||
};
|
||||
|
||||
|
||||
// Handle type. In C++ language the interface type is used.
|
||||
typedef SPOUTLIBRARY* SPOUTHANDLE;
|
||||
|
||||
// Factory function that creates instances of the SPOUT object.
|
||||
extern "C" SPOUTAPI SPOUTHANDLE WINAPI GetSpout(VOID);
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
BIN
apps/OpenSpace/ext/spout/SpoutLibrary.lib
Normal file
BIN
apps/OpenSpace/ext/spout/SpoutLibrary.lib
Normal file
Binary file not shown.
@@ -32,22 +32,141 @@
|
||||
|
||||
#include <sgct.h>
|
||||
|
||||
#ifdef WIN32
|
||||
|
||||
#include <openspace/openspace.h>
|
||||
|
||||
#include <ghoul/filesystem/filesystem.h>
|
||||
#include <ghoul/misc/stacktrace.h>
|
||||
|
||||
#include <fmt/format.h>
|
||||
|
||||
#include <Windows.h>
|
||||
#include <dbghelp.h>
|
||||
#include <shellapi.h>
|
||||
#include <shlobj.h>
|
||||
|
||||
#endif // WIN32
|
||||
|
||||
#ifdef OPENVR_SUPPORT
|
||||
#include <SGCTOpenVR.h>
|
||||
#endif // OPENVR_SUPPORT
|
||||
|
||||
#ifdef OPENSPACE_HAS_SPOUT
|
||||
#include "SpoutLibrary.h"
|
||||
#endif // OPENSPACE_HAS_SPOUT
|
||||
|
||||
|
||||
#define DEVELOPER_MODE
|
||||
|
||||
namespace {
|
||||
|
||||
const char* _loggerCat = "main";
|
||||
|
||||
sgct::Engine* SgctEngine;
|
||||
|
||||
const char* OpenVRTag = "OpenVR";
|
||||
const char* SpoutTag = "Spout";
|
||||
|
||||
#ifdef WIN32
|
||||
|
||||
LONG WINAPI generateMiniDump(EXCEPTION_POINTERS* exceptionPointers) {
|
||||
SYSTEMTIME stLocalTime;
|
||||
GetLocalTime(&stLocalTime);
|
||||
|
||||
|
||||
LFATAL("Printing Stack Trace that lead to the crash:");
|
||||
std::vector<std::string> stackTrace = ghoul::stackTrace();
|
||||
for (const std::string& s : stackTrace) {
|
||||
LINFO(s);
|
||||
}
|
||||
|
||||
std::string dumpFile = fmt::format(
|
||||
"OpenSpace_{}_{}_{}-{}-{}-{}-{}-{}-{}--{}--{}.dmp",
|
||||
openspace::OPENSPACE_VERSION_MAJOR,
|
||||
openspace::OPENSPACE_VERSION_MINOR,
|
||||
openspace::OPENSPACE_VERSION_PATCH,
|
||||
stLocalTime.wYear,
|
||||
stLocalTime.wMonth,
|
||||
stLocalTime.wDay,
|
||||
stLocalTime.wHour,
|
||||
stLocalTime.wMinute,
|
||||
stLocalTime.wSecond,
|
||||
GetCurrentProcessId(),
|
||||
GetCurrentThreadId()
|
||||
);
|
||||
|
||||
LINFO("Creating dump file: " << dumpFile);
|
||||
|
||||
HANDLE hDumpFile = CreateFile(
|
||||
dumpFile.c_str(),
|
||||
GENERIC_READ | GENERIC_WRITE,
|
||||
FILE_SHARE_WRITE | FILE_SHARE_READ,
|
||||
0,
|
||||
CREATE_ALWAYS,
|
||||
0,
|
||||
0
|
||||
);
|
||||
|
||||
MINIDUMP_EXCEPTION_INFORMATION exceptionParameter;
|
||||
exceptionParameter.ThreadId = GetCurrentThreadId();
|
||||
exceptionParameter.ExceptionPointers = exceptionPointers;
|
||||
exceptionParameter.ClientPointers = TRUE;
|
||||
|
||||
BOOL success = MiniDumpWriteDump(
|
||||
GetCurrentProcess(),
|
||||
GetCurrentProcessId(),
|
||||
hDumpFile,
|
||||
MiniDumpWithDataSegs,
|
||||
&exceptionParameter,
|
||||
nullptr,
|
||||
nullptr
|
||||
);
|
||||
|
||||
if (success) {
|
||||
LINFO("Created successfully");
|
||||
}
|
||||
else {
|
||||
LERROR("Dumpfile created unsuccessfully");
|
||||
}
|
||||
|
||||
return EXCEPTION_EXECUTE_HANDLER;
|
||||
}
|
||||
|
||||
#endif // WIN32
|
||||
|
||||
#ifdef OPENVR_SUPPORT
|
||||
sgct::SGCTWindow* FirstOpenVRWindow = nullptr;
|
||||
#endif
|
||||
|
||||
#ifdef OPENSPACE_HAS_SPOUT
|
||||
/**
|
||||
* This struct stores all information about a single render window. Depending on the
|
||||
* frame setup, each window can be mono or stereo, the information of which is stored in
|
||||
* the \c leftOrMain and \c right members respectively.
|
||||
*/
|
||||
struct SpoutWindow {
|
||||
struct SpoutData {
|
||||
SPOUTHANDLE handle = nullptr;
|
||||
bool initialized = false;
|
||||
};
|
||||
|
||||
/// The left framebuffer (or main, if there is no stereo rendering)
|
||||
SpoutData leftOrMain;
|
||||
|
||||
/// The right framebuffer
|
||||
SpoutData right;
|
||||
|
||||
/// The window ID of this windows
|
||||
size_t windowId = size_t(-1);
|
||||
};
|
||||
|
||||
/// The list of all windows with spout senders
|
||||
std::vector<SpoutWindow> SpoutWindows;
|
||||
|
||||
#endif // OPENSPACE_HAS_SPOUT
|
||||
|
||||
|
||||
|
||||
std::pair<int, int> supportedOpenGLVersion() {
|
||||
// Just create a window in order to retrieve the available OpenGL version before we
|
||||
// create the real window
|
||||
@@ -96,7 +215,7 @@ void mainInitFunc() {
|
||||
// Find if we have at least one OpenVR window
|
||||
// Save reference to first OpenVR window, which is the one we will copy to the HMD.
|
||||
for (size_t i = 0; i < SgctEngine->getNumberOfWindows(); ++i) {
|
||||
if (SgctEngine->getWindowPtr(i)->checkIfTagExists("OpenVR")) {
|
||||
if (SgctEngine->getWindowPtr(i)->checkIfTagExists(OpenVRTag)) {
|
||||
#ifdef OPENVR_SUPPORT
|
||||
FirstOpenVRWindow = SgctEngine->getWindowPtr(i);
|
||||
|
||||
@@ -117,18 +236,72 @@ void mainInitFunc() {
|
||||
// Set the clear color for all non-linear projection viewports
|
||||
// @CLEANUP: Why is this necessary? We can set the clear color in the configuration
|
||||
// files --- abock
|
||||
size_t nWindows = SgctEngine->getNumberOfWindows();
|
||||
const size_t nWindows = SgctEngine->getNumberOfWindows();
|
||||
for (size_t i = 0; i < nWindows; ++i) {
|
||||
sgct::SGCTWindow* w = SgctEngine->getWindowPtr(i);
|
||||
size_t nViewports = w->getNumberOfViewports();
|
||||
const size_t nViewports = w->getNumberOfViewports();
|
||||
for (size_t j = 0; j < nViewports; ++j) {
|
||||
sgct_core::Viewport* v = w->getViewport(j);
|
||||
ghoul_assert(v != nullptr, "Number of reported viewports was incorrect");
|
||||
sgct_core::NonLinearProjection* p = v->getNonLinearProjectionPtr();
|
||||
if (p)
|
||||
if (p) {
|
||||
p->setClearColor(glm::vec4(0.f, 0.f, 0.f, 1.f));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < nWindows; ++i) {
|
||||
const sgct::SGCTWindow* windowPtr = SgctEngine->getWindowPtr(i);
|
||||
|
||||
if (!windowPtr->checkIfTagExists(SpoutTag)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
#ifdef OPENSPACE_HAS_SPOUT
|
||||
SpoutWindow w;
|
||||
|
||||
w.windowId = i;
|
||||
|
||||
const sgct::SGCTWindow::StereoMode sm = windowPtr->getStereoMode();
|
||||
const bool hasStereo =
|
||||
(sm != sgct::SGCTWindow::No_Stereo) &&
|
||||
(sm < sgct::SGCTWindow::Side_By_Side_Stereo);
|
||||
|
||||
if (hasStereo) {
|
||||
SpoutWindow::SpoutData& left = w.leftOrMain;
|
||||
left.handle = GetSpout();
|
||||
left.initialized = left.handle->CreateSender(
|
||||
(windowPtr->getName() + "_left").c_str(),
|
||||
windowPtr->getXFramebufferResolution(),
|
||||
windowPtr->getYFramebufferResolution()
|
||||
);
|
||||
|
||||
SpoutWindow::SpoutData& right = w.right;
|
||||
right.handle = GetSpout();
|
||||
right.initialized = right.handle->CreateSender(
|
||||
(windowPtr->getName() + "_right").c_str(),
|
||||
windowPtr->getXFramebufferResolution(),
|
||||
windowPtr->getYFramebufferResolution()
|
||||
);
|
||||
}
|
||||
else {
|
||||
SpoutWindow::SpoutData& main = w.leftOrMain;
|
||||
main.handle = GetSpout();
|
||||
main.initialized = main.handle->CreateSender(
|
||||
windowPtr->getName().c_str(),
|
||||
windowPtr->getXFramebufferResolution(),
|
||||
windowPtr->getYFramebufferResolution()
|
||||
);
|
||||
}
|
||||
|
||||
SpoutWindows.push_back(std::move(w));
|
||||
#else
|
||||
LWARNING(
|
||||
"Spout was requested, but OpenSpace was compiled without Spout support."
|
||||
);
|
||||
|
||||
#endif // OPENSPACE_HAS_SPOUT
|
||||
}
|
||||
LTRACE("main::mainInitFunc(end)");
|
||||
}
|
||||
|
||||
@@ -148,7 +321,7 @@ void mainPostSyncPreDrawFunc() {
|
||||
// Update pose matrices for all tracked OpenVR devices once per frame
|
||||
sgct::SGCTOpenVR::updatePoses();
|
||||
}
|
||||
#endif
|
||||
#endif // OPENVR_SUPPORT
|
||||
|
||||
LTRACE("main::postSynchronizationPreDraw(end)");
|
||||
}
|
||||
@@ -175,13 +348,11 @@ void mainRenderFunc() {
|
||||
}
|
||||
#endif
|
||||
|
||||
if (SgctEngine->isMaster()) {
|
||||
OsEng.render(viewMatrix, projectionMatrix);
|
||||
}
|
||||
else {
|
||||
glm::mat4 sceneMatrix = SgctEngine->getModelMatrix();
|
||||
OsEng.render(viewMatrix * sceneMatrix, projectionMatrix);
|
||||
}
|
||||
OsEng.render(
|
||||
SgctEngine->getModelMatrix(),
|
||||
viewMatrix,
|
||||
projectionMatrix
|
||||
);
|
||||
LTRACE("main::mainRenderFunc(end)");
|
||||
}
|
||||
|
||||
@@ -193,9 +364,38 @@ void mainPostDrawFunc() {
|
||||
// Copy the first OpenVR window to the HMD
|
||||
sgct::SGCTOpenVR::copyWindowToHMD(FirstOpenVRWindow);
|
||||
}
|
||||
#endif
|
||||
#endif // OPENVR_SUPPORT
|
||||
|
||||
OsEng.postDraw();
|
||||
|
||||
#ifdef OPENSPACE_HAS_SPOUT
|
||||
for (const SpoutWindow& w : SpoutWindows) {
|
||||
sgct::SGCTWindow* window = SgctEngine->getWindowPtr(w.windowId);
|
||||
if (w.leftOrMain.initialized) {
|
||||
GLuint texId = window->getFrameBufferTexture(sgct::Engine::LeftEye);
|
||||
glBindTexture(GL_TEXTURE_2D, texId);
|
||||
w.leftOrMain.handle->SendTexture(
|
||||
texId,
|
||||
GL_TEXTURE_2D,
|
||||
window->getXFramebufferResolution(),
|
||||
window->getYFramebufferResolution()
|
||||
);
|
||||
}
|
||||
|
||||
if (w.right.initialized) {
|
||||
GLuint texId = window->getFrameBufferTexture(sgct::Engine::RightEye);
|
||||
glBindTexture(GL_TEXTURE_2D, texId);
|
||||
w.right.handle->SendTexture(
|
||||
texId,
|
||||
GL_TEXTURE_2D,
|
||||
window->getXFramebufferResolution(),
|
||||
window->getYFramebufferResolution()
|
||||
);
|
||||
}
|
||||
}
|
||||
glBindTexture(GL_TEXTURE_2D, 0);
|
||||
#endif // OPENSPACE_HAS_SPOUT
|
||||
|
||||
LTRACE("main::mainPostDrawFunc(end)");
|
||||
}
|
||||
|
||||
@@ -236,7 +436,7 @@ void mainMousePosCallback(double x, double y) {
|
||||
}
|
||||
}
|
||||
|
||||
void mainMouseScrollCallback(double posX, double posY) {
|
||||
void mainMouseScrollCallback(double, double posY) {
|
||||
LTRACE("main::mainMouseScrollCallback(begin");
|
||||
if (SgctEngine->isMaster()) {
|
||||
OsEng.mouseScrollWheelCallback(posY);
|
||||
@@ -368,6 +568,25 @@ int main_main(int argc, char** argv) {
|
||||
|
||||
LDEBUG("Destroying SGCT Engine");
|
||||
delete SgctEngine;
|
||||
|
||||
|
||||
#ifdef OPENVR_SUPPORT
|
||||
// Clean up OpenVR
|
||||
sgct::SGCTOpenVR::shutdown();
|
||||
#endif
|
||||
|
||||
#ifdef OPENSPACE_HAS_SPOUT
|
||||
for (SpoutWindow& w : SpoutWindows) {
|
||||
if (w.leftOrMain.handle) {
|
||||
w.leftOrMain.handle->ReleaseReceiver();
|
||||
w.leftOrMain.handle->Release();
|
||||
}
|
||||
if (w.right.handle) {
|
||||
w.right.handle->ReleaseReceiver();
|
||||
w.right.handle->Release();
|
||||
}
|
||||
}
|
||||
#endif // OPENSPACE_HAS_SPOUT
|
||||
};
|
||||
|
||||
bool initSuccess = SgctEngine->init(versionMapping[glVersion]);
|
||||
@@ -385,11 +604,6 @@ int main_main(int argc, char** argv) {
|
||||
|
||||
cleanup();
|
||||
|
||||
#ifdef OPENVR_SUPPORT
|
||||
// Clean up OpenVR
|
||||
sgct::SGCTOpenVR::shutdown();
|
||||
#endif
|
||||
|
||||
// Exit program
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
||||
@@ -397,6 +611,10 @@ int main_main(int argc, char** argv) {
|
||||
} // namespace
|
||||
|
||||
int main(int argc, char** argv) {
|
||||
#ifdef WIN32
|
||||
SetUnhandledExceptionFilter(generateMiniDump);
|
||||
#endif // WIN32
|
||||
|
||||
// If we are working as a developer, we don't want to catch the exceptions in order to
|
||||
// find the locations where the exceptions are raised.
|
||||
// If we are not in developer mode, we want to catch and at least log the error before
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
<Pos x="0" y="300" />
|
||||
<!-- 16:9 aspect ratio -->
|
||||
<Size x="1280" y="720" />
|
||||
<Viewport>
|
||||
<Pos x="0.0" y="0.0" />
|
||||
<Size x="1.0" y="1.0" />
|
||||
<PlanarProjection>
|
||||
|
||||
@@ -43,7 +43,7 @@ function postInitialization()
|
||||
graphical settings for the renderables.
|
||||
]]--
|
||||
openspace.printInfo("Setting default values")
|
||||
openspace.setPropertyValue("Sun.renderable.enabled", false)
|
||||
openspace.setPropertyValue("Sun.renderable.enabled", true)
|
||||
openspace.setPropertyValue("SunMarker.renderable.enabled", false)
|
||||
openspace.setPropertyValue("EarthMarker.renderable.enabled", false)
|
||||
openspace.setPropertyValue("Constellation Bounds.renderable.enabled", false)
|
||||
@@ -69,8 +69,10 @@ return {
|
||||
--Focus = "Mars",
|
||||
--Position = {526781518487.171326, 257168309890.072144, -1381125204152.817383},
|
||||
--Rotation = {-0.106166, 0.981574, -0.084545, 0.134513},
|
||||
Position = {-21230341452.764542, -75199905816.520981, 126295587136.952240},
|
||||
Rotation = {0.243724, 0.002268, 0.964416, 0.102449},
|
||||
--Position = {-21230341452.764542, -75199905816.520981, 126295587136.952240},
|
||||
--Rotation = {0.243724, 0.002268, 0.964416, 0.102449},
|
||||
Position = {-21235464763.652920, -75191278487.585068, 126294839057.346405},
|
||||
Rotation = {0.224913, -0.096227, 0.939918, 0.238136},
|
||||
},
|
||||
Modules = {
|
||||
"sun",
|
||||
|
||||
@@ -23,23 +23,23 @@ return {
|
||||
Body = "EARTH",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 6.3781366, 6 },
|
||||
--Radius = { 6.420, 6 },
|
||||
Radius = 6.3781366E6,
|
||||
--Radius = 6.420E6,
|
||||
Segments = 100
|
||||
},
|
||||
Shadow_Group = {
|
||||
Source1 = {
|
||||
Name = "Sun",
|
||||
-- All radius in meters
|
||||
Radius = {696.0, 6}
|
||||
Radius = 696.3E6
|
||||
},
|
||||
--Source2 = { Name = "Monolith", Radius = {0.01, 6} },
|
||||
--Source2 = { Name = "Monolith", Radius = 0.01E6 },
|
||||
Caster1 = {
|
||||
Name = "Moon",
|
||||
-- All radius in meters
|
||||
Radius = {1.737, 6}
|
||||
Radius = 1.737E6
|
||||
},
|
||||
--Caster2 = { Name = "Independency Day Ship", Radius = {0.0, 0.0} }
|
||||
--Caster2 = { Name = "Independency Day Ship", Radius = 0 }
|
||||
},
|
||||
Textures = {
|
||||
Type = "simple",
|
||||
@@ -148,7 +148,7 @@ return {
|
||||
Parent = "Earth",
|
||||
Renderable = {
|
||||
Type = "RenderablePlane",
|
||||
Size = {3.0, 11.0},
|
||||
Size = 3.0E11.0,
|
||||
Origin = "Center",
|
||||
Billboard = true,
|
||||
Texture = "textures/marker.png",
|
||||
@@ -167,7 +167,7 @@ return {
|
||||
-- Renderable = {
|
||||
-- Type = "RenderablePlane",
|
||||
-- Billboard = true,
|
||||
-- Size = { 6.371, 6 },
|
||||
-- Size = 6.371E6,
|
||||
-- Texture = "textures/graph.jpg",
|
||||
-- Atmosphere = {
|
||||
-- Type = "Nishita", -- for example, values missing etc etc
|
||||
|
||||
@@ -11,7 +11,6 @@ function preInitialization()
|
||||
|
||||
openspace.time.setTime(openspace.time.currentWallTime())
|
||||
dofile(openspace.absPath('${SCRIPTS}/bind_common_keys.lua'))
|
||||
|
||||
end
|
||||
|
||||
function postInitialization()
|
||||
@@ -28,6 +27,8 @@ function postInitialization()
|
||||
openspace.setPropertyValue("MilkyWay.renderable.transparency", 0.55)
|
||||
openspace.setPropertyValue("MilkyWay.renderable.segments", 50)
|
||||
|
||||
openspace.addVirtualProperty("BoolProperty", "Show Trails", "*Trail.renderable.enabled", true, nil, nil)
|
||||
|
||||
openspace.resetCameraDirection()
|
||||
|
||||
openspace.printInfo("Done setting default values")
|
||||
|
||||
@@ -34,7 +34,7 @@ return {
|
||||
Body = "EARTH",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 6.371, 6 },
|
||||
Radius = 6.371E6,
|
||||
Segments = 100
|
||||
},
|
||||
Textures = {
|
||||
@@ -49,6 +49,7 @@ return {
|
||||
MieColor = {1.0, 1.0, 1.0}
|
||||
}
|
||||
},
|
||||
Tag = {"planet_solarSystem", "planet_terrestrial"},
|
||||
Transform = {
|
||||
Rotation = {
|
||||
Type = "SpiceRotation",
|
||||
@@ -78,9 +79,10 @@ return {
|
||||
-- EndTime = "2017 JAN 01 12:00:00.000",
|
||||
-- SampleInterval = 3600
|
||||
Period = 365.242,
|
||||
Resolution = 1000
|
||||
Resolution = 1000,
|
||||
Tag = {"planetTrail_solarSystem", "planetTrail_terrestrial"}
|
||||
},
|
||||
GuiName = "/Solar/EarthTrail"
|
||||
GuiName = "/Solar/EarthTrail",
|
||||
},
|
||||
--[[
|
||||
{
|
||||
@@ -88,7 +90,7 @@ return {
|
||||
Parent = "Earth",
|
||||
Renderable = {
|
||||
Type = "RenderablePlane",
|
||||
Size = {3.0, 11.0},
|
||||
Size = 3.0E11,
|
||||
Origin = "Center",
|
||||
Billboard = true,
|
||||
Texture = "textures/marker.png",
|
||||
|
||||
@@ -9,7 +9,7 @@ return {
|
||||
Body = "CALLISTO",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 2.631, 6},
|
||||
Radius = 2.631E6,
|
||||
Segments = 100
|
||||
},
|
||||
Textures = {
|
||||
|
||||
@@ -9,7 +9,7 @@ return {
|
||||
Body = "EUROPA",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 1.561, 6},
|
||||
Radius = 1.561E6,
|
||||
Segments = 100
|
||||
},
|
||||
Textures = {
|
||||
|
||||
@@ -9,7 +9,7 @@ return {
|
||||
Body = "JUPITER BARYCENTER",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 2.631, 6},
|
||||
Radius = 2.631E6,
|
||||
Segments = 100
|
||||
},
|
||||
Textures = {
|
||||
|
||||
@@ -9,7 +9,7 @@ return {
|
||||
Body = "IO",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 1.8213, 6 },
|
||||
Radius = 1.8213E6,
|
||||
Segments = 100
|
||||
},
|
||||
Textures = {
|
||||
|
||||
@@ -22,7 +22,7 @@ return {
|
||||
Body = "JUPITER BARYCENTER",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 0.71492, 8 },
|
||||
Radius = 0.71492E8,
|
||||
Segments = 200
|
||||
},
|
||||
Textures = {
|
||||
@@ -35,6 +35,7 @@ return {
|
||||
MieColor = {1.0, 1.0, 1.0}
|
||||
}
|
||||
},
|
||||
Tag = "planet_solarSystem",
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
@@ -64,7 +65,8 @@ return {
|
||||
},
|
||||
Color = { 0.8, 0.7, 0.7 },
|
||||
Period = 4330.595,
|
||||
Resolution = 1000
|
||||
}
|
||||
Resolution = 1000,
|
||||
},
|
||||
Tag = "planetTrail_solarSystem"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,13 +56,14 @@ return {
|
||||
SegmentsPerPatch = 64,
|
||||
Layers = {
|
||||
ColorLayers = {
|
||||
|
||||
{
|
||||
Name = "ESRI VIIRS Combo",
|
||||
Type = "ByLevel",
|
||||
LevelTileProviders = {
|
||||
{
|
||||
MaxLevel = 7,
|
||||
TileProvider = { FilePath = "map_service_configs/GIBS/VIIRS_SNPP_CorrectedReflectance_TrueColor.xml", },
|
||||
MaxLevel = 3,
|
||||
TileProvider = { Type = "Temporal", FilePath = "map_service_configs/GIBS/Temporal_VIIRS_SNPP_CorrectedReflectance_TrueColor.xml", },
|
||||
},
|
||||
{
|
||||
MaxLevel = 22,
|
||||
@@ -71,6 +72,10 @@ return {
|
||||
},
|
||||
Enabled = true,
|
||||
},
|
||||
{
|
||||
Name = "ESRI Imagery World",
|
||||
FilePath = "map_service_configs/ESRI/ESRI_Imagery_World_2D.wms"
|
||||
},
|
||||
{
|
||||
Type = "Temporal",
|
||||
Name = "Temporal VIIRS SNPP",
|
||||
@@ -81,6 +86,11 @@ return {
|
||||
Name = "Temporal_GHRSST_L4_MUR_Sea_Surface_Temperature",
|
||||
FilePath = "map_service_configs/GIBS/Temporal_GHRSST_L4_MUR_Sea_Surface_Temperature.xml",
|
||||
},
|
||||
{
|
||||
Type = "Temporal",
|
||||
Name = "Temporal_AMSR2_GCOM_W1_Sea_Ice_Concentration",
|
||||
FilePath = "map_service_configs/GIBS/Temporal_AMSR2_GCOM_W1_Sea_Ice_Concentration.xml",
|
||||
},
|
||||
-- {
|
||||
-- Type = "SingleImage",
|
||||
-- Name = "Debug Tiles",
|
||||
@@ -104,6 +114,11 @@ return {
|
||||
FilePath = "map_service_configs/GIBS/VIIRS_CityLights_2012.xml",
|
||||
Enabled = true,
|
||||
},
|
||||
{
|
||||
Type = "Temporal",
|
||||
Name = "Temporal Earth at Night",
|
||||
FilePath = "map_service_configs/GIBS/Temporal_VIIRS_SNPP_DayNightBand_ENCC.xml"
|
||||
}
|
||||
},
|
||||
WaterMasks = {
|
||||
{
|
||||
@@ -159,7 +174,7 @@ return {
|
||||
Name = "Terrain tileset",
|
||||
FilePath = "map_service_configs/ESRI/TERRAIN.wms",
|
||||
Enabled = true,
|
||||
MinimumPixelSize = 64,
|
||||
TilePixelSize = 64,
|
||||
DoPreProcessing = true,
|
||||
},
|
||||
},
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
<BandsCount>3</BandsCount>
|
||||
<MaxConnections>5</MaxConnections>
|
||||
<Cache>
|
||||
<Path>./GDAL_Cache_ESRI_Imagery_World_2d</Path>
|
||||
<Depth>10</Depth>
|
||||
<Path>./GDAL_Cache/ESRI_Imagery_World_2d</Path>
|
||||
<Depth>4</Depth>
|
||||
<Extension>.jpg</Extension>
|
||||
</Cache>
|
||||
<OfflineMode>false</OfflineMode>
|
||||
|
||||
@@ -1,14 +1,21 @@
|
||||
<GDAL_WMS>
|
||||
<Service name="TiledWMS">
|
||||
<ServerUrl>http://198.102.45.23/arcgis/rest/services/worldelevation3d/terrain3d?</ServerUrl>
|
||||
<TiledGroupName>GCS_Elevation</TiledGroupName>
|
||||
</Service>
|
||||
<DataWindow>
|
||||
<UpperLeftX>-180.0</UpperLeftX>
|
||||
<UpperLeftY>90.0</UpperLeftY>
|
||||
<LowerRightX>180.0</LowerRightX>
|
||||
<LowerRightY>-90.0</LowerRightY>
|
||||
<YOrigin>bottom</YOrigin>
|
||||
</DataWindow>
|
||||
<Timeout>2</Timeout>
|
||||
<Service name="TiledWMS">
|
||||
<ServerUrl>http://198.102.45.23/arcgis/rest/services/worldelevation3d/terrain3d?</ServerUrl>
|
||||
<TiledGroupName>GCS_Elevation</TiledGroupName>
|
||||
</Service>
|
||||
<DataWindow>
|
||||
<UpperLeftX>-180.0</UpperLeftX>
|
||||
<UpperLeftY>90.0</UpperLeftY>
|
||||
<LowerRightX>180.0</LowerRightX>
|
||||
<LowerRightY>-90.0</LowerRightY>
|
||||
<YOrigin>bottom</YOrigin>
|
||||
</DataWindow>
|
||||
<Timeout>2</Timeout>
|
||||
<MaxConnections>5</MaxConnections>
|
||||
<Cache>
|
||||
<Path>./GDAL_Cache/TERRAIN</Path>
|
||||
<Depth>4</Depth>
|
||||
<Extension>.jpg</Extension>
|
||||
</Cache>
|
||||
<OfflineMode>false</OfflineMode>
|
||||
</GDAL_WMS>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<GDAL_WMS>
|
||||
<Service name="TMS">
|
||||
<ServerUrl>http://map1.vis.earthdata.nasa.gov/wmts-geo/Coastlines/default/2013-08-21/EPSG4326_250m/${z}/${y}/${x}.png</ServerUrl>
|
||||
<ServerUrl>https://gibs.earthdata.nasa.gov/wmts/epsg4326/best/Coastlines/default/2013-08-21/250m/${z}/${y}/${x}.png</ServerUrl>
|
||||
</Service>
|
||||
<DataWindow>
|
||||
<UpperLeftX>-180.0</UpperLeftX>
|
||||
@@ -16,4 +16,14 @@
|
||||
<BlockSizeX>512</BlockSizeX>
|
||||
<BlockSizeY>512</BlockSizeY>
|
||||
<BandsCount>4</BandsCount>
|
||||
</GDAL_WMS>
|
||||
<UnsafeSSL>true</UnsafeSSL>
|
||||
<ZeroBlockHttpCodes>400</ZeroBlockHttpCodes>
|
||||
<ZeroBlockOnServerException>true</ZeroBlockOnServerException>
|
||||
<MaxConnections>5</MaxConnections>
|
||||
<Cache>
|
||||
<Path>./GDAL_Cache/Coastlines</Path>
|
||||
<Depth>4</Depth>
|
||||
<Extension>.png</Extension>
|
||||
</Cache>
|
||||
<OfflineMode>false</OfflineMode>
|
||||
</GDAL_WMS>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<GDAL_WMS>
|
||||
<Service name="TMS">
|
||||
<ServerUrl>http://map1.vis.earthdata.nasa.gov/wmts-geo/MODIS_Aqua_CorrectedReflectance_TrueColor/default/2013-08-21/EPSG4326_250m/${z}/${y}/${x}.jpg</ServerUrl>
|
||||
<ServerUrl>https://gibs.earthdata.nasa.gov/wmts/epsg4326/best/MODIS_Aqua_CorrectedReflectance_TrueColor/default/2013-08-21/250m/${z}/${y}/${x}.jpg</ServerUrl>
|
||||
</Service>
|
||||
<DataWindow>
|
||||
<UpperLeftX>-180.0</UpperLeftX>
|
||||
@@ -16,4 +16,14 @@
|
||||
<BlockSizeX>512</BlockSizeX>
|
||||
<BlockSizeY>512</BlockSizeY>
|
||||
<BandsCount>3</BandsCount>
|
||||
</GDAL_WMS>
|
||||
<MaxConnections>5</MaxConnections>
|
||||
<Cache>
|
||||
<Path>./GDAL_Cache/GIBS_Aqua_MODIS_true</Path>
|
||||
<Depth>4</Depth>
|
||||
<Extension>.jpg</Extension>
|
||||
</Cache>
|
||||
<OfflineMode>false</OfflineMode>
|
||||
<UnsafeSSL>true</UnsafeSSL>
|
||||
<ZeroBlockHttpCodes>400</ZeroBlockHttpCodes>
|
||||
<ZeroBlockOnServerException>true</ZeroBlockOnServerException>
|
||||
</GDAL_WMS>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<GDAL_WMS>
|
||||
<Service name="TMS">
|
||||
<ServerUrl>http://map1.vis.earthdata.nasa.gov/wmts-geo/MODIS_Terra_Brightness_Temp_Band31_Day/default/2013-08-21/EPSG4326_1km/${z}/${y}/${x}.png</ServerUrl>
|
||||
<ServerUrl>https://gibs.earthdata.nasa.gov/wmts/epsg4326/best/MODIS_Terra_Brightness_Temp_Band31_Day/default/2013-08-21/1km/${z}/${y}/${x}.png</ServerUrl>
|
||||
</Service>
|
||||
<DataWindow>
|
||||
<UpperLeftX>-180.0</UpperLeftX>
|
||||
@@ -16,4 +16,14 @@
|
||||
<BlockSizeX>512</BlockSizeX>
|
||||
<BlockSizeY>512</BlockSizeY>
|
||||
<BandsCount>4</BandsCount>
|
||||
</GDAL_WMS>
|
||||
<MaxConnections>5</MaxConnections>
|
||||
<Cache>
|
||||
<Path>./GDAL_Cache/MODIS_Terra_Brightness_Temp_Band31_Day</Path>
|
||||
<Depth>4</Depth>
|
||||
<Extension>.png</Extension>
|
||||
</Cache>
|
||||
<OfflineMode>false</OfflineMode>
|
||||
<UnsafeSSL>true</UnsafeSSL>
|
||||
<ZeroBlockHttpCodes>400</ZeroBlockHttpCodes>
|
||||
<ZeroBlockOnServerException>true</ZeroBlockOnServerException>
|
||||
</GDAL_WMS>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<GDAL_WMS>
|
||||
<Service name="TMS">
|
||||
<ServerUrl>http://map1.vis.earthdata.nasa.gov/wmts-geo/MODIS_Terra_CorrectedReflectance_TrueColor/default/2016-05-16/EPSG4326_250m/${z}/${y}/${x}.jpg</ServerUrl>
|
||||
<ServerUrl>https://gibs.earthdata.nasa.gov/wmts/epsg4326/best/MODIS_Terra_CorrectedReflectance_TrueColor/default/2013-08-21/250m/${z}/${y}/${x}.jpg</ServerUrl>
|
||||
</Service>
|
||||
<DataWindow>
|
||||
<UpperLeftX>-180.0</UpperLeftX>
|
||||
@@ -16,4 +16,14 @@
|
||||
<BlockSizeX>512</BlockSizeX>
|
||||
<BlockSizeY>512</BlockSizeY>
|
||||
<BandsCount>3</BandsCount>
|
||||
</GDAL_WMS>
|
||||
<MaxConnections>5</MaxConnections>
|
||||
<Cache>
|
||||
<Path>./GDAL_Cache/MODIS_Terra_CorrectedReflectance_TrueColor</Path>
|
||||
<Depth>4</Depth>
|
||||
<Extension>.jpg</Extension>
|
||||
</Cache>
|
||||
<OfflineMode>false</OfflineMode>
|
||||
<UnsafeSSL>true</UnsafeSSL>
|
||||
<ZeroBlockHttpCodes>400</ZeroBlockHttpCodes>
|
||||
<ZeroBlockOnServerException>true</ZeroBlockOnServerException>
|
||||
</GDAL_WMS>
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
<GDAL_WMS>
|
||||
<Service name="TMS">
|
||||
<ServerUrl>http://map1.vis.earthdata.nasa.gov/wmts-geo/MODIS_Terra_CorrectedReflectance_TrueColor/default/${t}/EPSG4326_250m/${z}/${y}/${x}.jpg</ServerUrl>
|
||||
</Service>
|
||||
<DataWindow>
|
||||
<UpperLeftX>-180.0</UpperLeftX>
|
||||
<UpperLeftY>90</UpperLeftY>
|
||||
<LowerRightX>396.0</LowerRightX>
|
||||
<LowerRightY>-198</LowerRightY>
|
||||
<TileLevel>8</TileLevel>
|
||||
<TileCountX>2</TileCountX>
|
||||
<TileCountY>1</TileCountY>
|
||||
<YOrigin>top</YOrigin>
|
||||
</DataWindow>
|
||||
<Projection>EPSG:4326</Projection>
|
||||
<BlockSizeX>512</BlockSizeX>
|
||||
<BlockSizeY>512</BlockSizeY>
|
||||
<BandsCount>3</BandsCount>
|
||||
</GDAL_WMS>
|
||||
@@ -1,6 +1,6 @@
|
||||
<GDAL_WMS>
|
||||
<Service name="TMS">
|
||||
<ServerUrl>http://map1.vis.earthdata.nasa.gov/wmts-geo/MODIS_Water_Mask/default/2013-08-21/EPSG4326_250m/${z}/${y}/${x}.png</ServerUrl>
|
||||
<ServerUrl>https://gibs.earthdata.nasa.gov/wmts/epsg4326/best/MODIS_Water_Mask/default/2013-08-21/250m/${z}/${y}/${x}.png</ServerUrl>
|
||||
</Service>
|
||||
<DataWindow>
|
||||
<UpperLeftX>-180.0</UpperLeftX>
|
||||
@@ -16,4 +16,14 @@
|
||||
<BlockSizeX>512</BlockSizeX>
|
||||
<BlockSizeY>512</BlockSizeY>
|
||||
<BandsCount>4</BandsCount>
|
||||
</GDAL_WMS>
|
||||
<MaxConnections>5</MaxConnections>
|
||||
<Cache>
|
||||
<Path>./GDAL_Cache/MODIS_Water_Mask</Path>
|
||||
<Depth>4</Depth>
|
||||
<Extension>.png</Extension>
|
||||
</Cache>
|
||||
<OfflineMode>false</OfflineMode>
|
||||
<UnsafeSSL>true</UnsafeSSL>
|
||||
<ZeroBlockHttpCodes>400</ZeroBlockHttpCodes>
|
||||
<ZeroBlockOnServerException>true</ZeroBlockOnServerException>
|
||||
</GDAL_WMS>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<GDAL_WMS>
|
||||
<Service name="TMS">
|
||||
<ServerUrl>http://map1.vis.earthdata.nasa.gov/wmts-geo/Reference_Features/default/2013-08-21/EPSG4326_250m/${z}/${y}/${x}.png</ServerUrl>
|
||||
<ServerUrl>https://gibs.earthdata.nasa.gov/wmts/epsg4326/best/Reference_Features/default/2013-08-21/250m/${z}/${y}/${x}.png</ServerUrl>
|
||||
</Service>
|
||||
<DataWindow>
|
||||
<UpperLeftX>-180.0</UpperLeftX>
|
||||
@@ -16,4 +16,14 @@
|
||||
<BlockSizeX>512</BlockSizeX>
|
||||
<BlockSizeY>512</BlockSizeY>
|
||||
<BandsCount>4</BandsCount>
|
||||
</GDAL_WMS>
|
||||
<MaxConnections>5</MaxConnections>
|
||||
<Cache>
|
||||
<Path>./GDAL_Cache/Reference_Features</Path>
|
||||
<Depth>4</Depth>
|
||||
<Extension>.png</Extension>
|
||||
</Cache>
|
||||
<OfflineMode>false</OfflineMode>
|
||||
<UnsafeSSL>true</UnsafeSSL>
|
||||
<ZeroBlockHttpCodes>400</ZeroBlockHttpCodes>
|
||||
<ZeroBlockOnServerException>true</ZeroBlockOnServerException>
|
||||
</GDAL_WMS>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<GDAL_WMS>
|
||||
<Service name="TMS">
|
||||
<ServerUrl>http://map1.vis.earthdata.nasa.gov/wmts-geo/Reference_Labels/default/2013-08-21/EPSG4326_250m/${z}/${y}/${x}.png</ServerUrl>
|
||||
<ServerUrl>https://gibs.earthdata.nasa.gov/wmts/epsg4326/best/Reference_Labels/default/2013-08-21/250m/${z}/${y}/${x}.png</ServerUrl>
|
||||
</Service>
|
||||
<DataWindow>
|
||||
<UpperLeftX>-180.0</UpperLeftX>
|
||||
@@ -16,4 +16,14 @@
|
||||
<BlockSizeX>512</BlockSizeX>
|
||||
<BlockSizeY>512</BlockSizeY>
|
||||
<BandsCount>4</BandsCount>
|
||||
</GDAL_WMS>
|
||||
<MaxConnections>5</MaxConnections>
|
||||
<Cache>
|
||||
<Path>./GDAL_Cache/Reference_Labels</Path>
|
||||
<Depth>4</Depth>
|
||||
<Extension>.png</Extension>
|
||||
</Cache>
|
||||
<OfflineMode>false</OfflineMode>
|
||||
<UnsafeSSL>true</UnsafeSSL>
|
||||
<ZeroBlockHttpCodes>400</ZeroBlockHttpCodes>
|
||||
<ZeroBlockOnServerException>true</ZeroBlockOnServerException>
|
||||
</GDAL_WMS>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<GDAL_WMS>
|
||||
<Service name="TiledWMS">
|
||||
<ServerUrl>http://map1.vis.earthdata.nasa.gov/twms-geo/twms.cgi?</ServerUrl>
|
||||
<ServerUrl>https://gibs.earthdata.nasa.gov/twms/twms.cgi?</ServerUrl>
|
||||
<TiledGroupName>MODIS TERRA tileset</TiledGroupName>
|
||||
<Change key="${time}">2016-04-12</Change>
|
||||
</Service>
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
<OpenSpaceTemporalGDALDataset>
|
||||
<OpenSpaceTimeStart>2012-05-08</OpenSpaceTimeStart>
|
||||
<OpenSpaceTimeEnd></OpenSpaceTimeEnd>
|
||||
<OpenSpaceTimeResolution>1d</OpenSpaceTimeResolution>
|
||||
<OpenSpaceTimeIdFormat>YYYY-MM-DD</OpenSpaceTimeIdFormat>
|
||||
<GDAL_WMS>
|
||||
<Service name="TMS">
|
||||
<ServerUrl>https://gibs.earthdata.nasa.gov/wmts/epsg4326/best/AMSR2_Sea_Ice_Concentration_12km/default/${OpenSpaceTimeId}/2km/${z}/${y}/${x}.png</ServerUrl>
|
||||
</Service>
|
||||
<DataWindow>
|
||||
<UpperLeftX>-180.0</UpperLeftX>
|
||||
<UpperLeftY>90</UpperLeftY>
|
||||
<LowerRightX>396.0</LowerRightX>
|
||||
<LowerRightY>-198</LowerRightY>
|
||||
<TileLevel>8</TileLevel>
|
||||
<TileCountX>2</TileCountX>
|
||||
<TileCountY>1</TileCountY>
|
||||
<YOrigin>top</YOrigin>
|
||||
</DataWindow>
|
||||
<Projection>EPSG:4326</Projection>
|
||||
<BlockSizeX>512</BlockSizeX>
|
||||
<BlockSizeY>512</BlockSizeY>
|
||||
<BandsCount>3</BandsCount>
|
||||
<UnsafeSSL>true</UnsafeSSL>
|
||||
<ZeroBlockHttpCodes>400</ZeroBlockHttpCodes>
|
||||
<ZeroBlockOnServerException>true</ZeroBlockOnServerException>
|
||||
</GDAL_WMS>
|
||||
</OpenSpaceTemporalGDALDataset>
|
||||
@@ -6,7 +6,7 @@
|
||||
<GDAL_WMS>
|
||||
<Service name="WMS">
|
||||
<Version>1.1.1</Version>
|
||||
<ServerUrl>http://map2.vis.earthdata.nasa.gov/wms/wms.php?TIME=${OpenSpaceTimeId}</ServerUrl>
|
||||
<ServerUrl>https://gibs.earthdata.nasa.gov/wms/wms.php?TIME=${OpenSpaceTimeId}</ServerUrl>
|
||||
<SRS>EPSG:4326</SRS>
|
||||
<ImageFormat>image/png</ImageFormat>
|
||||
<Transparent>TRUE</Transparent>
|
||||
@@ -26,11 +26,8 @@
|
||||
<BlockSizeX>512</BlockSizeX>
|
||||
<BlockSizeY>512</BlockSizeY>
|
||||
<BandsCount>3</BandsCount>
|
||||
<UnsafeSSL>true</UnsafeSSL>
|
||||
<ZeroBlockHttpCodes>400</ZeroBlockHttpCodes>
|
||||
<ZeroBlockOnServerException>true</ZeroBlockOnServerException>
|
||||
</GDAL_WMS>
|
||||
</OpenSpaceTemporalGDALDataset>
|
||||
<!--
|
||||
https://map2.vis.earthdata.nasa.gov/wms/wms.php?TIME=2014-07-17&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=Aqua_Orbit_Asc&WIDTH=512&HEIGHT=512&SRS=EPSG%3A4326&STYLES=&BBOX=46.125%2C48.375%2C46.6875%2C48.9375
|
||||
|
||||
|
||||
https://map2.vis.earthdata.nasa.gov/wms/wms.php?TIME=2015-11-23&service=WMS&request=GetMap&version=1.1.1&layers=Aqua_Orbit_Asc&styles=&srs=EPSG:4326&transparent=FALSE&format=image/png&width=512&height=512&bbox=-180.00000000,18.00000000,-108.00000000,90.00000000
|
||||
-->
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<OpenSpaceTimeIdFormat>YYYY-MM-DD</OpenSpaceTimeIdFormat>
|
||||
<GDAL_WMS>
|
||||
<Service name="TMS">
|
||||
<ServerUrl>http://map1.vis.earthdata.nasa.gov/wmts-geo/GHRSST_L4_MUR_Sea_Surface_Temperature/default/${OpenSpaceTimeId}/EPSG4326_1km/${z}/${y}/${x}.png</ServerUrl>
|
||||
<ServerUrl>https://gibs.earthdata.nasa.gov/wmts/epsg4326/best/GHRSST_L4_MUR_Sea_Surface_Temperature/default/${OpenSpaceTimeId}/250m/${z}/${y}/${x}.png</ServerUrl>
|
||||
</Service>
|
||||
<DataWindow>
|
||||
<UpperLeftX>-180.0</UpperLeftX>
|
||||
@@ -21,5 +21,8 @@
|
||||
<BlockSizeX>512</BlockSizeX>
|
||||
<BlockSizeY>512</BlockSizeY>
|
||||
<BandsCount>4</BandsCount>
|
||||
<UnsafeSSL>true</UnsafeSSL>
|
||||
<ZeroBlockHttpCodes>400</ZeroBlockHttpCodes>
|
||||
<ZeroBlockOnServerException>true</ZeroBlockOnServerException>
|
||||
</GDAL_WMS>
|
||||
</OpenSpaceTemporalGDALDataset>
|
||||
</OpenSpaceTemporalGDALDataset>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<OpenSpaceTimeIdFormat>YYYY-MM-DD</OpenSpaceTimeIdFormat>
|
||||
<GDAL_WMS>
|
||||
<Service name="TMS">
|
||||
<ServerUrl>http://map1.vis.earthdata.nasa.gov/wmts-geo/MODIS_Aqua_CorrectedReflectance_TrueColor/default/${OpenSpaceTimeId}/EPSG4326_250m/${z}/${y}/${x}.jpg</ServerUrl>
|
||||
<ServerUrl>https://gibs.earthdata.nasa.gov/wmts/epsg4326/best/MODIS_Aqua_CorrectedReflectance_TrueColor/default/${OpenSpaceTimeId}/250m/${z}/${y}/${x}.jpg</ServerUrl>
|
||||
</Service>
|
||||
<DataWindow>
|
||||
<UpperLeftX>-180.0</UpperLeftX>
|
||||
@@ -21,5 +21,8 @@
|
||||
<BlockSizeX>512</BlockSizeX>
|
||||
<BlockSizeY>512</BlockSizeY>
|
||||
<BandsCount>3</BandsCount>
|
||||
<UnsafeSSL>true</UnsafeSSL>
|
||||
<ZeroBlockHttpCodes>400</ZeroBlockHttpCodes>
|
||||
<ZeroBlockOnServerException>true</ZeroBlockOnServerException>
|
||||
</GDAL_WMS>
|
||||
</OpenSpaceTemporalGDALDataset>
|
||||
</OpenSpaceTemporalGDALDataset>
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
<OpenSpaceTemporalGDALDataset>
|
||||
<OpenSpaceTimeStart>2012-05-08</OpenSpaceTimeStart>
|
||||
<OpenSpaceTimeEnd></OpenSpaceTimeEnd>
|
||||
<OpenSpaceTimeResolution>1d</OpenSpaceTimeResolution>
|
||||
<OpenSpaceTimeIdFormat>YYYY-MM-DD</OpenSpaceTimeIdFormat>
|
||||
<GDAL_WMS>
|
||||
<Service name="TMS">
|
||||
<ServerUrl>https://gibs.earthdata.nasa.gov/wmts/epsg4326/best/MODIS_Terra_CorrectedReflectance_TrueColor/default/${OpenSpaceTimeId}/250m/${z}/${y}/${x}.jpg</ServerUrl>
|
||||
</Service>
|
||||
<DataWindow>
|
||||
<UpperLeftX>-180.0</UpperLeftX>
|
||||
<UpperLeftY>90</UpperLeftY>
|
||||
<LowerRightX>396.0</LowerRightX>
|
||||
<LowerRightY>-198</LowerRightY>
|
||||
<TileLevel>8</TileLevel>
|
||||
<TileCountX>2</TileCountX>
|
||||
<TileCountY>1</TileCountY>
|
||||
<YOrigin>top</YOrigin>
|
||||
</DataWindow>
|
||||
<Projection>EPSG:4326</Projection>
|
||||
<BlockSizeX>512</BlockSizeX>
|
||||
<BlockSizeY>512</BlockSizeY>
|
||||
<BandsCount>3</BandsCount>
|
||||
<UnsafeSSL>true</UnsafeSSL>
|
||||
<ZeroBlockHttpCodes>400</ZeroBlockHttpCodes>
|
||||
<ZeroBlockOnServerException>true</ZeroBlockOnServerException>
|
||||
</GDAL_WMS>
|
||||
</OpenSpaceTemporalGDALDataset>
|
||||
@@ -5,7 +5,7 @@
|
||||
<OpenSpaceTimeIdFormat>YYYY-MM-DD</OpenSpaceTimeIdFormat>
|
||||
<GDAL_WMS>
|
||||
<Service name="TMS">
|
||||
<ServerUrl>http://map1.vis.earthdata.nasa.gov/wmts-geo/VIIRS_SNPP_CorrectedReflectance_TrueColor/default/${OpenSpaceTimeId}/EPSG4326_250m/${z}/${y}/${x}.jpg</ServerUrl>
|
||||
<ServerUrl>https://gibs.earthdata.nasa.gov/wmts/epsg4326/best/VIIRS_SNPP_CorrectedReflectance_TrueColor/default/${OpenSpaceTimeId}/250m/${z}/${y}/${x}.jpg</ServerUrl>
|
||||
</Service>
|
||||
<DataWindow>
|
||||
<UpperLeftX>-180.0</UpperLeftX>
|
||||
@@ -21,5 +21,8 @@
|
||||
<BlockSizeX>512</BlockSizeX>
|
||||
<BlockSizeY>512</BlockSizeY>
|
||||
<BandsCount>3</BandsCount>
|
||||
<UnsafeSSL>true</UnsafeSSL>
|
||||
<ZeroBlockHttpCodes>400</ZeroBlockHttpCodes>
|
||||
<ZeroBlockOnServerException>true</ZeroBlockOnServerException>
|
||||
</GDAL_WMS>
|
||||
</OpenSpaceTemporalGDALDataset>
|
||||
</OpenSpaceTemporalGDALDataset>
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
<OpenSpaceTemporalGDALDataset>
|
||||
<OpenSpaceTimeStart>2012-05-08</OpenSpaceTimeStart>
|
||||
<OpenSpaceTimeEnd></OpenSpaceTimeEnd>
|
||||
<OpenSpaceTimeResolution>1d</OpenSpaceTimeResolution>
|
||||
<OpenSpaceTimeIdFormat>YYYY-MM-DD</OpenSpaceTimeIdFormat>
|
||||
<GDAL_WMS>
|
||||
<Service name="TMS">
|
||||
<ServerUrl>https://gibs.earthdata.nasa.gov/wmts/epsg4326/best/VIIRS_SNPP_DayNightBand_ENCC/default/${OpenSpaceTimeId}/500m/${z}/${y}/${x}.png</ServerUrl>
|
||||
</Service>
|
||||
<DataWindow>
|
||||
<UpperLeftX>-180.0</UpperLeftX>
|
||||
<UpperLeftY>90</UpperLeftY>
|
||||
<LowerRightX>396.0</LowerRightX>
|
||||
<LowerRightY>-198</LowerRightY>
|
||||
<TileLevel>8</TileLevel>
|
||||
<TileCountX>2</TileCountX>
|
||||
<TileCountY>1</TileCountY>
|
||||
<YOrigin>top</YOrigin>
|
||||
</DataWindow>
|
||||
<Projection>EPSG:4326</Projection>
|
||||
<BlockSizeX>512</BlockSizeX>
|
||||
<BlockSizeY>512</BlockSizeY>
|
||||
<BandsCount>3</BandsCount>
|
||||
<UnsafeSSL>true</UnsafeSSL>
|
||||
<ZeroBlockHttpCodes>400</ZeroBlockHttpCodes>
|
||||
<ZeroBlockOnServerException>true</ZeroBlockOnServerException>
|
||||
</GDAL_WMS>
|
||||
</OpenSpaceTemporalGDALDataset>
|
||||
@@ -1,6 +1,6 @@
|
||||
<GDAL_WMS>
|
||||
<Service name="TMS">
|
||||
<ServerUrl>http://map1.vis.earthdata.nasa.gov/wmts-geo/VIIRS_CityLights_2012/default/2012-01-01/EPSG4326_500m/${z}/${y}/${x}.jpg</ServerUrl>
|
||||
<ServerUrl>https://gibs.earthdata.nasa.gov/wmts/epsg4326/best/VIIRS_CityLights_2012/default/2013-08-21/500m/${z}/${y}/${x}.jpg</ServerUrl>
|
||||
</Service>
|
||||
<DataWindow>
|
||||
<UpperLeftX>-180.0</UpperLeftX>
|
||||
@@ -16,4 +16,14 @@
|
||||
<BlockSizeX>512</BlockSizeX>
|
||||
<BlockSizeY>512</BlockSizeY>
|
||||
<BandsCount>4</BandsCount>
|
||||
</GDAL_WMS>
|
||||
<MaxConnections>5</MaxConnections>
|
||||
<Cache>
|
||||
<Path>./GDAL_Cache/VIIRS_CityLights_2012</Path>
|
||||
<Depth>4</Depth>
|
||||
<Extension>.jpg</Extension>
|
||||
</Cache>
|
||||
<OfflineMode>false</OfflineMode>
|
||||
<UnsafeSSL>true</UnsafeSSL>
|
||||
<ZeroBlockHttpCodes>400</ZeroBlockHttpCodes>
|
||||
<ZeroBlockOnServerException>true</ZeroBlockOnServerException>
|
||||
</GDAL_WMS>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<GDAL_WMS>
|
||||
<Service name="TMS">
|
||||
<ServerUrl>http://map1.vis.earthdata.nasa.gov/wmts-geo/VIIRS_SNPP_CorrectedReflectance_TrueColor/default/2016-10-01/EPSG4326_250m/${z}/${y}/${x}.jpg</ServerUrl>
|
||||
<ServerUrl>https://gibs.earthdata.nasa.gov/wmts/epsg4326/best/VIIRS_SNPP_CorrectedReflectance_TrueColor/default/2016-08-21/250m/${z}/${y}/${x}.jpg</ServerUrl>
|
||||
</Service>
|
||||
<DataWindow>
|
||||
<UpperLeftX>-180.0</UpperLeftX>
|
||||
@@ -16,4 +16,14 @@
|
||||
<BlockSizeX>512</BlockSizeX>
|
||||
<BlockSizeY>512</BlockSizeY>
|
||||
<BandsCount>3</BandsCount>
|
||||
<MaxConnections>5</MaxConnections>
|
||||
<Cache>
|
||||
<Path>./GDAL_Cache/VIIRS_SNPP_CorrectedReflectance_TrueColor</Path>
|
||||
<Depth>4</Depth>
|
||||
<Extension>.jpg</Extension>
|
||||
</Cache>
|
||||
<OfflineMode>false</OfflineMode>
|
||||
<UnsafeSSL>true</UnsafeSSL>
|
||||
<ZeroBlockHttpCodes>400</ZeroBlockHttpCodes>
|
||||
<ZeroBlockOnServerException>true</ZeroBlockOnServerException>
|
||||
</GDAL_WMS>
|
||||
@@ -32,7 +32,7 @@ return {
|
||||
Name = "Callisto Texture",
|
||||
FilePath = "textures/callisto.jpg",
|
||||
Enabled = true,
|
||||
MinimumPixelSize = 112,
|
||||
TilePixelSize = 112,
|
||||
},
|
||||
},
|
||||
GrayScaleLayers = { },
|
||||
|
||||
@@ -32,7 +32,7 @@ return {
|
||||
Name = "Europa Texture",
|
||||
FilePath = "textures/europa.jpg",
|
||||
Enabled = true,
|
||||
MinimumPixelSize = 256,
|
||||
TilePixelSize = 256,
|
||||
},
|
||||
},
|
||||
GrayScaleLayers = { },
|
||||
|
||||
@@ -32,7 +32,7 @@ return {
|
||||
Name = "Ganymede Texture",
|
||||
FilePath = "textures/ganymede.jpg",
|
||||
Enabled = true,
|
||||
MinimumPixelSize = 112,
|
||||
TilePixelSize = 112,
|
||||
},
|
||||
},
|
||||
GrayScaleLayers = { },
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
<TileLevel>6</TileLevel>
|
||||
<YOrigin>top</YOrigin>
|
||||
</DataWindow>
|
||||
<DataType>Int16</DataType>
|
||||
<Projection>GEOGCS["GCS_Mars_2000_Sphere",DATUM["D_Mars_2000_Sphere",SPHEROID["Mars_2000_Sphere_IAU_IAG",3396190.0,0.0]],PRIMEM["Reference_Meridian",0.0],UNIT["Degree",0.0174532925199433]]</Projection>
|
||||
<BlockSizeX>360</BlockSizeX>
|
||||
<BlockSizeY>360</BlockSizeY>
|
||||
|
||||
@@ -32,20 +32,36 @@ return {
|
||||
Type = "RenderableGlobe",
|
||||
Radii = marsEllipsoid,
|
||||
CameraMinHeight = 10,
|
||||
SegmentsPerPatch = 90,
|
||||
-- Allows camera to go down 10000 meters below the reference ellipsoid
|
||||
InteractionDepthBelowEllipsoid = 10000, -- Useful when having negative height map values
|
||||
SegmentsPerPatch = 64,
|
||||
Layers = {
|
||||
ColorLayers = {
|
||||
{
|
||||
Name = "Viking combo",
|
||||
Type = "ByLevel",
|
||||
LevelTileProviders = {
|
||||
{
|
||||
MaxLevel = 3,
|
||||
TileProvider = { FilePath = "textures/mars.jpg", },
|
||||
},
|
||||
{
|
||||
MaxLevel = 22,
|
||||
TileProvider = { FilePath = "map_service_configs/MARS_Viking_MDIM21.xml" },
|
||||
},
|
||||
},
|
||||
Enabled = true,
|
||||
},
|
||||
-- {
|
||||
-- Type = "SingleImage",
|
||||
-- Name = "Debug Tiles",
|
||||
-- FilePath = "../../debugglobe/textures/test_tile.png",
|
||||
-- },
|
||||
{
|
||||
Name = "MARS_Viking",
|
||||
FilePath = "map_service_configs/MARS_Viking_MDIM21.xml",
|
||||
Enabled = true,
|
||||
},
|
||||
--{
|
||||
-- Name = "MARS_Viking",
|
||||
-- FilePath = "map_service_configs/MARS_Viking_MDIM21.xml",
|
||||
-- Enabled = true,
|
||||
--},
|
||||
{
|
||||
Name = "MOLA Pseudo Color",
|
||||
FilePath = "map_service_configs/Utah/MolaPseudoColor.xml",
|
||||
@@ -66,16 +82,22 @@ return {
|
||||
{
|
||||
Name = "CTX Mosaic [Europe]",
|
||||
FilePath = "map_service_configs/CTX_Mosaic.xml",
|
||||
Enabled = true,
|
||||
}, {
|
||||
--Enabled = true,
|
||||
},
|
||||
{
|
||||
Name = "CTX Mosaic [Utah]",
|
||||
FilePath = "map_service_configs/Utah/CTX_Mosaic.xml",
|
||||
},
|
||||
{
|
||||
Name = "West Candor Chasma",
|
||||
FilePath = "map_datasets/CTX/West_Candor_Chasma_longlat_global.vrt",
|
||||
--Enabled = true,
|
||||
},
|
||||
{
|
||||
Name = "Layered Rock Outcrops in Southwest Candor Chasma",
|
||||
FilePath = "map_datasets/HiRISE/Layered_Rock_Outcrops_in_Southwest_Candor_Chasma_Texture.vrt",
|
||||
},
|
||||
{
|
||||
--[[{
|
||||
Name = "Themis IR Day",
|
||||
FilePath = "map_service_configs/Utah/ThemisIRDay.xml",
|
||||
},
|
||||
@@ -83,12 +105,7 @@ return {
|
||||
Name = "Themis IR Night",
|
||||
FilePath = "map_service_configs/Utah/ThemisIRNight.xml",
|
||||
},
|
||||
--[[
|
||||
{
|
||||
Name = "West Candor Chasma",
|
||||
FilePath = "map_datasets/CTX/West_Candor_Chasma_longlat_global.vrt",
|
||||
--Enabled = true,
|
||||
},
|
||||
|
||||
{
|
||||
Name = "MER_Meridianni_Endeavor_Basemap_25cm",
|
||||
FilePath = "map_datasets/Basemap/MER_Meridianni_Endeavor_Basemap_25cm.vrt",
|
||||
@@ -115,41 +132,49 @@ return {
|
||||
},
|
||||
HeightLayers = {
|
||||
{
|
||||
Name = "Mola Elevation",
|
||||
FilePath = "map_service_configs/Utah/Mola_Elevation.xml",
|
||||
Name = "Mola Elevation [Europe]",
|
||||
FilePath = "map_service_configs/Mola_Elevation.xml",
|
||||
Enabled = true,
|
||||
MinimumPixelSize = 90,
|
||||
TilePixelSize = 90,
|
||||
DoPreProcessing = true,
|
||||
},
|
||||
--[[
|
||||
{
|
||||
Name = "Mola Elevation [Utah]",
|
||||
FilePath = "map_service_configs/Utah/Mola_Elevation.xml",
|
||||
Enabled = false,
|
||||
TilePixelSize = 90,
|
||||
DoPreProcessing = true,
|
||||
},
|
||||
{
|
||||
Name = "Mola Elevation CTX",
|
||||
FilePath = "map_service_configs/Utah/MolaCTX_Elevation.xml",
|
||||
-- Enabled = true,
|
||||
MinimumPixelSize = 90,
|
||||
TilePixelSize = 90,
|
||||
DoPreProcessing = true,
|
||||
},
|
||||
},]]
|
||||
{
|
||||
Name = "Layered Rock Outcrops in Southwest Candor Chasma",
|
||||
FilePath = "map_datasets/HiRISE/Layered_Rock_Outcrops_in_Southwest_Candor_Chasma_Heightmap.vrt",
|
||||
MinimumPixelSize = 90,
|
||||
DoPreProcessing = true,
|
||||
},
|
||||
--[[
|
||||
{
|
||||
Name = "Mola Elevation",
|
||||
FilePath = "map_service_configs/Mars_MGS_MOLA_DEM.xml",
|
||||
Enabled = true,
|
||||
MinimumPixelSize = 64,
|
||||
DoPreProcessing = true,
|
||||
},
|
||||
--]]
|
||||
--[[ {
|
||||
Name = "West Candor Chasma",
|
||||
FilePath = "map_datasets/CTX/West_Candor_Chasma_DEM_longlat_global.vrt",
|
||||
--Enabled = true,
|
||||
MinimumPixelSize = 90,
|
||||
DoPreProcessing = true,
|
||||
},
|
||||
{
|
||||
Name = "Layered Rock Outcrops in Southwest Candor Chasma",
|
||||
FilePath = "map_datasets/HiRISE/Layered_Rock_Outcrops_in_Southwest_Candor_Chasma_Heightmap.vrt",
|
||||
TilePixelSize = 90,
|
||||
DoPreProcessing = true,
|
||||
},
|
||||
--[[
|
||||
{
|
||||
Name = "West Candor Chasma",
|
||||
FilePath = "map_datasets/CTX/West_Candor_Chasma_DEM_longlat_global.vrt",
|
||||
--Enabled = true,
|
||||
TilePixelSize = 90,
|
||||
DoPreProcessing = true,
|
||||
},]]
|
||||
--[[
|
||||
{
|
||||
Name = "Part of Area Traversed by the Mars Exploration Rover",
|
||||
FilePath = "map_datasets/HiRISE/Part_of_Area_Traversed_by_the_Mars_Exploration_Rover_Heightmap.vrt",
|
||||
|
||||
@@ -42,7 +42,7 @@ return {
|
||||
Name = "Simple Texture",
|
||||
FilePath = "textures/mercury.jpg",
|
||||
Enabled = true,
|
||||
MinimumPixelSize = 256,
|
||||
TilePixelSize = 256,
|
||||
},
|
||||
{
|
||||
Name = "Messenger_Mosaic",
|
||||
|
||||
@@ -62,4 +62,10 @@
|
||||
</DataWindow>
|
||||
<BlockSizeX>512</BlockSizeX>
|
||||
<BlockSizeY>512</BlockSizeY>
|
||||
|
||||
<Cache>
|
||||
<Path>./GDAL_Cache/OnMoonColor</Path>
|
||||
<Depth>4</Depth>
|
||||
<Extension>.png</Extension>
|
||||
</Cache>
|
||||
</GDAL_WMS>
|
||||
@@ -16,4 +16,9 @@
|
||||
<TileCountY>1</TileCountY>
|
||||
<YOrigin>top</YOrigin>
|
||||
</DataWindow>
|
||||
<Cache>
|
||||
<Path>./GDAL_Cache/OnMoonHeight</Path>
|
||||
<Depth>4</Depth>
|
||||
<Extension>.png</Extension>
|
||||
</Cache>
|
||||
</GDAL_WMS>
|
||||
@@ -12,6 +12,7 @@
|
||||
<TileLevel>7</TileLevel>
|
||||
<YOrigin>top</YOrigin>
|
||||
</DataWindow>
|
||||
<DataType>Int16</DataType>
|
||||
<Projection>GEOGCS["GCS_Moon_2000",DATUM["D_Moon_2000",SPHEROID["Moon_2000_IAU_IAG",1737400.0,0.0]],PRIMEM["Reference_Meridian",0.0],UNIT["Degree",0.0174532925199433]]</Projection>
|
||||
<BlockSizeX>360</BlockSizeX>
|
||||
<BlockSizeY>360</BlockSizeY>
|
||||
|
||||
@@ -20,8 +20,9 @@ return {
|
||||
Type = "RenderableGlobe",
|
||||
Radii = {1738140, 1738140, 1735970}, -- Moons's radius
|
||||
CameraMinHeight = 300,
|
||||
InteractionDepthBelowEllipsoid = 5000, -- Useful when having negative height map values
|
||||
SegmentsPerPatch = 64,
|
||||
-- Allows camera to go down 10000 meters below the reference ellipsoid
|
||||
InteractionDepthBelowEllipsoid = 10000, -- Useful when having negative height map values
|
||||
Layers = {
|
||||
ColorLayers = {
|
||||
|
||||
@@ -63,10 +64,13 @@ return {
|
||||
FilePath = "map_service_configs/OnMoonHeight.xml",
|
||||
Enabled = true,
|
||||
DoPreProcessing = true,
|
||||
TileSize = 64,
|
||||
},
|
||||
{
|
||||
Name = "LolaDem",
|
||||
FilePath = "map_service_configs/Utah/LolaDem.wms"
|
||||
FilePath = "map_service_configs/Utah/LolaDem.wms",
|
||||
DoPreProcessing = true,
|
||||
TileSize = 64,
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
@@ -40,7 +40,7 @@ return {
|
||||
Name = "Texture",
|
||||
FilePath = "textures/neptune.jpg",
|
||||
Enabled = true,
|
||||
MinimumPixelSize = 256,
|
||||
TilePixelSize = 256,
|
||||
},
|
||||
},
|
||||
GrayScaleLayers = { },
|
||||
|
||||
@@ -40,7 +40,7 @@ return {
|
||||
Name = "Saturn Texture",
|
||||
FilePath = "textures/saturn.jpg",
|
||||
Enabled = true,
|
||||
MinimumPixelSize = 256,
|
||||
TilePixelSize = 256,
|
||||
},
|
||||
},
|
||||
GrayScaleLayers = { },
|
||||
|
||||
@@ -40,7 +40,7 @@ return {
|
||||
Name = "Texture",
|
||||
FilePath = "textures/uranus.jpg",
|
||||
Enabled = true,
|
||||
MinimumPixelSize = 256,
|
||||
TilePixelSize = 256,
|
||||
},
|
||||
},
|
||||
GrayScaleLayers = { },
|
||||
|
||||
@@ -45,7 +45,7 @@ return {
|
||||
Name = "Venus Texture",
|
||||
FilePath = "textures/venus.jpg",
|
||||
Enabled = true,
|
||||
MinimumPixelSize = 256,
|
||||
TilePixelSize = 256,
|
||||
},
|
||||
},
|
||||
GrayScaleLayers = { },
|
||||
|
||||
@@ -22,7 +22,7 @@ return {
|
||||
Body = "MARS BARYCENTER",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 6.390, 6 },
|
||||
Radius = 6.390E6,
|
||||
Segments = 100
|
||||
},
|
||||
Textures = {
|
||||
@@ -35,12 +35,17 @@ return {
|
||||
MieColor = {1.0, 1.0, 1.0}
|
||||
}
|
||||
},
|
||||
Tag = {"planet_solarSystem", "planet_terrestrial"},
|
||||
Transform = {
|
||||
Rotation = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "IAU_MARS",
|
||||
DestinationFrame = "GALACTIC",
|
||||
},
|
||||
Scale = {
|
||||
Type = "StaticScale",
|
||||
Scale = 1,
|
||||
},
|
||||
}
|
||||
},
|
||||
-- MarsTrail module
|
||||
@@ -56,7 +61,8 @@ return {
|
||||
},
|
||||
Color = { 0.814, 0.305, 0.220 },
|
||||
Period = 686.973,
|
||||
Resolution = 1000
|
||||
Resolution = 1000,
|
||||
Tag = {"planetTrail_solarSystem", "planetTrail_terrestrial"}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
MercuryRadius = 2.4397E6;
|
||||
|
||||
return {
|
||||
-- Mercury barycenter module
|
||||
{
|
||||
@@ -24,7 +22,7 @@ return {
|
||||
Body = "MERCURY",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = {MercuryRadius, 1.0},
|
||||
Radius = 2.4397E6,
|
||||
Segments = 100
|
||||
},
|
||||
Textures = {
|
||||
@@ -37,6 +35,7 @@ return {
|
||||
MieColor = {1.0, 1.0, 1.0}
|
||||
}
|
||||
},
|
||||
Tag = {"planet_solarSystem", "planet_terrestrial"},
|
||||
Transform = {
|
||||
Rotation = {
|
||||
Type = "SpiceRotation",
|
||||
@@ -62,7 +61,8 @@ return {
|
||||
},
|
||||
Color = {0.6, 0.5, 0.5 },
|
||||
Period = 87.968,
|
||||
Resolution = 100
|
||||
Resolution = 100,
|
||||
Tag = {"planetTrail_solarSystem", "planetTrail_terrestrial"}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ return {
|
||||
Body = "CERES",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 6.390, 5 },
|
||||
Radius = 6.390E5,
|
||||
Segments = 100
|
||||
},
|
||||
Textures = {
|
||||
|
||||
@@ -9,7 +9,7 @@ return {
|
||||
Body = "CALLISTO",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 1.8213, 6 },
|
||||
Radius = 1.8213E6,
|
||||
Segments = 100
|
||||
},
|
||||
Textures = {
|
||||
@@ -58,7 +58,7 @@ return {
|
||||
Parent = "Callisto",
|
||||
Renderable = {
|
||||
Type = "RenderablePlane",
|
||||
Size = {1.0, 7.4},
|
||||
Size = 10^7.4,
|
||||
Origin = "Center",
|
||||
Billboard = true,
|
||||
Texture = "textures/Callisto-Text.png",
|
||||
|
||||
@@ -9,7 +9,7 @@ return {
|
||||
Body = "EUROPA",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 1.8213, 6 },
|
||||
Radius = 1.8213E6,
|
||||
Segments = 100
|
||||
},
|
||||
Textures = {
|
||||
@@ -58,7 +58,7 @@ return {
|
||||
Parent = "Europa",
|
||||
Renderable = {
|
||||
Type = "RenderablePlane",
|
||||
Size = {1.0, 7.4},
|
||||
Size = 10^7.4,
|
||||
Origin = "Center",
|
||||
Billboard = true,
|
||||
Texture = "textures/Europa-Text.png",
|
||||
|
||||
@@ -9,7 +9,7 @@ return {
|
||||
Body = "GANYMEDE",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 1.8213, 6 },
|
||||
Radius = 1.8213E6,
|
||||
Segments = 100
|
||||
},
|
||||
Textures = {
|
||||
@@ -58,7 +58,7 @@ return {
|
||||
Parent = "Ganymede",
|
||||
Renderable = {
|
||||
Type = "RenderablePlane",
|
||||
Size = {1.0, 7.4},
|
||||
Size = 10^7.4,
|
||||
Origin = "Center",
|
||||
Billboard = true,
|
||||
Texture = "textures/Ganymede-Text.png",
|
||||
|
||||
@@ -9,7 +9,7 @@ return {
|
||||
Body = "IO",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 1.8213, 6 },
|
||||
Radius = 1.8213E6,
|
||||
Segments = 100
|
||||
},
|
||||
Textures = {
|
||||
|
||||
@@ -22,7 +22,7 @@ return {
|
||||
Body = "JUPITER",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 0.71492, 8 },
|
||||
Radius = 0.71492E8,
|
||||
Segments = 200,
|
||||
},
|
||||
Textures = {
|
||||
@@ -101,7 +101,7 @@ return {
|
||||
Parent = "JupiterProjection",
|
||||
Renderable = {
|
||||
Type = "RenderablePlane",
|
||||
Size = {1.0, 7.5},
|
||||
Size = 10^7.5,
|
||||
Origin = "Center",
|
||||
Billboard = true,
|
||||
Texture = "textures/Jupiter-text.png",
|
||||
|
||||
@@ -295,9 +295,9 @@ return {
|
||||
Type = "RenderableCrawlingLine",
|
||||
Source = "NH_REX",
|
||||
Target = "EARTH",
|
||||
-- Body = "NEW HORIZONS",
|
||||
-- Body = "NEW HORIZONS",
|
||||
Frame = "GALACTIC",
|
||||
RGB = { 1.0, 0.7, 0.0 },
|
||||
Color = { 1.0, 0.7, 0.0 },
|
||||
Instrument = "NH_REX"
|
||||
},
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ return {
|
||||
Type = "RenderablePlanetProjection",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 6.035 , 5 },
|
||||
Radius = 6.035E5,
|
||||
Segments = 100
|
||||
},
|
||||
Textures = {
|
||||
@@ -72,7 +72,7 @@ return {
|
||||
Parent = "Charon",
|
||||
Renderable = {
|
||||
Type = "RenderablePlane",
|
||||
Size = {1.0, 6.3},
|
||||
Size = 10^6.3,
|
||||
Origin = "Center",
|
||||
Billboard = true,
|
||||
Texture = "textures/Charon-Text.png",
|
||||
|
||||
@@ -46,7 +46,7 @@ return {
|
||||
Parent = "Hydra",
|
||||
Renderable = {
|
||||
Type = "RenderablePlane",
|
||||
Size = {1.0, 6.3},
|
||||
Size = 10.0^6.3,
|
||||
Origin = "Center",
|
||||
Billboard = true,
|
||||
Texture = "textures/Hydra-Text.png"
|
||||
|
||||
@@ -46,7 +46,7 @@ return {
|
||||
Parent = "Kerberos",
|
||||
Renderable = {
|
||||
Type = "RenderablePlane",
|
||||
Size = {1.0, 6.3},
|
||||
Size = 10^6.3,
|
||||
Origin = "Center",
|
||||
Billboard = true,
|
||||
Texture = "textures/Kerberos-Text.png"
|
||||
|
||||
@@ -19,7 +19,7 @@ return {
|
||||
Body = "NIX",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 0.45 , 5 },
|
||||
Radius = 0.45E5,
|
||||
Segments = 100
|
||||
},
|
||||
Textures = {
|
||||
@@ -46,7 +46,7 @@ return {
|
||||
Parent = "Nix",
|
||||
Renderable = {
|
||||
Type = "RenderablePlane",
|
||||
Size = {1.0, 6.3},
|
||||
Size = 10^6.3,
|
||||
Origin = "Center",
|
||||
Billboard = true,
|
||||
Texture = "textures/Nix-Text.png"
|
||||
|
||||
@@ -38,7 +38,7 @@ return {
|
||||
Type = "RenderablePlanetProjection",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 1.173 , 6 },
|
||||
Radius = 1.173E6,
|
||||
Segments = 100
|
||||
},
|
||||
Textures = {
|
||||
@@ -173,7 +173,7 @@ return {
|
||||
Renderable = {
|
||||
Type = "RenderablePlane",
|
||||
Billboard = true,
|
||||
Size = { 5, 4 },
|
||||
Size = 5E4,
|
||||
Texture = "textures/barycenter.png",
|
||||
Atmosphere = {
|
||||
Type = "Nishita", -- for example, values missing etc etc
|
||||
@@ -187,7 +187,7 @@ return {
|
||||
Parent = "Pluto",
|
||||
Renderable = {
|
||||
Type = "RenderablePlane",
|
||||
Size = {1.0, 6.3},
|
||||
Size = 10^6.3,
|
||||
Origin = "Center",
|
||||
Billboard = true,
|
||||
Texture = "textures/Pluto-Text.png",
|
||||
|
||||
@@ -19,7 +19,7 @@ return {
|
||||
Body = "STYX",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 0.75 , 4 },
|
||||
Radius = 0.75E4,
|
||||
Segments = 100
|
||||
},
|
||||
Textures = {
|
||||
@@ -46,7 +46,7 @@ return {
|
||||
Parent = "Styx",
|
||||
Renderable = {
|
||||
Type = "RenderablePlane",
|
||||
Size = {1.0, 6.3},
|
||||
Size = 10^6.3,
|
||||
Origin = "Center",
|
||||
Billboard = true,
|
||||
Texture = "textures/Styx-Text.png",
|
||||
|
||||
@@ -9,17 +9,17 @@ return {
|
||||
Body = "MOON",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 1.737, 6},
|
||||
Radius = 1.737E6,
|
||||
Segments = 100
|
||||
},
|
||||
Shadow_Group = {
|
||||
Source1 = {
|
||||
Name = "Sun",
|
||||
Radius = {696.3, 6}
|
||||
Radius = 696.3E6
|
||||
},
|
||||
Caster1 = {
|
||||
Name = "Earth",
|
||||
Radius = {6.371, 6}
|
||||
Radius = 6.371E6
|
||||
},
|
||||
},
|
||||
Textures = {
|
||||
|
||||
@@ -23,20 +23,25 @@ return {
|
||||
Body = "NEPTUNE BARYCENTER",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 2.4622 , 7 },
|
||||
Radius = 2.4622E7,
|
||||
Segments = 100
|
||||
},
|
||||
Textures = {
|
||||
Type = "simple",
|
||||
Color = "textures/neptune.jpg",
|
||||
},
|
||||
}
|
||||
},
|
||||
Translation = {
|
||||
Tag = "planet_solarSystem",
|
||||
Transform = {
|
||||
Rotation = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "IAU_NEPTUNE",
|
||||
DestinationFrame = "GALACTIC"
|
||||
},
|
||||
Scale = {
|
||||
Type = "StaticScale",
|
||||
Scale = 1,
|
||||
},
|
||||
}
|
||||
},
|
||||
-- NeptuneTrail module
|
||||
@@ -52,7 +57,8 @@ return {
|
||||
},
|
||||
Color = {0.2, 0.5, 1.0 },
|
||||
Period = 60200,
|
||||
Resolution = 1000
|
||||
},
|
||||
Resolution = 1000,
|
||||
Tag = "planetTrail_solarSystem"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ return {
|
||||
Body = "PLUTO",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 1.173 , 6 },
|
||||
Radius = 1.173E6,
|
||||
Segments = 100
|
||||
},
|
||||
Textures = {
|
||||
@@ -61,7 +61,7 @@ return {
|
||||
Body = "CHARON",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 6.035 , 5 },
|
||||
Radius = 6.035E5,
|
||||
Segments = 100
|
||||
},
|
||||
Textures = {
|
||||
|
||||
@@ -8,7 +8,7 @@ return {
|
||||
Body = "DIONE",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 0.563, 3 },
|
||||
Radius = 0.563E3,
|
||||
Segments = 50
|
||||
},
|
||||
Textures = {
|
||||
|
||||
@@ -8,7 +8,7 @@ return {
|
||||
Body = "ENCELADUS",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 0.257, 3 },
|
||||
Radius = 0.257E3,
|
||||
Segments = 50
|
||||
},
|
||||
Textures = {
|
||||
|
||||
@@ -8,7 +8,7 @@ return {
|
||||
Body = "IAPETUS",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 0.746, 3 },
|
||||
Radius = 0.746E3,
|
||||
Segments = 50
|
||||
},
|
||||
Textures = {
|
||||
|
||||
@@ -8,7 +8,7 @@ return {
|
||||
Body = "MIMAS",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 0.28, 3 },
|
||||
Radius = 0.28E3,
|
||||
Segments = 50
|
||||
},
|
||||
Textures = {
|
||||
|
||||
@@ -8,7 +8,7 @@ return {
|
||||
Body = "RHEA",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 0.765, 3 },
|
||||
Radius = 0.765E3,
|
||||
Segments = 50
|
||||
},
|
||||
Textures = {
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
SaturnRadius = 5.8232E7;
|
||||
|
||||
|
||||
return {
|
||||
-- Saturn barycenter module
|
||||
{
|
||||
@@ -26,7 +23,7 @@ return {
|
||||
Body = "SATURN BARYCENTER",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = {SaturnRadius, 0},
|
||||
Radius = 5.8232E7,
|
||||
Segments = 100
|
||||
},
|
||||
Textures = {
|
||||
@@ -39,6 +36,7 @@ return {
|
||||
MieColor = {1.0, 1.0, 1.0}
|
||||
}
|
||||
},
|
||||
Tag = "planet_solarSystem",
|
||||
Transform = {
|
||||
Rotation = {
|
||||
Type = "SpiceRotation",
|
||||
@@ -76,7 +74,8 @@ return {
|
||||
},
|
||||
Color = {0.85,0.75,0.51 },
|
||||
Period = 10746.94,
|
||||
Resolution = 1000
|
||||
Resolution = 1000,
|
||||
Tag = "planetTrail_solarSystem"
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ return {
|
||||
Body = "TETHYS",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 0.538, 3 },
|
||||
Radius = 0.538E3,
|
||||
Segments = 50
|
||||
},
|
||||
Textures = {
|
||||
|
||||
@@ -8,7 +8,7 @@ return {
|
||||
Body = "TITAN",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 0.2575, 4 },
|
||||
Radius = 0.2575E4,
|
||||
Segments = 50
|
||||
},
|
||||
Textures = {
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
return {
|
||||
-- Solar system module
|
||||
{
|
||||
Name = "SolarSystem",
|
||||
Parent = "Root"
|
||||
},
|
||||
-- Sun barycenter module
|
||||
{
|
||||
Name = "SolarSystemBarycenter",
|
||||
@@ -15,7 +20,8 @@ return {
|
||||
Body = "SUN",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 2.783200, 9 },
|
||||
--Radius = 2.783200E9,
|
||||
Radius = 6.957E8,
|
||||
Segments = 100
|
||||
},
|
||||
Textures = {
|
||||
@@ -44,7 +50,7 @@ return {
|
||||
Parent = "SolarSystemBarycenter",
|
||||
Renderable = {
|
||||
Type = "RenderablePlane",
|
||||
Size = {1.3, 10.5},
|
||||
Size = 1.3*10^10.5,
|
||||
Origin = "Center",
|
||||
Billboard = true,
|
||||
Texture = "textures/sun-glare.png",
|
||||
@@ -65,7 +71,7 @@ return {
|
||||
Parent = "Sun",
|
||||
Renderable = {
|
||||
Type = "RenderablePlane",
|
||||
Size = {3.0, 11.0},
|
||||
Size = 3.0E11,
|
||||
Origin = "Center",
|
||||
Billboard = true,
|
||||
Texture = "textures/marker.png",
|
||||
|
||||
@@ -23,7 +23,7 @@ return {
|
||||
Body = "URANUS BARYCENTER",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 2.5362 , 7 },
|
||||
Radius = 2.5362E7,
|
||||
Segments = 100
|
||||
},
|
||||
Textures = {
|
||||
@@ -36,12 +36,17 @@ return {
|
||||
MieColor = {1.0, 1.0, 1.0}
|
||||
}
|
||||
},
|
||||
Tag = "planet_solarSystem",
|
||||
Transform = {
|
||||
Rotation = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "IAU_URANUS",
|
||||
DestinationFrame = "ECLIPJ2000",
|
||||
}
|
||||
},
|
||||
Scale = {
|
||||
Type = "StaticScale",
|
||||
Scale = 1,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -58,7 +63,8 @@ return {
|
||||
},
|
||||
Color = {0.60, 0.95, 1.00 },
|
||||
Period = 30588.740,
|
||||
Resolution = 1000
|
||||
},
|
||||
Resolution = 1000,
|
||||
Tag = "planetTrail_solarSystem"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ return {
|
||||
Body = "VENUS",
|
||||
Geometry = {
|
||||
Type = "SimpleSphere",
|
||||
Radius = { 3.760, 6 },
|
||||
Radius = 3.760E6,
|
||||
Segments = 100
|
||||
},
|
||||
Textures = {
|
||||
@@ -36,10 +36,17 @@ return {
|
||||
MieColor = {1.0, 1.0, 1.0}
|
||||
}
|
||||
},
|
||||
Rotation = {
|
||||
Type = "SpiceRotation",
|
||||
Frame = "IAU_VENUS",
|
||||
Reference = "GALACTIC"
|
||||
Tag = {"planet_solarSystem", "planet_terrestrial"},
|
||||
Transform = {
|
||||
Rotation = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "IAU_VENUS",
|
||||
DestinationFrame = "GALACTIC"
|
||||
},
|
||||
Scale = {
|
||||
Type = "StaticScale",
|
||||
Scale = 1,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -56,7 +63,8 @@ return {
|
||||
},
|
||||
Color = { 1.0, 0.5, 0.2 },
|
||||
Period = 224.695,
|
||||
Resolution = 1000
|
||||
Resolution = 1000,
|
||||
Tag = {"planetTrail_solarSystem", "planetTrail_terrestrial"}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
Binary file not shown.
BIN
ext/curl/lib/libeay32.dll
Normal file
BIN
ext/curl/lib/libeay32.dll
Normal file
Binary file not shown.
BIN
ext/curl/lib/ssleay32.dll
Normal file
BIN
ext/curl/lib/ssleay32.dll
Normal file
Binary file not shown.
Submodule ext/ghoul updated: 143d50aa65...8afa0763b1
2
ext/sgct
2
ext/sgct
Submodule ext/sgct updated: 0bea7bdb11...1eb6bcfa78
Submodule ext/spice updated: 1c9bb9e4dd...63e382ac76
@@ -216,6 +216,19 @@ struct StringListVerifier : public TableVerifier {
|
||||
std::string type() const override;
|
||||
};
|
||||
|
||||
/**
|
||||
* A Verifier that checks whether all values contained in a Table are of type \c int.
|
||||
*/
|
||||
struct IntListVerifier : public TableVerifier {
|
||||
/**
|
||||
* Constructor for a IntListVerifier.
|
||||
* \param elementDocumentation The documentation for each string in the list
|
||||
*/
|
||||
IntListVerifier(std::string elementDocumentation = "");
|
||||
|
||||
std::string type() const override;
|
||||
};
|
||||
|
||||
//----------------------------------------------------------------------------------------
|
||||
// Vector verifiers
|
||||
//----------------------------------------------------------------------------------------
|
||||
|
||||
@@ -104,6 +104,8 @@ public:
|
||||
/// The key that stores whether the master node should perform rendering just function
|
||||
/// as a pure manager
|
||||
static const std::string KeyDisableMasterRendering;
|
||||
/// The key that stores whether the master node should apply the scene transformation
|
||||
static const std::string KeyDisableSceneOnMaster;
|
||||
/// The key that sets the request URL that is used to request additional data to be
|
||||
/// downloaded
|
||||
static const std::string KeyDownloadRequestURL;
|
||||
@@ -124,7 +126,22 @@ public:
|
||||
static const std::string PartHttpProxyUser;
|
||||
/// The key that stores the password to use for authentication to access the http proxy
|
||||
static const std::string PartHttpProxyPassword;
|
||||
|
||||
/// The key that stores the dictionary containing information about debug contexts
|
||||
static const std::string KeyOpenGLDebugContext;
|
||||
/// The part of the key storing whether an OpenGL Debug context should be created
|
||||
static const std::string PartActivate;
|
||||
/// The part of the key storing whether the debug callbacks are performed synchronous
|
||||
static const std::string PartSynchronous;
|
||||
/// The part of the key storing a list of identifiers that should be filtered out
|
||||
static const std::string PartFilterIdentifier;
|
||||
/// The part of the key that stores the source of the ignored identifier
|
||||
static const std::string PartFilterIdentifierSource;
|
||||
/// The part of the key that stores the type of the ignored identifier
|
||||
static const std::string PartFilterIdentifierType;
|
||||
/// The part of the key that stores the identifier of the ignored identifier
|
||||
static const std::string PartFilterIdentifierIdentifier;
|
||||
/// The part of the key storing a list of severities that should be filtered out
|
||||
static const std::string PartFilterSeverity;
|
||||
|
||||
/**
|
||||
* Iteratively walks the directory structure starting with \p filename to find the
|
||||
|
||||
@@ -55,6 +55,9 @@ class NetworkEngine;
|
||||
class ParallelConnection;
|
||||
class RenderEngine;
|
||||
class SettingsEngine;
|
||||
class SceneManager;
|
||||
class VirtualPropertyManager;
|
||||
|
||||
class SyncEngine;
|
||||
class TimeManager;
|
||||
class WindowWrapper;
|
||||
@@ -85,7 +88,8 @@ public:
|
||||
void deinitialize();
|
||||
void preSynchronization();
|
||||
void postSynchronizationPreDraw();
|
||||
void render(const glm::mat4& viewMatrix, const glm::mat4& projectionMatrix);
|
||||
void render(const glm::mat4& sceneMatrix, const glm::mat4& viewMatrix,
|
||||
const glm::mat4& projectionMatrix);
|
||||
void postDraw();
|
||||
void keyboardCallback(Key key, KeyModifier mod, KeyAction action);
|
||||
void charCallback(unsigned int codepoint, KeyModifier mod);
|
||||
@@ -95,7 +99,9 @@ public:
|
||||
void externalControlCallback(const char* receivedChars, int size, int clientId);
|
||||
void encode();
|
||||
void decode();
|
||||
|
||||
|
||||
void scheduleLoadScene(std::string scenePath);
|
||||
|
||||
void enableBarrier();
|
||||
void disableBarrier();
|
||||
|
||||
@@ -120,6 +126,7 @@ public:
|
||||
properties::PropertyOwner& globalPropertyOwner();
|
||||
scripting::ScriptEngine& scriptEngine();
|
||||
scripting::ScriptScheduler& scriptScheduler();
|
||||
VirtualPropertyManager& virtualPropertyManager();
|
||||
|
||||
|
||||
// This method is only to be called from Modules
|
||||
@@ -165,8 +172,8 @@ public:
|
||||
private:
|
||||
OpenSpaceEngine(std::string programName,
|
||||
std::unique_ptr<WindowWrapper> windowWrapper);
|
||||
~OpenSpaceEngine() = default;
|
||||
|
||||
void loadScene(const std::string& scenePath);
|
||||
void gatherCommandlineArguments();
|
||||
void loadFonts();
|
||||
void runPreInitializationScripts(const std::string& sceneDescription);
|
||||
@@ -174,6 +181,7 @@ private:
|
||||
|
||||
// Components
|
||||
std::unique_ptr<ConfigurationManager> _configurationManager;
|
||||
std::unique_ptr<SceneManager> _sceneManager;
|
||||
std::unique_ptr<DownloadManager> _downloadManager;
|
||||
std::unique_ptr<LuaConsole> _console;
|
||||
std::unique_ptr<ModuleEngine> _moduleEngine;
|
||||
@@ -189,10 +197,14 @@ private:
|
||||
std::unique_ptr<interaction::InteractionHandler> _interactionHandler;
|
||||
std::unique_ptr<scripting::ScriptEngine> _scriptEngine;
|
||||
std::unique_ptr<scripting::ScriptScheduler> _scriptScheduler;
|
||||
std::unique_ptr<VirtualPropertyManager> _virtualPropertyManager;
|
||||
|
||||
// Others
|
||||
std::unique_ptr<properties::PropertyOwner> _globalPropertyNamespace;
|
||||
|
||||
bool _scheduledSceneSwitch;
|
||||
std::string _scenePath;
|
||||
|
||||
struct {
|
||||
std::vector<std::function<void()>> initialize;
|
||||
std::vector<std::function<void()>> deinitialize;
|
||||
|
||||
@@ -89,6 +89,11 @@ public:
|
||||
*/
|
||||
void removeSyncable(Syncable* syncable);
|
||||
|
||||
/**
|
||||
* Remove multiple Syncables from being synchronized over the SGCT cluster
|
||||
*/
|
||||
void removeSyncables(const std::vector<Syncable*>& syncables);
|
||||
|
||||
private:
|
||||
/**
|
||||
* Vector of Syncables. The vectors ensures consistent encode/decode order
|
||||
|
||||
@@ -21,55 +21,30 @@
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#ifndef __OPENSPACE_CORE___SCENEGRAPH___H__
|
||||
#define __OPENSPACE_CORE___SCENEGRAPH___H__
|
||||
|
||||
#ifndef __OPENSPACE_CORE___VIRTUALPROPERTYMANAGER___H__
|
||||
#define __OPENSPACE_CORE___VIRTUALPROPERTYMANAGER___H__
|
||||
|
||||
#include <openspace/properties/propertyowner.h>
|
||||
|
||||
#include <openspace/properties/property.h>
|
||||
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
namespace openspace {
|
||||
|
||||
class SceneGraphNode;
|
||||
|
||||
class SceneGraph {
|
||||
class VirtualPropertyManager : public properties::PropertyOwner {
|
||||
public:
|
||||
SceneGraph();
|
||||
~SceneGraph();
|
||||
VirtualPropertyManager();
|
||||
|
||||
void clear();
|
||||
bool loadFromFile(const std::string& sceneDescription);
|
||||
|
||||
// Returns if addition was successful
|
||||
bool addSceneGraphNode(SceneGraphNode* node);
|
||||
bool removeSceneGraphNode(SceneGraphNode* node);
|
||||
|
||||
const std::vector<SceneGraphNode*>& nodes() const;
|
||||
|
||||
SceneGraphNode* rootNode() const;
|
||||
SceneGraphNode* sceneGraphNode(const std::string& name) const;
|
||||
void addProperty(std::unique_ptr<properties::Property> prop);
|
||||
void removeProperty(properties::Property* prop);
|
||||
|
||||
private:
|
||||
struct SceneGraphNodeInternal {
|
||||
~SceneGraphNodeInternal();
|
||||
|
||||
SceneGraphNode* node = nullptr;
|
||||
// From nodes that are dependent on this one
|
||||
std::vector<SceneGraphNodeInternal*> incomingEdges;
|
||||
// To nodes that this node depends on
|
||||
std::vector<SceneGraphNodeInternal*> outgoingEdges;
|
||||
};
|
||||
|
||||
bool nodeIsDependentOnRoot(SceneGraphNodeInternal* node);
|
||||
bool sortTopologically();
|
||||
|
||||
SceneGraphNodeInternal* nodeByName(const std::string& name);
|
||||
|
||||
SceneGraphNode* _rootNode;
|
||||
std::vector<SceneGraphNodeInternal*> _nodes;
|
||||
std::vector<SceneGraphNode*> _topologicalSortedNodes;
|
||||
std::vector<std::unique_ptr<properties::Property>> _properties;
|
||||
};
|
||||
|
||||
} // namespace openspace
|
||||
|
||||
#endif // __OPENSPACE_CORE___SCENEGRAPH___H__
|
||||
#endif // __OPENSPACE_CORE___VIRTUALPROPERTYMANAGER___H__
|
||||
@@ -65,6 +65,7 @@ public:
|
||||
// Interaction mode setters
|
||||
void setCameraStateFromDictionary(const ghoul::Dictionary& cameraDict);
|
||||
void setInteractionMode(const std::string& interactionModeKey);
|
||||
InteractionMode* interactionMode();
|
||||
|
||||
void goToChunk(int x, int y, int level);
|
||||
void goToGeo(double latitude, double longitude);
|
||||
@@ -72,7 +73,9 @@ public:
|
||||
void resetKeyBindings();
|
||||
|
||||
void addKeyframe(const datamessagestructures::CameraKeyframe &kf);
|
||||
void removeKeyframesAfter(double timestamp);
|
||||
void clearKeyframes();
|
||||
const std::vector<datamessagestructures::CameraKeyframe>& keyframes() const;
|
||||
|
||||
void bindKeyLocal(
|
||||
Key key,
|
||||
@@ -95,8 +98,10 @@ public:
|
||||
|
||||
// Accessors
|
||||
ghoul::Dictionary getCameraStateDictionary();
|
||||
SceneGraphNode* const focusNode() const;
|
||||
Camera* const camera() const;
|
||||
SceneGraphNode* focusNode() const;
|
||||
glm::dvec3 focusNodeToCameraVector() const;
|
||||
glm::quat focusNodeToCameraRotation() const;
|
||||
Camera* camera() const;
|
||||
const InputState& inputState() const;
|
||||
|
||||
/**
|
||||
|
||||
@@ -82,9 +82,12 @@ namespace interaction {
|
||||
|
||||
// Mutators
|
||||
void addKeyframe(const datamessagestructures::CameraKeyframe &kf);
|
||||
void removeKeyframesAfter(double timestamp);
|
||||
void clearKeyframes();
|
||||
void clearOldKeyframes();
|
||||
|
||||
static bool compareKeyframeTimes(const datamessagestructures::CameraKeyframe& a, const datamessagestructures::CameraKeyframe& b);
|
||||
|
||||
// Accessors
|
||||
const std::list<std::pair<Key, KeyModifier> >& getPressedKeys() const;
|
||||
const std::list<MouseButton>& getPressedMouseButtons() const;
|
||||
@@ -119,6 +122,7 @@ public:
|
||||
// Accessors
|
||||
SceneGraphNode* focusNode();
|
||||
Interpolator<double>& rotateToFocusNodeInterpolator();
|
||||
virtual bool followingNodeRotation() const = 0;
|
||||
|
||||
virtual void updateMouseStatesFromInput(const InputState& inputState, double deltaTime) = 0;
|
||||
virtual void updateCameraStateFromMouseStates(Camera& camera, double deltaTime) = 0;
|
||||
@@ -195,6 +199,7 @@ public:
|
||||
|
||||
virtual void updateMouseStatesFromInput(const InputState& inputState, double deltaTime);
|
||||
virtual void updateCameraStateFromMouseStates(Camera& camera, double deltaTime);
|
||||
bool followingNodeRotation() const override;
|
||||
|
||||
private:
|
||||
std::vector<datamessagestructures::CameraKeyframe> _keyframes;
|
||||
@@ -245,6 +250,7 @@ public:
|
||||
|
||||
virtual void updateMouseStatesFromInput(const InputState& inputState, double deltaTime);
|
||||
virtual void updateCameraStateFromMouseStates(Camera& camera, double deltaTime);
|
||||
bool followingNodeRotation() const override;
|
||||
|
||||
protected:
|
||||
//void updateCameraStateFromMouseStates(Camera& camera, double deltaTime);
|
||||
@@ -260,6 +266,7 @@ public:
|
||||
virtual void setFocusNode(SceneGraphNode* focusNode);
|
||||
//virtual void update(Camera& camera, const InputState& inputState, double deltaTime);
|
||||
virtual void updateCameraStateFromMouseStates(Camera& camera, double deltaTime);
|
||||
bool followingNodeRotation() const override;
|
||||
#ifdef OPENSPACE_MODULE_GLOBEBROWSING_ENABLED
|
||||
void goToChunk(Camera& camera, globebrowsing::TileIndex ti, glm::vec2 uv,
|
||||
bool resetCameraDirection);
|
||||
|
||||
@@ -53,7 +53,7 @@ private:
|
||||
void addToCommand(std::string c);
|
||||
|
||||
properties::BoolProperty _isVisible;
|
||||
bool _remoteScripting;
|
||||
properties::BoolProperty _remoteScripting;
|
||||
|
||||
size_t _inputPosition;
|
||||
std::vector<std::string> _commandsHistory;
|
||||
|
||||
@@ -51,16 +51,28 @@ struct CameraKeyframe {
|
||||
|
||||
glm::dvec3 _position;
|
||||
glm::dquat _rotation;
|
||||
bool _followNodeRotation;
|
||||
std::string _focusNode;
|
||||
|
||||
double _timestamp;
|
||||
|
||||
void serialize(std::vector<char> &buffer){
|
||||
//add position
|
||||
// Add position
|
||||
buffer.insert(buffer.end(), reinterpret_cast<char*>(&_position), reinterpret_cast<char*>(&_position) + sizeof(_position));
|
||||
|
||||
//add orientation
|
||||
// Add orientation
|
||||
buffer.insert(buffer.end(), reinterpret_cast<char*>(&_rotation), reinterpret_cast<char*>(&_rotation) + sizeof(_rotation));
|
||||
|
||||
//add timestamp
|
||||
|
||||
// Follow focus node rotation?
|
||||
buffer.insert(buffer.end(), reinterpret_cast<char*>(&_followNodeRotation), reinterpret_cast<char*>(&_followNodeRotation) + sizeof(_followNodeRotation));
|
||||
|
||||
int nodeNameLength = _focusNode.size();
|
||||
|
||||
// Add focus node
|
||||
buffer.insert(buffer.end(), reinterpret_cast<char*>(&nodeNameLength), reinterpret_cast<char*>(&nodeNameLength) + sizeof(nodeNameLength));
|
||||
buffer.insert(buffer.end(), _focusNode.data(), _focusNode.data() + nodeNameLength);
|
||||
|
||||
// Add timestamp
|
||||
buffer.insert(buffer.end(), reinterpret_cast<char*>(&_timestamp), reinterpret_cast<char*>(&_timestamp) + sizeof(_timestamp));
|
||||
};
|
||||
|
||||
@@ -68,17 +80,31 @@ struct CameraKeyframe {
|
||||
int offset = 0;
|
||||
int size = 0;
|
||||
|
||||
//position
|
||||
// Position
|
||||
size = sizeof(_position);
|
||||
memcpy(&_position, buffer.data() + offset, size);
|
||||
offset += size;
|
||||
|
||||
//orientation
|
||||
|
||||
// Orientation
|
||||
size = sizeof(_rotation);
|
||||
memcpy(&_rotation, buffer.data() + offset, size);
|
||||
offset += size;
|
||||
|
||||
// Follow focus node rotation?
|
||||
size = sizeof(_followNodeRotation);
|
||||
memcpy(&_followNodeRotation, buffer.data() + offset, size);
|
||||
offset += size;
|
||||
|
||||
// Focus node
|
||||
int nodeNameLength;
|
||||
size = sizeof(int);
|
||||
memcpy(&nodeNameLength, buffer.data() + offset, size);
|
||||
offset += size;
|
||||
size = nodeNameLength;
|
||||
_focusNode = std::string(buffer.data() + offset, buffer.data() + offset + size);
|
||||
offset += size;
|
||||
|
||||
//timestamp
|
||||
// Timestamp
|
||||
size = sizeof(_timestamp);
|
||||
memcpy(&_timestamp, buffer.data() + offset, size);
|
||||
};
|
||||
@@ -97,19 +123,19 @@ struct TimeKeyframe {
|
||||
double _timestamp;
|
||||
|
||||
void serialize(std::vector<char> &buffer){
|
||||
//add current time
|
||||
// Add current time
|
||||
buffer.insert(buffer.end(), reinterpret_cast<char*>(&_time), reinterpret_cast<char*>(&_time) + sizeof(_time));
|
||||
|
||||
//add delta time
|
||||
// Add delta time
|
||||
buffer.insert(buffer.end(), reinterpret_cast<char*>(&_dt), reinterpret_cast<char*>(&_dt) + sizeof(_dt));
|
||||
|
||||
//add wether time is paused or not
|
||||
// Add whether time is paused or not
|
||||
buffer.insert(buffer.end(), reinterpret_cast<char*>(&_paused), reinterpret_cast<char*>(&_paused) + sizeof(_paused));
|
||||
|
||||
//add wether a time jump is necessary (recompute paths etc)
|
||||
// Add whether a time jump is necessary (recompute paths etc)
|
||||
buffer.insert(buffer.end(), reinterpret_cast<char*>(&_requiresTimeJump), reinterpret_cast<char*>(&_requiresTimeJump) + sizeof(_requiresTimeJump));
|
||||
|
||||
//add timestamp
|
||||
// Add timestamp
|
||||
buffer.insert(buffer.end(), reinterpret_cast<char*>(&_timestamp), reinterpret_cast<char*>(&_timestamp) + sizeof(_timestamp));
|
||||
};
|
||||
|
||||
@@ -117,27 +143,27 @@ struct TimeKeyframe {
|
||||
int offset = 0;
|
||||
int size = 0;
|
||||
|
||||
//current time
|
||||
// Current time
|
||||
size = sizeof(_time);
|
||||
memcpy(&_time, buffer.data() + offset, size);
|
||||
offset += size;
|
||||
|
||||
//delta time
|
||||
// Delta time
|
||||
size = sizeof(_dt);
|
||||
memcpy(&_dt, buffer.data() + offset, size);
|
||||
offset += size;
|
||||
|
||||
//is time paused?
|
||||
// Is time paused?
|
||||
size = sizeof(_paused);
|
||||
memcpy(&_paused, buffer.data() + offset, size);
|
||||
offset += sizeof(_paused);
|
||||
|
||||
//is a time jump required?
|
||||
// Is a time jump required?
|
||||
size = sizeof(_requiresTimeJump);
|
||||
memcpy(&_requiresTimeJump, buffer.data() + offset, size);
|
||||
offset += size;
|
||||
|
||||
// timestamp
|
||||
// Timestamp
|
||||
size = sizeof(_timestamp);
|
||||
memcpy(&_timestamp, buffer.data() + offset, size);
|
||||
offset += size;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user