Merge remote-tracking branch 'origin/thesis/2019/spaceweather-stream' into thesis/2019/spaceweather-stream

This commit is contained in:
Sovanny Huy
2019-09-09 15:11:14 -04:00
432 changed files with 33891 additions and 13472 deletions
+1
View File
@@ -31,6 +31,7 @@ Thumbs.db
/screenshots/
/recordings/
/sync/
/temp/
# Customization is not supposed to be committed
customization.lua
# The COMMIT info is generated everytime CMake is run
+3 -3
View File
@@ -10,9 +10,6 @@
[submodule "modules/touch/ext/libTUIO11"]
path = modules/touch/ext/libTUIO11
url = https://github.com/mkalten/TUIO11_CPP
[submodule "modules/sync/ext/libtorrent"]
path = modules/sync/ext/libtorrent
url = https://github.com/OpenSpace/libtorrent.git
[submodule "apps/OpenSpace-MinVR/ext/minvr"]
path = apps/OpenSpace-MinVR/ext/minvr
url = https://github.com/OpenSpace/minvr
@@ -26,3 +23,6 @@
[submodule "modules/fitsfilereader/ext/cfitsio"]
path = modules/fitsfilereader/ext/cfitsio
url = https://github.com/OpenSpace/cfitsio.git
[submodule "apps/OpenSpace-MinVR/ext/glfw"]
path = apps/OpenSpace-MinVR/ext/glfw
url = https://github.com/opensgct/glfw
+9 -4
View File
@@ -2,7 +2,7 @@
# #
# OpenSpace #
# #
# Copyright (c) 2014-2018 #
# Copyright (c) 2014-2019 #
# #
# 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 #
@@ -27,9 +27,9 @@ cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
project(OpenSpace)
set(OPENSPACE_VERSION_MAJOR 0)
set(OPENSPACE_VERSION_MINOR 14)
set(OPENSPACE_VERSION_PATCH 0)
set(OPENSPACE_VERSION_STRING "Beta-4")
set(OPENSPACE_VERSION_MINOR 15)
set(OPENSPACE_VERSION_PATCH -1)
set(OPENSPACE_VERSION_STRING "Beta-5 RC1")
set(OPENSPACE_BASE_DIR "${PROJECT_SOURCE_DIR}")
@@ -285,6 +285,11 @@ if (OPENSPACE_WITH_ABUFFER_RENDERER)
target_compile_definitions(openspace-core PUBLIC "OPENSPACE_WITH_ABUFFER_RENDERER")
endif ()
option(OPENSPACE_WITH_INSTRUMENTATION "Add instrumentation options" OFF)
if (OPENSPACE_WITH_INSTRUMENTATION)
target_compile_definitions(openspace-core PUBLIC "OPENSPACE_WITH_INSTRUMENTATION")
endif ()
# Just in case, create the bin directory
add_custom_command(
+1 -1
View File
@@ -50,7 +50,7 @@ target_include_directories(OpenSpace-MinVR PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/ex
target_include_directories(OpenSpace-MinVR PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/ext/minvr/external/GLFW/src/include)
target_link_libraries(OpenSpace-MinVR libOpenSpace MinVR)
target_link_libraries(OpenSpace-MinVR openspace-core MinVR)
# Web Browser and Web gui
# Why not put these in the module's path? Because they do not have access to the
+16 -1
View File
@@ -200,7 +200,14 @@ void Handler::onVREvent(const VRDataIndex& eventData) {
if (button == MouseButton::Right && action == MouseAction::Press) {
windowingGlobals.mouseButtons |= 1 << 2;
}
global::openSpaceEngine.mouseButtonCallback(button, action);
using KM = KeyModifier;
KM mod = KM::NoModifier;
mod |= keyboardState.modifierShift ? KM::Shift : KM::NoModifier;
mod |= keyboardState.modifierCtrl ? KM::Control : KM::NoModifier;
mod |= keyboardState.modifierAlt ? KM::Alt : KM::NoModifier;
global::openSpaceEngine.mouseButtonCallback(button, action, mod);
}
}
@@ -341,6 +348,14 @@ int main(int argc, char** argv) {
ghoul::initialize();
// Register the path of the executable,
// to make it possible to find other files in the same directory.
FileSys.registerPathToken(
"${BIN}",
ghoul::filesystem::File(absPath(argv[0])).directoryName(),
ghoul::filesystem::FileSystem::Override::Yes
);
// Create the OpenSpace engine and get arguments for the SGCT engine
std::string windowConfiguration;
try {
+58 -57
View File
@@ -76,6 +76,8 @@ constexpr const bool EnableDetailedVtune = false;
#include "nvToolsExt.h"
#endif // OPENSPACE_HAS_NVTOOLS
using namespace openspace;
namespace {
constexpr const char* _loggerCat = "main";
@@ -157,9 +159,9 @@ LONG WINAPI generateMiniDump(EXCEPTION_POINTERS* exceptionPointers) {
std::string dumpFile = fmt::format(
"OpenSpace_{}_{}_{}-{}-{}-{}-{}-{}-{}--{}--{}.dmp",
openspace::OPENSPACE_VERSION_MAJOR,
openspace::OPENSPACE_VERSION_MINOR,
openspace::OPENSPACE_VERSION_PATCH,
OPENSPACE_VERSION_MAJOR,
OPENSPACE_VERSION_MINOR,
OPENSPACE_VERSION_PATCH,
stLocalTime.wYear,
stLocalTime.wMonth,
stLocalTime.wDay,
@@ -260,7 +262,7 @@ void mainInitFunc() {
LTRACE("main::mainInitFunc(begin)");
LDEBUG("Initializing OpenSpace Engine started");
openspace::global::openSpaceEngine.initialize();
global::openSpaceEngine.initialize();
LDEBUG("Initializing OpenSpace Engine finished");
{
@@ -287,21 +289,9 @@ void mainInitFunc() {
LDEBUG("Initializing OpenGL in OpenSpace Engine started");
openspace::global::openSpaceEngine.initializeGL();
global::openSpaceEngine.initializeGL();
LDEBUG("Initializing OpenGL in OpenSpace Engine finished");
{
//using namespace ghoul::opengl;
//std::unique_ptr<ghoul::opengl::Texture> t = ghoul::io::TextureReader::ref().loadTexture(absPath("${DATA}/openspace-icon.png"));
//GLFWimage icons[1];
//icons[0].pixels =
}
// 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.
@@ -378,7 +368,7 @@ void mainInitFunc() {
//
std::string screenshotPath = "${SCREENSHOTS}";
if (openspace::global::configuration.shouldUseScreenshotDate) {
if (global::configuration.shouldUseScreenshotDate) {
std::time_t now = std::time(nullptr);
std::tm* nowTime = std::localtime(&now);
char mbstr[128];
@@ -424,13 +414,13 @@ void mainPreSyncFunc() {
#endif // OPENSPACE_HAS_VTUNE
LTRACE("main::mainPreSyncFunc(begin)");
openspace::global::openSpaceEngine.preSynchronization();
global::openSpaceEngine.preSynchronization();
// Query joystick status
using namespace openspace::interaction;
using namespace interaction;
for (int i = GLFW_JOYSTICK_1; i <= GLFW_JOYSTICK_LAST; ++i) {
JoystickInputState& state = openspace::global::joystickInputStates[i];
JoystickInputState& state = global::joystickInputStates[i];
int present = glfwJoystickPresent(i);
if (present == GLFW_FALSE) {
@@ -523,7 +513,7 @@ void mainPostSyncPreDrawFunc() {
#endif // OPENSPACE_HAS_NVTOOLS
LTRACE("main::postSynchronizationPreDraw(begin)");
openspace::global::openSpaceEngine.postSynchronizationPreDraw();
global::openSpaceEngine.postSynchronizationPreDraw();
#ifdef OPENVR_SUPPORT
if (FirstOpenVRWindow) {
@@ -571,7 +561,7 @@ void mainRenderFunc() {
#endif
try {
openspace::global::openSpaceEngine.render(
global::openSpaceEngine.render(
SgctEngine->getModelMatrix(),
viewMatrix,
projectionMatrix
@@ -603,7 +593,7 @@ void mainDraw2DFunc() {
LTRACE("main::mainDraw2DFunc(begin)");
try {
openspace::global::openSpaceEngine.drawOverlays();
global::openSpaceEngine.drawOverlays();
}
catch (const ghoul::RuntimeError& e) {
LERRORC(e.component, e.message);
@@ -639,7 +629,7 @@ void mainPostDrawFunc() {
}
#endif // OPENVR_SUPPORT
openspace::global::openSpaceEngine.postDraw();
global::openSpaceEngine.postDraw();
#ifdef OPENSPACE_HAS_SPOUT
for (const SpoutWindow& w : SpoutWindows) {
@@ -679,7 +669,7 @@ void mainPostDrawFunc() {
void mainKeyboardCallback(int key, int, int action, int mods) {
void mainKeyboardCallback(int key, int, int action, int modifiers) {
#ifdef OPENSPACE_HAS_VTUNE
if (EnableDetailedVtune) {
__itt_frame_begin_v3(_vTune.keyboard, nullptr);
@@ -687,11 +677,10 @@ void mainKeyboardCallback(int key, int, int action, int mods) {
#endif // OPENSPACE_HAS_VTUNE
LTRACE("main::mainKeyboardCallback(begin)");
openspace::global::openSpaceEngine.keyboardCallback(
openspace::Key(key),
openspace::KeyModifier(mods),
openspace::KeyAction(action)
);
const Key k = Key(key);
const KeyModifier m = KeyModifier(modifiers);
const KeyAction a = KeyAction(action);
global::openSpaceEngine.keyboardCallback(k, m, a);
LTRACE("main::mainKeyboardCallback(begin)");
#ifdef OPENSPACE_HAS_VTUNE
@@ -711,11 +700,10 @@ void mainMouseButtonCallback(int key, int action, int modifiers) {
#endif // OPENSPACE_HAS_VTUNE
LTRACE("main::mainMouseButtonCallback(begin)");
openspace::global::openSpaceEngine.mouseButtonCallback(
openspace::MouseButton(key),
openspace::MouseAction(action),
openspace::KeyModifier(modifiers)
);
const MouseButton k = MouseButton(key);
const MouseAction a = MouseAction(action);
const KeyModifier m = KeyModifier(modifiers);
global::openSpaceEngine.mouseButtonCallback(k, a, m);
LTRACE("main::mainMouseButtonCallback(end)");
#ifdef OPENSPACE_HAS_VTUNE
@@ -734,7 +722,7 @@ void mainMousePosCallback(double x, double y) {
}
#endif // OPENSPACE_HAS_VTUNE
openspace::global::openSpaceEngine.mousePositionCallback(x, y);
global::openSpaceEngine.mousePositionCallback(x, y);
#ifdef OPENSPACE_HAS_VTUNE
if (EnableDetailedVtune) {
@@ -753,7 +741,7 @@ void mainMouseScrollCallback(double posX, double posY) {
#endif // OPENSPACE_HAS_VTUNE
LTRACE("main::mainMouseScrollCallback(begin");
openspace::global::openSpaceEngine.mouseScrollWheelCallback(posX, posY);
global::openSpaceEngine.mouseScrollWheelCallback(posX, posY);
LTRACE("main::mainMouseScrollCallback(end)");
#ifdef OPENSPACE_HAS_VTUNE
@@ -765,17 +753,15 @@ void mainMouseScrollCallback(double posX, double posY) {
void mainCharCallback(unsigned int codepoint, int mods) {
void mainCharCallback(unsigned int codepoint, int modifiers) {
#ifdef OPENSPACE_HAS_VTUNE
if (EnableDetailedVtune) {
__itt_frame_begin_v3(_vTune.character, nullptr);
}
#endif // OPENSPACE_HAS_VTUNE
openspace::global::openSpaceEngine.charCallback(
codepoint,
openspace::KeyModifier(mods)
);
const KeyModifier m = KeyModifier(modifiers);
global::openSpaceEngine.charCallback(codepoint, m);
#ifdef OPENSPACE_HAS_VTUNE
if (EnableDetailedVtune) {
@@ -794,7 +780,7 @@ void mainEncodeFun() {
#endif // OPENSPACE_HAS_VTUNE
LTRACE("main::mainEncodeFun(begin)");
std::vector<char> data = openspace::global::openSpaceEngine.encode();
std::vector<char> data = global::openSpaceEngine.encode();
_synchronizationBuffer.setVal(std::move(data));
sgct::SharedData::instance()->writeVector(&_synchronizationBuffer);
@@ -818,7 +804,7 @@ void mainDecodeFun() {
sgct::SharedData::instance()->readVector(&_synchronizationBuffer);
std::vector<char> data = _synchronizationBuffer.getVal();
openspace::global::openSpaceEngine.decode(std::move(data));
global::openSpaceEngine.decode(std::move(data));
LTRACE("main::mainDecodeFun(end)");
#ifdef OPENSPACE_HAS_VTUNE
@@ -845,7 +831,7 @@ void mainLogCallback(const char* msg) {
void setSgctDelegateFunctions() {
openspace::WindowDelegate& sgctDelegate = openspace::global::windowDelegate;
WindowDelegate& sgctDelegate = global::windowDelegate;
sgctDelegate.terminate = []() { sgct::Engine::instance()->terminate(); };
sgctDelegate.setBarrier = [](bool enabled) {
sgct::SGCTWindow::setBarrier(enabled);
@@ -1052,6 +1038,19 @@ void setSgctDelegateFunctions() {
sgct::SGCTWindow* w = sgct::Engine::instance()->getWindowPtr(0);
w->setHorizFieldOfView(hFovDeg);
};
sgctDelegate.frustumMode = []() {
using FM = sgct_core::Frustum::FrustumMode;
switch (sgct::Engine::instance()->getCurrentFrustumMode()) {
case FM::MonoEye: return WindowDelegate::Frustum::Mono;
case FM::StereoLeftEye: return WindowDelegate::Frustum::LeftEye;
case FM::StereoRightEye: return WindowDelegate::Frustum::RightEye;
}
};
sgctDelegate.swapGroupFrameNumber = []() {
unsigned int fn = 0;
sgct::Engine::instance()->getCurrentWindowPtr()->getSwapGroupFrameNumber(fn);
return static_cast<uint64_t>(fn);
};
}
int main(int argc, char** argv) {
@@ -1113,7 +1112,7 @@ int main(int argc, char** argv) {
ghoul::cmdparser::CommandlineParser::AllowUnknownCommands::Yes
);
openspace::CommandlineArguments commandlineArguments;
CommandlineArguments commandlineArguments;
parser.addCommand(std::make_unique<ghoul::cmdparser::SingleCommand<std::string>>(
commandlineArguments.configurationName, "--file", "-f",
"Provides the path to the OpenSpace configuration file. Only the '${TEMPORARY}' "
@@ -1132,7 +1131,7 @@ int main(int argc, char** argv) {
"evaluated before it is passed to OpenSpace."
));
// setCommandLine returns a referece to the vector that will be filled later
// setCommandLine returns a reference to the vector that will be filled later
const std::vector<std::string>& sgctArguments = parser.setCommandLine(
{ argv, argv + argc }
);
@@ -1153,8 +1152,6 @@ int main(int argc, char** argv) {
// Create the OpenSpace engine and get arguments for the SGCT engine
std::string windowConfiguration;
try {
using namespace openspace;
// Find configuration
std::string configurationFilePath = commandlineArguments.configurationName;
if (commandlineArguments.configurationName.empty()) {
@@ -1190,16 +1187,17 @@ int main(int argc, char** argv) {
// Determining SGCT configuration file
LDEBUG("SGCT Configuration file: " + global::configuration.windowConfiguration);
windowConfiguration = openspace::global::configuration.windowConfiguration;
windowConfiguration = global::configuration.windowConfiguration;
}
catch (const openspace::documentation::SpecificationError& e) {
catch (const documentation::SpecificationError& e) {
LFATALC("main", "Loading of configuration file failed");
for (const openspace::documentation::TestResult::Offense& o : e.result.offenses) {
for (const documentation::TestResult::Offense& o : e.result.offenses) {
LERRORC(o.offender, ghoul::to_string(o.reason));
}
for (const openspace::documentation::TestResult::Warning& w : e.result.warnings) {
for (const documentation::TestResult::Warning& w : e.result.warnings) {
LWARNINGC(w.offender, ghoul::to_string(w.reason));
}
ghoul::deinitialize();
exit(EXIT_FAILURE);
}
catch (const ghoul::RuntimeError& e) {
@@ -1208,10 +1206,11 @@ int main(int argc, char** argv) {
if (ghoul::logging::LogManager::isInitialized()) {
LogMgr.flushLogs();
}
ghoul::deinitialize();
return EXIT_FAILURE;
}
openspace::global::openSpaceEngine.registerPathTokens();
global::openSpaceEngine.registerPathTokens();
// Prepend the outgoing sgctArguments with the program name
// as well as the configuration file that sgct is supposed to use
@@ -1305,8 +1304,8 @@ int main(int argc, char** argv) {
auto cleanup = [&](bool isInitialized) {
if (isInitialized) {
openspace::global::openSpaceEngine.deinitializeGL();
openspace::global::openSpaceEngine.deinitialize();
global::openSpaceEngine.deinitializeGL();
global::openSpaceEngine.deinitialize();
}
// Clear function bindings to avoid crash after destroying the OpenSpace Engine
@@ -1333,6 +1332,8 @@ int main(int argc, char** argv) {
}
}
#endif // OPENSPACE_HAS_SPOUT
ghoul::deinitialize();
};
if (!initSuccess) {
+21 -36
View File
@@ -22,43 +22,26 @@
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
****************************************************************************************/
#include <ghoul/opengl/ghoul_gl.h>
#include <ghoul/filesystem/filesystem.h>
#include <ghoul/filesystem/directory.h>
#include <ghoul/logging/logmanager.h>
#include <ghoul/logging/consolelog.h>
#include <ghoul/ghoul.h>
#include <openspace/network/parallelserver.h>
#include <ghoul/fmt.h>
#include <ghoul/cmdparser/commandlineparser.h>
#include <ghoul/cmdparser/singlecommand.h>
#include <openspace/engine/windowdelegate.h>
#include <openspace/scripting/scriptengine.h>
#include <openspace/rendering/renderable.h>
#include <openspace/network/parallelserver.h>
#include <iostream>
#include <string>
#include <ghoul/glm.h>
#include <functional>
#include <sstream>
#include <ghoul/logging/logmanager.h>
#include <iomanip>
#include <ios>
namespace {
const std::string _loggerCat = "Wormhole";
}
constexpr const char*_loggerCat = "Wormhole";
} // namespace
int main(int argc, char** argv) {
using namespace openspace;
using namespace ghoul::cmdparser;
std::vector<std::string> arguments(argv, argv + argc);
ghoul::cmdparser::CommandlineParser commandlineParser(
CommandlineParser commandlineParser(
"Wormhole",
ghoul::cmdparser::CommandlineParser::AllowUnknownCommands::Yes
CommandlineParser::AllowUnknownCommands::Yes
);
std::stringstream defaultPassword;
@@ -73,43 +56,43 @@ int main(int argc, char** argv) {
std::chrono::system_clock::now().time_since_epoch().count() + 1
) % 0xffffff);
std::string portString = "";
std::string portString;
commandlineParser.addCommand(
std::make_unique<ghoul::cmdparser::SingleCommand<std::string>>(
portString,
"--port",
"-p",
"Sets the port to listen on"
)
)
);
std::string password = "";
std::string password;
commandlineParser.addCommand(
std::make_unique<ghoul::cmdparser::SingleCommand<std::string>>(
password,
"--password",
"-l",
"Sets the password to use"
)
)
);
std::string changeHostPassword = "";
std::string changeHostPassword;
commandlineParser.addCommand(
std::make_unique<ghoul::cmdparser::SingleCommand<std::string>>(
changeHostPassword,
"--hostpassword",
"-h",
"Sets the host password to use"
)
)
);
commandlineParser.setCommandLine(arguments);
commandlineParser.execute();
if (password == "") {
if (password.empty()) {
password = defaultPassword.str();
}
if (changeHostPassword == "") {
if (changeHostPassword.empty()) {
changeHostPassword = defaultChangeHostPassword.str();
}
@@ -118,11 +101,11 @@ int main(int argc, char** argv) {
int port = 25001;
if (portString != "") {
if (!portString.empty()) {
try {
port = std::stoi(portString);
}
catch (...) {
catch (const std::invalid_argument&) {
LERROR(fmt::format("Invalid port: {}", portString));
}
}
@@ -132,7 +115,9 @@ int main(int argc, char** argv) {
server.setDefaultHostAddress("127.0.0.1");
LINFO(fmt::format("Server listening to port {}", port));
while (std::cin.get() != 'q') {}
while (std::cin.get() != 'q') {
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
}
server.stop();
LINFO("Server stopped");
+1 -1
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" ?>
<Cluster masterAddress="localhost">
<Node address="localhost" port="20401">
<Window tags="OpenVR" fullScreen="false" numberOfSamples="8" name="OpenSpace">
<Window tags="OpenVR" fullScreen="false" numberOfSamples="4" name="OpenSpace">
<Stereo type="side_by_side" />
<!-- Res is equal to the Recommend target size -->
<Size x="1332" y="840" />
+1 -1
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" ?>
<Cluster masterAddress="localhost">
<Node address="localhost" port="20401">
<Window tags="OpenVR" fullScreen="false" numberOfSamples="8" name="OpenSpace">
<Window tags="OpenVR" fullScreen="false" numberOfSamples="4" name="OpenSpace">
<Stereo type="side_by_side" />
<!-- Res is equal to the Recommend target size -->
<Size x="1332" y="793" />
+3 -3
View File
@@ -4,15 +4,15 @@
<Display swapInterval="0" />
</Settings>
<Node address="localhost" port="20401">
<Window fullScreen="false" fxaa="false" numberOfSamples="8" name="OpenSpace">
<Window fullScreen="false" fxaa="false" numberOfSamples="4" name="OpenSpace">
<Stereo type="none" />
<Size x="1280" y="720" />
<Pos x="50" y="50" />
<Viewport>
<Viewport tracked="true">
<Pos x="0.0" y="0.0" />
<Size x="1.0" y="1.0" />
<PlanarProjection>
<FOV down="16.875" left="30.0" right="30.0" up="16.875" />
<FOV down="25.267007923362" left="40.0" right="40.0" up="25.267007923362" />
<Orientation heading="0.0" pitch="0.0" roll="0.0" />
</PlanarProjection>
</Viewport>
+1 -1
View File
@@ -6,7 +6,7 @@
<Scale value="1.0" />
</Scene> -->
<Node address="localhost" port="20401">
<Window fullScreen="false" numberOfSamples="8" name="OpenSpace">
<Window fullScreen="false" numberOfSamples="4" name="OpenSpace">
<Stereo type="none" />
<!-- 16:9 aspect ratio -->
<Size x="1024" y="1024" />
+54
View File
@@ -0,0 +1,54 @@
<?xml version="1.0" ?>
<Cluster masterAddress="localhost">
<!-- <Scene>
<Orientation yaw="0.0" pitch="-27.0" roll="0.0" />
<Offset x="0.0" y="0.0" z="0.0" />
<Scale value="1.0" />
</Scene> -->
<Node address="localhost" port="20401">
<Window fullScreen="false" numberOfSamples="4" name="OpenSpace">
<Stereo type="none" />
<!-- 16:9 aspect ratio -->
<Size x="1024" y="1024" />
<!-- Frame buffer resolution
<Res x="4096" y="4096" /> -->
<!--
quality options (cubemap size):
- low (256)
- medium (512)
- high/1k (1024)
- 2k (2048)
- 4k (4096)
- 8k (8192)
tilt specifies the dome tilt angle in degrees from the horizontal
-->
<Viewport name="fisheye">
<Pos x="0.0" y="0.0" />
<Size x="1.0" y="1.0" />
<FisheyeProjection fov="180" quality="1k" tilt="27.0">
<Background r="0.1" g="0.1" b="0.1" a="1.0" />
</FisheyeProjection>
</Viewport>
</Window>
<Window fullScreen="false" msaa="1" name="GUI" tags="GUI">
<Stereo type="none" />
<Size x="1280" y="720" />
<Res x="2048" y="2048" />
<Pos x="50" y="50" />
<Viewport>
<Pos x="0.0" y="0.0" />
<Size x="1.0" y="1.0" />
<PlanarProjection>
<FOV down="25.267007923362" left="40.0" right="40.0" up="25.267007923362" />
<Orientation heading="0.0" pitch="0.0" roll="0.0" />
</PlanarProjection>
</Viewport>
</Window>
</Node>
<User eyeSeparation="0.06">
<Pos x="0.0" y="0.0" z="0.0" />
</User>
</Cluster>
+4 -8
View File
@@ -4,30 +4,26 @@
<Display swapInterval="0" />
</Settings>
<Node address="localhost" port="20401">
<Window fullScreen="false" numberOfSamples="8" name="OpenSpace">
<Window fullScreen="false" numberOfSamples="4" name="OpenSpace">
<Stereo type="none" />
<Size x="1280" y="720" />
<Pos x="50" y="50" />
<Viewport>
<Viewport tracked="true">
<Pos x="0.0" y="0.0" />
<Size x="1.0" y="1.0" />
<PlanarProjection>
<FOV down="16.875" left="30.0" right="30.0" up="16.875" />
<FOV down="25.267007923362" left="40.0" right="40.0" up="25.267007923362" />
<Orientation heading="0.0" pitch="0.0" roll="0.0" />
</PlanarProjection>
</Viewport>
</Window>
<Window fullScreen="false" numberOfSamples="8" name="GUI" tags="GUI">
<Window fullScreen="false" numberOfSamples="4" name="GUI" tags="GUI">
<Stereo type="none" />
<Size x="1280" y="720" />
<Pos x="50" y="50" />
<Viewport>
<Pos x="0.0" y="0.0" />
<Size x="1.0" y="1.0" />
<PlanarProjection>
<FOV down="16.875" left="30.0" right="30.0" up="16.875" />
<Orientation heading="0.0" pitch="0.0" roll="0.0" />
</PlanarProjection>
</Viewport>
</Window>
</Node>
+4 -4
View File
@@ -1,14 +1,14 @@
<?xml version="1.0" ?>
<Cluster masterAddress="127.0.0.1">
<Node address="127.0.0.1" port="20401">
<Window fullScreen="false" numberOfSamples="8" border="true">
<Window fullScreen="false" numberOfSamples="4" border="true">
<Pos x="10" y="100" />
<Size x="1280" y="720" />
<Viewport>
<Viewport tracked="true">
<Pos x="0.0" y="0.0" />
<Size x="1.0" y="1.0" />
<PlanarProjection>
<FOV down="16.875" left="30.0" right="30.0" up="16.875" />
<FOV down="25.267007923362" left="40.0" right="40.0" up="25.267007923362" />
<Orientation heading="0.0" pitch="0.0" roll="0.0" />
</PlanarProjection>
</Viewport>
@@ -20,7 +20,7 @@
<Pos x="0.0" y="0.0" />
<Size x="1.0" y="1.0" />
<PlanarProjection>
<FOV down="16.875" left="30.0" right="30.0" up="16.875" />
<FOV down="25.267007923362" left="40.0" right="40.0" up="25.267007923362" />
<Orientation heading="0.0" pitch="0.0" roll="0.0" />
</PlanarProjection>
</Viewport>
+1 -1
View File
@@ -34,7 +34,7 @@
<Pos x="0.0" y="0.0" />
<Size x="1.0" y="1.0" />
<PlanarProjection>
<FOV down="16.875" left="30.0" right="30.0" up="16.875" />
<FOV down="25.267007923362" left="40.0" right="40.0" up="25.267007923362" />
<Orientation heading="0.0" pitch="0.0" roll="0.0" />
</PlanarProjection>
</Viewport>
+4 -4
View File
@@ -5,11 +5,11 @@
<Pos x="0" y="300" />
<!-- 16:9 aspect ratio -->
<Size x="1280" y="720" />
<Viewport>
<Viewport tracked="true">
<Pos x="0.0" y="0.0" />
<Size x="1.0" y="1.0" />
<PlanarProjection>
<FOV down="16.875" left="30.0" right="30.0" up="16.875" />
<FOV down="25.267007923362" left="40.0" right="40.0" up="25.267007923362" />
<Orientation heading="0.0" pitch="0.0" roll="0.0" />
</PlanarProjection>
</Viewport>
@@ -20,11 +20,11 @@
<Pos x="640" y="300" />
<!-- 16:9 aspect ratio -->
<Size x="1280" y="720" />
<Viewport>
<Viewport tracked="true">
<Pos x="0.0" y="0.0" />
<Size x="1.0" y="1.0" />
<PlanarProjection>
<FOV down="16.875" left="30.0" right="30.0" up="16.875" />
<FOV down="25.267007923362" left="40.0" right="40.0" up="25.267007923362" />
<Orientation heading="0.0" pitch="0.0" roll="0.0" />
</PlanarProjection>
</Viewport>
+128
View File
@@ -0,0 +1,128 @@
--apollo.scene
asset.require('./base')
local propertyHelper = asset.require('util/property_helper')
local sceneHelper = asset.require('util/scene_helper')
asset.require('scene/solarsystem/planets/earth/moon/moon')
asset.require('scene/solarsystem/missions/apollo/apollo8.asset')
-- Custom Keybindings
local Keybindings = {
{
Key = "E",
Command = "openspace.time.setPause(true);" ..
"openspace.time.setDeltaTime(1);" ..
"openspace.time.setTime('1968 DEC 24 16:37:31');" ..
"openspace.navigation.setNavigationState({" ..
" Anchor = 'Apollo8'," ..
" Position = { 1.494592E1, 3.236777E1, -4.171296E1 }," ..
" ReferenceFrame = 'Root'," ..
" Up = { 0.960608E0, -0.212013E0, 0.179675E0 }" ..
"});" ..
"openspace.setPropertyValue('*Trail.Renderable.Enabled', false)",
Documentation = "Jump to right before the earthrise photo",
Name = "Set Earthrise time",
GuiPath = "/Missions/Apollo/8",
Local = false
},
{
Key = "U",
Command = "openspace.time.setTime('1968-12-21T12:51:37.00')" ..
"openspace.setPropertyValueSingle('Scene.Apollo8LaunchTrail.Renderable.Enabled', true);",
Documentation = "Jump to time right before Apollo 8 liftoff, with its trail enabled",
Name = "Set Apollo 8 launch time",
GuiPath = "/Missions/Apollo/8",
Local = false
},
{
Key = "K",
Command = propertyHelper.invert('Scene.Moon.Renderable.Layers.ColorLayers.Kaguya_Utah.Enabled'),
Documentation = "Toggles Moon Kaguya color layer",
Name = "Toggle Kaguya layer on the Moon",
GuiPath = "/Missions/Apollo",
Local = false
},
{
Key = "T",
Command = propertyHelper.invert('Scene.Apollo8MoonTrail.Renderable.Enabled'),
Documentation = "Toggles the trails of the Apollo 8 orbits, focused around the Moon",
Name = "Toggle Apollo 8 orbits",
GuiPath = "/Missions/Apollo/8",
Local = false
},
{
Key = "SHIFT+T",
Command = propertyHelper.invert('Scene.Apollo8LaunchTrail.Renderable.Enabled'),
Documentation = "Toggles the trails of the Apollo 8 Launch, focused around the Earth",
Name = "Toggle Apollo 8 launch trail",
GuiPath = "/Missions/Apollo/8",
Local = false
},
{
Key = "CTRL+T",
Command = propertyHelper.invert('Scene.Apollo8EarthBarycenterTrail.Renderable.Enabled'),
Documentation = "Toggles the trails of the full Apollo 8, with Earth's frame of reference",
Name = "Toggles Apollo 8 full trail",
GuiPath = "/Missions/Apollo/8",
Local = false
},
{
Key = "S",
Command = propertyHelper.invert('Scene.Moon.Renderable.PerformShading'),
Documentation = "Toggles shading for the Moon",
Name = "Toggle Moon shading",
GuiPath = "/Missions/Apollo",
Local = false
},
{
Key = "PAGE_UP",
Command = "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Aim', '')" ..
"openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Anchor', 'Apollo8')" ..
"openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)",
Documentation = "Set camera focus to Apollo 8",
Name = "Focus on Apollo 8",
GuiPath = "/Missions/Apollo/8",
Local = false
},
{
Key = "PAGE_DOWN",
Command = "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Aim', '')" ..
"openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Anchor', 'Moon')" ..
"openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)",
Documentation = "Set camera focus to the Moon",
Name = "Focus on Moon",
GuiPath = "/Missions/Apollo",
Local = false
},
{
Key = "HOME",
Command = "openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Aim', '')" ..
"openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Anchor', 'Earth')" ..
"openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)",
Documentation = "Set camera focus to the Earth",
Name = "Focus on Earth",
GuiPath = "/Missions/Apollo",
Local = false
}
}
local earthAsset = asset.require('scene/solarsystem/planets/earth/earth')
asset.onInitialize(function ()
sceneHelper.bindKeys(Keybindings)
openspace.time.setTime("1968-12-21T12:51:51.0")
-- Earthrise:
-- openspace.time.setTime("1968-12-24T16:37:19.0")
openspace.markInterestingNodes({ "Earth", "Moon", "Apollo8", "Apollo8Launch" })
openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.MinimumAllowedDistance', 0.000000);
openspace.setPropertyValueSingle('Scene.Moon.Renderable.LodScaleFactor', 24.0);
openspace.globebrowsing.goToGeo(earthAsset.Earth.Identifier, 20, -60, 15000000)
end)
asset.onDeinitialize(function ()
openspace.removeInterestingNodes({ "Earth", "Moon", "Apollo8" })
end)
+117
View File
@@ -0,0 +1,117 @@
asset.require('./base')
--moonrocks.scene
local sceneHelper = asset.require('util/scene_helper')
-- local station2 = asset.require('scene/solarsystem/missions/apollo/bouldersstation2')
-- local station6 = asset.require('scene/solarsystem/missions/apollo/bouldersstation6')
-- local station7 = asset.require('scene/solarsystem/missions/apollo/bouldersstation7')
asset.require('scene/solarsystem/missions/apollo/apollo8')
asset.require('scene/solarsystem/missions/apollo/apollo11')
asset.require('scene/solarsystem/missions/apollo/a17_lem')
asset.require('scene/solarsystem/missions/apollo/apollo_globebrowsing')
asset.require('scene/solarsystem/missions/apollo/apollo_11_lem_flipbook')
asset.require('scene/solarsystem/missions/apollo/insignias_map')
local Keybindings = {
{
Key = "m",
Command = "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'Moon'); " ..
"openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil);",
Documentation = "Focus on Moon",
Name = "Focus on Moon",
GuiPath = "/Missions/Apollo",
Local = false
},
{
Key = "F9",
Command = "openspace.setPropertyValue('Scene.Moon.Renderable.Layers.ColorLayers.A17_*.Enabled', false);" ..
"openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.HeightLayers.LRO_NAC_Apollo_11.Enabled', false);" ..
"openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A11_M177481212_p_longlat.Enabled', false);" ..
"openspace.setPropertyValueSingle('Scene.Apollo11MoonTrail.Renderable.Enabled', false);" ..
"openspace.setPropertyValueSingle('Scene.Apollo11LemTrail.Renderable.Enabled', false);"..
"openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.HeightLayers.LRO_NAC_Apollo_17.Enabled', false);",
Documentation = "Disable apollo site on moon when switching",
Name = "Disable Apollo site",
GuiPath = "/Missions/Apollo",
Local = false
},
{
Key = "F11",
Command = "openspace.time.setTime('1969 JUL 20 20:17:40');" ..
"openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.HeightLayers.LRO_NAC_Apollo_11.Enabled', true);" ..
"openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A11_M177481212_p_longlat.Enabled', true);" ..
"openspace.setPropertyValueSingle('Scene.Moon.Renderable.LodScaleFactor', 20.11);" ..
"openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'Apollo11LemPosition');" ..
"openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil);" ..
"openspace.setPropertyValueSingle('Scene.Apollo11MoonTrail.Renderable.Enabled', true);" ..
"openspace.setPropertyValueSingle('Scene.Apollo11LemTrail.Renderable.Enabled', true);",
Documentation = "Setup for A11 site",
Name = "Setup A11 site",
GuiPath = "/Missions/Apollo/11",
Local = false
},
{
Key = "F7",
Command = "openspace.time.setTime('1972 DEC 12 19:47:11');" ..
"openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_travmap.BlendMode', 0.000000);" ..
"openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_travmap.Enabled', true);" ..
"openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.HeightLayers.LRO_NAC_Apollo_17.Enabled', true);" ..
-- "openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_station6a.Enabled', true);" ..
-- "openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_station6a.BlendMode', 0.000000);" ..
-- "openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_station2.Enabled', true);" ..
-- "openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_station2.BlendMode', 0.000000);" ..
-- "openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_station7.Enabled', true);" ..
"openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_LEM.Enabled', true);" ..
"openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_LEM.BlendMode', 0.000000);" ..
"openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_NAC_Alt_p.Enabled', true);" ..
"openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_NAC_Alt_p.BlendMode', 0.000000);" ..
"openspace.setPropertyValueSingle('Scene.Moon.Renderable.LodScaleFactor', 20.17);" ..
"openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'Apollo17LemModel');" ..
"openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil);" ..
"openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_station7.BlendMode', 0.000000);",
Documentation = "Setup for A17 site",
Name = "Setup A17 site",
GuiPath = "/Missions/Apollo/17",
Local = false
}
}
local moonAsset = asset.require('scene/solarsystem/planets/earth/moon/moon')
asset.onInitialize(function ()
openspace.time.setTime("1972 DEC 12 19:47:11")
sceneHelper.bindKeys(Keybindings)
openspace.markInterestingNodes({
"Moon", "Apollo11LemModel", "Apollo17LemModel",
"Apollo11", "Apollo11LunarLander",
-- "Station_2_Boulder2", "Station_6_Fragment1"
})
openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_travmap.BlendMode', 0);
-- To enable both sites by default, uncomment these lines
-- openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_travmap.Enabled', true);
-- openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.HeightLayers.LRO_NAC_Apollo_17.Enabled', true);
-- openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_LEM.Enabled', true);
-- openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_LEM.BlendMode', 0.000000);
-- openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_NAC_Alt_p.Enabled', true);
-- openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_NAC_Alt_p.BlendMode', 0.000000);
-- openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_station7.BlendMode', 0.000000);
-- openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.HeightLayers.LRO_NAC_Apollo_11.Enabled', true);
-- openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A11_M177481212_p_longlat.Enabled', true);
openspace.setPropertyValueSingle('Scene.Apollo11LemDescentModel.Renderable.RotationVector', { 273.205475,6.904110,308.712311 });
openspace.setPropertyValueSingle('Scene.Apollo11LemLandedModel.Renderable.RotationVector', { 273.205475,6.904110,308.712311 });
openspace.globebrowsing.goToGeo(moonAsset.Moon.Identifier, 20, -60, 15000000)
openspace.setPropertyValueSingle("Scene.Moon.Renderable.PerformShading", false)
end)
asset.onDeinitialize(function ()
openspace.removeInterestingNodes({
"Moon", "Apollo11Lem", "Apollo17Lem",
"Apollo11", "Apollo11LemPosition",
-- "Station_6_Fragment1", "Station_6_Fragments_2_3"
})
end)
@@ -15,6 +15,7 @@ asset.require('scene/solarsystem/planets')
asset.require('scene/solarsystem/planets/mars/moons/phobos')
asset.require('scene/solarsystem/planets/mars/moons/deimos')
asset.require('scene/solarsystem/dwarf_planets/pluto/system')
asset.request('scene/milkyway/milkyway/volume')
assetHelper.requestAll(asset, 'scene/digitaluniverse')
+11 -2
View File
@@ -1,10 +1,9 @@
-- Add require statements for assets exporting the neccessary globes
-- example:
-- here we add Mars, Moon and Mercury:
asset.require('../scene/solarsystem/planets/mars/mars')
asset.require('../scene/solarsystem/planets/earth/moon/moon')
asset.require('../scene/solarsystem/planets/mercury/mercury')
local CreateFocusNodes = false
-- Add folders to this list that contain .info files describing patches
@@ -21,8 +20,17 @@ local vrt_folders = {
-- tl;dr: Specify CTX folders first, then HiRISE
-- example: 'C:/OpenSpace/GlobeBrowsingData/Mars/CTX'
-- We recommend using this folder for CTX
openspace.absPath('${BASE}/../OpenSpaceData/Mars/CTX'),
-- if not and you have a custom path for CTX layers, enter it below
'',
-- Our provided HiRISE layer
openspace.absPath('${ASSETS}/scene/solarsystem/planets/mars/map_service_configs/ESRI/'),
-- We recommend using this folder for HiRISE
openspace.absPath('${BASE}/../OpenSpaceData/Mars/HiRISE'),
-- if not and you have a custom path for HiRISE layers, enter it below
'',
},
Moon = {
@@ -32,6 +40,7 @@ local vrt_folders = {
-- results
-- example: 'C:/OpenSpace/GlobeBrowsingData/Moon'
openspace.absPath('${BASE}/../OpenSpaceData/Moon'),
openspace.absPath('${BASE}/../OpenSpaceData/Apollo'),
''
},
Mercury = {
+1 -2
View File
@@ -10,10 +10,9 @@ asset.onInitialize(function ()
openspace.markInterestingNodes({ "Dawn", "Ceres", "Vesta" })
openspace.navigation.setCameraState({
openspace.navigation.setNavigationState({
Anchor = DawnAsset.Dawn.Identifier,
Position = { 526781518487.171326, 257168309890.072144, -1381125204152.817383 },
Rotation = { -0.106166, 0.981574, -0.084545, 0.134513 },
})
end)
+4 -9
View File
@@ -1,20 +1,15 @@
asset.require('./base')
local earthAsset = asset.require('scene/solarsystem/planets/earth/earth')
asset.onInitialize(function ()
local now = openspace.time.currentWallTime()
-- Jump back one day to show a complete planet
-- Jump back one day to be able to show complete weather data on Earth.
openspace.time.setTime(openspace.time.advancedTime(now, "-1d"))
openspace.globebrowsing.goToGeo("Earth", 58.5877, 16.1924, 20000000)
openspace.markInterestingNodes({ "Earth", "Mars", "Moon", "Sun" })
openspace.navigation.setCameraState({
Anchor = earthAsset.Earth.Identifier,
Position = { 0, 0, 0 },
Rotation = { 0.758797, 0.221490, -0.605693, -0.091135 },
})
openspace.globebrowsing.goToGeo(58.5877, 16.1924, 20000000)
end)
asset.onDeinitialize(function ()
+11 -5
View File
@@ -1,8 +1,9 @@
local assetHelper = asset.require('util/asset_helper')
local sceneHelper = asset.require('util/scene_helper')
local propertyHelper = asset.require('util/property_helper')
local debugHelper = asset.require('util/debug_helper')
-- At this point, a sceene needs basic spice data to load.
-- At this point, a scene needs basic spice data to load.
asset.require('spice/base')
asset.require('util/default_keybindings')
@@ -12,10 +13,15 @@ asset.require('util/default_joystick')
asset.require('util/webgui')
local spheres = asset.require('examples/spheres')
debugHelper.registerCartesianAxes(asset, {
Parent = "Root",
Scale = 10
})
asset.onInitialize(function ()
openspace.navigation.setCameraState({
Anchor = spheres.ExampleSphere1.Identifier,
Position = { 20, 0, 0 },
Rotation = { 0.758797, 0.221490, -0.605693, -0.091135 }
openspace.navigation.setNavigationState({
Anchor = "Root",
Position = { 20, 20, 20 },
Up = {0, 1, 0},
})
end)
@@ -0,0 +1,10 @@
local assetHelper = asset.require('util/asset_helper')
local spec = {
Type = "ScreenSpaceBrowser",
Identifier = "ScreenSpaceBrowserExample",
Name = "Screen Space Browser Example",
Url = "https://www.openspaceproject.com/"
};
assetHelper.registerScreenSpaceRenderables(asset, { spec })
@@ -35,4 +35,4 @@ local volume = {
}
local objects = { volume }
assetHelper.registerSceneGraphNodes(asset, objects)
assetHelper.registerSceneGraphNodes(asset, objects)
+1 -2
View File
@@ -35,10 +35,9 @@ asset.onInitialize(function ()
openspace.markInterestingNodes({ "Gaia" })
openspace.navigation.setCameraState({
openspace.navigation.setNavigationState({
Anchor = earthAsset.Earth.Identifier,
Position = { 1000000000000.0, 1000000000000.0, 1000000000000.0 },
Rotation = { 0.683224, -0.765934, -0.601234, -0.418073 },
})
end)
+87
View File
@@ -0,0 +1,87 @@
asset.require('./base')
local sceneHelper = asset.require('util/scene_helper')
-- Keybindings that are specific for this scene
local Keybindings = {
{
Key = "i",
Command = "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.Mola_Utah.Settings.Offset', -469.300000);" ..
"openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Settings.Offset', -470.800006);" ..
"openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.insight_ctx.Enabled', true);" ..
"openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Enabled', true);" ..
-- "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.insight_ctx.Settings.Gamma', 3.098590);" ..
-- "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.insight_ctx.Settings.Multiplier', 3.568080);" ..
"openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.MOC_WA_Color_Utah.Settings.Multiplier', 2.816900);" ..
"openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.OnMarsHiRISELS.Settings.Gamma', 0.938970);" ..
"openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.MOC_WA_Color_Utah.Settings.Gamma', 2.394370);" ..
"openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.OnMarsHiRISELS.Enabled', true);",
Documentation = "Setup Insight landing layers",
Name = "Setup Insight layers",
GuiPath = "/Missions/Insight",
Local = false
},
{
Key = "SHIFT+i",
Command = "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.Mola_Utah.Settings.Offset', 0);" ..
"openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Settings.Offset', 0);" ..
"openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.insight_ctx.Enabled', false);" ..
"openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Enabled', false);" ..
"openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.OnMarsHiRISELS.Enabled', false);",
-- "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.insight_ctx.Settings.Gamma', 1.0);" ..
-- "openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.insight_ctx.Settings.Multiplier', 1.0);" ..
"openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.MOC_WA_Color_Utah.Settings.Multiplier', 1.0);" ..
"openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.OnMarsHiRISELS.Settings.Gamma', 1.0);" ..
"openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.MOC_WA_Color_Utah.Settings.Gamma', 1.0);";
Documentation = "Undo Insight landing layers setup",
Name = "Unset Insight layers",
GuiPath = "/Missions/Insight",
Local = false
}
}
local insightAsset = asset.require('scene/solarsystem/missions/insight/edl')
asset.onInitialize(function ()
openspace.time.setTime("2018 NOV 26 19:39:03.68")
sceneHelper.bindKeys(Keybindings)
openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.Mola_Utah.Settings.Offset', -469.300000);
openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Settings.Offset', -470.800006);
openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Enabled', true);
-- openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.insight_ctx.Enabled', true);
-- openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.insight_ctx.Settings.Gamma', 3.098590);
-- openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.insight_ctx.Settings.Multiplier', 3.568080);
openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.MOC_WA_Color_Utah.Settings.Multiplier', 2.81690);
openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.OnMarsHiRISELS.Settings.Gamma', 0.938970);
openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.MOC_WA_Color_Utah.Settings.Gamma', 2.394370);
openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.OnMarsHiRISELS.Enabled', true);
openspace.markInterestingNodes({ "Insight" })
openspace.navigation.setNavigationState({
Anchor = insightAsset.Insight.Identifier,
Position = { 8.430115E0, -1.791710E1, 2.813660E0 },
ReferenceFrame = "Root",
Up = { 0.494659E0,0.357162E0,0.792306E0 },
})
end)
asset.onDeinitialize(function ()
sceneHelper.unbindKeys(Keybindings)
openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.Mola_Utah.Settings.Offset', 0);
openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Settings.Offset', 0);
openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Enabled', false);
-- openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.insight_ctx.Enabled', false);
-- openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.insight_ctx.Settings.Gamma', 1.0);
-- openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.insight_ctx.Settings.Multiplier', 1.0);
openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.MOC_WA_Color_Utah.Settings.Multiplier', 1.0);
openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.OnMarsHiRISELS.Settings.Gamma', 1.0);
openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.MOC_WA_Color_Utah.Settings.Gamma', 1.0);
openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.ColorLayers.OnMarsHiRISELS.Enabled', false);
openspace.removeInterestingNodes({ "Insight" })
end)
+4 -3
View File
@@ -18,10 +18,11 @@ asset.onInitialize(function ()
28800, 57600, 115200, 230400, 460800, 921600, 1843200, 3686400, 7372800, 14745600
})
openspace.navigation.setCameraState({
openspace.navigation.setNavigationState({
Anchor = junoAsset.Juno.Identifier,
Position = { 1837386367.601345, -389860693812.834839, 714830404470.398926 },
Rotation = { -0.336540, 0.711402, -0.099212, 0.608937 },
Position = { 1.243398E8, 7.176068E7, -1.519733E7 },
ReferenceFrame = "Root",
Up = { -0.377400E0, 0.764573E0, 0.522492E0 },
})
end)
+4 -3
View File
@@ -33,10 +33,11 @@ asset.onInitialize(function ()
28800, 57600, 115200, 230400, 460800, 921600, 1843200, 3686400, 7372800, 14745600
})
openspace.navigation.setCameraState({
openspace.navigation.setNavigationState({
Anchor = "Mercury",
Position = { 526781518487.171326, 257168309890.072144, -1381125204152.817383 },
Rotation = {0.180662, 0.021334, 0.979084, 0.091111},
Position = { 2.423690E11, 1.979038E11, -2.241483E10 },
ReferenceFrame = "Root",
Up = { -0.492046E0, 0.666088E0, 0.560551E0 }
})
end)
+52 -9
View File
@@ -11,6 +11,16 @@ local renderableHelper = asset.require('util/renderable_helper')
local Keybindings = {
{
Key = "a",
Command = "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'NewHorizons');" ..
"openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', '');" ..
"openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)",
Documentation = "Sets the focus of the camera on 'NewHorizons'.",
Name = "Focus on New Horizons",
GuiPath = "/New Horizons",
Local = false
},
{
Key = "SHIFT+a",
Command = "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'NewHorizons');" ..
"openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', 'Pluto');" ..
"openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)",
@@ -42,9 +52,9 @@ local Keybindings = {
{
Key = "F7",
Command =
[[local enabled = openspace.getPropertyValue('Scene.Pluto.Renderable.ProjectionComponent.PerformProjection')
openspace.setPropertyValue('Scene.Pluto.Renderable.ProjectionComponent.PerformProjection', not enabled)
openspace.setPropertyValue('Scene.Charon.Renderable.ProjectionComponent.PerformProjection', not enabled)
[[local enabled = openspace.getPropertyValue('Scene.PlutoProjection.Renderable.ProjectionComponent.PerformProjection')
openspace.setPropertyValue('Scene.PlutoProjection.Renderable.ProjectionComponent.PerformProjection', not enabled)
openspace.setPropertyValue('Scene.CharonProjection.Renderable.ProjectionComponent.PerformProjection', not enabled)
openspace.setPropertyValueSingle("Dashboard.NewHorizonsInstruments.Enabled", not enabled)]],
Documentation = "Toggles New Horizons image projection.",
Name = "Toggle NH Image Projection",
@@ -63,8 +73,8 @@ openspace.setPropertyValueSingle("Dashboard.NewHorizonsInstruments.Enabled", not
{
Key = "F9",
Command = "openspace.time.setTime('2015-07-14T09:00:00.00');" ..
"openspace.setPropertyValue('Scene.PlutoProjection.Renderable.ClearAllProjections', true);" ..
"openspace.setPropertyValue('Scene.CharonProjection.Renderable.ClearAllProjections', true);",
"openspace.setPropertyValue('Scene.PlutoProjection.Renderable.ProjectionComponent.ClearAllProjections', true);" ..
"openspace.setPropertyValue('Scene.CharonProjection.Renderable.ProjectionComponent.ClearAllProjections', true);",
Documentation = "Jumps to the 14th of July 2015 at 0900 UTC and clears all projections.",
Name = "Reset time and projections",
GuiPath = "/New Horizons",
@@ -78,6 +88,14 @@ openspace.setPropertyValueSingle("Dashboard.NewHorizonsInstruments.Enabled", not
GuiPath = "/New Horizons",
Local = false
},
{
Key = "CTRL+I",
Command = propertyHelper.increment('Scene.PlutoProjection.Renderable.HeightExaggeration', 5000),
Documentation = "Increases the height map exaggeration on Pluto.",
Name = "Pluto HeightExaggeration +",
GuiPath = "/New Horizons",
Local = false
},
{
Key = "KP_2",
Command = propertyHelper.decrement('Scene.PlutoProjection.Renderable.HeightExaggeration', 5000),
@@ -86,6 +104,14 @@ openspace.setPropertyValueSingle("Dashboard.NewHorizonsInstruments.Enabled", not
GuiPath = "/New Horizons",
Local = false
},
{
Key = "CTRL+K",
Command = propertyHelper.decrement('Scene.PlutoProjection.Renderable.HeightExaggeration', 5000),
Documentation = "Decreases the height map exaggeration on Pluto.",
Name = "Pluto HeightExaggeration -",
GuiPath = "/New Horizons",
Local = false
},
{
Key = "KP_9",
Command = propertyHelper.increment('Scene.CharonProjection.Renderable.HeightExaggeration', 5000),
@@ -94,6 +120,14 @@ openspace.setPropertyValueSingle("Dashboard.NewHorizonsInstruments.Enabled", not
GuiPath = "/New Horizons",
Local = false
},
{
Key = "CTRL+O",
Command = propertyHelper.increment('Scene.CharonProjection.Renderable.HeightExaggeration', 5000),
Documentation = "Increases the height map exaggeration on Charon.",
Name = "Charon HeightExaggeration +",
GuiPath = "/New Horizons",
Local = false
},
{
Key = "KP_3",
Command = propertyHelper.decrement('Scene.CharonProjection.Renderable.HeightExaggeration', 5000),
@@ -102,6 +136,14 @@ openspace.setPropertyValueSingle("Dashboard.NewHorizonsInstruments.Enabled", not
GuiPath = "/New Horizons",
Local = false
},
{
Key = "CTRL+L",
Command = propertyHelper.decrement('Scene.CharonProjection.Renderable.HeightExaggeration', 5000),
Documentation = "Decreases the height map exaggeration on Charon.",
Name = "Charon HeightExaggeration -",
GuiPath = "/New Horizons",
Local = false
},
{
Key = "o",
Command = propertyHelper.invert('Scene.PlutoBarycentricTrail.Renderable.Enabled'),
@@ -213,10 +255,11 @@ asset.onInitialize(function ()
openspace.setPropertyValueSingle('Scene.Charon.Renderable.Enabled', false)
openspace.setPropertyValueSingle("Scene.PlutoBarycenterTrail.Renderable.Enabled", false)
openspace.navigation.setCameraState({
Anchor = NewHorizonsAsset.NewHorizons.Identifier,
Position = { 4662120063743.592773, 1263245003503.724854, -955413856565.788086 },
Rotation = { 0.683224, -0.165934, 0.701234, 0.118073 },
openspace.navigation.setNavigationState({
Anchor = "NewHorizons",
ReferenceFrame = "Root",
Position = { -6.572656E1, -7.239404E1, -2.111890E1 },
Up = { 0.102164, -0.362945, 0.926193 }
})
end)
+51 -25
View File
@@ -10,64 +10,90 @@ asset.require('scene/solarsystem/missions/osirisrex/osirisrex')
local Keybindings = {
{
Key = "a",
Command = "openspace.setPropertyValue('NavigationHandler.Origin', 'OsirisRex')",
Command = "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'OsirisRex')" ..
"openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', '');" ..
"openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)",
Documentation = "Sets the focus of the camera on 'OsirisRex'.",
Name = "Focus on OsirisRex",
GuiPath = "/Missions/Osiris Rex",
Local = false
},
{
Key = "s",
Command = "openspace.setPropertyValue('NavigationHandler.Origin', 'BennuBarycenter')",
Command = "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'BennuBarycenter')" ..
"openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', '');" ..
"openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)",
Documentation = "Sets the focus of the camera on 'Bennu'",
Name = "Focus on Bennu",
GuiPath = "/Missions/Osiris Rex",
Local = false
},
{
Key = "F6",
Command = "openspace.printInfo('Set time: Launch');openspace.time.setTime('2016 SEP 08 23:05:00');",
Documentation = "Sets the time to the launch.",
Local = false
},
{
Key = "F7",
Command = "openspace.printInfo('Set time: Gravity Assist');openspace.time.setTime('2017 SEP 22 15:00:00');",
Documentation = "Sets the time to the Earth gravity assist.",
Local = false
},
-- TODO
-- Maybe these can be fixed later
-- {
-- Key = "F6",
-- Command = "openspace.printInfo('Set time: Launch');openspace.time.setTime('2016 SEP 08 23:05:00');",
-- Documentation = "Sets the time to the launch of Osiris Rex.",
-- Name = "Set launch time",
-- GuiPath = "/Missions/Osiris Rex",
-- Local = false
-- },
-- {
-- Key = "F7",
-- Command = "openspace.printInfo('Set time: Gravity Assist');openspace.time.setTime('2017 SEP 22 15:00:00');",
-- Documentation = "Sets the time to the Earth gravity assist.",
-- Name = "Set Earth gravity assist time",
-- GuiPath = "/Missions/Osiris Rex",
-- Local = false
-- },
{
Key = "F8",
Command = "openspace.printInfo('Set time: Approach');openspace.time.setTime('2018-SEP-11 21:31:01.183');",
Documentation = "Sets the time to the approach at Bennu.",
Name = "Set Bennu approach time",
GuiPath = "/Missions/Osiris Rex",
Local = false
},
{
Key = "F9",
Command = "openspace.printInfo('Set time: Preliminary Survey');openspace.time.setTime('2018-NOV-20 01:13:12.183');",
Documentation = "Sets the time to the preliminary survey of Bennu.",
Name = "Set Bennu survey time",
GuiPath = "/Missions/Osiris Rex",
Local = false
},
{
Key = "F10",
Command = "openspace.printInfo('Set time: Orbital B');openspace.time.setTime('2019-APR-08 10:35:27.186');",
Documentation = "Sets the time to the orbital B event.",
Name = "Set orbital B event time",
GuiPath = "/Missions/Osiris Rex",
Local = false
},
{
Key = "F11",
Command = "openspace.printInfo('Set time: Recon');openspace.time.setTime('2019-MAY-25 03:50:31.195');",
Documentation = "Sets the time to the recon event.",
Name = "Set recon event time",
GuiPath = "/Missions/Osiris Rex",
Local = false
},
{
Key = "q",
Command = propertyHelper.invert('Scene.SunMarker.Renderable.Enabled'),
Documentation = "Toggles the visibility of the text marking the location of the Sun.",
Name = "Toggle Sun marker",
GuiPath = "/Missions/Osiris Rex",
Local = false
},
{
Key = "e",
Command = propertyHelper.invert('Scene.EarthMarker.Renderable.Enabled'),
Documentation = "Toggles the visibility of the text marking the location of the Earth.",
Local = false
}
-- {
-- Key = "e",
-- Command = propertyHelper.invert('Scene.EarthMarker.Renderable.Enabled'),
-- Documentation = "Toggles the visibility of the text marking the location of the Earth.",
-- Name = "Toggle Earth marker",
-- GuiPath = "/Missions/Osiris Rex",
-- Local = false
-- }
}
local OsirisRexAsset = asset.require('scene/solarsystem/missions/osirisrex/model')
@@ -96,8 +122,9 @@ assetHelper.registerDashboardItems(asset, {
})
asset.onInitialize(function ()
-- openspace.time.setTime("2019 APR 16 12:03:00.00")
openspace.time.setTime("2016 SEP 8 23:00:00.500")
openspace.time.setTime("2018 10 30 23:00:00.500")
sceneHelper.bindKeys(Keybindings)
sceneHelper.setDeltaTimeKeys({
@@ -107,10 +134,9 @@ asset.onInitialize(function ()
openspace.markInterestingNodes({ "OsirisRex", "BennuBarycenter", "Earth" })
openspace.navigation.setCameraState({
openspace.navigation.setNavigationState({
Anchor = OsirisRexAsset.OsirisRex.Identifier,
Position = { 26974590199.661884, 76314608558.908020, -127086452897.101791 },
Rotation = { 0.729548, -0.126024, 0.416827, 0.527382 },
Position = { 26974590199.661884, 76314608558.908020, -127086452897.101791 }
})
end)
+41 -14
View File
@@ -13,63 +13,87 @@ asset.require('scene/solarsystem/missions/rosetta/rosetta')
local Keybindings = {
{
Key = "a",
Command = "openspace.setPropertyValue('NavigationHandler.Origin', '67P')",
Command = "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', '67P');" ..
"openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', '');" ..
"openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)",
Documentation = "Sets the focus of the camera on '67P'.",
Name = "Focus on 67P",
GuiPath = "/Missions/Rosetta",
Local = false
},
{
Key = "s",
Command = "openspace.setPropertyValue('NavigationHandler.Origin', 'Rosetta')",
Command = "openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'Rosetta');" ..
"openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', '');" ..
"openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil)",
Documentation = "Sets the focus of the camera on 'Rosetta'",
Name = "Focus on Rosetta",
GuiPath = "/Missions/Rosetta",
Local = false
},
{
Key = "F5",
Command = "openspace.time.setTime('2014-08-01T03:05:18.101')",
Documentation = "Jumps to the time of initial approach of Rosetta to 67P.",
Name = "Set initial approach time",
GuiPath = "/Missions/Rosetta",
Local = false
},
{
Key = "F6",
Command = "openspace.time.setTime('2014-11-12T08:20:00.00')",
Documentation = "Jumps to the time when the Philae lander is released.",
Name = "Set lander release time",
GuiPath = "/Missions/Rosetta",
Local = false
},
{
Key = "F8",
Command = "openspace.setPropertyValue('Scene.67P.Renderable.ProjectionComponent.clearAllProjections', true)",
Command = "openspace.setPropertyValue('Scene.67P.Renderable.ProjectionComponent.ClearAllProjections', true)",
Documentation = "Removes all image projections from 67P.",
Name = "Clear 67P projections",
GuiPath = "/Missions/Rosetta",
Local = false
},
{
Key = "q",
Command = propertyHelper.invert('Scene.SunMarker.Renderable.Enabled'),
Documentation = "Toggles the visibility of the text marking the location of the Sun.",
Local = false
},
-- {
-- Key = "q",
-- Command = propertyHelper.invert('Scene.SunMarker.Renderable.Enabled'),
-- Documentation = "Toggles the visibility of the text marking the location of the Sun.",
-- Name = "Toggle Sun marker",
-- GuiPath = "/Missions/Rosetta",
-- Local = false
-- },
{
Key = "e",
Command = renderableHelper.toggle('Scene.JupiterTrail') .. renderableHelper.toggle('Scene.SaturnTrail') ..
renderableHelper.toggle('Scene.UranusTrail') .. renderableHelper.toggle('Scene.NeptuneTrail'),
Documentation = "Toggles the visibility of all trails further from the Sun than 67P.",
Name = "Toggle outer planetary trails",
GuiPath = "/Missions/Rosetta",
Local = false
},
{
Key = "i",
Command = renderableHelper.toggle('Scene.ImagePlaneRosetta'),
Documentation = "Toggles the visibility of the free floating image plane.",
Name = "Toggle image plane",
GuiPath = "/Missions/Rosetta",
Local = false
},
{
Key = "f",
Key = "g",
Command = renderableHelper.toggle('Scene.PhilaeTrail'),
Documentation = "Toggles the visibility of Philae's trail.",
Name = "Toggle Philae trail",
GuiPath = "/Missions/Rosetta",
Local = false
},
{
Key = "p",
Command = propertyHelper.invert('Scene.67P.Renderable.ProjectionComponent.performProjection'),
Command = propertyHelper.invert('Scene.67P.Renderable.ProjectionComponent.PerformProjection'),
Documentation = "Enables or disables the image projection on 67P.",
Name = "Toggle 67P projection",
GuiPath = "/Missions/Rosetta",
Local = false
}
}
@@ -110,13 +134,16 @@ asset.onInitialize(function ()
28800, 57600, 115200, 230400, 460800, 921600, 1843200, 3686400, 7372800, 14745600
})
openspace.navigation.setCameraState({
openspace.navigation.setNavigationState({
Anchor = Comet67PAsset.Comet67P.Identifier,
Position = { 526781518487.171326, 257168309890.072144, -1381125204152.817383 },
Rotation = { -0.106166, 0.981574, -0.084545, 0.134513 },
ReferenceFrame = "Root",
Position = { -7.294781E5 , -6.657894E5, 2.509047E6 },
Up = { 0.146529E0, 0.944727E0, 0.293290E0 }
})
openspace.setPropertyValue('Scene.67P.Renderable.PerformShading', false);
openspace.setPropertyValue('Scene.ImagePlaneRosetta.Renderable.Enabled', false);
end)
asset.onDeinitialize(function ()
+29
View File
@@ -0,0 +1,29 @@
asset.require('./base')
asset.request('scene/solarsystem/planets/earth/satellites/navigation/gps')
asset.request('scene/solarsystem/planets/earth/satellites/misc/spacestations')
asset.onInitialize(function ()
local now = openspace.time.currentWallTime()
-- Jump back one day to be able to show complete weather data on Earth.
openspace.time.setTime(openspace.time.advancedTime(now, "-1d"))
openspace.addVirtualProperty(
"BoolProperty",
"Show Trails",
"Scene.*Trail.Renderable.Enabled",
"Disable or enable all trails of the scene at the same time",
true,
nil,
nil
)
openspace.globebrowsing.goToGeo("Earth", 58.5877, 16.1924, 20000000)
openspace.markInterestingNodes({ "Earth", "Sun" })
end)
asset.onDeinitialize(function ()
openspace.removeInterestingNodes({ "Earth", "Sun" })
openspace.removeVirtualProperty("*Trail.Renderable.Enabled")
end)
@@ -21,7 +21,7 @@ local wmap = {
Transform = {
Rotation = {
Type = "StaticRotation",
Rotation = {0, 0, 3.14159265359}
Rotation = { 0, 0, 3.14159265359 }
}
},
Renderable = {
@@ -47,7 +47,7 @@ local cbe = {
Transform = {
Rotation = {
Type = "StaticRotation",
Rotation = {0, 0, 3.14159265359}
Rotation = { 0, 0, 3.14159265359 }
}
},
Renderable = {
@@ -73,7 +73,7 @@ local planck = {
Transform = {
Rotation = {
Type = "StaticRotation",
Rotation = {0, 0, 3.14159265359}
Rotation = { 0, 0, 3.14159265359 }
}
},
Renderable = {
@@ -93,6 +93,128 @@ local planck = {
}
}
local multiverse_planck_1 = {
Identifier = "PlanckMultiverse1",
Transform = {
Translation = {
Type = "StaticTranslation",
Position = { 0.0, 0.0, 2000E23}
},
Rotation = {
Type = "StaticRotation",
Rotation = { 0, 0, 3.14159265359 }
}
},
Renderable = {
Type = "RenderableSphere",
Enabled = false,
Size = 3975.41417036064E23,
Segments = 80,
Opacity = 0.3,
Texture = textures .. "/cmb4k.jpg",
Orientation = "Both",
MirrorTexture = true,
UseAdditiveBlending = true,
FadeInThreshold = 0.4
},
GUI = {
Name = "Planck Multiverse 1",
Path = "/Universe/Cosmic Microwave Background"
}
}
local multiverse_planck_2 = {
Identifier = "PlanckMultiverse2",
Transform = {
Translation = {
Type = "StaticTranslation",
Position = { 2500E23, 0.0, 2000E23}
},
Rotation = {
Type = "StaticRotation",
Rotation = { 0, 0, 3.14159265359 }
}
},
Renderable = {
Type = "RenderableSphere",
Enabled = false,
Size = 3975.41417036064E23,
Segments = 80,
Opacity = 0.3,
Texture = textures .. "/cmb4k.jpg",
Orientation = "Both",
MirrorTexture = true,
UseAdditiveBlending = true,
FadeInThreshold = 0.4
},
GUI = {
Name = "Planck Multiverse 2",
Path = "/Universe/Cosmic Microwave Background"
}
}
local multiverse_planck_3 = {
Identifier = "PlanckMultiverse3",
Transform = {
Translation = {
Type = "StaticTranslation",
Position = { 2500E23, 5000E23, 2000E23}
},
Rotation = {
Type = "StaticRotation",
Rotation = { 0, 0, 3.14159265359 }
}
},
Renderable = {
Type = "RenderableSphere",
Enabled = false,
Size = 3975.41417036064E23,
Segments = 80,
Opacity = 0.3,
Texture = textures .. "/cmb4k.jpg",
Orientation = "Both",
MirrorTexture = true,
UseAdditiveBlending = true,
FadeInThreshold = 0.4
},
GUI = {
Name = "Planck Multiverse 3",
Path = "/Universe/Cosmic Microwave Background"
}
}
local multiverse_planck_4 = {
Identifier = "PlanckMultiverse4",
Transform = {
Translation = {
Type = "StaticTranslation",
Position = { 0.0, 10000E23, 0.0 }
},
Rotation = {
Type = "StaticRotation",
Rotation = { 0, 0, 3.14159265359 }
}
},
Renderable = {
Type = "RenderableSphere",
Enabled = false,
Size = 3975.41417036064E23,
Segments = 80,
Opacity = 0.3,
Texture = textures .. "/cmb4k.jpg",
Orientation = "Both",
MirrorTexture = true,
UseAdditiveBlending = true,
FadeInThreshold = 0.4
},
GUI = {
Name = "Planck Multiverse 4",
Path = "/Universe/Cosmic Microwave Background"
}
}
assetHelper.registerSceneGraphNodesAndExport(asset, { wmap, cbe, planck })
assetHelper.registerSceneGraphNodesAndExport(asset, {
wmap, cbe, planck, multiverse_planck_1, multiverse_planck_2, multiverse_planck_3,
multiverse_planck_4
})
@@ -6,7 +6,7 @@ local speck = asset.syncedResource({
Name = "Constellation Speck Files",
Type = "HttpSynchronization",
Identifier = "digitaluniverse_constellations_speck",
Version = 1
Version = 2
})
local constellationsExtragalactic = {
@@ -40,7 +40,8 @@ local sphere = {
Orientation = "Inside",
UseAdditiveBlending = true,
MirrorTexture = true,
FadeOutThreshold = 0.025
FadeOutThreshold = 0.025,
Background = true
},
GUI = {
Name = "Milky Way Sphere",
@@ -53,7 +54,7 @@ local plane = {
Parent = "Root",
Renderable = {
Type = "RenderablePlanesCloud",
Enabled = true,
Enabled = false,
Color = { 1.0, 1.0, 1.0 },
Transparency = 0.90,
ScaleFactor = 2.8,
@@ -13,7 +13,7 @@ local speck = asset.syncedResource({
Name = "OB Associations Speck Files",
Type = "HttpSynchronization",
Identifier = "digitaluniverse_obassociations_speck",
Version = 1
Version = 2
})
local object = {
@@ -13,7 +13,7 @@ local speck = asset.syncedResource({
Name = "Stars Speck Files",
Type = "HttpSynchronization",
Identifier = "stars_du",
Version = 1
Version = 3
})
local colorLUT = asset.syncedResource({
@@ -1,19 +1,30 @@
-- Download a dataset of 618 million stars (28 GB), already preprocessed and stored in a binary octree.
-- The octree was generated from the full DR2 by filtering away all stars with a parallax error higher than 0.5
-- Max Star Per Node = 50,000 and max distance = 500kpc
asset.syncedResource({
local gaia618Destination = asset.syncedResource({
Name = "Gaia DR2 618M Octree",
Type = "HttpSynchronization",
Identifier = "gaia_stars_618M_octree",
Version = 1
})
local gaia618DestinationExtracted = gaia618Destination + '/data';
-- Download the full DR2 dataset with 24 values per star (preprocessed with theReadFitsTask (gaia_read.task) into 8 binary files).
-- From these files new subsets can be created with the ConstructOctreeTask (gaia_octree.task).
-- Total size of download is 151 GB.
asset.syncedResource({
local gaiaFull = asset.syncedResource({
Name = "Gaia DR2 Full Raw",
Type = "HttpSynchronization",
Identifier = "gaia_stars_dr2_raw",
Version = 1
})
asset.onInitialize(function()
if not openspace.directoryExists(gaia618DestinationExtracted) then
openspace.printInfo("Extracted Gaia dataset")
openspace.unzipFile(gaia618Destination .. '/DR2_full_Octree[50kSPN,500dist]_50,50.zip', gaia618DestinationExtracted, true)
end
end)
asset.export('GaiaDR2_618M', gaia618DestinationExtracted)
asset.export('GaiaFullDataset', gaiaFull)
@@ -0,0 +1,42 @@
-- asset.require('../examples/volume/generated/cartesian.asset')
local assetHelper = asset.require("util/asset_helper")
local transforms = asset.require("scene/solarsystem/sun/transforms")
local data = asset.syncedResource({
Name = "Milkyway Volume Data",
Type = "HttpSynchronization",
Identifier = "milkyway_volume_data",
Version = 1
})
local MilkyWayVolumeGalaxy = {
Identifier = "Milky Way Volume",
Parent = transforms.SolarSystemBarycenter.Identifier,
Renderable = {
Type = "RenderableGalaxy",
StepSize = 0.01,
AbsorptionMultiply = 75,
EmissionMultiply = 200,
Translation = {0.2, 0, 0},
Rotation = {3.1415926, 3.1248, 4.45741},
Volume = {
Type = "Volume",
Filename = data .. "/MilkyWayRGBAVolume1024x1024x128.raw",
Dimensions = {1024, 1024, 128},
Size = {1.2E21, 1.2E21, 0.15E21}
},
Points = {
Type = "Points",
Filename = data .. "/MilkyWayPoints.off",
EnabledPointsRatio = 0.3,
Texture = data .. "/halo.png"
}
},
GUI = {
Path = "/Milky Way"
}
}
local objects = { MilkyWayVolumeGalaxy }
assetHelper.registerSceneGraphNodesAndExport(asset, objects)
@@ -2,6 +2,7 @@ local assetHelper = asset.require('util/asset_helper')
local transforms = asset.require('./transforms')
asset.require("spice/base")
asset.request('./trail')
local labelsPath = asset.require('./pluto_labels').LabelsPath
@@ -38,6 +39,22 @@ local Charon = {
Enabled = true
}
}
},
Labels = {
Enable = false,
FileName = labelsPath .. "/charon.labels",
LabelAlignmentOption = "Horizontally", -- or Circularly
LabelsFontSize = 14.0,
LabelsSize = 8.0,
LabelsMinSize = 1.0,
LabelsMaxSize = 1500.0,
ProximityEnabled = false,
LabelsFadeInEnabled = true,
FadeInStartingDistance = 500000.0,
FadeOutStartingDistance = 1000000.0,
LabelsForceDomeRendering = true,
LabelsDistanceEPS = 1350000.0,
LabelsColor = {1.0, 1.0, 0.0, 1.0}
}
},
Tag = { "planet_solarSystem", "planet_terrestrial" },
@@ -7,7 +7,8 @@ local Kernels = asset.syncedResource({
local PlutoKernels = {
Kernels .. "/NavPE_de433_od122.bsp",
Kernels .. "/NavSE_plu047_od122.bsp"
Kernels .. "/NavSE_plu047_od122.bsp",
Kernels .. "/ssd_jpl_nasa_gov_plu043.bsp"
}
asset.export("PlutoKernels", PlutoKernels)
@@ -2,6 +2,7 @@ local assetHelper = asset.require('util/asset_helper')
local transforms = asset.require('./transforms')
asset.require("spice/base")
asset.request('./trail')
local labelsPath = asset.require('./pluto_labels').LabelsPath
@@ -38,6 +39,22 @@ local Pluto = {
Enabled = true
}
}
},
Labels = {
Enable = false,
FileName = labelsPath .. "/pluto.labels",
LabelAlignmentOption = "Horizontally", -- or Circularly
LabelsFontSize = 14.0,
LabelsSize = 8.0,
LabelsMinSize = 1.0,
LabelsMaxSize = 1500.0,
ProximityEnabled = false,
LabelsFadeInEnabled = true,
FadeInStartingDistance = 500000.0,
FadeOutStartingDistance = 1000000.0,
LabelsForceDomeRendering = true,
LabelsDistanceEPS = 1350000.0,
LabelsColor = {1.0, 1.0, 0.0, 1.0}
}
},
Tag = { "planet_solarSystem", "planet_terrestrial" },
@@ -0,0 +1,7 @@
local LabelsPath = asset.syncedResource({
Name = "Pluto Labels",
Type = "HttpSynchronization",
Identifier = "pluto_labels",
Version = 1
})
asset.export("LabelsPath", LabelsPath)
@@ -0,0 +1,47 @@
local assetHelper = asset.require('util/asset_helper')
local sunTransforms = asset.require('scene/solarsystem/sun/transforms')
local trajectory = asset.syncedResource({
Name = "'Oumuamua Trajectory",
Type = "HttpSynchronization",
Identifier = "oumuamua_horizons",
Version = 1
})
local OumuamuaTrail = {
Identifier = "OumuamuaTrail",
Parent = sunTransforms.SolarSystemBarycenter.Identifier,
Renderable = {
Type = "RenderableTrailTrajectory",
Translation = {
Type = "HorizonsTranslation",
HorizonsTextFile = trajectory .. "/horizons_oumuamua.dat"
},
Color = { 0.9, 0.9, 0.0 },
StartTime = "2014 JAN 01 00:00:00",
EndTime = "2023 JAN 01 00:00:00",
SampleInterval = 7000,
TimeStampSubsampleFactor = 1
},
GUI = {
Name = "'Oumuamua Trail",
Path = "/Solar System/Interstellar"
}
}
local OumuamuaPosition = {
Identifier = "OumuamuaPosition",
Parent = sunTransforms.SolarSystemBarycenter.Identifier,
Transform = {
Translation = {
Type = "HorizonsTranslation",
HorizonsTextFile = trajectory .. "/horizons_oumuamua.dat"
},
},
GUI = {
Name = "'Oumuamua",
Path = "/Solar System/Interstellar"
}
}
assetHelper.registerSceneGraphNodesAndExport(asset, { OumuamuaPosition, OumuamuaTrail })
@@ -0,0 +1,60 @@
-- a11_lem.asset
local assetHelper = asset.require('util/asset_helper')
local sunTransforms = asset.require('scene/solarsystem/sun/transforms')
local moonAsset = asset.require('scene/solarsystem/planets/earth/moon/moon')
local model = asset.require('scene/solarsystem/missions/apollo/lem_model')
local Apollo11Lem = {
Identifier = "Apollo11Lem",
Parent = moonAsset.Moon.Identifier,
Transform = {
Translation = {
Type = "GlobeTranslation",
Globe = moonAsset.Moon.Identifier,
Longitude = -360+23.47306,
Latitude = 0.67402,
Altitude = -1927.65,
UseHeightMap = false
},
},
GUI = {
Name = "Apollo 11 Lem Position",
Path = "/Solar System/Missions/Apollo/11"
}
}
local Apollo11LemModel = {
Identifier = "Apollo11LemModel",
Parent = Apollo11Lem.Identifier,
Transform = {
Scale = {
Type = "StaticScale",
Scale = 0.24
}
},
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = model.modelFolder .. "/LM-2_ver2clean.obj"
},
ColorTexture = model.modelFolder .. "/LM-2_ver2clean_u1_v1.jpeg",
LightSources = assetHelper.getDefaultLightSources(sunTransforms.SolarSystemBarycenter.Identifier)
},
GUI = {
Hidden = false,
Name = "Apollo 11 Lem",
Path = "/Solar System/Missions/Apollo/11"
}
}
assetHelper.registerSceneGraphNodesAndExport(asset, {
Apollo11Lem,
Apollo11LemModel
})
asset.onInitialize(function ()
openspace.setPropertyValueSingle('Scene.Apollo11LemModel.Renderable.RotationVector', { 91.044090,171.229706,111.666664} );
end)
@@ -0,0 +1,203 @@
local assetHelper = asset.require('util/asset_helper')
local sunTransforms = asset.require('scene/solarsystem/sun/transforms')
asset.require('spice/base')
--asset.require('scene/solarsystem/missions/apollo/a15kernels')
local models = asset.syncedResource({
Name = "Apollo 15 Models",
Type = "HttpSynchronization",
Identifier = "apollo_models",
Version = 1
})
local kernels = asset.syncedResource({
Name = "Apollo Kernels",
Type = "HttpSynchronization",
Identifier = "apollo_spice",
Version = 1
})
local Kernels = {
kernels .. "/apollo15.0001.tsc",
-- kernels .. '/AS15-P_v01.bc',
kernels .. '/apollo15.0001.tf',
kernels .. '/apollo15MetricAddendum002.ti',
-- kernels .. '/apollo15PanoramicAddendum001.ti',
kernels .. '/apollo15_metric.0002.ti',
-- kernels .. '/apollo15_panoramic.0001.ti',
kernels .. '/apollo15-1.bsp',
kernels .. '/AS15-M_v01.bc',
-- kernels .. '/AS15-M_v01.bsp',
}
-- local Apollo15Kernels = {
-- --sclk
-- ApolloKernels .. "/apollo15.0001.tsc",
-- --pck
-- ApolloKernels .. "/moon_080317.tf",
-- ApolloKernels .. "/moon_assoc_me.tf",
-- --ik
-- ApolloKernels .. "/apollo15_metric_v2.0001.ti",
-- ApolloKernels .. "/apollo15_panoramic.0001.ti",
-- --tspk
-- ApolloKernels .. "/de421.bsp",
-- ApolloKernels .. "/moon_pa_de421_1900-2050.bpc",
-- --iak
-- ApolloKernels .. "/apollo15MetricAddendum002.ti",
-- ApolloKernels .. "/apolloPanAddendum001.ti",
-- --fk
-- ApolloKernels .. "/apollo15_v2.0001.tf",
-- ApolloKernels .. "/apollo15_v2.0002.tf",
-- --spk
-- ApolloKernels .. "/AS15_M_REV23_SMITHED_V01.bsp",
-- ApolloKernels .. "/AS15_M_REV4.bsp ",
-- ApolloKernels .. "/AS15_M_REV70_SMITHED_V01.bsp",
-- ApolloKernels .. "/AS15_M_REV04_v2.bsp ",
-- ApolloKernels .. "/AS15_M_REV27_SMITHED_V01.bsp",
-- ApolloKernels .. "/AS15_M_REV44_SMITHED_V01.bsp",
-- ApolloKernels .. "/AS15_M_REV71_SMITHED_V01.bsp",
-- ApolloKernels .. "/AS15_M_REV15_SMITHED_V01.bsp",
-- ApolloKernels .. "/AS15_M_REV33_SMITHED_V01.bsp",
-- ApolloKernels .. "/AS15_M_REV50_SMITHED_V01.bsp",
-- ApolloKernels .. "/AS15_M_REV71_SMITHED_V02.bsp",
-- ApolloKernels .. "/AS15_M_REV15_v2.bsp ",
-- ApolloKernels .. "/AS15_M_REV34_SMITHED_V01.bsp",
-- ApolloKernels .. "/AS15_M_REV60_SMITHED_V01.bsp",
-- ApolloKernels .. "/AS15_M_REV72_v2.bsp",
-- ApolloKernels .. "/AS15_M_REV16_SMITHED_V01.bsp",
-- ApolloKernels .. "/AS15_M_REV35_SMITHED_V02.bsp",
-- ApolloKernels .. "/AS15_M_REV62_SMITHED_V01.bsp",
-- ApolloKernels .. "/AS15_M_REV22_SMITHED_V01.bsp",
-- ApolloKernels .. "/AS15_M_REV38_SMITHED_V01.bsp",
-- ApolloKernels .. "/AS15_M_REV63_SMITHED_V01.bsp",
-- --ck
-- ApolloKernels .. "/AS15_M_REV04_SMITHED_V01.bc",
-- ApolloKernels .. "/AS15_M_REV15_SMITHED_V01.bc",
-- ApolloKernels .. "/AS15_M_REV16_SMITHED_V01.bc",
-- ApolloKernels .. "/AS15_M_REV22_SMITHED_V01.bc",
-- ApolloKernels .. "/AS15_M_REV23_SMITHED_V01.bc",
-- ApolloKernels .. "/AS15_M_REV27_SMITHED_V01.bc",
-- ApolloKernels .. "/AS15_M_REV33_SMITHED_V01.bc",
-- ApolloKernels .. "/AS15_M_REV34_SMITHED_V01.bc",
-- ApolloKernels .. "/AS15_M_REV35_SMITHED_V01.bc",
-- ApolloKernels .. "/AS15_M_REV35_SMITHED_V02.bc",
-- ApolloKernels .. "/AS15_M_REV38_SMITHED_V01.bc",
-- ApolloKernels .. "/AS15_M_REV44_SMITHED_V01.bc",
-- ApolloKernels .. "/AS15_M_REV50_SMITHED_V01.bc",
-- ApolloKernels .. "/AS15_M_REV60_SMITHED_V01.bc",
-- ApolloKernels .. "/AS15_M_REV62_SMITHED_V01.bc",
-- ApolloKernels .. "/AS15_M_REV63_SMITHED_V01.bc",
-- ApolloKernels .. "/AS15_M_REV70_SMITHED_V01.bc",
-- ApolloKernels .. "/AS15_M_REV71_SMITHED_V01.bc",
-- ApolloKernels .. "/AS15_M_REV71_SMITHED_V02.bc",
-- ApolloKernels .. "/AS15_M_REV72_v2.bc",
-- }
local LightSources = {
{
Type = "SceneGraphLightSource",
Identifier = "Sun",
Node = sunTransforms.SolarSystemBarycenter.Identifier,
Intensity = 1.0
},
-- {
-- Identifier = "Camera",
-- Type = "CameraLightSource",
-- Intensity = 0.5,
-- Enabled = false
-- }
}
local Apollo15 = {
Identifier = "Apollo15",
Parent = "Moon",
Transform = {
Translation = {
Type = "SpiceTranslation",
Target = "APOLLO 15",
Observer = "MOON",
Frame = "IAU_MOON",
Kernels = Kernels
},
Rotation = {
Type = "SpiceRotation",
SourceFrame = "A15_METRIC",
DestinationFrame = "GALACTIC"
}
},
TimeFrame = { -- Using Spice kernels for 1850-2150
Type = "TimeFrameInterval",
Start = "1971-07-30T02:22:00.00",
End = "1971-08-01T18:05:00.00"
},
GUI = {
Name = "Apollo 15",
Path = "/Solar System/Missions/Apollo 15"
}
}
local Apollo15Main = {
Identifier = "Apollo15Main",
Parent = Apollo15.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
-- GeometryFile = models .. "/Apollo_Spacecraft.obj"
GeometryFile = models .. "/Apollo_CSM_shrunk_rotated_xy_doubble_size.obj"
},
ColorTexture = models .. "/gray.png",
LightSources = LightSources,
DisableFaceCulling = true
},
GUI = {
Name = "Apollo 15 Main",
Path = "/Solar System/Missions/Apollo 15"
}
}
local Apollo15Trail = {
Identifier = "Apollo15Trail",
Parent = "Moon",
Renderable = {
Type = "RenderableTrailTrajectory",
Translation = {
Type = "SpiceTranslation",
Target = "APOLLO 15",
Observer = "MOON",
Frame = "IAU_MOON",
Kernels = Kernels
},
Color = { 0.70, 0.50, 0.20 },
StartTime = "1971 JUL 26",
EndTime = "1971 AUG 01 14:30:41.680",
SampleInterval = 2
},
GUI = {
Name = "Apollo 15 Trail",
Path = "/Solar System/Missions/Apollo 15"
}
}
assetHelper.registerSceneGraphNodesAndExport(asset, {
Apollo15,
Apollo15Main,
Apollo15Trail
})
@@ -0,0 +1,86 @@
local ApolloKernels = asset.syncedResource({
Name = "Apollo Kernels",
Type = "HttpSynchronization",
Identifier = "apollo_spice",
Version = 1
})
local Apollo15Kernels = {
--sclk
ApolloKernels .. "apollo15.0001.tsc",
--pck
ApolloKernels .. "moon_080317.tf",
ApolloKernels .. "moon_assoc_me.tf",
--ik
ApolloKernels .. "apollo15_metric_v2.0001.ti",
ApolloKernels .. "apollo15_panoramic.0001.ti",
--tspk
ApolloKernels .. "de421.bsp",
ApolloKernels .. "moon_pa_de421_1900-2050.bpc",
--iak
ApolloKernels .. "apollo15MetricAddendum002.ti",
ApolloKernels .. "apolloPanAddendum001.ti",
--fk
ApolloKernels .. "apollo15_v2.0001.tf",
ApolloKernels .. "apollo15_v2.0002.tf",
--spk
ApolloKernels .. "AS15_M_REV23_SMITHED_V01.bsp",
ApolloKernels .. "AS15_M_REV4.bsp ",
ApolloKernels .. "AS15_M_REV70_SMITHED_V01.bsp",
ApolloKernels .. "AS15_M_REV04_v2.bsp ",
ApolloKernels .. "AS15_M_REV27_SMITHED_V01.bsp",
ApolloKernels .. "AS15_M_REV44_SMITHED_V01.bsp",
ApolloKernels .. "AS15_M_REV71_SMITHED_V01.bsp",
ApolloKernels .. "AS15_M_REV15_SMITHED_V01.bsp",
ApolloKernels .. "AS15_M_REV33_SMITHED_V01.bsp",
ApolloKernels .. "AS15_M_REV50_SMITHED_V01.bsp",
ApolloKernels .. "AS15_M_REV71_SMITHED_V02.bsp",
ApolloKernels .. "AS15_M_REV15_v2.bsp ",
ApolloKernels .. "AS15_M_REV34_SMITHED_V01.bsp",
ApolloKernels .. "AS15_M_REV60_SMITHED_V01.bsp",
ApolloKernels .. "AS15_M_REV72_v2.bsp",
ApolloKernels .. "AS15_M_REV16_SMITHED_V01.bsp",
ApolloKernels .. "AS15_M_REV35_SMITHED_V02.bsp",
ApolloKernels .. "AS15_M_REV62_SMITHED_V01.bsp",
ApolloKernels .. "AS15_M_REV22_SMITHED_V01.bsp",
ApolloKernels .. "AS15_M_REV38_SMITHED_V01.bsp",
ApolloKernels .. "AS15_M_REV63_SMITHED_V01.bsp",
--ck
ApolloKernels .. "AS15_M_REV04_SMITHED_V01.bc",
ApolloKernels .. "AS15_M_REV15_SMITHED_V01.bc",
ApolloKernels .. "AS15_M_REV16_SMITHED_V01.bc",
ApolloKernels .. "AS15_M_REV22_SMITHED_V01.bc",
ApolloKernels .. "AS15_M_REV23_SMITHED_V01.bc",
ApolloKernels .. "AS15_M_REV27_SMITHED_V01.bc",
ApolloKernels .. "AS15_M_REV33_SMITHED_V01.bc",
ApolloKernels .. "AS15_M_REV34_SMITHED_V01.bc",
ApolloKernels .. "AS15_M_REV35_SMITHED_V01.bc",
ApolloKernels .. "AS15_M_REV35_SMITHED_V02.bc",
ApolloKernels .. "AS15_M_REV38_SMITHED_V01.bc",
ApolloKernels .. "AS15_M_REV44_SMITHED_V01.bc",
ApolloKernels .. "AS15_M_REV50_SMITHED_V01.bc",
ApolloKernels .. "AS15_M_REV60_SMITHED_V01.bc",
ApolloKernels .. "AS15_M_REV62_SMITHED_V01.bc",
ApolloKernels .. "AS15_M_REV63_SMITHED_V01.bc",
ApolloKernels .. "AS15_M_REV70_SMITHED_V01.bc",
ApolloKernels .. "AS15_M_REV71_SMITHED_V01.bc",
ApolloKernels .. "AS15_M_REV71_SMITHED_V02.bc",
ApolloKernels .. "AS15_M_REV72_v2.bc",
}
--asset.export("ApolloKernels", Kernels)
asset.export("Apollo15Kernels", Apollo15Kernels)
@@ -0,0 +1,59 @@
--a17_lem.asset
local assetHelper = asset.require('util/asset_helper')
local sunTransforms = asset.require('scene/solarsystem/sun/transforms')
local moonAsset = asset.require('scene/solarsystem/planets/earth/moon/moon')
local model = asset.require('scene/solarsystem/missions/apollo/lem_model')
local Apollo17Lem = {
Identifier = "Apollo17Lem",
Parent = moonAsset.Moon.Identifier,
Transform = {
Translation = {
Type = "GlobeTranslation",
Globe = moonAsset.Moon.Identifier,
Longitude = -329.22833,
Latitude = 20.19092,
UseHeightmap = true
},
},
GUI = {
Hidden = true,
Name = "Apollo 17 Lem Position",
Path = "/Solar System/Missions/Apollo/17"
}
}
local Apollo17LemModel = {
Identifier = "Apollo17LemModel",
Parent = Apollo17Lem.Identifier,
Transform = {
Scale = {
Type = "StaticScale",
Scale = 0.24
}
},
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = model.modelFolder .. "/LM-2_ver2clean.obj"
},
ColorTexture = model.modelFolder .. "/LM-2_ver2clean_u1_v1.jpeg",
LightSources = assetHelper.getDefaultLightSources(sunTransforms.SolarSystemBarycenter.Identifier)
},
GUI = {
Hidden = false,
Name = "Apollo 17 Lem",
Path = "/Solar System/Missions/Apollo/17"
}
}
assetHelper.registerSceneGraphNodesAndExport(asset, {
Apollo17Lem,
Apollo17LemModel,
})
asset.onInitialize(function ()
openspace.setPropertyValueSingle('Scene.Apollo17LemModel.Renderable.RotationVector', { 110.255219,171.229706,126.666664 });
end)
@@ -0,0 +1,249 @@
local assetHelper = asset.require('util/asset_helper')
local sunTransforms = asset.require('scene/solarsystem/sun/transforms')
local descentKeyframes = asset.require('./apollo11_lem_descent.asset')
local descentRotationKeyframes = asset.require('./apollo11_lem_descent_rotation.asset')
local model = asset.require('scene/solarsystem/missions/apollo/lem_model')
asset.require('spice/base')
local kernelsFolder = asset.syncedResource({
Name = "Apollo Kernels",
Type = "HttpSynchronization",
Identifier = "apollo_11_spice",
Version = 1
})
local modelFolder = asset.syncedResource({
Name = "Apollo Models",
Type = "HttpSynchronization",
Identifier = "apollo_11_models",
Version = 1
})
local kernels = {
kernelsFolder .. "/moon_080317.tf",
kernelsFolder .. "/apollo_naif_ids.tf",
kernelsFolder .. "/moon_pa_de421_1900-2050.bpc",
kernelsFolder .. '/apollo11_orbits_full9km.bsp',
kernelsFolder .. '/apollo11_orbits_lm9km.bsp',
}
--landing - 1969-07-20T20:17:40
local apolloSpiceId = "-911"
local apolloLemSpiceId = "-911500"
local Apollo11Position = {
Identifier = "Apollo11Position",
Parent = "Moon",
TimeFrame = {
Type = "TimeFrameInterval",
Start = "1969 JUL 19 19:38:29.183",
End = "1969 JUL 22 04:55:35.183"
},
Transform = {
Translation = {
Type = "SpiceTranslation",
Target = apolloSpiceId,
Observer = "MOON",
Frame = "MOON_ME",
Kernels = kernels
},
},
GUI = {
Hidden = true,
Name = "Apollo 11",
Path = "/Solar System/Missions/Apollo/11"
}
}
local Apollo11Model = {
Identifier = "Apollo11",
Parent = Apollo11Position.Identifier,
Transform = {
Scale = {
Type = "StaticScale",
Scale = 20.0
}
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = "1969 JUL 19 19:38:29.183",
End = "1969 JUL 22 04:55:35.183"
},
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = modelFolder .. "/Apollo_CSM_shrunk_rotated_xy_double_size.obj"
},
ColorTexture = modelFolder .. "/gray.png",
LightSources = assetHelper.getDefaultLightSources(sunTransforms.SolarSystemBarycenter.Identifier)
},
GUI = {
Hidden = false,
Name = "Apollo 11 CSM",
Path = "/Solar System/Missions/Apollo/11"
}
}
local Apollo11MoonTrail = {
Identifier = "Apollo11MoonTrail",
Parent = "Moon",
Renderable = {
Type = "RenderableTrailTrajectory",
Translation = {
Type = "SpiceTranslation",
Target = apolloSpiceId,
Observer = "MOON",
Frame = "IAU_MOON",
Kernels = kernels
},
Color = { 0.180000,0.510000,0.750000 },
StartTime = "1969 JUL 19 19:38:29.183",
EndTime = "1969 JUL 22 04:55:35.183",
SampleInterval = 60,
EnableFade = false,
Enabled = false,
},
GUI = {
Name = "Apollo 11 Moon Orbits",
Path = "/Solar System/Missions/Apollo/11"
}
}
local lemTranslation = {
Type = "TimelineTranslation",
Keyframes = {
-- 20:14:30 is an arbitrary cutoff, but last 4 minutes data in descentKeyframes
-- begins at 20.14.40. Due to linear interpolation, we will get
-- a 10s linear transition to the location where the descentKeyframes start.
['1969 JUL 20 20:14:30'] = {
Type = "SpiceTranslation",
Target = apolloLemSpiceId,
Observer = "MOON",
Frame = "IAU_MOON",
Kernels = kernels
},
['1969 JUL 20 20:14:40'] = {
Type = "TimelineTranslation",
Keyframes = descentKeyframes.keyframes
}
}
}
local lemRotation = {
Type = "TimelineRotation",
Keyframes = descentRotationKeyframes.keyframes
}
local Apollo11LemTrail = {
Identifier = "Apollo11LemTrail",
Parent = "Moon",
Renderable = {
Type = "RenderableTrailTrajectory",
Translation = lemTranslation,
Color = { 0.780000,0.940000,0.340000 },
StartTime = "1969 JUL 20 19:10:25.183",
EndTime = "1969 JUL 20 20:17:46.183",
SampleInterval = 2,
EnableFade = false,
Enabled = false,
},
GUI = {
Name = "Apollo 11 Lunar Lander Trail",
Path = "/Solar System/Missions/Apollo/11"
}
}
local Apollo11LemPosition = {
Identifier = "Apollo11LemPosition",
Parent = "Moon",
TimeFrame = {
Type = "TimeFrameInterval",
Start = "1969 JUL 20 19:10:25.183"
},
Transform = {
Translation = lemTranslation,
Rotation = lemRotation
},
GUI = {
Hidden = false,
Name = "Apollo 11 Lunar Lander Position",
Path = "/Solar System/Missions/Apollo/11"
}
}
--landing - 1969-07-20T20:17:40
local Apollo11LemDescentModel = {
Identifier = "Apollo11LemDescentModel",
Parent = Apollo11LemPosition.Identifier,
TimeFrame = {
Type = "TimeFrameInterval",
Start = "1969 JUL 19 19:38:29.183",
End = "1969 JUL 20 20:17:40.0"
},
Transform = {
Scale = {
Type = "StaticScale",
Scale = 0.24
}
},
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = model.modelFolder .. "/lmremoved.obj"
},
ColorTexture = model.modelFolder .. "/LM-2_ver2clean_u1_v1.jpeg",
LightSources = assetHelper.getDefaultLightSources(sunTransforms.SolarSystemBarycenter.Identifier)
},
GUI = {
Hidden = false,
Name = "Apollo 11 Descent Lem",
Path = "/Solar System/Missions/Apollo/11"
}
}
local Apollo11LemLandedModel = {
Identifier = "Apollo11LemLandedModel",
Parent = Apollo11LemPosition.Identifier,
TimeFrame = {
Type = "TimeFrameInterval",
Start = "1969 JUL 20 20:17:40.0"
},
Transform = {
Scale = {
Type = "StaticScale",
Scale = 0.24
}
},
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = model.modelFolder .. "/LM-2_ver2clean.obj"
},
ColorTexture = model.modelFolder .. "/LM-2_ver2clean_u1_v1.jpeg",
LightSources = assetHelper.getDefaultLightSources(sunTransforms.SolarSystemBarycenter.Identifier)
},
GUI = {
Hidden = false,
Name = "Apollo 11 Landed Lem",
Path = "/Solar System/Missions/Apollo/11"
}
}
local exportList = {
Apollo11Position,
Apollo11LemPosition,
Apollo11Model,
Apollo11LemDescentModel,
Apollo11LemLandedModel,
Apollo11MoonTrail,
Apollo11LemTrail,
}
assetHelper.registerSceneGraphNodesAndExport(asset, exportList)
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,234 @@
local assetHelper = asset.require('util/asset_helper')
local sunTransforms = asset.require('scene/solarsystem/sun/transforms')
local csm = asset.require('./apollo_csm')
asset.require('spice/base')
local kernelsFolder = asset.syncedResource({
Name = "Apollo Kernels",
Type = "HttpSynchronization",
Identifier = "apollo_spice",
Version = 1
})
local kernels = {
kernelsFolder .. "/moon_080317.tf",
kernelsFolder .. "/apollo8.tf",
kernelsFolder .. "/moon_pa_de421_1900-2050.bpc",
kernelsFolder .. '/apollo8.tsc',
kernelsFolder .. '/apollo8.bsp',
kernelsFolder .. '/apollo8_earthrise.bc',
}
local apolloSpiceId = "-908"
local Apollo8Launch = {
Identifier = "Apollo8Launch",
Parent = "Earth",
TimeFrame = { -- Using Spice kernels for 1850-2150
Type = "TimeFrameInterval",
Start = "1968 DEC 21",
End = "1968 DEC 28"
},
Transform = {
Translation = {
Type = "SpiceTranslation",
Target = apolloSpiceId,
Observer = "EARTH",
Frame = "IAU_EARTH",
Kernels = kernels
},
},
GUI = {
Name = "Apollo 8 Launch Capsule",
Path = "/Solar System/Missions/Apollo"
}
}
local Apollo8 = {
Identifier = "Apollo8",
Parent = "EarthBarycenter",
TimeFrame = { -- Using Spice kernels for 1850-2150
Type = "TimeFrameInterval",
Start = "1968 DEC 21",
End = "1968 DEC 28"
},
Transform = {
Translation = {
Type = "SpiceTranslation",
Target = apolloSpiceId,
Observer = "EARTH BARYCENTER",
Frame = "GALACTIC",
Kernels = kernels
},
Rotation = {
Type = "SpiceRotation",
SourceFrame = "A8_EARTHRISE",
DestinationFrame = "GALACTIC",
TimeFrame = {
-- The orientation of Apollo 8 is only
-- available during the few minutes when
-- the famous Earthrise picture was taken.
Type = "TimeFrameInterval",
Start = "1968 DEC 24 16:37:19",
End = "1968 DEC 24 16:40:15"
}
}
},
GUI = {
Name = "Apollo 8",
Path = "/Solar System/Missions/Apollo"
}
}
local Apollo8LaunchModel = {
Identifier = "Apollo8LaunchModel",
Parent = Apollo8Launch.Identifier,
Transform = {
Scale = {
Type = "StaticScale",
-- The scale of the model is in cm; OpenSpace is in m
Scale = 0.01
},
Rotation = {
Type = "StaticRotation",
Rotation = {0.0, 0.0, -3.1415/2}
}
},
GUI = {
Hidden = true,
Name = "Apollo 8 Launch Model",
Path = "/Solar System/Missions/Apollo"
}
}
local Apollo8Model = {
Identifier = "Apollo8Model",
Parent = Apollo8.Identifier,
Transform = {
Scale = {
Type = "StaticScale",
-- The scale of the model is in cm; OpenSpace is in m
Scale = 0.01
},
Rotation = {
Type = "StaticRotation",
Rotation = {0.0, 0.0, -3.1415/2}
}
},
GUI = {
Hidden = true,
Name = "Apollo 8 Model",
Path = "/Solar System/Missions/Apollo"
}
}
local PivotOffset = { 0, 2.5, 0}
-- The pivot node is used for navigation inside the spacecraft
local Apollo8Pivot = {
Identifier = "Apollo8Pivot",
Parent = Apollo8.Identifier,
Transform = {
Translation = {
Type = "StaticTranslation",
Position = PivotOffset
},
},
GUI = {
Name = "Apollo 8 Pivot",
Path = "/Solar System/Missions/Apollo"
}
}
local Apollo8LaunchTrail = {
Identifier = "Apollo8LaunchTrail",
Parent = "Earth",
Renderable = {
Type = "RenderableTrailTrajectory",
Translation = {
Type = "SpiceTranslation",
Target = apolloSpiceId,
Observer = "EARTH",
Frame = "IAU_EARTH",
Kernels = kernels
},
Color = { 0.70, 0.50, 0.20 },
StartTime = "1968 DEC 21 12:51:00",
EndTime = "1968 DEC 21 23:23:22",
SampleInterval = 30
},
GUI = {
Name = "Apollo 8 Launch Trail",
Path = "/Solar System/Missions/Apollo"
}
}
local Apollo8MoonTrail = {
Identifier = "Apollo8MoonTrail",
Parent = "Moon",
Renderable = {
Type = "RenderableTrailTrajectory",
Translation = {
Type = "SpiceTranslation",
Target = apolloSpiceId,
Observer = "MOON",
Frame = "IAU_MOON",
Kernels = kernels
},
Color = { 0.70, 0.50, 0.20 },
StartTime = "1968 DEC 23",
EndTime = "1968 DEC 26",
SampleInterval = 30,
Enabled = false,
},
GUI = {
Name = "Apollo 8 Moon Trail",
Path = "/Solar System/Missions/Apollo"
}
}
local Apollo8EarthBarycenterTrail = {
Identifier = "Apollo8EarthBarycenterTrail",
Parent = "EarthBarycenter",
Renderable = {
Type = "RenderableTrailTrajectory",
Translation = {
Type = "SpiceTranslation",
Target = apolloSpiceId,
Observer = "EARTH BARYCENTER",
Frame = "GALACTIC",
Kernels = kernels
},
Color = { 1, 0.0, 0.0 },
StartTime = "1968 DEC 21",
EndTime = "1968 DEC 28",
SampleInterval = 30,
Enabled = false,
},
GUI = {
Name = "Apollo 8 Earth Barycenter Trail",
Path = "/Solar System/Missions/Apollo"
}
}
local exportList = {
Apollo8,
Apollo8Model,
Apollo8Launch,
Apollo8LaunchModel,
Apollo8Pivot,
Apollo8LaunchTrail,
Apollo8MoonTrail,
Apollo8EarthBarycenterTrail
}
assetHelper.registerSceneGraphNodesAndExport(asset, exportList)
-- Registering Command and Service module needs to happen fter the export list
-- has been registered, since it depends on the Apollo8Model scene graph node.
csm.registerCsm(asset, Apollo8Model.Identifier)
csm.registerCsm(asset, Apollo8LaunchModel.Identifier)
@@ -0,0 +1,74 @@
local assetHelper = asset.require('util/asset_helper')
local sunTransforms = asset.require('scene/solarsystem/sun/transforms')
local kernelsFolder = asset.syncedResource({
Name = "Apollo Kernels",
Type = "HttpSynchronization",
Identifier = "apollo_spice",
Version = 1
})
local kernels = {
kernelsFolder .. "/moon_080317.tf",
kernelsFolder .. "/apollo8.tf",
kernelsFolder .. "/moon_pa_de421_1900-2050.bpc",
kernelsFolder .. '/apollo8.tsc',
kernelsFolder .. '/apollo8.bsp',
kernelsFolder .. '/apollo8_earthrise.bc',
}
local apolloSpiceId = "-908"
local Apollo8LaunchTrail = {
Identifier = "Apollo8LaunchTrail",
Parent = "Earth",
Renderable = {
Type = "RenderableTrailTrajectory",
Translation = {
Type = "SpiceTranslation",
Target = apolloSpiceId,
Observer = "EARTH",
Frame = "IAU_EARTH",
Kernels = kernels
},
Color = { 0.70, 0.50, 0.20 },
StartTime = "1968 DEC 21 12:51:00",
EndTime = "1968 DEC 21 23:23:22",
SampleInterval = 30
},
GUI = {
Name = "Apollo 8 Launch Trail",
Path = "/Solar System/Missions/Apollo"
}
}
local Apollo8EarthBarycenterTrail = {
Identifier = "Apollo8EarthBarycenterTrail",
Parent = "EarthBarycenter",
Renderable = {
Type = "RenderableTrailTrajectory",
Translation = {
Type = "SpiceTranslation",
Target = apolloSpiceId,
Observer = "EARTH BARYCENTER",
Frame = "GALACTIC",
Kernels = kernels
},
Color = { 1, 0.0, 0.0 },
StartTime = "1968 DEC 21",
EndTime = "1968 DEC 28",
SampleInterval = 30,
Enabled = false,
},
GUI = {
Name = "Apollo 8 Earth Barycenter Trail",
Path = "/Solar System/Missions/Apollo"
}
}
local exportList = {
Apollo8LaunchTrail,
Apollo8EarthBarycenterTrail,
}
assetHelper.registerSceneGraphNodesAndExport(asset, exportList)
@@ -0,0 +1,39 @@
--apollo_11_lem_flipbook.asset
local helper = asset.require('util/vrt_flipbook_helper')
local assetPrefix = "A11flip";
local assetGlobe = "Moon";
local flipbookCount = 19;
local flipbook = nil;
local vrts = asset.syncedResource({
Name = "Apollo 11 Flipbook",
Type = "HttpSynchronization",
Identifier = "apollo_11_flipbook",
Version = 1
})
asset.onInitialize(function ()
openspace.globebrowsing.addBlendingLayersFromDirectory(vrts, assetGlobe);
flipbook = helper.createFlipbook(assetPrefix, assetGlobe, 19);
function nextFlip()
helper.nextFlipbookPage(flipbook);
end
function previousFlip()
helper.previousFlipbookPage(flipbook);
end
openspace.bindKey("RIGHT", "nextFlip()", "Show the next Apollo 11 flipbook image.", "Next A11 flip", "/Missions/Apollo/11")
openspace.bindKey("LEFT", "previousFlip()","Show the previous Apollo 11 flipbook image.", "Prev A11 flip", "/Missions/Apollo/11")
end)
asset.onDeinitialize(function ()
flipbook = nil;
openspace.clearKey("RIGHT")
openspace.clearKey("LEFT")
end)
@@ -0,0 +1,280 @@
-- This asset exports a function to create an Apollo Command and Service Module (CSM).
-- Instead of hard-coding the scene graph node parent,
-- client assets can decide which object that the CSM should be attached to.
-- Usage example: registerCsm(asset, Apollo8.Idenfitier)
-- ...where Apollo8 is the scene graph node identifier to attach the CSM to.
local assetHelper = asset.require('util/asset_helper')
local sunTransforms = asset.require('scene/solarsystem/sun/transforms')
local models = asset.syncedResource({
Name = "Apollo Models",
Type = "HttpSynchronization",
Identifier = "apollo_models",
Version = 1
})
local partsInfo = {
-- Data is structured as: Geometry file name (except .obj suffix), texture file name, shading
-- Exterior
{"AP08_cone_command_module", "Command_module_diff.png", true},
{"AP08_cone_hatchdoor_handle_scratched_metal", "scratched_metal_gloss.png", true},
{"AP08_cone_vent_ports_black", "black.png", true},
{"AP08_cone_vent_ports_red", "red.png", true},
{"AP08_cone_hatchdoor_interior", "apollo_hatchdoor_interior.jpg", false},
{"AP08_service_black", "black.png", true},
{"AP08_service_brown", "brown.png", true},
{"AP08_service_grey", "gray.png", true},
{"AP08_service_high_gain_antenna", "Antenna_diff.png", true},
{"AP08_service_module", "Service_module_diff.png", true},
{"AP08_service_nozzle", "Nozzle_diff.png", true},
{"AP08_service_pink", "pink.png", true},
{"AP08_service_red", "red.png", true},
{"AP08_service_scratched_metal", "scratched_metal_gloss.png", true},
{"AP08_service_white", "white.png", true},
-- Interior
-- {"AP11_int_back_wall_left", "AP11_int_back_wall_left.png", false},
-- {"AP11_int_back_wall_right", "AP11_int_back_wall_right.png", false},
-- {"AP11_interior_back_wall_top_0Shape3", "back_wall_top_0Shape3_tpAmbient_paint_03.png", false},
-- {"AP11_interior_belt_buckles_02_L2", "belt_buckles_02_L2Shape_tpAmbient.png", false},
-- {"AP11_interior_belt_straps_02", "belt_straps_02Shape_tpAmbient_paint_01.png", false},
-- {"AP11_interior_black_push_buttons", "push_buttonsShape_tpAmbient.png", false},
-- {"AP11_interior_bottom_boxes_03", "bottom_boxes_03_paint_01.png", false},
-- {"AP11_interior_bottom_floor_tp", "bottom_floor_tpAmbient_paint_v002.png", false},
-- {"AP11_interior_box_back_01", "box_back_01_paint_v001.png", false},
-- {"AP11_interior_box_back_02", "box_back_02_paint_v001.png", false},
-- {"AP11_interior_box_back_04", "box_back_04_paint_v001.png", false},
-- {"AP11_interior_box_lft_lower_01", "box_lft_lower_01Shape_Diffuse_paint_v002.png", false},
-- {"AP11_interior_box_lft_top", "box_lft_topShape_Diffuse_paint_v009.png", false},
-- {"AP11_interior_box_mid_tp", "box_mid_tpDiffuse_paint_v001.png", false},
-- {"AP11_interior_box_rt_top_02", "box_rt_top_02_paint_04.png", false},
-- {"AP11_interior_brushed_blue_ano", "brushed_blue_ano_paint_01.png", false},
-- {"AP11_interior_brushed_brass", "brushed_brass_paint_01.png", false},
-- {"AP11_interior_brushed_grey_ano", "brushed_grey_ano_paint_02.png", false},
-- {"AP11_interior_canvas_cover", "canvas_coverShape_tpAmbient_paint_01.png", false},
-- {"AP11_interior_Channel_attachment", "Channel_attachment_Diffuse.png", false},
-- {"AP11_interior_Channel_baseMetal", "Channel_baseMetal_Diffuse.png", false},
-- {"AP11_interior_Channel_Material", "Channel_Material_Diffuse.png", false},
-- {"AP11_interior_Channel_rsMaterial2", "Channel_rsMaterial2_Diffuse.png", false},
-- {"AP11_interior_cloth_01", "cloth_01Shape_tpAmbient_paint_01.png", false},
-- {"AP11_interior_coiled_hose", "coiled_hoseShape_tpAmbient.png", false},
-- {"AP11_interior_control_panel_left_win_plates", "control_panel_left_win_platesShape_tpAmbient.png", false},
-- {"AP11_interior_control_panel_rt_win_plates", "control_panel_rt_win_platesShape_tpAmbient.png", false},
-- {"AP11_interior_copper_parts_main_cp", "copper_parts_main_cpShape_tpAmbient.png", false},
-- {"AP11_interior_dials_main2", "dials_main2Shape_tpAmbient.png", false},
-- {"AP11_interior_dials_t2", "dials_t2Shape_tpAmbient.png", false},
-- {"AP11_interior_dial_fixes_01", "dial_fixes_01Shape_tpAmbient.png", false},
-- {"AP11_interior_fire_ex_02", "fire_ex_02_paint_v001.png", false},
-- {"AP11_interior_floor_panels_3", "floor_panels_3Shape_tpAmbient_paint_01.png", false},
-- {"AP11_interior_floor_tile_tex_01", "floor_tile_tex_01.png", false},
-- {"AP11_interior_grey", "gray.png", false},
-- {"AP11_interior_handholds_cp", "handholds_cpShape_tpAmbient_paint_05.png", false},
-- {"AP11_interior_hatch_release_0Shape5", "hatch_release_0Shape5_tpAmbient_paint_02.png", false},
-- {"AP11_interior_headrests_02", "headrests_02Shape_tpAmbient_paint_01.png", false},
-- {"AP11_interior_hoses_black_01", "hoses_black_01Shape_tpAmbient_paint_01.png", false},
-- {"AP11_interior_hoses_white_0Shape1", "hoses_white_0Shape1_tpAmbient_paint_01.png", false},
-- {"AP11_interior_josticks1", "joysticks1Shape_tpAmbient_paint_01.png", false},
-- {"AP11_interior_joysticks_fabric1", "joysticks_fabric1_Shape_tpAmbient_paint_01.png", false},
-- {"AP11_interior_joystick_poles_lft_05", "joystick_poles_lft_05_paint_v002.png", false},
-- {"AP11_interior_joystick_poles_lft_long_05", "joystick_poles_lft_long_05_paint_v002.png", false},
-- {"AP11_interior_joystick_poles_rt_05", "joystick_poles_rt_05_paint_v002.png", false},
-- {"AP11_interior_latch_mechanisms_01", "latch_mechanisms_01Shape_tpAmbient.png", false},
-- {"AP11_interior_lower_push_buttons", "lower_push_buttonsShape_tpAmbient.png", false},
-- {"AP11_interior_lower_walls_back", "lower_walls_back_paint_04.png", false},
-- {"AP11_interior_lower_walls_boxes_head", "lower_walls_boxes_headShape_tpAmbient_paint_v001.png", false},
-- {"AP11_interior_main_cp_left_smth_03", "main_cp_left_0Shape3_tpAmbient_paint_02.png", false},
-- {"AP11_interior_main_cp_mid_smth_02", "main_cp_mid_smth_02Shape_tpAmbient_paint_02.png", false},
-- {"AP11_interior_main_cp_rt_smth", "main_cp_rt_smthShape_tpAmbient_paint_02.png", false},
-- {"AP11_interior_main_cp_wheels", "main_cp_wheelsShape_tpAmbient.png", false},
-- {"AP11_interior_metal_brackets_under_hatch", "metal_brackets_under_hatchShape_tpAmbient.png", false},
-- {"AP11_interior_metal_tunnel_parts", "metal_tunnel_partsShape_tpAmbient_paint_01.png", false},
-- {"AP11_interior_metal_window_parts", "metal_window_partsShape_tpAmbient_paint_01.png", false},
-- {"AP11_interior_middle_walls_05", "middle_walls_05_tpAmbient_paint_02.png", false},
-- {"AP11_interior_middle_walls_0Shape8", "middle_walls_0Shape8_tpAmbient_paint_01.png", false},
-- {"AP11_interior_mid_tunnel_parts", "mid_tunnel_parts_03Shape_tpAmbient_paint_02.png", false},
-- {"AP11_interior_new_switch_rails1", "new_switch_rails1Shape_tpAmbient.png", false},
-- {"AP11_interior_nozzles_02", "nozzles_02Shape_tpAmbient_paint_01.png", false},
-- {"AP11_interior_outlet_fabric3", "outlet_fabric3Shape_tpAmbient_paint_02.png", false},
-- {"AP11_interior_pole_end_02", "pole_end_02.png", false},
-- {"AP11_interior_pole_end_03", "pole_end_03.png", false},
-- {"AP11_interior_pole_tex_03", "pole_tex_03.png", false},
-- {"AP11_interior_pole_tex_04", "pole_tex_04.png", false},
-- {"AP11_interior_pole_tex_05", "pole_tex_05.png", false},
-- {"AP11_interior_pole_tex_lower_01", "pole_tex_lower_01.png", false},
-- {"AP11_interior_pole_under_seat_paint_01", "pole_under_seat_paint_01.png", false},
-- {"AP11_interior_pole_under_seat_square_bar", "pole_under_seat_square_bar_paint_01.png", false},
-- {"AP11_interior_push_switches_lft1", "push_switches_lft1Shape_tpAmbient.png", false},
-- {"AP11_interior_random_small_parts_01", "random_small_parts_01Shape_tpAmbient_paint_02.png", false},
-- {"AP11_interior_red", "red.png", false},
-- {"AP11_interior_reticle_wheel_tp", "reticle_wheel_tpAmbient_paint_01.png", false},
-- {"AP11_interior_rivet_paint_v001", "rivet_paint_v001.png", false},
-- {"AP11_interior_seats_fabric", "seats_fabric_paint_01.png", false},
-- {"AP11_interior_seat_left_tp", "seat_left_tpAmbient_paint_v001.png", false},
-- {"AP11_interior_seat_lights_left", "seat_lights_left_Shape_tpAmbient_paint_v001.png", false},
-- {"AP11_interior_seat_lights_rt", "seat_lights_rt_Shape_tpAmbient_paint_v001.png", false},
-- {"AP11_interior_seat_middle_tp", "seat_middle_tpAmbient_paint_v001.png", false},
-- {"AP11_interior_seat_poles_0Shape1", "seat_poles_0Shape1_tpAmbient_paint_01.png", false},
-- {"AP11_interior_seat_pole_mirror_0Shape1", "seat_pole_mirror_0Shape1_tpAmbient_paint_01.png", false},
-- {"AP11_interior_seat_rt_tp", "seat_rt_tpAmbient_paint_v001.png", false},
-- {"AP11_interior_sextant_0Shape2", "sextant_0Shape2_tpAmbient.png", false},
-- {"AP11_interior_switch_covers_main_middle1", "switch_covers_main_middle1Shape_tpAmbient.png", false},
-- {"AP11_interior_switch_rails_lft", "switch_rails_lftShape_tpAmbient.png", false},
-- {"AP11_interior_tunnel_main_cylinder1", "switch_rails_lftShape_tpAmbient.png", false},
-- {"AP11_interior_tunnel_switches_01", "tunnel_switches_01Shape_tpAmbient.png", false},
-- {"AP11_interior_tunnel_wheelsShape", "tunnel_wheelsShape_tpAmbient.png", false},
-- {"AP11_interior_walls_mid_left", "walls_mid_leftShape_tpAmbient_paint_01.png", false},
-- {"AP11_interior_windows_front_0Shape4", "windows_front_0Shape4_tpAmbient_paint_01.png", false}
}
local partsInfoFull = {
-- Data is structured as: Geometry file name (except .obj suffix), texture file name, shading
-- Exterior
{"AP08_cone_command_module", "Command_module_diff.png", true},
{"AP08_cone_hatchdoor_handle_scratched_metal", "scratched_metal_gloss.png", true},
{"AP08_cone_vent_ports_black", "black.png", true},
{"AP08_cone_vent_ports_red", "red.png", true},
{"AP08_cone_hatchdoor_interior", "apollo_hatchdoor_interior.jpg", false},
{"AP08_service_black", "black.png", true},
{"AP08_service_brown", "brown.png", true},
{"AP08_service_grey", "gray.png", true},
{"AP08_service_high_gain_antenna", "Antenna_diff.png", true},
{"AP08_service_module", "Service_module_diff.png", true},
{"AP08_service_nozzle", "Nozzle_diff.png", true},
{"AP08_service_pink", "pink.png", true},
{"AP08_service_red", "red.png", true},
{"AP08_service_scratched_metal", "scratched_metal_gloss.png", true},
{"AP08_service_white", "white.png", true},
-- Interior
{"AP11_int_back_wall_left", "AP11_int_back_wall_left.png", false},
{"AP11_int_back_wall_right", "AP11_int_back_wall_right.png", false},
{"AP11_interior_back_wall_top_0Shape3", "back_wall_top_0Shape3_tpAmbient_paint_03.png", false},
{"AP11_interior_belt_buckles_02_L2", "belt_buckles_02_L2Shape_tpAmbient.png", false},
{"AP11_interior_belt_straps_02", "belt_straps_02Shape_tpAmbient_paint_01.png", false},
{"AP11_interior_black_push_buttons", "push_buttonsShape_tpAmbient.png", false},
{"AP11_interior_bottom_boxes_03", "bottom_boxes_03_paint_01.png", false},
{"AP11_interior_bottom_floor_tp", "bottom_floor_tpAmbient_paint_v002.png", false},
{"AP11_interior_box_back_01", "box_back_01_paint_v001.png", false},
{"AP11_interior_box_back_02", "box_back_02_paint_v001.png", false},
{"AP11_interior_box_back_04", "box_back_04_paint_v001.png", false},
{"AP11_interior_box_lft_lower_01", "box_lft_lower_01Shape_Diffuse_paint_v002.png", false},
{"AP11_interior_box_lft_top", "box_lft_topShape_Diffuse_paint_v009.png", false},
{"AP11_interior_box_mid_tp", "box_mid_tpDiffuse_paint_v001.png", false},
{"AP11_interior_box_rt_top_02", "box_rt_top_02_paint_04.png", false},
{"AP11_interior_brushed_blue_ano", "brushed_blue_ano_paint_01.png", false},
{"AP11_interior_brushed_brass", "brushed_brass_paint_01.png", false},
{"AP11_interior_brushed_grey_ano", "brushed_grey_ano_paint_02.png", false},
{"AP11_interior_canvas_cover", "canvas_coverShape_tpAmbient_paint_01.png", false},
{"AP11_interior_Channel_attachment", "Channel_attachment_Diffuse.png", false},
{"AP11_interior_Channel_baseMetal", "Channel_baseMetal_Diffuse.png", false},
{"AP11_interior_Channel_Material", "Channel_Material_Diffuse.png", false},
{"AP11_interior_Channel_rsMaterial2", "Channel_rsMaterial2_Diffuse.png", false},
{"AP11_interior_cloth_01", "cloth_01Shape_tpAmbient_paint_01.png", false},
{"AP11_interior_coiled_hose", "coiled_hoseShape_tpAmbient.png", false},
{"AP11_interior_control_panel_left_win_plates", "control_panel_left_win_platesShape_tpAmbient.png", false},
{"AP11_interior_control_panel_rt_win_plates", "control_panel_rt_win_platesShape_tpAmbient.png", false},
{"AP11_interior_copper_parts_main_cp", "copper_parts_main_cpShape_tpAmbient.png", false},
{"AP11_interior_dials_main2", "dials_main2Shape_tpAmbient.png", false},
{"AP11_interior_dials_t2", "dials_t2Shape_tpAmbient.png", false},
{"AP11_interior_dial_fixes_01", "dial_fixes_01Shape_tpAmbient.png", false},
{"AP11_interior_fire_ex_02", "fire_ex_02_paint_v001.png", false},
{"AP11_interior_floor_panels_3", "floor_panels_3Shape_tpAmbient_paint_01.png", false},
{"AP11_interior_floor_tile_tex_01", "floor_tile_tex_01.png", false},
{"AP11_interior_grey", "gray.png", false},
{"AP11_interior_handholds_cp", "handholds_cpShape_tpAmbient_paint_05.png", false},
{"AP11_interior_hatch_release_0Shape5", "hatch_release_0Shape5_tpAmbient_paint_02.png", false},
{"AP11_interior_headrests_02", "headrests_02Shape_tpAmbient_paint_01.png", false},
{"AP11_interior_hoses_black_01", "hoses_black_01Shape_tpAmbient_paint_01.png", false},
{"AP11_interior_hoses_white_0Shape1", "hoses_white_0Shape1_tpAmbient_paint_01.png", false},
{"AP11_interior_josticks1", "joysticks1Shape_tpAmbient_paint_01.png", false},
{"AP11_interior_joysticks_fabric1", "joysticks_fabric1_Shape_tpAmbient_paint_01.png", false},
{"AP11_interior_joystick_poles_lft_05", "joystick_poles_lft_05_paint_v002.png", false},
{"AP11_interior_joystick_poles_lft_long_05", "joystick_poles_lft_long_05_paint_v002.png", false},
{"AP11_interior_joystick_poles_rt_05", "joystick_poles_rt_05_paint_v002.png", false},
{"AP11_interior_latch_mechanisms_01", "latch_mechanisms_01Shape_tpAmbient.png", false},
{"AP11_interior_lower_push_buttons", "lower_push_buttonsShape_tpAmbient.png", false},
{"AP11_interior_lower_walls_back", "lower_walls_back_paint_04.png", false},
{"AP11_interior_lower_walls_boxes_head", "lower_walls_boxes_headShape_tpAmbient_paint_v001.png", false},
{"AP11_interior_main_cp_left_smth_03", "main_cp_left_0Shape3_tpAmbient_paint_02.png", false},
{"AP11_interior_main_cp_mid_smth_02", "main_cp_mid_smth_02Shape_tpAmbient_paint_02.png", false},
{"AP11_interior_main_cp_rt_smth", "main_cp_rt_smthShape_tpAmbient_paint_02.png", false},
{"AP11_interior_main_cp_wheels", "main_cp_wheelsShape_tpAmbient.png", false},
{"AP11_interior_metal_brackets_under_hatch", "metal_brackets_under_hatchShape_tpAmbient.png", false},
{"AP11_interior_metal_tunnel_parts", "metal_tunnel_partsShape_tpAmbient_paint_01.png", false},
{"AP11_interior_metal_window_parts", "metal_window_partsShape_tpAmbient_paint_01.png", false},
{"AP11_interior_middle_walls_05", "middle_walls_05_tpAmbient_paint_02.png", false},
{"AP11_interior_middle_walls_0Shape8", "middle_walls_0Shape8_tpAmbient_paint_01.png", false},
{"AP11_interior_mid_tunnel_parts", "mid_tunnel_parts_03Shape_tpAmbient_paint_02.png", false},
{"AP11_interior_new_switch_rails1", "new_switch_rails1Shape_tpAmbient.png", false},
{"AP11_interior_nozzles_02", "nozzles_02Shape_tpAmbient_paint_01.png", false},
{"AP11_interior_outlet_fabric3", "outlet_fabric3Shape_tpAmbient_paint_02.png", false},
{"AP11_interior_pole_end_02", "pole_end_02.png", false},
{"AP11_interior_pole_end_03", "pole_end_03.png", false},
{"AP11_interior_pole_tex_03", "pole_tex_03.png", false},
{"AP11_interior_pole_tex_04", "pole_tex_04.png", false},
{"AP11_interior_pole_tex_05", "pole_tex_05.png", false},
{"AP11_interior_pole_tex_lower_01", "pole_tex_lower_01.png", false},
{"AP11_interior_pole_under_seat_paint_01", "pole_under_seat_paint_01.png", false},
{"AP11_interior_pole_under_seat_square_bar", "pole_under_seat_square_bar_paint_01.png", false},
{"AP11_interior_push_switches_lft1", "push_switches_lft1Shape_tpAmbient.png", false},
{"AP11_interior_random_small_parts_01", "random_small_parts_01Shape_tpAmbient_paint_02.png", false},
{"AP11_interior_red", "red.png", false},
{"AP11_interior_reticle_wheel_tp", "reticle_wheel_tpAmbient_paint_01.png", false},
{"AP11_interior_rivet_paint_v001", "rivet_paint_v001.png", false},
{"AP11_interior_seats_fabric", "seats_fabric_paint_01.png", false},
{"AP11_interior_seat_left_tp", "seat_left_tpAmbient_paint_v001.png", false},
{"AP11_interior_seat_lights_left", "seat_lights_left_Shape_tpAmbient_paint_v001.png", false},
{"AP11_interior_seat_lights_rt", "seat_lights_rt_Shape_tpAmbient_paint_v001.png", false},
{"AP11_interior_seat_middle_tp", "seat_middle_tpAmbient_paint_v001.png", false},
{"AP11_interior_seat_poles_0Shape1", "seat_poles_0Shape1_tpAmbient_paint_01.png", false},
{"AP11_interior_seat_pole_mirror_0Shape1", "seat_pole_mirror_0Shape1_tpAmbient_paint_01.png", false},
{"AP11_interior_seat_rt_tp", "seat_rt_tpAmbient_paint_v001.png", false},
{"AP11_interior_sextant_0Shape2", "sextant_0Shape2_tpAmbient.png", false},
{"AP11_interior_switch_covers_main_middle1", "switch_covers_main_middle1Shape_tpAmbient.png", false},
{"AP11_interior_switch_rails_lft", "switch_rails_lftShape_tpAmbient.png", false},
{"AP11_interior_tunnel_main_cylinder1", "switch_rails_lftShape_tpAmbient.png", false},
{"AP11_interior_tunnel_switches_01", "tunnel_switches_01Shape_tpAmbient.png", false},
{"AP11_interior_tunnel_wheelsShape", "tunnel_wheelsShape_tpAmbient.png", false},
{"AP11_interior_walls_mid_left", "walls_mid_leftShape_tpAmbient_paint_01.png", false},
{"AP11_interior_windows_front_0Shape4", "windows_front_0Shape4_tpAmbient_paint_01.png", false}
}
asset.export("registerCsm", function (asset, parentNodeIdentifier)
local parts = {}
for i, info in ipairs(partsInfo) do
parts[#parts + 1] = assetHelper.createModelPart(
parentNodeIdentifier,
sunTransforms.SolarSystemBarycenter.Identifier,
models,
info[1],
info[2],
info[3]
)
end
assetHelper.registerSceneGraphNodesAndExport(asset, parts)
end)
asset.export("registerCsmFull", function (asset, parentNodeIdentifier)
local parts = {}
for i, info in ipairs(partsInfoFull) do
parts[#parts + 1] = assetHelper.createModelPart(
parentNodeIdentifier,
sunTransforms.SolarSystemBarycenter.Identifier,
models,
info[1],
info[2],
info[3]
)
end
assetHelper.registerSceneGraphNodesAndExport(asset, parts)
end)
@@ -0,0 +1,37 @@
--apollo_globebrowsing.asset
local heightmaps = asset.syncedResource({
Name = "Apollo Globebrowsing Heightmaps",
Type = "HttpSynchronization",
Identifier = "apollo_globebrowsing_heightmaps",
Version = 1
})
local basemaps = asset.syncedResource({
Name = "Apollo Globebrowsing Basemaps",
Type = "HttpSynchronization",
Identifier = "apollo_globebrowsing_basemaps",
Version = 1
})
local naclighting = asset.syncedResource({
Name = "Apollo Globebrowsing NAC Lighting",
Type = "HttpSynchronization",
Identifier = "apollo_globebrowsing_naclighting",
Version = 1
})
local stations = asset.syncedResource({
Name = "Apollo 17 Globebrowsing Stations",
Type = "HttpSynchronization",
Identifier = "apollo_17_stations",
Version = 1
})
asset.onInitialize(function ()
openspace.globebrowsing.addBlendingLayersFromDirectory(heightmaps, "Moon")
openspace.globebrowsing.addBlendingLayersFromDirectory(basemaps, "Moon")
openspace.globebrowsing.addBlendingLayersFromDirectory(naclighting, "Moon")
openspace.globebrowsing.addBlendingLayersFromDirectory(stations, "Moon")
end)
@@ -0,0 +1,51 @@
--apollo_lem.asset (hopeful title)
-- This asset exports a function to create an Apollo Lunar Excursion Module (LEM).
-- Instead of hard-coding the scene graph node parent,
-- client assets can decide which object that the LEM should be attached to.
-- Usage example: registerLem(asset, Apollo11Lem.Idenfitier)
-- ...where Apollo11Lem is the scene graph node identifier to attach the LEM to.
local assetHelper = asset.require('util/asset_helper')
local sunTransforms = asset.require('scene/solarsystem/sun/transforms')
local models = asset.syncedResource({
Name = "Apollo Models",
Type = "HttpSynchronization",
Identifier = "apollo_lem_model",
Version = 1
})
local partsInfo = {
-- Data is structured as: Geometry file name (except .obj suffix), texture file name, shading
-- Exterior
{ "black", "black.png", true },
{ "blue_glass", "blue_glass.png", true },
{ "booster", "booster3.png", true },
{ "bright_white", "white.png", true },
{ "dark_grey_dish", "dark_gray.png", true },
{ "dull_white", "dull_white.png", true },
{ "gold", "gold.png", true },
{ "light_grey", "light_gray.png", true },
{ "mid_grey", "gray.png", true },
{ "orange", "orange.png", true },
{ "texture_lem_flag", "texture_lem_flag.png", true },
{ "texture_lem_unitedstates", "texture_lem_unitedstates.png", true },
{ "yellow_buttons", "yellow.png", true }
}
asset.export("registerLem", function (asset, parentNodeIdentifier)
local parts = {}
for i, info in ipairs(partsInfo) do
parts[#parts + 1] = assetHelper.createModelPart(
parentNodeIdentifier,
sunTransforms.SolarSystemBarycenter.Identifier,
models,
info[1],
info[2],
info[3]
)
end
assetHelper.registerSceneGraphNodesAndExport(asset, parts)
end)
@@ -0,0 +1,183 @@
local sunTransforms = asset.require('scene/solarsystem/sun/transforms')
local assetHelper = asset.require('util/asset_helper')
local earthAsset = asset.require('scene/solarsystem/planets/earth/earth')
local moonAsset = asset.require('scene/solarsystem/planets/earth/moon/moon')
local models = asset.syncedResource({
Name = "Apollo Models",
Type = "HttpSynchronization",
Identifier = "apollo_boulders",
Version = 1
})
local LightSources = {
{
Type = "SceneGraphLightSource",
Identifier = "Sun",
Node = sunTransforms.SolarSystemBarycenter.Identifier,
Intensity = 1.0
},
{
Identifier = "Camera",
Type = "CameraLightSource",
Intensity = 0.5
}
}
local Station2Boulder1Holder = {
Identifier = "Station_2_Boulder1",
Parent = moonAsset.Moon.Identifier,
Transform = {
Translation = {
Type = "GlobeTranslation",
Globe = moonAsset.Moon.Identifier,
Longitude = -360+30.5294692,
Latitude = 20.098824,
Altitude = -2442.8,
UseHeightMap = false
}
},
GUI = {
Name = "Station 2 Boulder 1",
Path = "/Solar System/Missions/Apollo/17/Station 2"
}
}
local Station2Boulder1Model = {
Identifier = "Station2Boulder1Model",
Parent = Station2Boulder1Holder.Identifier,
Transform = {
Scale = {
Type = "StaticScale",
Scale = 0.06
},
},
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models .. "/b1-v2.obj"
},
ColorTexture = models .. "/b1-v2_u1_v1.jpeg",
LightSources = LightSources,
PerformShading = false,
DisableFaceCulling = true
},
GUI = {
Name = "Station 2 Boulder 1 Model",
Path = "/Solar System/Missions/Apollo/17/Station 2"
}
}
local Station2Boulder2Holder = {
Identifier = "Station_2_Boulder2",
Parent = moonAsset.Moon.Identifier,
Transform = {
Translation = {
Type = "GlobeTranslation",
Globe = moonAsset.Moon.Identifier,
Longitude = -360+30.5287892,
Latitude = 20.098240,
Altitude = -2434.6,
UseHeightMap = false
}
},
GUI = {
Name = "Station 2 Boulder 2",
Path = "/Solar System/Missions/Apollo/17/Station 2"
}
}
local Station2Boulder2Model = {
Identifier = "Station2Boulder2Model",
Parent = Station2Boulder2Holder.Identifier,
Transform = {
Scale = {
Type = "StaticScale",
Scale = 0.06
},
},
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models .. "/b2model.obj"
},
ColorTexture = models .. "/b2model_u1_v1.jpeg",
LightSources = LightSources,
PerformShading = false,
DisableFaceCulling = true
},
GUI = {
Name = "Station 2 Boulder 2 Model",
Path = "/Solar System/Missions/Apollo/17/Station 2"
}
}
local Station2Boulder3Holder = {
Identifier = "Station_2_Boulder3",
Parent = moonAsset.Moon.Identifier,
Transform = {
Translation = {
Type = "GlobeTranslation",
Globe = moonAsset.Moon.Identifier,
Longitude = -360+30.5294692,
Latitude = 20.098610,
Altitude = -2441.55,
UseHeightMap = false
}
},
GUI = {
Name = "Station 2 Boulder 3",
Path = "/Solar System/Missions/Apollo/17/Station 2"
}
}
local Station2Boulder3Model = {
Identifier = "Station2Boulder3Model",
Parent = Station2Boulder3Holder.Identifier,
Transform = {
Scale = {
Type = "StaticScale",
Scale = 0.06
},
},
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models .. "/b3model.obj"
},
ColorTexture = models .. "/b3model_u1_v1.jpeg",
LightSources = LightSources,
PerformShading = false,
DisableFaceCulling = true
},
GUI = {
Name = "Station 2 Boulder 3 Model",
Path = "/Solar System/Missions/Apollo/17/Station 2"
}
}
assetHelper.registerSceneGraphNodesAndExport(asset, {
Station2Boulder1Holder, Station2Boulder1Model,
Station2Boulder2Holder, Station2Boulder2Model,
Station2Boulder3Holder, Station2Boulder3Model
})
asset.onInitialize(function ()
openspace.setPropertyValueSingle(
'Scene.Station2Boulder1Model.Renderable.RotationVector',
{ 243.243256 ,206.270264, 309.677429 }
);
openspace.setPropertyValueSingle(
'Scene.Station2Boulder3Model.Renderable.RotationVector',
{ 161.513519 ,243.243256, 65.806450 }
);
openspace.setPropertyValueSingle(
'Scene.Station2Boulder2Model.Renderable.RotationVector',
{ 66.162155, 7.783780, 114.193550 }
);
end)
@@ -0,0 +1,186 @@
local sunTransforms = asset.require('scene/solarsystem/sun/transforms')
local assetHelper = asset.require('util/asset_helper')
local models = asset.syncedResource({
Name = "Apollo Models",
Type = "HttpSynchronization",
Identifier = "apollo_boulders",
Version = 1
})
local LightSources = {
{
Type = "SceneGraphLightSource",
Identifier = "Sun",
Node = sunTransforms.SolarSystemBarycenter.Identifier,
Intensity = 1.0
},
{
Identifier = "Camera",
Type = "CameraLightSource",
Intensity = 0.5
}
}
local earthAsset = asset.require('scene/solarsystem/planets/earth/earth')
local moonAsset = asset.require('scene/solarsystem/planets/earth/moon/moon')
local Station6Frag1Holder = {
Identifier = "Station_6_Fragment1",
Parent = moonAsset.Moon.Identifier,
Transform = {
Translation = {
Type = "GlobeTranslation",
Globe = moonAsset.Moon.Identifier,
Longitude = -360+30.80068,
Latitude = 20.2903,
Altitude = -2562.6,
UseHeightmap = false
}
},
GUI = {
Name = "Station 6 Fragment 1",
Path = "/Solar System/Missions/Apollo/17/Station 6"
}
}
local Station6Frag1Model = {
Identifier = "Station6Frag1Model",
Parent = Station6Frag1Holder.Identifier,
Transform = {
Translation = {
Type = "GlobeTranslation",
Globe = moonAsset.Moon.Identifier,
Longitude = -360+30.8007,
Latitude = 20.2903,
Altitude = -2562.6,
UseHeightmap = false
}
},
Transform = {
Scale = {
Type = "StaticScale",
Scale = 0.1
}
},
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models .. "/A17-S6-frag1.obj"
},
ColorTexture = models .. "/A17-S6-frag1.png",
LightSources = LightSources,
PerformShading = false,
DisableFaceCulling = true
},
GUI = {
Name = "Station 6 Fragment 1 Model",
Path = "/Solar System/Missions/Apollo/17/Station 6"
}
}
local Station6Frag23Holder = {
Identifier = "Station_6_Fragments_2_3",
Parent = moonAsset.Moon.Identifier,
GUI = {
Name = "Station 6 Fragments 2 & 3 Holder",
Path = "/Solar System/Missions/Apollo/17/Station 6"
}
}
local Station6Frag2Model = {
Identifier = "A17S6F5",
Parent = Station6Frag23Holder.Identifier,
Transform = {
Scale = {
Type = "StaticScale",
Scale = 0.14
},
Translation = {
Type = "GlobeTranslation",
Globe = moonAsset.Moon.Identifier,
Longitude = -360+30.80055,
Latitude = 20.289808,
Altitude = -2566.5,
UseHeightmap = false
}
},
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models .. "/station6_boulder_frag2.obj"
},
ColorTexture = models .. "/frag2crop_u1_v1.jpeg",
LightSources = LightSources,
PerformShading = false,
DisableFaceCulling = true,
},
GUI = {
Name = "Station 6 Fragment 2 Model",
Path = "/Solar System/Missions/Apollo/17/Station 6"
}
}
local Station6Frag3Model = {
Identifier = "A17S6F3",
Parent = Station6Frag23Holder.Identifier,
Transform = {
Scale = {
Type = "StaticScale",
Scale = 0.14
},
Translation = {
Type = "GlobeTranslation",
Globe = moonAsset.Moon.Identifier,
Longitude = -360+30.80053,
Latitude = 20.29030,
Altitude = -2563.0,
UseHeightMap = false
}
},
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models .. "/station6_boulder_frag3.obj"
},
ColorTexture = models .. "/frag3crop_u1_v1.jpeg",
LightSources = LightSources,
PerformShading = false,
DisableFaceCulling = true
},
GUI = {
Name = "Station 6 Fragment 3 Model",
Path = "/Solar System/Missions/Apollo/17/Station 6"
}
}
assetHelper.registerSceneGraphNodesAndExport(asset, {
Station6Frag1Holder, Station6Frag1Model, Station6Frag23Holder, Station6Frag2Model, Station6Frag3Model,
})
asset.onInitialize(function ()
openspace.setPropertyValueSingle('Scene.Station6Frag1Model.Renderable.RotationVector', {235.909088,165.000000,286.299194});
openspace.setPropertyValueSingle('Scene.A17S6F5.Renderable.RotationVector', {336.959991,210.239990,325.984253});
openspace.setPropertyValueSingle('Scene.A17S6F3.Renderable.RotationVector', {293.181824,255.000000,4.090910});
openspace.setPropertyValueSingle('Scene.Station6Frag1Model.Renderable.PerformShading', false);
openspace.setPropertyValueSingle("NavigationHandler.OrbitalNavigator.MinimumAllowedDistance", 0.050000)
end)
@@ -0,0 +1,80 @@
local sunTransforms = asset.require('scene/solarsystem/sun/transforms')
local assetHelper = asset.require('util/asset_helper')
local models = asset.syncedResource({
Name = "Apollo Models",
Type = "HttpSynchronization",
Identifier = "apollo_boulders",
Version = 1
})
local LightSources = {
{
Type = "SceneGraphLightSource",
Identifier = "Sun",
Node = sunTransforms.SolarSystemBarycenter.Identifier,
Intensity = 1.0
},
{
Identifier = "Camera",
Type = "CameraLightSource",
Intensity = 0.5
}
}
local moonAsset = asset.require('scene/solarsystem/planets/earth/moon/moon')
local Station7BoulderHolder = {
Identifier = "Station_7_Boulder",
Parent = moonAsset.Moon.Identifier,
Transform = {
Translation = {
Type = "GlobeTranslation",
Globe = moonAsset.Moon.Identifier,
Longitude = -360+30.8165882,
Latitude = 20.2908556,
Altitude = -2593.5,
UseHeightMap = true
}
},
GUI = {
Name = "Station 7 Boulder",
Path = "/Solar System/Missions/Apollo/17/Station 7"
}
}
local Station7BoulderModel = {
Identifier = "Station7BoulderModel",
Parent = Station7BoulderHolder.Identifier,
Transform = {
Scale = {
Type = "StaticScale",
Scale = 0.1
},
},
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models .. "/b7model.obj"
},
ColorTexture = models .. "/b7model_u1_v1.jpeg",
LightSources = LightSources,
PerformShading = false,
DisableFaceCulling = true
},
GUI = {
Name = "Station 7 Boulder Model",
Path = "/Solar System/Missions/Apollo/17/Station 7"
}
}
assetHelper.registerSceneGraphNodesAndExport(asset, {
Station7BoulderHolder, Station7BoulderModel
})
asset.onInitialize(function ()
openspace.setPropertyValueSingle('Scene.Station7BoulderModel.Renderable.RotationVector', {1.945950,274.378387,212.903214});
end)
@@ -0,0 +1,120 @@
-- Apollo mission insignias on their locations on the Lunar surface.
-- The insignias are invisible by default, but can be enabled using shown or hidden using
-- the exported functions `showInsignias(interpolationDuration)` and `hideInsignias(interpolationDuration)`.
local assetHelper = asset.require('util/asset_helper')
local insigniasPath = asset.syncedResource({
Name = "Apollo Insignias",
Type = "HttpSynchronization",
Identifier = "apollo_insignias",
Version = 1
})
local moon = asset.require('scene/solarsystem/planets/earth/moon/moon')
local landingData = {
{
Identifier = "Apollo11",
Name = "Apollo 11",
Name = "Apollo 11",
Texture = "apollo11.png",
LunarModule = {0.67409, 23.47298, 0.0},
},
{
Identifier = "Apollo12",
Name = "Apollo 12",
Texture = "apollo12.png",
LunarModule = {-3.01381, -23.41930, 0.0}
},
{
Identifier = "Apollo14",
Name = "Apollo 14",
Texture = "apollo14.png",
LunarModule = {-3.64544, -17.47139, 0.0}
},
{
Identifier = "Apollo15",
Name = "Apollo 15",
Texture = "apollo15.png",
LunarModule = {26.13224, 3.63400, 0.0}
},
{
Identifier = "Apollo16",
Name = "Apollo 16",
Texture = "apollo16.png",
LunarModule = {-8.97341, 15.49859, 0.0}
},
{
Identifier = "Apollo17",
Name = "Apollo 17",
Texture = "apollo17.png",
LunarModule = {20.18809, 30.77475, 0.0}
}
}
local nodes = {}
local size = 100000;
for i = 1, #landingData do
local entry = landingData[i]
nodes[i] = {
Identifier = entry.Identifier .. "Insignia",
Parent = moon.Moon.Identifier,
Transform = {
Translation = {
Type = "GlobeTranslation",
Globe = moon.Moon.Identifier,
Latitude = entry.LunarModule[1],
Longitude = entry.LunarModule[2],
Altitude = entry.LunarModule[3] + size * 1.1,
UseHeightmap = false
},
},
Renderable = {
Type = "RenderablePlaneImageLocal",
Size = size,
Origin = "Center",
Billboard = true,
Texture = insigniasPath .. "/" .. entry.Texture,
Opacity = 0.0
},
GUI = {
Path = "/Other/Labels",
Name = entry.Name .. " Insignia"
}
}
end
asset.onInitialize(function ()
openspace.bindShortcut(
'Show Apollo Landing Labels',
'openspace.setPropertyValue("Scene.Apollo*Insignia.Renderable.Opacity", 1, 0.5)',
'Show patches of the Apollo missions on their respective landing sites',
'/Missions/Apollo'
)
openspace.bindShortcut(
'Hide Apollo Landing Labels',
'openspace.setPropertyValue("Scene.Apollo*Insignia.Renderable.Opacity", 0, 0.5)',
'Hide patches of the Apollo missions on their respective landing sites',
'/Missions/Apollo'
)
end)
asset.export('showInsignia', function (missinNumber, interpolationDuration)
openspace.setPropertyValue("Scene.Apollo" .. missionNumber .. "Insignia.Renderable.Opacity", 1, interpolationDuration)
end)
asset.export('hideInsignia', function (missinNumber, interpolationDuration)
openspace.setPropertyValue("Scene.Apollo" .. missionNumber .. "Insignia.Renderable.Opacity", 0, interpolationDuration)
end)
asset.export('showInsignias', function (interpolationDuration)
openspace.setPropertyValue("Scene.Apollo*Insignia.Renderable.Opacity", 1, interpolationDuration)
end)
asset.export('hideInsignias', function (interpolationDuration)
openspace.setPropertyValue("Scene.Apollo*Insignia.Renderable.Opacity", 0, interpolationDuration)
end)
assetHelper.registerSceneGraphNodesAndExport(asset, nodes)
@@ -0,0 +1,8 @@
local modelFolder = asset.syncedResource({
Name = "Apollo Lem Models",
Type = "HttpSynchronization",
Identifier = "apollo_lem_model",
Version = 3
})
asset.export('modelFolder', modelFolder)
@@ -20,7 +20,7 @@ local images = asset.syncedResource({
local models = asset.syncedResource({
Name = "Vesta Models",
Type = "HttpSynchronization",
Identifier = "vesta_comet",
Identifier = "vesta_model",
Version = 1
})
@@ -0,0 +1,981 @@
asset.require('spice/base')
local sunTransforms = asset.require('scene/solarsystem/sun/transforms')
local assetHelper = asset.require('util/asset_helper')
local models_chutes = asset.syncedResource({
Name = "Insight Models Chutes",
Type = "HttpSynchronization",
Identifier = "insight_models_chutes",
Version = 1
})
local models_cruise_arrays = asset.syncedResource({
Name = "Insight Models Cruise Arrays",
Type = "HttpSynchronization",
Identifier = "insight_models_cruise_arrays",
Version = 1
})
local models_cruise_cone = asset.syncedResource({
Name = "Insight Models Cruise Cone",
Type = "HttpSynchronization",
Identifier = "insight_models_cruise_cone",
Version = 1
})
local models_lander_lander_deck = asset.syncedResource({
Name = "Insight Models Lander Deck",
Type = "HttpSynchronization",
Identifier = "insight_models_lander_lander_deck",
Version = 1
})
local models_lander_legs_deploy = asset.syncedResource({
Name = "Insight Models Lander Legs Deploy",
Type = "HttpSynchronization",
Identifier = "insight_models_lander_legs_deploy",
Version = 1
})
local models_lander_legs_stow = asset.syncedResource({
Name = "Insight Models Lander Legs Stow",
Type = "HttpSynchronization",
Identifier = "insight_models_lander_legs_stow",
Version = 1
})
local models_lander_panels_deploy = asset.syncedResource({
Name = "Insight Models Lander Panels Deploy",
Type = "HttpSynchronization",
Identifier = "insight_models_lander_panels_deploy",
Version = 1
})
local models_lander_panels_stow = asset.syncedResource({
Name = "Insight Models Lander Panels Stow",
Type = "HttpSynchronization",
Identifier = "insight_models_lander_panels_stow",
Version = 1
})
local ikernels = asset.syncedResource({
Name = "Insight Kernels",
Type = "HttpSynchronization",
Identifier = "insight_kernels",
Version = 1
})
local iKernels = {
ikernels .. '/nsyt_spk_cruise_od063_v1_approach2surface_SC_Lander.tsc',
ikernels .. '/insight_v02.tfr',
ikernels .. '/mar085s.bsp',
ikernels .. '/nsyt_spk_cruise_POST_approach2surface_SC_Lander.bsp',
ikernels .. '/nsyt_spk_cruise_POST_approach2surface_SC_Lander.bck',
}
local RotationMatrix = {
-1, 0, 0,
0, 0, -1,
0, -1, 0
}
local LightSources = {
{
Type = "SceneGraphLightSource",
Identifier = "Sun",
Node = sunTransforms.SolarSystemBarycenter.Identifier,
Intensity = 1.0
},
{
Type = "SceneGraphLightSource",
Identifier = "Mars",
Node = "Mars",
Intensity = 1.0
},
{
Identifier = "Camera",
Type = "CameraLightSource",
Intensity = 0.5
}
}
--expected timeline
local entryTimeStart = "2018 NOV 26 19:39:03.68"; --(-00:08:07.32 less then pdf)
local parachuteDeployTime1 = "2018 NOV 26 19:42:41.68" -- entry + 218s
local parachuteDeployTime20 = "2018 NOV 26 19:42:42.18" -- entry + 218.5s
local parachuteDeployTime40 = "2018 NOV 26 19:42:42.68" -- entry + 219s
local heatShieldSeperationTime = "2018 NOV 26 19:42:56.68" -- entry + 233s
local legDeployTime = "2018 NOV 26 19:43:06.68" -- entry + 243s
local landerSeperationTime = "2018 NOV 26 19:44:51.68" -- entry + 348s
local touchdownTime = "2018 NOV 26 19:45:32.68" -- entry + 389s
local panelDeployTime = "2018 NOV 26 19:45:33.68" -- entry + 390s
local foreverTime = "2018 NOV 26 20:17:50.68" -- entry + 2327s
local kernelTouchdownTime = "2018 NOV 26 19:45:32.3"
local spiceRotationEndTime = "2018 NOV 26 19:51:39"
local InsightParent = {
Identifier = "InsightParent",
Parent = "MarsBarycenter",
Transform = {
Translation = {
Type = "SpiceTranslation",
Target = "INSIGHT",
Observer = "MARS",
Frame = "GALACTIC",
Kernels = iKernels
},
Rotation = {
Type = "SpiceRotation",
SourceFrame = "INSIGHT_LANDER_CRUISE",
DestinationFrame = "GALACTIC"
},
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = entryTimeStart,
End = spiceRotationEndTime
},
GUI = {
Hidden = true,
Name = "InsightParent",
Path = "/Solar System/Missions/Insight"
}
}
-- -1397 offset for MOLA
local Insight = {
Identifier = "Insight",
Parent = "InsightParent",
Transform = {
Rotation = {
Type = "StaticRotation",
Rotation = {0.0, 0.0, -3.1415}
}
},
GUI = {
Name = "Insight",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Entry_CapsuleA = {
Identifier = "Insight_Entry_CapsuleA",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_cruise_cone .. "/cruise_insight_doubleside2_newcapsule_diffuse.obj"
},
ColorTexture = models_cruise_cone .. "/insight_newcapsule_diffuse.jpg",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = entryTimeStart,
End = landerSeperationTime
},
GUI = {
Hidden = true,
Name = "Insight Entry CapsuleA",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Entry_Capsule_Ring = {
Identifier = "Insight_Entry_Capsule_Ring",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_cruise_cone .. "/insight_cruise_cone_ring_foil_gold.obj"
},
ColorTexture = models_cruise_cone .. "/foil_gold_ramp.png",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = entryTimeStart,
End = landerSeperationTime
},
GUI = {
Hidden = true,
Name = "Insight Entry Capsule Ring",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Entry_Capsule_Plugs = {
Identifier = "Insight_Entry_Capsule_Plugs",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_cruise_cone .. "/insight_cruise_cone_capsule_diffuse.obj"
},
ColorTexture = models_cruise_cone .. "/insight_capsule_diffuse.png",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = entryTimeStart,
End = landerSeperationTime
},
GUI = {
Hidden = true,
Name = "Insight Entry Capsule Plugs",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Entry_Heatshield = {
Identifier = "Insight_Entry_Heatshield",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_cruise_cone .. "/insight_cruise_heatshield_foil_gold.obj"
},
ColorTexture = models_cruise_cone .. "/foil_gold_ramp.png",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = entryTimeStart,
End = heatShieldSeperationTime
},
GUI = {
Hidden = true,
Name = "Insight Entry Heatshield",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Parachute_0 = {
Identifier = "Insight_Parachute_0",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_chutes .. "/insight_chute_frame01_diff1.obj"
},
ColorTexture = models_chutes .. "/chute_diff.png",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = parachuteDeployTime1,
End = parachuteDeployTime20
},
GUI = {
Hidden = true,
Name = "Insight Parachute0",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Parachute_Cords_0 = {
Identifier = "Insight_Parachute_Cords_0",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_chutes .. "/insight_chute_frame01_cords1.obj"
},
ColorTexture = models_chutes .. "/foil_gold_ramp.png",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = parachuteDeployTime1,
End = parachuteDeployTime20
},
GUI = {
Hidden = true,
Name = "Insight ParachuteC0",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Parachute_20 = {
Identifier = "Insight_Parachute_20",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_chutes .. "/insight_chute_frame20_diff1.obj"
},
ColorTexture = models_chutes .. "/chute_diff.png",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = parachuteDeployTime20,
End = parachuteDeployTime40
},
GUI = {
Hidden = true,
Name = "Insight Parachute20",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Parachute_Cords_20 = {
Identifier = "Insight_Parachute_Cords_20",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_chutes .. "/insight_chute_frame20_cords1.obj"
},
ColorTexture = models_chutes .. "/foil_gold_ramp.png",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = parachuteDeployTime20,
End = parachuteDeployTime40
},
GUI = {
Hidden = true,
Name = "Insight ParachuteC20",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Parachute_40 = {
Identifier = "Insight_Parachute_40",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_chutes .. "/chute_doubleside_frame40_diff.obj"
},
ColorTexture = models_chutes .. "/chute_diff.png",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = parachuteDeployTime40,
End = landerSeperationTime
},
GUI = {
Hidden = true,
Name = "Insight Parachute40",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Parachute_Cords_40 = {
Identifier = "Insight_Parachute_Cords_40",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_chutes .. "/insight_chute_frame40_cords1.obj"
},
ColorTexture = models_chutes .. "/foil_gold_ramp.png",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = parachuteDeployTime40,
End = landerSeperationTime
},
GUI = {
Hidden = true,
Name = "Insight ParachuteC40",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Lander_A001 = {
Identifier = "Insight_Lander_A001",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_lander_lander_deck .. "/insight_lander_deck_AO01.obj"
},
ColorTexture = models_lander_lander_deck .. "/InSIGHT_AO_01.jpg",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = entryTimeStart,
End = foreverTime
},
GUI = {
Hidden = true,
Name = "Insight Lander A001",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Lander_A002 = {
Identifier = "Insight_Lander_A002",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_lander_lander_deck .. "/insight_lander_deck_AO02.obj"
},
ColorTexture = models_lander_lander_deck .. "/InSIGHT_AO_02.jpg",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = entryTimeStart,
End = foreverTime
},
GUI = {
Hidden = true,
Name = "Insight Lander A002",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Lander_A003 = {
Identifier = "Insight_Lander_A003",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_lander_lander_deck .. "/insight_lander_deck_AO03.obj"
},
ColorTexture = models_lander_lander_deck .. "/InSIGHT_AO_03.jpg",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = entryTimeStart,
End = foreverTime
},
GUI = {
Hidden = true,
Name = "Insight Lander A003",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Lander_A004 = {
Identifier = "Insight_Lander_A004",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_lander_lander_deck .. "/insight_lander_deck_AO04.obj"
},
ColorTexture = models_lander_lander_deck .. "/InSIGHT_AO_04.jpg",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = entryTimeStart,
End = foreverTime
},
GUI = {
Hidden = true,
Name = "Insight Lander A004",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Lander_A005 = {
Identifier = "Insight_Lander_A005",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_lander_lander_deck .. "/insight_lander_deck_AO05.obj"
},
ColorTexture = models_lander_lander_deck .. "/InSIGHT_AO_05.jpg",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = entryTimeStart,
End = foreverTime
},
GUI = {
Hidden = true,
Name = "Insight Lander A005",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Lander_A006 = {
Identifier = "Insight_Lander_A006",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_lander_lander_deck .. "/insight_lander_deck_AO06.obj"
},
ColorTexture = models_lander_lander_deck .. "/InSIGHT_AO_06.jpg",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = entryTimeStart,
End = foreverTime
},
GUI = {
Hidden = true,
Name = "Insight Lander A006",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Lander_A007 = {
Identifier = "Insight_Lander_A007",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_lander_lander_deck .. "/insight_lander_deck_AO07.obj"
},
ColorTexture = models_lander_lander_deck .. "/InSIGHT_AO_07.jpg",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = entryTimeStart,
End = foreverTime
},
GUI = {
Hidden = true,
Name = "Insight Lander A007",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Lander_A008 = {
Identifier = "Insight_Lander_A008",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_lander_lander_deck .. "/insight_lander_deck_AO08.obj"
},
ColorTexture = models_lander_lander_deck .. "/InSIGHT_AO_08.jpg",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = entryTimeStart,
End = foreverTime
},
GUI = {
Hidden = true,
Name = "Insight Lander A008",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Lander_foil1 = {
Identifier = "Insight_Lander_foil1",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_lander_lander_deck .. "/insight_lander_deck_foil1.obj"
},
ColorTexture = models_lander_lander_deck .. "/foil_silver_ramp.jpg",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = entryTimeStart,
End = foreverTime
},
GUI = {
Hidden = true,
Name = "Insight Lander foil",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Lander_Tex01 = {
Identifier = "Insight_Lander_Tex01",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_lander_lander_deck .. "/insight_lander_deck_tex01.obj"
},
ColorTexture = models_lander_lander_deck .. "/InSIGHT_tex_01.jpg",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = entryTimeStart,
End = foreverTime
},
GUI = {
Hidden = true,
Name = "Insight Lander Tex01",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Lander_Tex02 = {
Identifier = "Insight_Lander_Tex02",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_lander_lander_deck .. "/insight_lander_deck_tex02.obj"
},
ColorTexture = models_lander_lander_deck .. "/InSIGHT_tex_02.jpg",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = entryTimeStart,
End = foreverTime
},
GUI = {
Hidden = true,
Name = "Insight Lander Tex02",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Legs_Stowed_tex = {
Identifier = "Insight_Legs_Stowed_tex",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_lander_legs_stow .. "/insight_lander_legs_stow_tex01.obj"
},
ColorTexture = models_lander_legs_stow .. "/InSIGHT_tex_01.jpg",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = heatShieldSeperationTime,
End = legDeployTime
},
GUI = {
Hidden = true,
Name = "Insight legs_stow_tex",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Legs_Stowed_AO06 = {
Identifier = "Insight_Legs_Stowed_AO",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_lander_legs_stow .. "/insight_lander_legs_stow_AO06.obj"
},
ColorTexture = models_lander_legs_stow .. "/InSIGHT_AO_06.jpg",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = heatShieldSeperationTime,
End = legDeployTime
},
GUI = {
Hidden = true,
Name = "Insight legs_stow_AO",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Legs_Deployed_tex = {
Identifier = "Insight_Legs_Deployed_tex",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_lander_legs_deploy .. "/insight_lander_legs_deploy_tex01.obj"
},
ColorTexture = models_lander_legs_deploy .. "/InSIGHT_tex_01.jpg",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = legDeployTime,
End = foreverTime
},
GUI = {
Hidden = true,
Name = "Insight legs_deploy_tex",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Legs_Deployed_AO06 = {
Identifier = "Insight_Legs_Deployed_AO",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_lander_legs_deploy .. "/insight_lander_legs_deploy_AO06.obj"
},
ColorTexture = models_lander_legs_deploy .. "/InSIGHT_AO_06.jpg",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = legDeployTime,
End = foreverTime
},
GUI = {
Hidden = true,
Name = "Insight legs_deploy_AO",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Panels_Stowed_tex = {
Identifier = "Insight_Panels_Stowed_tex",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_lander_panels_stow .. "/insight_lander_panels_stow_tex01.obj"
},
ColorTexture = models_lander_panels_stow .. "/InSIGHT_tex_01.jpg",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = entryTimeStart,
End = foreverTime
},
GUI = {
Hidden = true,
Name = "Insight panels_stow_tex",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Panels_Stowed_tex2 = {
Identifier = "Insight_Panels_Stowed_tex2",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_lander_panels_stow .. "/insight_lander_panels_stow_tex02.obj"
},
ColorTexture = models_lander_panels_stow .. "/InSIGHT_tex_02.jpg",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = entryTimeStart,
End = foreverTime
},
GUI = {
Hidden = true,
Name = "Insight panels_stow_tex2",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Panels_Stowed_AO01 = {
Identifier = "Insight_Panels_Stowed_AO",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_lander_panels_stow .. "/insight_lander_panels_stow_AO01.obj"
},
ColorTexture = models_lander_panels_stow .. "/InSIGHT_AO_01.jpg",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = entryTimeStart,
End = foreverTime
},
GUI = {
Hidden = true,
Name = "Insight panels_stow_AO",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Panels_Deployed_tex = {
Identifier = "Insight_panels_Deployed_tex",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_lander_panels_deploy .. "/insight_lander_panels_deploy_tex01.obj"
},
ColorTexture = models_lander_panels_deploy .. "/InSIGHT_tex_01.jpg",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = panelDeployTime,
End = foreverTime
},
GUI = {
Hidden = true,
Name = "Insight panels_deploy_tex",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Panels_Deployed_tex2 = {
Identifier = "Insight_panels_Deployed_tex2",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_lander_panels_deploy .. "/insight_lander_panels_deploy_tex02.obj"
},
ColorTexture = models_lander_panels_deploy .. "/InSIGHT_tex_02.jpg",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = panelDeployTime,
End = foreverTime
},
GUI = {
Hidden = true,
Name = "Insight panels_deploy_tex2",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Panels_Deployed_AO06 = {
Identifier = "Insight_panels_Deployed_AO",
Parent = Insight.Identifier,
Renderable = {
Type = "RenderableModel",
Geometry = {
Type = "MultiModelGeometry",
GeometryFile = models_lander_panels_deploy .. "/insight_lander_panels_deploy_AO01.obj"
},
ColorTexture = models_lander_panels_deploy .. "/InSIGHT_AO_01.jpg",
ModelTransform = RotationMatrix,
LightSources = LightSources,
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = panelDeployTime,
End = foreverTime
},
GUI = {
Hidden = true,
Name = "Insight panels_deploy_AO",
Path = "/Solar System/Missions/Insight"
}
}
local Insight_Trail = {
Identifier = "InsightTrail",
Parent = "Mars",
Renderable = {
Enabled = false,
Type = "RenderableTrailTrajectory",
Translation = {
Type = "SpiceTranslation",
Target = "-189",
Observer = "MARS",
Frame = "IAU_MARS",
Kernels = iKernels
},
Color = { 0.70, 0.50, 0.20 },
StartTime = "2018 NOV 26 19:30:13.390",
EndTime = "2018 NOV 26 19:51:40.890",
SampleInterval = 2
},
TimeFrame = {
Type = "TimeFrameInterval",
Start = entryTimeStart,
End = landerSeperationTime
},
GUI = {
Name = "Insight Trail",
Path = "/Solar System/Missions/Insight"
}
}
assetHelper.registerSceneGraphNodesAndExport(asset, {
InsightParent, Insight, Insight_Entry_CapsuleA, Insight_Entry_Capsule_Ring,
Insight_Entry_Capsule_Plugs, Insight_Entry_Heatshield, Insight_Parachute_0,
Insight_Parachute_Cords_0, Insight_Parachute_20, Insight_Parachute_Cords_20,
Insight_Parachute_40, Insight_Parachute_Cords_40, Insight_Lander_A001,
Insight_Lander_A002, Insight_Lander_A003, Insight_Lander_A004, Insight_Lander_A005,
Insight_Lander_A006, Insight_Lander_A007, Insight_Lander_A008, Insight_Lander_foil1,
Insight_Lander_Tex01, Insight_Lander_Tex02, Insight_Legs_Stowed_tex,
Insight_Legs_Stowed_AO06, Insight_Legs_Deployed_tex, Insight_Legs_Deployed_AO06,
Insight_Panels_Stowed_tex, Insight_Panels_Stowed_tex2, Insight_Panels_Stowed_AO01,
Insight_Panels_Deployed_tex, Insight_Panels_Deployed_tex2,
Insight_Panels_Deployed_AO06, Insight_Trail
})
Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

@@ -0,0 +1,64 @@
local assetHelper = asset.require('util/asset_helper')
local transforms = asset.require('scene/solarsystem/sun/transforms')
local ParkerSolarProbeTrail = {
Identifier = "ParkerSolarProbeTrail",
Parent = transforms.SolarSystemBarycenter.Identifier,
Renderable = {
Type = "RenderableTrailTrajectory",
Translation = {
Type = "HorizonsTranslation",
HorizonsTextFile = "C:/Users/skollber/Downloads/parker_20180812-20191231.dat"
},
Color = { 0.9, 0.9, 0.0 },
StartTime = "2018 AUG 12 12:00:00",
EndTime = "2025 Aug 31 09:11:00",
Period = 365.242,
SampleInterval = 1000,
TimeStampSubsampleFactor = 1
},
GUI = {
Name = "'Parker Solar Probe Trail",
Path = "/Solar System/Missions"
}
}
local PspPosition = {
Identifier = "PspPosition",
Parent = transforms.SolarSystemBarycenter.Identifier,
Transform = {
Translation = {
Type = "HorizonsTranslation",
HorizonsTextFile = "C:/Users/skollber/Downloads/parker_20180812-20191231.dat"
},
},
GUI = {
Name = "Parker Solar Probe",
Path = "/Solar System/Missions/Parker Solar Probe Position",
hidden = true
}
}
local PspMarker = {
Identifier = "PspMarker",
Parent = PspPosition.Identifier,
Renderable = {
Type = "RenderablePlaneImageLocal",
Enabled = false,
Size = 3.0E8,
Origin = "Center",
Billboard = true,
Texture = "C:/OpenSpace_dev/OpenSpace/data/assets/scene/solarsystem/missions/parkersolarprobe/marker.png",
BlendMode = "Additive"
},
GUI = {
Name = "Parker Solar Probe Marker",
Path = "/Solar System/Missions/Parker Solar Probe Marker"
}
}
assetHelper.registerSceneGraphNodesAndExport(asset, { ParkerSolarProbeTrail, PspPosition, PspMarker })
@@ -5,7 +5,7 @@ local modelFolder = asset.syncedResource({
Name = "Pioneer 10/11 Models",
Type = "HttpSynchronization",
Identifier = "pioneer_10_11_model",
Version = 1
Version = 2
})
local kernelsFolder = asset.syncedResource({
@@ -5,7 +5,7 @@ local modelFolder = asset.syncedResource({
Name = "Pioneer 10/11 Models",
Type = "HttpSynchronization",
Identifier = "pioneer_10_11_model",
Version = 1
Version = 2
})
local kernelsFolder = asset.syncedResource({
@@ -21,9 +21,11 @@ local images = asset.syncedResource({
Name = "Rosetta Images",
Type = "HttpSynchronization",
Identifier = "rosettaimages",
Version = 1
Version = 2
})
local imagesDestination = images .. "/images"
local Barycenter = {
Identifier = "67PBarycenter",
Parent = transforms.SolarSystemBarycenter.Identifier,
@@ -58,7 +60,7 @@ local Comet67P = {
},
ColorTexture = textures .. "/gray.jpg",
Projection = {
Sequence = { images },
Sequence = { imagesDestination },
SequenceType = "image-sequence",
Observer = "ROSETTA",
Target = "CHURYUMOV-GERASIMENKO",
@@ -133,6 +135,13 @@ local Trail67P = {
}
}
asset.onInitialize(function()
if not openspace.directoryExists(imagesDestination) then
openspace.printInfo("Extracting Rosetta images")
openspace.unzipFile(images .. "/images_v1_v2.zip", imagesDestination, true)
end
end)
assetHelper.registerSceneGraphNodesAndExport(asset, {
@@ -16,6 +16,7 @@ local Atmosphere = {
PlanetRadius = 6377.0,
PlanetAverageGroundReflectance = 0.1,
GroundRadianceEmittion = 0.6,
SunIntensity = 6.9,
Rayleigh = {
Coefficients = {
-- Wavelengths are given in 10^-9m
@@ -4,6 +4,7 @@ local sunAsset = asset.require('scene/solarsystem/sun/sun')
local earthAsset = asset.require('../earth')
asset.require('spice/base')
asset.request('./trail')
local labelsPath = asset.require('./moon_labels').LabelsPath
@@ -34,42 +35,62 @@ local Moon = {
Identifier = "WAC_Utah",
Name = "WAC [Utah]",
FilePath = mapServiceConfigs .. "/Utah/Wac.wms",
Enabled = true
Enabled = true,
Settings = { Multiplier = 2.0 }
},
{
Identifier = "WAC_Sweden",
Name = "WAC [Sweden]",
FilePath = mapServiceConfigs .. "/LiU/WAC.wms"
FilePath = mapServiceConfigs .. "/LiU/WAC.wms",
Settings = { Multiplier = 2.0 }
},
{
Identifier = "ClemUvvis_Utah",
Name = "Clem Uvvis [Utah]",
FilePath = mapServiceConfigs .. "/Utah/ClemUvvis.wms"
FilePath = mapServiceConfigs .. "/Utah/ClemUvvis.wms",
Settings = { Multiplier = 2.0 }
},
{
Identifier = "ClemUvvis_Sweden",
Name = "Clem Uvvis [Sweden]",
FilePath = mapServiceConfigs .. "/LiU/Clem_Uvvis.wms"
FilePath = mapServiceConfigs .. "/LiU/Clem_Uvvis.wms",
Settings = { Multiplier = 2.0 }
},
{
Identifier = "UvvisHybrid_Utah",
Name = "Uvvis Hybrid [Utah]",
FilePath = mapServiceConfigs .. "/Utah/UvvisHybrid.wms"
FilePath = mapServiceConfigs .. "/Utah/UvvisHybrid.wms",
Settings = {
Gamma = 0.75,
Multiplier = 1.5
}
},
{
Identifier = "UvvisHybrid_Sweden",
Name = "Uvvis Hybrid [Sweden]",
FilePath = mapServiceConfigs .. "/LiU/Uvvis_Hybrid.wms"
FilePath = mapServiceConfigs .. "/LiU/Uvvis_Hybrid.wms",
Settings = {
Gamma = 0.75,
Multiplier = 1.5
}
},
{
Identifier = "Kaguya_Utah",
Name = "Kaguya [Utah]",
FilePath = mapServiceConfigs .. "/Utah/Kaguya.wms"
FilePath = mapServiceConfigs .. "/Utah/Kaguya.wms",
Settings = {
Gamma = 1.12,
Multiplier = 2.7
}
},
{
Identifier = "Kaguya_Sweden",
Name = "Kaguya [Sweden]",
FilePath = mapServiceConfigs .. "/LiU/Kaguya.wms"
FilePath = mapServiceConfigs .. "/LiU/Kaguya.wms",
Settings = {
Gamma = 1.12,
Multiplier = 2.7
}
},
{
Identifier = "Lola_Clr_Shade_Utah",
@@ -120,6 +141,22 @@ local Moon = {
Name = earthAsset.Earth.Name,
Radius = 6.371E6
}
},
Labels = {
Enable = false,
FileName = labelsPath .. "/moon.labels",
LabelAlignmentOption = "Horizontally", -- or Circularly
LabelsFontSize = 14.0,
LabelsSize = 8.0,
LabelsMinSize = 1.0,
LabelsMaxSize = 1500.0,
ProximityEnabled = false,
LabelsFadeInEnabled = true,
FadeInStartingDistance = 500000.0,
FadeOutStartingDistance = 1000000.0,
LabelsForceDomeRendering = true,
LabelsDistanceEPS = 1350000.0,
LabelsColor = {1.0, 1.0, 0.0, 1.0}
}
},
GUI = {
@@ -0,0 +1,7 @@
local LabelsPath = asset.syncedResource({
Name = "Moon Labels",
Type = "HttpSynchronization",
Identifier = "moon_labels",
Version = 1
})
asset.export("LabelsPath", LabelsPath)
@@ -8,17 +8,4 @@ local group = {
}
local tle = shared.downloadTLEFile(asset, group.Url, group.Title)
local objectNames = {}
asset.onInitialize(function ()
objectNames = shared.addSatelliteGroupObjects(group, tle, false)
end)
asset.onDeinitialize(function ()
for _, n in ipairs(objectNames) do
openspace.removeSceneGraphNode(n)
end
end)
shared.registerSatelliteGroupObjects(asset, group, tle, true)
@@ -8,17 +8,4 @@ local group = {
}
local tle = shared.downloadTLEFile(asset, group.Url, group.Title)
local objectNames = {}
asset.onInitialize(function ()
objectNames = shared.addSatelliteGroupObjects(group, tle, false)
end)
asset.onDeinitialize(function ()
for _, n in ipairs(objectNames) do
openspace.removeSceneGraphNode(n)
end
end)
shared.registerSatelliteGroupObjects(asset, group, tle, true)
@@ -8,17 +8,4 @@ local group = {
}
local tle = shared.downloadTLEFile(asset, group.Url, group.Title)
local objectNames = {}
asset.onInitialize(function ()
objectNames = shared.addSatelliteGroupObjects(group, tle, false)
end)
asset.onDeinitialize(function ()
for _, n in ipairs(objectNames) do
openspace.removeSceneGraphNode(n)
end
end)
shared.registerSatelliteGroupObjects(asset, group, tle, true)
@@ -8,17 +8,4 @@ local group = {
}
local tle = shared.downloadTLEFile(asset, group.Url, group.Title)
local objectNames = {}
asset.onInitialize(function ()
objectNames = shared.addSatelliteGroupObjects(group, tle, false)
end)
asset.onDeinitialize(function ()
for _, n in ipairs(objectNames) do
openspace.removeSceneGraphNode(n)
end
end)
shared.registerSatelliteGroupObjects(asset, group, tle, true)
@@ -8,17 +8,4 @@ local group = {
}
local tle = shared.downloadTLEFile(asset, group.Url, group.Title)
local objectNames = {}
asset.onInitialize(function ()
objectNames = shared.addSatelliteGroupObjects(group, tle, false)
end)
asset.onDeinitialize(function ()
for _, n in ipairs(objectNames) do
openspace.removeSceneGraphNode(n)
end
end)
shared.registerSatelliteGroupObjects(asset, group, tle, true)
@@ -8,17 +8,4 @@ local group = {
}
local tle = shared.downloadTLEFile(asset, group.Url, group.Title)
local objectNames = {}
asset.onInitialize(function ()
objectNames = shared.addSatelliteGroupObjects(group, tle, false)
end)
asset.onDeinitialize(function ()
for _, n in ipairs(objectNames) do
openspace.removeSceneGraphNode(n)
end
end)
shared.registerSatelliteGroupObjects(asset, group, tle, true)
@@ -8,17 +8,4 @@ local group = {
}
local tle = shared.downloadTLEFile(asset, group.Url, group.Title)
local objectNames = {}
asset.onInitialize(function ()
objectNames = shared.addSatelliteGroupObjects(group, tle, false)
end)
asset.onDeinitialize(function ()
for _, n in ipairs(objectNames) do
openspace.removeSceneGraphNode(n)
end
end)
shared.registerSatelliteGroupObjects(asset, group, tle, true)
@@ -8,17 +8,4 @@ local group = {
}
local tle = shared.downloadTLEFile(asset, group.Url, group.Title)
local objectNames = {}
asset.onInitialize(function ()
objectNames = shared.addSatelliteGroupObjects(group, tle, false)
end)
asset.onDeinitialize(function ()
for _, n in ipairs(objectNames) do
openspace.removeSceneGraphNode(n)
end
end)
shared.registerSatelliteGroupObjects(asset, group, tle, true)
@@ -8,17 +8,4 @@ local group = {
}
local tle = shared.downloadTLEFile(asset, group.Url, group.Title)
local objectNames = {}
asset.onInitialize(function ()
objectNames = shared.addSatelliteGroupObjects(group, tle, false)
end)
asset.onDeinitialize(function ()
for _, n in ipairs(objectNames) do
openspace.removeSceneGraphNode(n)
end
end)
shared.registerSatelliteGroupObjects(asset, group, tle, true)
@@ -8,17 +8,4 @@ local group = {
}
local tle = shared.downloadTLEFile(asset, group.Url, group.Title)
local objectNames = {}
asset.onInitialize(function ()
objectNames = shared.addSatelliteGroupObjects(group, tle, false)
end)
asset.onDeinitialize(function ()
for _, n in ipairs(objectNames) do
openspace.removeSceneGraphNode(n)
end
end)
shared.registerSatelliteGroupObjects(asset, group, tle, true)
@@ -8,17 +8,4 @@ local group = {
}
local tle = shared.downloadTLEFile(asset, group.Url, group.Title)
local objectNames = {}
asset.onInitialize(function ()
objectNames = shared.addSatelliteGroupObjects(group, tle, false)
end)
asset.onDeinitialize(function ()
for _, n in ipairs(objectNames) do
openspace.removeSceneGraphNode(n)
end
end)
shared.registerSatelliteGroupObjects(asset, group, tle, true)
@@ -8,17 +8,4 @@ local group = {
}
local tle = shared.downloadTLEFile(asset, group.Url, group.Title)
local objectNames = {}
asset.onInitialize(function ()
objectNames = shared.addSatelliteGroupObjects(group, tle, false)
end)
asset.onDeinitialize(function ()
for _, n in ipairs(objectNames) do
openspace.removeSceneGraphNode(n)
end
end)
shared.registerSatelliteGroupObjects(asset, group, tle, true)
@@ -8,16 +8,4 @@ local group = {
}
local tle = shared.downloadTLEFile(asset, group.Url, group.Title)
local objectNames = {}
asset.onInitialize(function ()
objectNames = shared.addSatelliteGroupObjects(group, tle, false)
end)
asset.onDeinitialize(function ()
for _, n in ipairs(objectNames) do
openspace.removeSceneGraphNode(n)
end
end)
shared.registerSatelliteGroupObjects(asset, group, tle, true)
@@ -0,0 +1,15 @@
local assetHelper = asset.require('util/asset_helper')
local shared = asset.require('../debris_shared')
local group = {
Title = "Indian ASAT test Debris",
Url = "http://www.celestrak.com/NORAD/elements/2019-006.txt",
TrailColor = { 0.25, 0.35, 0.45 }
}
local tle = shared.downloadTLEFile(asset, group.Url, group.Title)
local objectNames = {}
shared.registerSatelliteGroupObjects(asset, group, tle, true)
@@ -1,5 +1,5 @@
local assetHelper = asset.require('util/asset_helper')
local shared = asset.require('../satellites_shared')
local shared = asset.require('../debris_shared')
local group = {
Title = "Breeze-M Breakup",
@@ -12,12 +12,4 @@ local tle = shared.downloadTLEFile(asset, group.Url, group.Title)
local objectNames = {}
asset.onInitialize(function ()
objectNames = shared.addSatelliteGroupObjects(group, tle, true)
end)
asset.onDeinitialize(function ()
for _, n in ipairs(objectNames) do
openspace.removeSceneGraphNode(n)
end
end)
shared.registerSatelliteGroupObjects(asset, group, tle, true)
@@ -1,10 +1,10 @@
local assetHelper = asset.require('util/asset_helper')
local shared = asset.require('../satellites_shared')
local shared = asset.require('../debris_shared')
local group = {
Title = "Fengyun Debris",
Url = "http://www.celestrak.com/NORAD/elements/1999-025.txt",
TrailColor = { 0.25, 0.35, 0.45 }
TrailColor = { 0.784, 1.0, 0.737 }
}
local tle = shared.downloadTLEFile(asset, group.Url, group.Title)
@@ -12,12 +12,4 @@ local tle = shared.downloadTLEFile(asset, group.Url, group.Title)
local objectNames = {}
asset.onInitialize(function ()
objectNames = shared.addSatelliteGroupObjects(group, tle, true)
end)
asset.onDeinitialize(function ()
for _, n in ipairs(objectNames) do
openspace.removeSceneGraphNode(n)
end
end)
shared.registerSatelliteGroupObjects(asset, group, tle, true)
@@ -1,10 +1,10 @@
local assetHelper = asset.require('util/asset_helper')
local shared = asset.require('../satellites_shared')
local shared = asset.require('../debris_shared')
local group = {
Title = "Iridium 33 Debris",
Url = "http://www.celestrak.com/NORAD/elements/iridium-33-debris.txt",
TrailColor = { 0.25, 0.35, 0.45 }
TrailColor = { 0.8, 0.0, 0.3 }
}
local tle = shared.downloadTLEFile(asset, group.Url, group.Title)
@@ -12,12 +12,4 @@ local tle = shared.downloadTLEFile(asset, group.Url, group.Title)
local objectNames = {}
asset.onInitialize(function ()
objectNames = shared.addSatelliteGroupObjects(group, tle, true)
end)
asset.onDeinitialize(function ()
for _, n in ipairs(objectNames) do
openspace.removeSceneGraphNode(n)
end
end)
shared.registerSatelliteGroupObjects(asset, group, tle, true)
@@ -1,10 +1,10 @@
local assetHelper = asset.require('util/asset_helper')
local shared = asset.require('../satellites_shared')
local shared = asset.require('../debris_shared')
local group = {
Title = "Kosmos 2251 Debris",
Url = "http://www.celestrak.com/NORAD/elements/cosmos-2251-debris.txt",
TrailColor = { 0.25, 0.35, 0.45 }
TrailColor = { 0.66, 0.8, 0.5 }
}
local tle = shared.downloadTLEFile(asset, group.Url, group.Title)
@@ -12,12 +12,4 @@ local tle = shared.downloadTLEFile(asset, group.Url, group.Title)
local objectNames = {}
asset.onInitialize(function ()
objectNames = shared.addSatelliteGroupObjects(group, tle, true)
end)
asset.onDeinitialize(function ()
for _, n in ipairs(objectNames) do
openspace.removeSceneGraphNode(n)
end
end)
shared.registerSatelliteGroupObjects(asset, group, tle, true)
@@ -0,0 +1,38 @@
-- This asset requires OpenSpace to be built with the OPENSPACE_MODULE_VOLUME enabled
-- Before using this asset,
-- the volume data itself needs to be generated,
-- using the task 'data/tasks/volume/debristasks/generate_debris_volume.task'
local assetHelper = asset.require('util/asset_helper')
local transforms = asset.require("scene/solarsystem/planets/earth/transforms")
local maxApogee = 2 * 10946320;
local volume = {
Identifier = "DebrisVolume - Cartesian",
Parent = transforms.EarthInertial.Identifier,
Renderable = {
Type = "RenderableTimeVaryingVolume",
SourceDirectory = asset.localResource("generatedCartesian"),
TransferFunction = asset.localResource("transferfunction.txt"),
StepSize = 0.01,
MinValue = 0,
MaxValue = 1,
GridType = "Cartesian",
SecondsBefore = 50*365*24*60*60,
SecondsAfter = 50*365*24*60*60
},
GUI = {
Path = "/Volumes"
},
Transform = {
Scale = {
Type = "StaticScale",
Scale = maxApogee -- do not multiply this. That will not show real representation.
}
}
}
local objects = { volume }
assetHelper.registerSceneGraphNodes(asset, objects)
@@ -0,0 +1,38 @@
-- This asset requires OpenSpace to be built with the OPENSPACE_MODULE_VOLUME enabled
-- Before using this asset,
-- the volume data itself needs to be generated,
-- using the task 'data/tasks/volume/debristasks/generate_debris_volume.task'
local assetHelper = asset.require('util/asset_helper')
local transforms = asset.require("scene/solarsystem/planets/earth/transforms")
local maxApogee = 10946320;
local volume = {
Identifier = "DebrisVolume - Spherical",
Parent = transforms.EarthInertial.Identifier,
Renderable = {
Type = "RenderableTimeVaryingVolume",
SourceDirectory = asset.localResource("generated"),
TransferFunction = asset.localResource("transferfunction.txt"),
StepSize = 0.01,
MinValue = 0,
MaxValue = 1,
GridType = "Spherical",
SecondsBefore = 50*365*24*60*60,
SecondsAfter = 50*365*24*60*60
},
GUI = {
Path = "/Volumes"
},
Transform = {
Scale = {
Type = "StaticScale",
Scale = maxApogee --do not multiply this. That will not show real representation.
}
}
}
local objects = { volume }
assetHelper.registerSceneGraphNodes(asset, objects)
@@ -0,0 +1,6 @@
width 1024
lower 0.0
upper 1.0
mappingkey 0.02 40 160 40 0
mappingkey 0.14 40 40 240 50
mappingkey 0.3 200 80 0 250
@@ -0,0 +1,74 @@
local transforms = asset.require('scene/solarsystem/planets/earth/transforms')
local assetHelper = asset.require('util/asset_helper')
local satImageFolder = asset.syncedResource({
Name = "Satellite Image Files",
Type = "HttpSynchronization",
Identifier = "tle_satellites_images",
Version = 1
})
function downloadTLEFile(sceneAsset, url, name)
local identifier = name
identifier = identifier:gsub(" ", "")
identifier = identifier:gsub("&", "")
identifier = identifier:gsub("-", "")
return sceneAsset.syncedResource({
Name = "Satellite TLE Data (" .. name .. ")",
Type = "UrlSynchronization",
Identifier = "satellite_tle_data_" .. identifier,
Url = url
})
end
local registerSatelliteGroupObjects = function(containingAsset, group, tleFolder, shouldAddDuplicates)
local filename = group.Url:match("([^/]+)$")
local filenameSansExt = filename:gsub(filename:match("(%.%w+)$"), "")
local path = tleFolder .. "/" .. filename
function numLinesInFile(filename)
local ctr = 0
for _ in io.lines(filename) do ctr = ctr + 1 end
return ctr
end
-- Check format of a set of 3 TLE file lines and return nonzero if there is a format error
function isValidTLEFileFormat(lineArr)
function isEmpty(s) return s == nil or s == '' end
if isEmpty(lineArr[1]) or isEmpty(lineArr[2]) or isEmpty(lineArr[3]) then
return false
end
if string.sub(lineArr[2], 1, 2) ~= "1 " then
return false
end
if string.sub(lineArr[3], 1, 2) ~= "2 " then
return false
end
return true
end
function debris(title, file, color)
return {
Identifier = title,
Parent = transforms.EarthInertial.Identifier,
Renderable = {
Type = "RenderableSatellites",
Path = file,
Segments = 160,
Color = color,
Fade = 0.5
},
GUI = {
Path = "/Solar System/Planets/Earth/Satellites"
}
}
end
local Debris = debris(filenameSansExt, path, group.TrailColor)
assetHelper.registerSceneGraphNodesAndExport(containingAsset, { Debris })
end
asset.export("downloadTLEFile", downloadTLEFile)
asset.export("registerSatelliteGroupObjects", registerSatelliteGroupObjects)
@@ -8,16 +8,4 @@ local group = {
}
local tle = shared.downloadTLEFile(asset, group.Url, group.Title)
local objectNames = {}
asset.onInitialize(function ()
objectNames = shared.addSatelliteGroupObjects(group, tle, true)
end)
asset.onDeinitialize(function ()
for _, n in ipairs(objectNames) do
openspace.removeSceneGraphNode(n)
end
end)
shared.registerSatelliteGroupObjects(asset, group, tle, true)
@@ -8,16 +8,4 @@ local group = {
}
local tle = shared.downloadTLEFile(asset, group.Url, group.Title)
local objectNames = {}
asset.onInitialize(function ()
objectNames = shared.addSatelliteGroupObjects(group, tle, false)
end)
asset.onDeinitialize(function ()
for _, n in ipairs(objectNames) do
openspace.removeSceneGraphNode(n)
end
end)
shared.registerSatelliteGroupObjects(asset, group, tle, true)
@@ -8,16 +8,4 @@ local group = {
}
local tle = shared.downloadTLEFile(asset, group.Url, group.Title)
local objectNames = {}
asset.onInitialize(function ()
objectNames = shared.addSatelliteGroupObjects(group, tle, false)
end)
asset.onDeinitialize(function ()
for _, n in ipairs(objectNames) do
openspace.removeSceneGraphNode(n)
end
end)
shared.registerSatelliteGroupObjects(asset, group, tle, true)
@@ -8,16 +8,4 @@ local group = {
}
local tle = shared.downloadTLEFile(asset, group.Url, group.Title)
local objectNames = {}
asset.onInitialize(function ()
objectNames = shared.addSatelliteGroupObjects(group, tle, false)
end)
asset.onDeinitialize(function ()
for _, n in ipairs(objectNames) do
openspace.removeSceneGraphNode(n)
end
end)
shared.registerSatelliteGroupObjects(asset, group, tle, true)

Some files were not shown because too many files have changed in this diff Show More