Merge remote-tracking branch 'origin/master' into feature/postprocessing-effects

This commit is contained in:
benpm
2025-10-04 06:33:47 -06:00
359 changed files with 4279 additions and 2653 deletions
+13 -1
View File
@@ -38,6 +38,18 @@ set(OPENSPACE_VERSION_MAJOR)
set(OPENSPACE_VERSION_MINOR)
set(OPENSPACE_VERSION_PATCH)
# Optionally disable vcpkg to prevent dependency conflicts
set(DISABLE_VCPKG OFF CACHE BOOL "Disable the use of vcpkg libs for Windows builds")
if (WIN32 AND DISABLE_VCPKG)
# This works for all subprojects due to MSBuild's hierarchical search
configure_file(
"${CMAKE_SOURCE_DIR}/support/cmake/Directory.Build.Props.template"
"${CMAKE_BINARY_DIR}/Directory.Build.props"
COPYONLY
)
message(STATUS "Vcpkg disabled through CMake option DISABLE_VCPKG")
endif ()
include(${PROJECT_SOURCE_DIR}/support/cmake/module_common.cmake)
include(${PROJECT_SOURCE_DIR}/ext/ghoul/support/cmake/message_macros.cmake)
@@ -217,7 +229,7 @@ if (OPENSPACE_MODULE_WEBBROWSER AND CEF_ROOT)
# find CEF to initialize it properly.
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${WEBBROWSER_MODULE_PATH}/cmake")
include(webbrowser_helpers)
elseif ()
else ()
message(WARNING "Web configured to be included, but no CEF_ROOT was found, please try configuring CMake again")
endif ()
-29
View File
@@ -359,35 +359,6 @@ Project (www.freetype.org). All rights reserved.
### Stackwalker
https://github.com/JochenKalmbach/StackWalker
Copyright (c) 2005 - 2019, Jochen Kalmbach
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
### stb_image
https://github.com/nothings/stb
+1 -1
View File
@@ -178,7 +178,7 @@ if (OPENSPACE_MODULE_WEBBROWSER AND CEF_ROOT)
set_cef_targets("${CEF_ROOT}" OpenSpace)
run_cef_platform_config("${CEF_ROOT}" "${CEF_TARGET}" "${WEBBROWSER_MODULE_PATH}")
elseif ()
else ()
message(WARNING "Web configured to be included, but no CEF_ROOT was found, please try configuring CMake again")
endif ()
@@ -55,6 +55,7 @@ private:
openspace::Profile::Action* selectedAction();
void actionAdd();
void actionRemove();
void actionDuplicate();
void actionSelected();
void actionSaved();
void clearActionFields() const;
@@ -88,6 +89,7 @@ private:
QTextEdit* script = nullptr;
QPushButton* addButton = nullptr;
QPushButton* removeButton = nullptr;
QPushButton* duplicateButton = nullptr;
QDialogButtonBox* saveButtons = nullptr;
} _actionWidgets;
@@ -27,6 +27,7 @@
#include <QDialog>
class QComboBox;
class QDialogButtonBox;
class QLabel;
class QListWidget;
@@ -65,7 +66,7 @@ private:
void createWidgets();
void listItemSelected();
void valueChanged(const QString& text);
void currentUnitChanged(int index);
void saveDeltaTimeValue();
void discardDeltaTimeValue();
void addDeltaTimeValue();
@@ -89,8 +90,9 @@ private:
QListWidget* _listWidget = nullptr;
QLabel* _adjustLabel = nullptr;
QLineEdit* _seconds = nullptr;
QLabel* _value = nullptr;
QLineEdit* _value = nullptr;
QComboBox* _valueUnit = nullptr;
int _previousValueUnit = 0;
QPushButton* _addButton = nullptr;
QPushButton* _removeButton = nullptr;
@@ -240,7 +240,9 @@ LauncherWindow::LauncherWindow(bool profileEnabled, const Configuration& globalC
{
// Set up the default value for the edit button
std::string selection = std::get<1>(_profileBox->currentSelection());
_editProfileButton->setEnabled(std::filesystem::exists(selection));
const bool exists = std::filesystem::exists(selection);
const bool isUser = selection.starts_with(_userProfilePath.string());
_editProfileButton->setEnabled(isUser && exists);
}
{
@@ -86,7 +86,7 @@ void ActionDialog::createWidgets() {
// | | Is Local | [] [choosescr] | Row 5
// | | Script | [ooooooooooooo] | Row 6
// *----------------------*---------------*-----------------*
// | [+] [-] | | <Save> <Cancel> | Row 7
// | [+] [-] [D] | | <Save> <Cancel> | Row 7
// *----------------------*---------------*-----------------*
// |========================================================| Row 8
// | Keybindings | Row 9
@@ -264,6 +264,15 @@ void ActionDialog::createActionWidgets(QGridLayout* layout) {
containerLayout->addWidget(_actionWidgets.removeButton);
layout->addWidget(container, 7, 0, Qt::AlignLeft);
_actionWidgets.duplicateButton = new QPushButton("Duplicate");
_actionWidgets.duplicateButton->setObjectName("duplicate-button");
_actionWidgets.duplicateButton->setToolTip("Duplicate the currently selected action");
_actionWidgets.duplicateButton->setEnabled(false);
QObject::connect(
_actionWidgets.duplicateButton, &QPushButton::clicked,
this, &ActionDialog::actionDuplicate
);
containerLayout->addWidget(_actionWidgets.duplicateButton);
// Save / Cancel buttons
_actionWidgets.saveButtons = new QDialogButtonBox;
@@ -481,7 +490,7 @@ void ActionDialog::actionRemove() {
_keybindingsData.erase(_keybindingsData.begin() + i);
delete _keybindingWidgets.list->takeItem(static_cast<int>(i));
i--;
//Save the updated keybindings to the profile
// Save the updated keybindings to the profile
if (_keybindings) {
*_keybindings = _keybindingsData;
}
@@ -514,6 +523,22 @@ void ActionDialog::actionRemove() {
ghoul_assert(false, "We shouldn't be able to get here");
}
void ActionDialog::actionDuplicate() {
const openspace::Profile::Action* action = selectedAction();
ghoul_assert(action, "An action must exist at this point");
ghoul_assert(
_actionWidgets.list->count() == static_cast<int>(_actionData.size()),
"Action list and data has desynced"
);
const openspace::Profile::Action act = *action;
_actionData.push_back(act);
_actionWidgets.list->addItem("");
_actionWidgets.list->setCurrentRow(_actionWidgets.list->count() - 1);
updateListItem(_actionWidgets.list->currentItem(), act);
}
void ActionDialog::actionSelected() {
const Profile::Action* action = selectedAction();
if (action) {
@@ -535,6 +560,7 @@ void ActionDialog::actionSelected() {
_actionWidgets.script->setEnabled(true);
_actionWidgets.addButton->setEnabled(false);
_actionWidgets.removeButton->setEnabled(true);
_actionWidgets.duplicateButton->setEnabled(true);
_actionWidgets.saveButtons->setEnabled(true);
if (_mainButton) {
_mainButton->setEnabled(false);
@@ -545,6 +571,7 @@ void ActionDialog::actionSelected() {
// No action selected
_actionWidgets.addButton->setEnabled(true);
_actionWidgets.removeButton->setEnabled(false);
_actionWidgets.duplicateButton->setEnabled(false);
_actionWidgets.saveButtons->setEnabled(false);
//Keybinding panel must also be in valid state to re-enable main start button
if (_mainButton && !_keybindingWidgets.saveButtons->isEnabled()) {
@@ -329,7 +329,7 @@ bool SearchProxyModel::acceptIndex(const QModelIndex& idx) const {
if (matchIt.hasNext()) {
return true;
}
for (int row = 0; row < idx.model()->rowCount(idx); ++row) {
for (int row = 0; row < idx.model()->rowCount(idx); row++) {
const bool accept = acceptIndex(idx.model()->index(row, 0, idx));
if (accept) {
return true;
@@ -120,7 +120,7 @@ bool AssetTreeItem::insertChildren(int position, int count, int columns) {
return false;
}
for (int row = 0; row < count; ++row) {
for (int row = 0; row < count; row++) {
std::vector<QVariant> data = std::vector<QVariant>(columns);
AssetTreeItem* item = new AssetTreeItem(std::move(data), this);
_childItems.insert(_childItems.begin() + position, item);
@@ -134,7 +134,7 @@ bool AssetTreeItem::removeChildren(int position, int count) {
return false;
}
for (int row = 0; row < count; ++row) {
for (int row = 0; row < count; row++) {
delete _childItems[position];
_childItems.erase(_childItems.begin() + position);
}
@@ -147,7 +147,7 @@ bool AssetTreeItem::insertColumns(int position, int columns) {
return false;
}
for (int column = 0; column < columns; ++column) {
for (int column = 0; column < columns; column++) {
_itemData.insert(_itemData.begin() + position, QVariant());
}
@@ -85,7 +85,8 @@ namespace {
const int levelChange = elem.level - level;
if (levelChange == 0) {
parent->insertChildren(++nChildInsert, 1, 3);
nChildInsert++;
parent->insertChildren(nChildInsert, 1, 3);
parent->child(nChildInsert)->setData(
0,
QString::fromStdString(elem.line)
@@ -27,6 +27,7 @@
#include "profile/line.h"
#include <openspace/scene/profile.h>
#include <ghoul/format.h>
#include <QComboBox>
#include <QDialogButtonBox>
#include <QDoubleValidator>
#include <QEvent>
@@ -89,7 +90,7 @@ DeltaTimesDialog::DeltaTimesDialog(QWidget* parent, std::vector<double>* deltaTi
setWindowTitle("Simulation Time Increments");
createWidgets();
for (size_t d = 0; d < _deltaTimesData.size(); ++d) {
for (size_t d = 0; d < _deltaTimesData.size(); d++) {
const std::string summary = createSummaryForDeltaTime(d, true);
_listWidget->addItem(new QListWidgetItem(QString::fromStdString(summary)));
}
@@ -134,14 +135,23 @@ void DeltaTimesDialog::createWidgets() {
{
QBoxLayout* box = new QHBoxLayout;
_seconds = new QLineEdit;
_seconds->setValidator(new QDoubleValidator);
connect(_seconds, &QLineEdit::textChanged, this, &DeltaTimesDialog::valueChanged);
_seconds->setAccessibleName("Set simulation time increment in seconds for key");
box->addWidget(_seconds);
_value = new QLabel;
_value = new QLineEdit;
_value->setValidator(new QDoubleValidator);
_value->setAccessibleName("Set simulation time increment in seconds for key");
box->addWidget(_value);
_valueUnit = new QComboBox;
_valueUnit->addItems({
"years/second", "months/second", "weeks/second", "days/second",
"hours/second", "minutes/second", "seconds/second"
});
_previousValueUnit = _valueUnit->count() - 1;
_valueUnit->setCurrentIndex(_valueUnit->count() - 1);
connect(
_valueUnit, QOverload<int>::of(&QComboBox::currentIndexChanged),
this, &DeltaTimesDialog::currentUnitChanged
);
box->addWidget(_valueUnit);
layout->addLayout(box);
}
@@ -216,10 +226,10 @@ void DeltaTimesDialog::listItemSelected() {
if (!_deltaTimesData.empty()) {
if (_deltaTimesData.at(index) == 0) {
_seconds->clear();
_value->clear();
}
else {
_seconds->setText(QString::number(_deltaTimesData.at(index)));
_value->setText(QString::number(_deltaTimesData.at(index)));
}
}
_editModeNewItem = true;
@@ -239,11 +249,15 @@ void DeltaTimesDialog::setLabelForKey(int index, bool editMode, std::string_view
)));
}
void DeltaTimesDialog::valueChanged(const QString& text) {
const double value = text.toDouble();
if (value != 0.0) {
_value->setText(QString::fromStdString(timeDescription(value)));
}
void DeltaTimesDialog::currentUnitChanged(int index) {
double value = _value->text().toDouble();
const uint64_t currentUnit = TimeIntervals[_previousValueUnit].secondsPerInterval;
const uint64_t newUnit = TimeIntervals[index].secondsPerInterval;
value = (value * currentUnit) / newUnit;
_value->setText(QString::number(value, 'g', 15));
_previousValueUnit = index;
}
bool DeltaTimesDialog::isLineEmpty(int index) {
@@ -280,7 +294,7 @@ void DeltaTimesDialog::addDeltaTimeValue() {
);
}
_listWidget->setCurrentRow(_listWidget->count() - 1);
_seconds->setFocus(Qt::OtherFocusReason);
_value->setFocus(Qt::OtherFocusReason);
_editModeNewItem = true;
}
@@ -288,7 +302,7 @@ void DeltaTimesDialog::saveDeltaTimeValue() {
QListWidgetItem* item = _listWidget->currentItem();
if (item && !_deltaTimesData.empty()) {
const int index = _listWidget->row(item);
_deltaTimesData.at(index) = _seconds->text().toDouble();
_deltaTimesData.at(index) = _value->text().toDouble();
const std::string summary = createSummaryForDeltaTime(index, true);
_listWidget->item(index)->setText(QString::fromStdString(summary));
transitionEditMode(index, false);
@@ -331,16 +345,15 @@ void DeltaTimesDialog::transitionEditMode(int index, bool state) {
_saveButton->setEnabled(state);
_discardButton->setEnabled(state);
_adjustLabel->setEnabled(state);
_seconds->setEnabled(state);
_value->setEnabled(state);
if (state) {
_seconds->setFocus(Qt::OtherFocusReason);
_value->setFocus(Qt::OtherFocusReason);
setLabelForKey(index, true, "black");
}
else {
_addButton->setFocus(Qt::OtherFocusReason);
setLabelForKey(index, false, "light gray");
_value->clear();
}
}
+13 -1
View File
@@ -1178,6 +1178,18 @@ int main(int argc, char* argv[]) {
_controlfp(_controlfp(0, 0) & ~(_EM_ZERODIVIDE | _EM_OVERFLOW), _MCW_EM);
#endif // OPENSPACE_BREAK_ON_FLOATING_POINT_EXCEPTION
#ifdef WIN32
// In order to be able to use PDB files to resolve stack traces on _user_ machines,
// we need to explicitly tell the operating system where to find the PDB files. We
// place them right next to the .exe file and this seems to be the only reliable way
// to do it.
// Using SymInitialize and SymSetSearchPath from dbghelp.h didn't work
// https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/symbol-path
std::string exeFolder = std::filesystem::path(argv[0]).parent_path().string();
_putenv_s("_NT_SYMBOL_PATH", exeFolder.c_str());
#endif //WIN32
std::setlocale(LC_ALL, "C");
#ifdef WIN32
@@ -1324,7 +1336,7 @@ int main(int argc, char* argv[]) {
LINFO(std::format("Configuration Path '{}'", configurationFilePath));
// Register the base path as the directory where the configuration file lives
std::filesystem::path base = configurationFilePath.parent_path();
std::filesystem::path base = findConfiguration().parent_path();
FileSys.registerPathToken("${BASE}", std::move(base));
// The previous incarnation of this was initializing GLFW to get the primary
@@ -26,8 +26,8 @@ local ToggleTrails = {
Identifier = "os.planetsmoons.ToggleTrails",
Name = "Toggle planet and moon trails",
Command = [[
openspace.toggleFade("{planetTrail_solarSystem}.Renderable.Fade")
openspace.toggleFade("{moonTrail_solarSystem}.Renderable.Fade")
openspace.toggleFade("{planetTrail_solarSystem}.Renderable")
openspace.toggleFade("{moonTrail_solarSystem}.Renderable")
]],
Documentation = "Toggle fade for planet and moon trails in the Scene",
GuiPath = "/Trails",
@@ -1,6 +1,6 @@
-- No Decorations
-- This example adds a new DashboardItem that shows the current in-game simulation date
-- without any additional text surrounding the current date
-- without any additional text surrounding the current date.
local Item = {
Identifier = "DashboardItemDate_Example_NoDecoration",
@@ -1,88 +0,0 @@
local sun = asset.require("scene/solarsystem/sun/transforms")
local earth = asset.require("scene/solarsystem/planets/earth/earth")
local models = asset.resource({
Name = "New Horizons Model",
Type = "HttpSynchronization",
Identifier = "newhorizons_model",
Version = 2
})
local ExampleFixedHeight = {
Identifier = "ExampleFixedHeight",
Parent = earth.Earth.Identifier,
Transform = {
Translation = {
Type = "GlobeTranslation",
Globe = earth.Earth.Identifier,
Latitude = 40.7128,
Longitude = -74.006,
Altitude = 100000.0
}
},
Renderable = {
Type = "RenderableModel",
GeometryFile = models .. "NewHorizonsCleanModel.obj",
LightSources = {
sun.LightSource
}
},
GUI = {
Name = "GlobeTranslation - Fixed Height",
Path = "/Examples"
}
}
local ExampleAdaptiveHeight = {
Identifier = "ExampleAdaptiveHeight",
Parent = earth.Earth.Identifier,
Transform = {
Translation = {
Type = "GlobeTranslation",
Globe = earth.Earth.Identifier,
Latitude = 40.7128,
Longitude = -74.006,
UseHeightmap = true
}
},
Renderable = {
Type = "RenderableModel",
GeometryFile = models .. "NewHorizonsCleanModel.obj",
LightSources = {
sun.LightSource
}
},
GUI = {
Name = "GlobeTranslation - Adaptive Height",
Path = "/Examples"
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(ExampleFixedHeight)
openspace.addSceneGraphNode(ExampleAdaptiveHeight)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(ExampleAdaptiveHeight)
openspace.removeSceneGraphNode(ExampleFixedHeight)
end)
asset.export(ExampleFixedHeight)
asset.export(ExampleAdaptiveHeight)
asset.meta = {
Name = "GlobeTranslation Example",
Description = [[An example that demonstrates how to place an object on a planet surface
using the "GlobeTranslation" transform. For the altitude, a fixed height can be used,
or the height can be queried from the height map]],
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}
-70
View File
@@ -1,70 +0,0 @@
local AU = 149597870700 -- 1 AU
local Circle = {
Identifier = "ExampleCircle",
Transform = {
Scale = {
Type = "StaticScale",
Scale = AU
}
},
Renderable = {
Type = "RenderableRadialGrid",
Color = { 0.6, 0.6, 0.8 },
LineWidth = 3.0,
GridSegments = { 1, 1 },
CircleSegments = 64,
Radii = { 0.0, 1.0 }
},
GUI = {
Name = "Example Circle",
Path = "/Examples/Primitives"
}
}
local Ellipse = {
Identifier = "ExampleEllipse",
Transform = {
Scale = {
Type = "NonUniformStaticScale",
Scale = { 1.5, 1.0, 1.0 }
}
},
Renderable = {
Type = "RenderableRadialGrid",
Color = { 0.6, 0.8, 0.6 },
LineWidth = 3.0,
GridSegments = { 1, 1 },
CircleSegments = 64,
Radii = { 0.0, AU }
},
GUI = {
Name = "Example Ellipse",
Path = "/Examples/Primitives"
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Circle)
openspace.addSceneGraphNode(Ellipse)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Ellipse)
openspace.removeSceneGraphNode(Circle)
end)
asset.export(Circle)
asset.export(Ellipse)
asset.meta = {
Name = "Primitives Example",
Description = [[Examples of different simple rendered primitives, such as circles
and ellipses.]],
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}
@@ -1,6 +1,6 @@
local transforms = asset.require("scene/solarsystem/sun/transforms")
-- With Custom Shader
-- This example creates a rendering of the volumetric milky way galaxy, but using a custom
-- shader to highlight the arms of the galaxy.
local data = asset.resource({
Name = "Milkyway Volume Data",
@@ -12,15 +12,13 @@ local data = asset.resource({
local KiloParsec = 3.086E19
local MilkyWayVolume = {
Identifier = "MilkyWayVolume_CustomShader",
Parent = transforms.SolarSystemBarycenter.Identifier,
local Node = {
Identifier = "RenderableGalaxy_Example_CustomShader",
Transform = {
Translation = {
Type = "StaticTranslation",
-- The center of the Milky Way is approximately 8 kiloparsec from the Sun.
-- The x-axis of galactic coordinates points from the sun towards the center
-- of the galaxy.
-- The x-axis of galactic coordinates points from the Sun towards the galaxy center
Position = { 8 * KiloParsec, 0, 0 }
}
},
@@ -46,30 +44,15 @@ local MilkyWayVolume = {
}
},
GUI = {
Path = "/Milky Way",
Name = "Milky Way Volume (Custom Shader)",
Description = "Volumetric rendering of Milky Way galaxy based on simulation from NAOJ"
Name = "RenderableGalaxy - Custom Shader",
Path = "/Examples"
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(MilkyWayVolume)
openspace.addSceneGraphNode(Node)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(MilkyWayVolume)
openspace.removeSceneGraphNode(Node)
end)
asset.export(MilkyWayVolume)
asset.meta = {
Name = "Milky Way Volume",
Description = [[Volumetric rendering of Milky Way galaxy based on simulations from "
"NAOJ with a custom shader]],
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT License"
}
@@ -25,6 +25,8 @@ local Node = {
ArrowHeadSize = 0.25,
-- Set the arrow head width. A value of 1 makes it as wide as the body of the arrow
ArrowHeadWidthFactor = 1.0,
-- How long should the arrow be (meters)
Length = 5 * 6371000.0,
-- How wide should the arrow be (meters)
Width = 1000000.0
},
@@ -4,8 +4,6 @@
-- the plane does not become larger or smaller than a given max height and min height, in
-- meters.
local earth = asset.require("scene/solarsystem/planets/earth/earth")
local Node = {
Identifier = "RenderablePlaneImageLocal_Example_ScaleByDistance",
Renderable = {
@@ -49,8 +49,8 @@ local Node_Invert = {
}
},
GUI = {
Name = "Fading (Inverted)",
Path = "/Examples/RenderablePointCloud/Advanced",
Name = "RenderablePointCloud - Fading (Inverted)",
Path = "/Examples/Advanced",
Description = [[Example of a point cloud with inverted distance-based fading
(the points are visible when the camera is close to the origin, and invisible
when further away)]]
@@ -1,16 +1,16 @@
-- Ring
-- The `RenderableRadialGrid` can also be used to create a simple ring. This is done by
-- Circle
-- The `RenderableRadialGrid` can also be used to create a simple circle. This is done by
-- setting the number of segments in each direction to 1 and make sure the inner radius
-- is zero (which is the default).
local Node = {
Identifier = "RenderableRadialGrid_Example_Ring",
Identifier = "RenderableRadialGrid_Example_Circle",
Renderable = {
Type = "RenderableRadialGrid",
GridSegments = { 1, 1 }
},
GUI = {
Name = "RenderableRadialGrid - Ring",
Name = "RenderableRadialGrid - Circle",
Path = "/Examples"
}
}
@@ -0,0 +1,32 @@
-- Ellipse
-- The `RenderableRadialGrid` can also be used to create a simple ellipse. This is done by
-- setting the number of segments in each direction to 1 and make sure the inner radius
-- is zero (which is the default). By then applying a
-- [NonUniformStaticScale](#base_transform_scale_nonuniformstatic) to the scene graph node
-- this circle can be deformed into an ellipse.
local Node = {
Identifier = "RenderableRadialGrid_Example_Ellipse",
Transform = {
Scale = {
Type = "NonUniformStaticScale",
Scale = { 1.5, 1.0, 1.0 }
}
},
Renderable = {
Type = "RenderableRadialGrid",
GridSegments = { 1, 1 }
},
GUI = {
Name = "RenderableRadialGrid - Ellipse",
Path = "/Examples"
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Node)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Node)
end)
@@ -0,0 +1,25 @@
-- Basic
-- A simple example of a toy volume rendered using direct volume rendering.
local Node = {
Identifier = "RenderableToyVolume_Example",
Renderable = {
Type = "RenderableToyVolume",
Size = { 5, 5, 5 },
ScalingExponent = 11,
StepSize = 0.01,
Color = { 1.0, 0.0, 0.0 }
},
GUI = {
Name = "RenderableToyVolume - Basic",
Path = "/Examples"
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Node)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Node)
end)
@@ -1,7 +1,7 @@
-- Basic
-- This asset creates a rotation that places a coordinate axes on the surface of a
-- planetary body. The rotation causes the coordinate axes to remain fixed to the surface
-- of the globe.
-- This asset creates a rotation that places coordinate axes on the surface of a planetary
-- body. The rotation causes the coordinate axes to remain fixed to the surface of the
-- globe.
--
-- In order for this feature to work properly, the coordinate axes need to be located at
-- the same place as well, so this example also needs a `GlobeTranslation` applied.
@@ -1,8 +1,8 @@
-- Angle
-- This asset creates a rotation that places a coordinate axes on the surface of a
-- planetary body. The rotation causes the coordinate axes to remain fixed to the surface
-- of the globe. Additionally, the coordinate axes are rotated around the up-axis by a
-- fixed amount.
-- This asset creates a rotation that places coordinate axes on the surface of a planetary
-- body. The rotation causes the coordinate axes to remain fixed to the surface of the
-- globe. Additionally, the coordinate axes are rotated around the up-axis by a fixed
-- amount.
--
-- In order for this feature to work properly, the coordinate axes need to be located at
-- the same place as well, so this example also needs a `GlobeTranslation` applied.
@@ -1,9 +1,9 @@
-- UseCamera
-- This asset creates a rotation that places a coordinate axes on the surface of a
-- planetary body. The rotation causes the coordinate axes to remain fixed to the surface
-- of the globe. In this example, the rotation of the object will be updated based on the
-- location of the camera. When loading this example, make sure to focus the camera on
-- the Globe object for the follow-function to work.
-- This asset creates a rotation that places coordinate axes on the surface of a planetary
-- body. The rotation causes the coordinate axes to remain fixed to the surface of the
-- globe. In this example, the rotation of the object will be updated based on the
-- location of the camera. When loading this example, make sure to focus the camera on the
-- Globe object for the follow-function to work.
--
-- In order for this feature to work properly, the coordinate axes need to be located at
-- the same place as well, so this example also needs a `GlobeTranslation` applied, which
@@ -1,43 +0,0 @@
local Dashboard = {
Identifier = "ScreenSpaceTime",
Name = "Time",
Type = "ScreenSpaceDashboard",
FaceCamera = false,
Scale = 3.0,
Items = {
{
Type = "DashboardItemDate",
Identifier = "Date",
GuiName = "Date",
FontSize = 72,
FormatString = "{}",
TimeFormat = "YYYY MON DD HR:MN:SC.### ::RND"
}
}
}
asset.onInitialize(function()
openspace.addScreenSpaceRenderable(Dashboard)
openspace.setPropertyValueSingle("ScreenSpace.ScreenSpaceTime.Size", {0.000000,0.000000,640.000000,320.000000})
end)
asset.onDeinitialize(function()
openspace.removeScreenSpaceRenderable(Dashboard)
end)
asset.export(Dashboard)
asset.meta = {
Name = "ScreenSpace - Date",
Description = [[
This asset provides a Date dashboard item that is shown on a screen space object.
This can be place on a dome surface to show the current time to the audience.
]],
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}
@@ -1,61 +0,0 @@
local earth = asset.require("scene/solarsystem/planets/earth/earth")
local Dashboard = {
Identifier = "ScreenSpaceDistanceToEarth",
Name = "Distance to Earth",
Type = "ScreenSpaceDashboard",
FaceCamera = false,
Scale = 3.0,
UseRadiusAzimuthElevation = true,
RadiusAzimuthElevation = { 2.0, -0.2, -0.2 },
Items = {
{
Type = "DashboardItemDistance",
Identifier = "EarthToCameraDistance",
GuiName = "Distance to Earth",
FontSize = 40,
SourceType = "Camera",
DestinationType = "Node",
DestinationNodeIdentifier = earth.Earth.Identifier,
-- Specify to use a specific unit, by disabling the automatic simplification of
-- unit and instead use light-years
Simplification = false,
RequestedUnit = "lightyear",
-- If we don't want to use the default format of the text, we can specify our own
-- format. Here we've decided to not include the name of the source object (index 0),
-- which would be "Camera". We just include the name of the destination node (Earth,
-- index 1), the distance (index 2) as a floating point number (f), and then the
-- name for the unit (index 3)
FormatString = "Distance to {1}: {2:f} {3}"
}
}
}
asset.onInitialize(function()
openspace.addScreenSpaceRenderable(Dashboard)
openspace.setPropertyValueSingle(
"ScreenSpace.ScreenSpaceDistanceToEarth.Size",
{0.0, 0.0, 640.0, 320.0}
)
end)
asset.onDeinitialize(function()
openspace.removeScreenSpaceRenderable(Dashboard)
end)
asset.export(Dashboard)
asset.meta = {
Name = "ScreenSpace - Distance to Earth",
Description = [[
This asset provides a screenspace dashboard item that shows the distance from the
camera to Earth, in light-years. This can be placed on a dome surface to show the
current distance to the audience.
]],
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}
@@ -1,7 +1,7 @@
-- Basic
-- This example shows how to load and show a webpage in the rendering, in screen space.
local Object = {
local Item = {
Type = "ScreenSpaceBrowser",
Identifier = "ScreenSpaceBrowser_Example",
Url = "https://www.openspaceproject.com/",
@@ -9,9 +9,9 @@ local Object = {
}
asset.onInitialize(function()
openspace.addScreenSpaceRenderable(Object)
openspace.addScreenSpaceRenderable(Item)
end)
asset.onDeinitialize(function()
openspace.removeScreenSpaceRenderable(Object)
openspace.removeScreenSpaceRenderable(Item)
end)
@@ -0,0 +1,23 @@
-- Basic
-- This example shows how to display dashboard items in a screen space. In this specific
-- example it is show the date in the simulation, but any #DashboardItem is supported.
local Item = {
Type = "ScreenSpaceDashboard",
Identifier = "ScreenSpaceDashboard_Example",
Name = "ScreenSpaceDashboard Example - Basic",
Items = {
{
Identifier = "ScreenSpaceDashboard_Example_Date",
Type = "DashboardItemDate"
}
}
}
asset.onInitialize(function()
openspace.addScreenSpaceRenderable(Item)
end)
asset.onDeinitialize(function()
openspace.removeScreenSpaceRenderable(Item)
end)
@@ -0,0 +1,16 @@
-- Basic
-- This example creates a screen space renderable that shows the current simulation time.
local Item = {
Type = "ScreenSpaceDate",
Identifier = "ScreenSpaceDate_Example",
Name = "ScreenSpace Date Example - Basic"
}
asset.onInitialize(function()
openspace.addScreenSpaceRenderable(Item)
end)
asset.onDeinitialize(function()
openspace.removeScreenSpaceRenderable(Item)
end)
@@ -0,0 +1,18 @@
-- Day of Year
-- This example creates a screen space renderable that shows the current simulation time
-- with the current year and the number of days that have passed in the year.
local Item = {
Type = "ScreenSpaceDate",
Identifier = "ScreenSpaceDate_Example_DayOfYear",
Name = "ScreenSpace Date Example - Day of Year",
TimeFormat = "YYYY DOY"
}
asset.onInitialize(function()
openspace.addScreenSpaceRenderable(Item)
end)
asset.onDeinitialize(function()
openspace.removeScreenSpaceRenderable(Item)
end)
@@ -0,0 +1,19 @@
-- Font
-- This example creates a screen space renderable that shows the current simulation time
-- with a non-standard font. This is using one of the fonts that is loaded by default in the
-- openspace.cfg file.
local Item = {
Type = "ScreenSpaceDate",
Identifier = "ScreenSpaceDate_Example_Font",
Name = "ScreenSpace Date Example - Font",
FontName = "Light"
}
asset.onInitialize(function()
openspace.addScreenSpaceRenderable(Item)
end)
asset.onDeinitialize(function()
openspace.removeScreenSpaceRenderable(Item)
end)
@@ -0,0 +1,21 @@
-- Font Size
-- This example creates a screen space renderable that shows the current simulation time
-- with a larger font. The FontSize parameter is increased to improve the fidelity of the
-- text being rendered. The Scale parameter will make the text show up larger on the
-- screen.
local Item = {
Type = "ScreenSpaceDate",
Identifier = "ScreenSpaceDate_Example_FontSize",
Name = "ScreenSpace Date Example - Font Size",
Scale = 0.5,
FontSize = 72
}
asset.onInitialize(function()
openspace.addScreenSpaceRenderable(Item)
end)
asset.onDeinitialize(function()
openspace.removeScreenSpaceRenderable(Item)
end)
@@ -0,0 +1,18 @@
-- No Decorations
-- This example creates a screen space renderable that shows the current simulation time
-- without any additional text surrounding the current date.
local Item = {
Type = "ScreenSpaceDate",
Identifier = "ScreenSpaceDate_Example_NoDecoration",
Name = "ScreenSpace Date Example - No Decoration",
FormatString = "{}"
}
asset.onInitialize(function()
openspace.addScreenSpaceRenderable(Item)
end)
asset.onDeinitialize(function()
openspace.removeScreenSpaceRenderable(Item)
end)
@@ -0,0 +1,18 @@
-- Timezone
-- This example creates a screen space renderable that shows the current simulation time
-- with a timezone of UTC-7 (=PDT)
local Item = {
Type = "ScreenSpaceDate",
Identifier = "ScreenSpaceDate_Example_Timezone",
Name = "ScreenSpace Date Example - Timezone",
TimeFormat = "YYYY MON DD HR:MN:SC.### PDT ::UTC-7"
}
asset.onInitialize(function()
openspace.addScreenSpaceRenderable(Item)
end)
asset.onDeinitialize(function()
openspace.removeScreenSpaceRenderable(Item)
end)
@@ -0,0 +1,18 @@
-- Year Month Day
-- This example creates a screen space renderable that shows the current simulation time
-- with a resolution of days.
local Item = {
Type = "ScreenSpaceDate",
Identifier = "ScreenSpaceDate_Example_YearMonthDay",
Name = "ScreenSpace Date Example - Year/Month/Day",
TimeFormat = "YYYY MON DD"
}
asset.onInitialize(function()
openspace.addScreenSpaceRenderable(Item)
end)
asset.onDeinitialize(function()
openspace.removeScreenSpaceRenderable(Item)
end)
@@ -4,7 +4,7 @@
--
-- The texture that is displayed can be changed during runtime. Here it is just set to 1.
local Object = {
local Item = {
Identifier = "ScreenSpaceDebugPlane_Example",
Type = "ScreenSpaceDebugPlane",
Texture = 1,
@@ -12,9 +12,9 @@ local Object = {
}
asset.onInitialize(function()
openspace.addScreenSpaceRenderable(Object)
openspace.addScreenSpaceRenderable(Item)
end)
asset.onDeinitialize(function()
openspace.removeScreenSpaceRenderable(Object)
openspace.removeScreenSpaceRenderable(Item)
end)
@@ -2,7 +2,7 @@
-- Create a screenspace image plane that shows the content of a local image file on disk.
-- In this case we use a test image from the OpenSpace/data folder.
local Object = {
local Item = {
Type = "ScreenSpaceImageLocal",
Identifier = "ScreenSpaceImageLocal_Example",
TexturePath = openspace.absPath("${DATA}/test3.jpg"),
@@ -10,9 +10,9 @@ local Object = {
}
asset.onInitialize(function()
openspace.addScreenSpaceRenderable(Object)
openspace.addScreenSpaceRenderable(Item)
end)
asset.onDeinitialize(function()
openspace.removeScreenSpaceRenderable(Object)
openspace.removeScreenSpaceRenderable(Item)
end)
@@ -1,7 +1,7 @@
-- Basic
-- Create a screenspace image plane that shows the content of an image from a web URL.
local Object = {
local Item = {
Type = "ScreenSpaceImageOnline",
Identifier = "ScreenSpaceImageOnline_Example",
URL = "https://data.openspaceproject.com/moon_mars/apollo8/earthrise.jpg",
@@ -9,9 +9,9 @@ local Object = {
}
asset.onInitialize(function()
openspace.addScreenSpaceRenderable(Object)
openspace.addScreenSpaceRenderable(Item)
end)
asset.onDeinitialize(function()
openspace.removeScreenSpaceRenderable(Object)
openspace.removeScreenSpaceRenderable(Item)
end)
@@ -2,12 +2,12 @@
-- Creates a screenspace image plane with controls to for a blackout shape. Can be used
-- when using a secondary projector to project content on a dome surface.
local inset = {
local Item = {
Identifier = "ScreenSpaceInsetBlackout_Example",
Type = "ScreenSpaceInsetBlackout",
Name = "ScreenSpaceInsetBlackout Example - Basic",
Blackoutshape = {
-- Must always contain four corners in the following order:
-- Must always contain four corners in the following order:
-- top-left, top-right, bottom-right, bottom-left
Corners = { {0.0, 1.0}, {1.0, 1.0}, {1.0, 0.0}, {0.0, 0.0} }
},
@@ -15,9 +15,9 @@ local inset = {
}
asset.onInitialize(function()
openspace.addScreenSpaceRenderable(inset)
openspace.addScreenSpaceRenderable(Item)
end)
asset.onDeinitialize(function()
openspace.removeScreenSpaceRenderable(inset)
openspace.removeScreenSpaceRenderable(Item)
end)
@@ -9,7 +9,7 @@ local texturePath = asset.resource({
Version = 1
})
local inset = {
local Item = {
Identifier = "ScreenSpaceInsetBlackout_Example_Calibration_Pattern",
Type = "ScreenSpaceInsetBlackout",
Name = "ScreenSpaceInsetBlackout Example - Calibration Pattern",
@@ -24,9 +24,9 @@ local inset = {
}
asset.onInitialize(function()
openspace.addScreenSpaceRenderable(inset)
openspace.addScreenSpaceRenderable(Item)
end)
asset.onDeinitialize(function()
openspace.removeScreenSpaceRenderable(inset)
openspace.removeScreenSpaceRenderable(Item)
end)
@@ -2,12 +2,12 @@
-- Creates a screenspace image plane with controls to for a blackout shape. Can be used
-- when using a secondary projector to project content on a dome surface.
local inset = {
local Item = {
Identifier = "ScreenSpaceInsetBlackout_Example_Points",
Type = "ScreenSpaceInsetBlackout",
Name = "ScreenSpaceInsetBlackout Example - Points",
Blackoutshape = {
-- Must always contain four corners in the following order:
-- Must always contain four corners in the following order:
-- top-left, top-right, bottom-right, bottom-left
Corners = { {0.0, 0.9}, {1.0, 0.9}, {0.9, 0.1}, {0.1, 0.1} },
@@ -27,9 +27,9 @@ local inset = {
}
asset.onInitialize(function()
openspace.addScreenSpaceRenderable(inset)
openspace.addScreenSpaceRenderable(Item)
end)
asset.onDeinitialize(function()
openspace.removeScreenSpaceRenderable(inset)
openspace.removeScreenSpaceRenderable(Item)
end)
@@ -2,7 +2,7 @@
-- Creates a screenspace image that shows a spherical grid as an example for any
-- [Renderable](#renderable) that can be displayed.
local Object = {
local Item = {
Type = "ScreenSpaceRenderableRenderable",
Identifier = "ScreenSpaceRenderableRenderable_Example",
Renderable = {
@@ -14,9 +14,9 @@ local Object = {
}
asset.onInitialize(function()
openspace.addScreenSpaceRenderable(Object)
openspace.addScreenSpaceRenderable(Item)
end)
asset.onDeinitialize(function()
openspace.removeScreenSpaceRenderable(Object)
openspace.removeScreenSpaceRenderable(Item)
end)
@@ -4,7 +4,7 @@
-- onto the axes and increases the field of view of the camera to a wider degree. We also
-- set the background color to be fully opaque to make it easier to see the axes.
local Object = {
local Item = {
Type = "ScreenSpaceRenderableRenderable",
Identifier = "ScreenSpaceRenderableRenderable_Example_Axes",
Renderable = {
@@ -16,9 +16,9 @@ local Object = {
}
asset.onInitialize(function()
openspace.addScreenSpaceRenderable(Object)
openspace.addScreenSpaceRenderable(Item)
end)
asset.onDeinitialize(function()
openspace.removeScreenSpaceRenderable(Object)
openspace.removeScreenSpaceRenderable(Item)
end)
@@ -12,7 +12,7 @@ local modelFolder = asset.resource({
Version = 1
})
local Object = {
local Item = {
Type = "ScreenSpaceRenderableRenderable",
Identifier = "ScreenSpaceRenderableRenderable_Example_ModelDistance",
Renderable = {
@@ -33,9 +33,9 @@ local Object = {
}
asset.onInitialize(function()
openspace.addScreenSpaceRenderable(Object)
openspace.addScreenSpaceRenderable(Item)
end)
asset.onDeinitialize(function()
openspace.removeScreenSpaceRenderable(Object)
openspace.removeScreenSpaceRenderable(Item)
end)
@@ -12,7 +12,7 @@ local modelFolder = asset.resource({
Version = 1
})
local Object = {
local Item = {
Type = "ScreenSpaceRenderableRenderable",
Identifier = "ScreenSpaceRenderableRenderable_Example_Model",
Transform = {
@@ -39,9 +39,9 @@ local Object = {
}
asset.onInitialize(function()
openspace.addScreenSpaceRenderable(Object)
openspace.addScreenSpaceRenderable(Item)
end)
asset.onDeinitialize(function()
openspace.removeScreenSpaceRenderable(Object)
openspace.removeScreenSpaceRenderable(Item)
end)
@@ -0,0 +1,16 @@
-- Basic
-- This example creates a screen space renderable that displays a static text.
local Item = {
Type = "ScreenSpaceText",
Identifier = "ScreenSpaceText_Example",
Text = "Example Text"
}
asset.onInitialize(function()
openspace.addScreenSpaceRenderable(Item)
end)
asset.onDeinitialize(function()
openspace.removeScreenSpaceRenderable(Item)
end)
@@ -0,0 +1,19 @@
-- Basic
-- This example creates a screen space renderable that displays a static text with a
-- non-standard font. This is using one of the fonts that is loaded by default in the
-- openspace.cfg file.
local Item = {
Type = "ScreenSpaceText",
Identifier = "ScreenSpaceText_Example_Font",
Text = "Example Text - Font",
FontName = "Light"
}
asset.onInitialize(function()
openspace.addScreenSpaceRenderable(Item)
end)
asset.onDeinitialize(function()
openspace.removeScreenSpaceRenderable(Item)
end)
@@ -0,0 +1,20 @@
-- Basic
-- This example creates a screen space renderable that displays a static text with a
-- larger font. The FontSize parameter is increased to improve the fidelity of the text
-- being rendered. The Scale parameter will make the text show up larger on the screen.
local Item = {
Type = "ScreenSpaceText",
Identifier = "ScreenSpaceText_Example_FontSize",
Text = "Example Text - Font Size",
Scale = 0.5,
FontSize = 72
}
asset.onInitialize(function()
openspace.addScreenSpaceRenderable(Item)
end)
asset.onDeinitialize(function()
openspace.removeScreenSpaceRenderable(Item)
end)
@@ -1,28 +0,0 @@
local transforms = asset.require("scene/solarsystem/sun/transforms")
local Spout = {
Identifier = "Spouty",
Parent = transforms.SolarSystemBarycenter.Identifier,
Renderable = {
Type = "RenderablePlaneSpout",
Size = 3.0E11,
Origin = "Center",
Billboard = true
},
GUI = {
Path = "/Examples"
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Spout)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Spout)
end)
asset.export(Spout)
@@ -0,0 +1,47 @@
-- Basic
-- This asset creates a translation that places coordinate axes on the surface of a
-- planetary body. Note that this examples only the position of the coordinate axes, but
-- leaves the orientation unchanged, causing their rotation to be inherited from the
-- parent node.
-- The example needs a `RenderableGlobe` as a parent to function
local Globe = {
Identifier = "GlobeTranslation_Example_Globe",
Renderable = {
Type = "RenderableGlobe"
},
GUI = {
Name = "GlobeTranslation - Basic (Globe)",
Path = "/Examples"
}
}
local Node = {
Identifier = "GlobeTranslation_Example",
Parent = "GlobeTranslation_Example_Globe",
Transform = {
Translation = {
Type = "GlobeTranslation",
Globe = "GlobeTranslation_Example_Globe",
Latitude = 20.0,
Longitude = -45.0
}
},
Renderable = {
Type = "RenderableCartesianAxes"
},
GUI = {
Name = "GlobeTranslation - Basic",
Path = "/Examples"
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Globe)
openspace.addSceneGraphNode(Node)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Node)
openspace.removeSceneGraphNode(Globe)
end)
@@ -0,0 +1,58 @@
-- Adaptive Height
-- This asset creates a translation that places coordinate axes on the surface of a
-- planetary body while adjusting to the existing height map on the globe. Note that this
-- examples only the position of the coordinate axes, but leaves the orientation
-- unchanged, causing their rotation to be inherited from the parent node.
-- The example needs a `RenderableGlobe` with a height map as a parent to function
local layer = asset.require("scene/solarsystem/planets/earth/layers/heightlayers/blue_marble_height")
local Globe = {
Identifier = "GlobeTranslation_Example_AdaptiveHeight_Globe",
Renderable = {
Type = "RenderableGlobe",
Layers = {
HeightLayers = { layer.layer }
}
},
GUI = {
Name = "GlobeTranslation - Adaptive Height (Globe)",
Path = "/Examples"
}
}
local Node = {
Identifier = "GlobeTranslation_Example_AdaptiveHeight",
Parent = "GlobeTranslation_Example_AdaptiveHeight_Globe",
Transform = {
Translation = {
Type = "GlobeTranslation",
Globe = "GlobeTranslation_Example_AdaptiveHeight_Globe",
Latitude = 20.0,
Longitude = -45.0,
UseHeightmap = true
}
},
Renderable = {
Type = "RenderableCartesianAxes"
},
GUI = {
Name = "GlobeTranslation - Adaptive Height",
Path = "/Examples"
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Globe)
-- The layer is designed for a globe with Earth scale. So we need to scale it down for
-- it to make sense for this example
openspace.setPropertyValueSingle("Scene.GlobeTranslation_Example_AdaptiveHeight_Globe.Renderable.Layers.HeightLayers.Earth_Bluemarble_Height.Enabled", true)
enspace.setPropertyValueSingle("Scene.GlobeTranslation_Example_AdaptiveHeight_Globe.Renderable.Layers.HeightLayers.Earth_Bluemarble_Height.Settings.Multiplier", 1.9)
openspace.setPropertyValueSingle("Scene.GlobeTranslation_Example_AdaptiveHeight_Globe.Renderable.Layers.HeightLayers.Earth_Bluemarble_Height.Settings.Gamma", 0.16)
openspace.addSceneGraphNode(Node)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Node)
openspace.removeSceneGraphNode(Globe)
end)
@@ -0,0 +1,48 @@
-- Fixed Height
-- This asset creates a translation that places coordinate axes on the surface of a
-- planetary body with a fixed height to the reference surface of the globe. Note that
-- this examples only the position of the coordinate axes, but leaves the orientation
-- unchanged, causing their rotation to be inherited from the parent node.
-- The example needs a `RenderableGlobe` with a height map as a parent to function
local Globe = {
Identifier = "GlobeTranslation_Example_FixedHeight_Globe",
Renderable = {
Type = "RenderableGlobe"
},
GUI = {
Name = "GlobeTranslation - Fixed Height (Globe)",
Path = "/Examples"
}
}
local Node = {
Identifier = "GlobeTranslation_Example_FixedHeight",
Parent = "GlobeTranslation_Example_FixedHeight_Globe",
Transform = {
Translation = {
Type = "GlobeTranslation",
Globe = "GlobeTranslation_Example_FixedHeight_Globe",
Latitude = 20.0,
Longitude = -45.0,
Altitude = 2.0
}
},
Renderable = {
Type = "RenderableCartesianAxes"
},
GUI = {
Name = "GlobeTranslation - Fixed Height",
Path = "/Examples"
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Globe)
openspace.addSceneGraphNode(Node)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Node)
openspace.removeSceneGraphNode(Globe)
end)
@@ -1,3 +0,0 @@
cartesian/
cartesiansequence/
spherical/
@@ -1,45 +0,0 @@
-- Before using this example,
-- the volume data itself needs to be generated,
-- using the task 'data/tasks/volume/generate_cartesian.task'
local transforms = asset.require("scene/solarsystem/sun/transforms")
local SunRadius = 695508000
local Volume = {
Identifier = "GeneratedVolumeCartesian",
Parent = transforms.SolarSystemBarycenter.Identifier,
Transform = {
Scale = {
Type = "StaticScale",
Scale = 1000 * SunRadius
}
},
Renderable = {
Type = "RenderableTimeVaryingVolume",
SourceDirectory = asset.resource("cartesian"),
TransferFunction = asset.resource("../transferfunction.txt"),
StepSize = 0.01,
MinValue = 0,
MaxValue = 1,
GridType = "Cartesian",
SecondsBefore = 50 * openspace.time.secondsPerYear(), -- 50 years before
SecondsAfter = 50 * openspace.time.secondsPerYear() -- 50 years after
},
GUI = {
Path = "/Examples"
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Volume)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Volume)
end)
asset.export(Volume)
@@ -1,45 +0,0 @@
-- Before using this example,
-- the volume data itself needs to be generated,
-- using the task 'data/tasks/volume/generate_cartesian_sequence.task'
local transforms = asset.require("scene/solarsystem/sun/transforms")
local SunRadius = 695508000
local Volume = {
Identifier = "GeneratedVolumeCartesianSequence",
Parent = transforms.SolarSystemBarycenter.Identifier,
Transform = {
Scale = {
Type = "StaticScale",
Scale = 1000 * SunRadius
}
},
Renderable = {
Type = "RenderableTimeVaryingVolume",
SourceDirectory = asset.resource("cartesiansequence"),
TransferFunction = asset.resource("../transferfunction.txt"),
StepSize = 0.01,
MinValue = 0,
MaxValue = 1,
GridType = "Cartesian",
SecondsBefore = 50 * openspace.time.secondsPerYear(), -- 50 years before
SecondsAfter = 50 * openspace.time.secondsPerYear() -- 50 years after
},
GUI = {
Path = "/Examples"
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Volume)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Volume)
end)
asset.export(Volume)
@@ -1,45 +0,0 @@
-- Before using this example,
-- the volume data itself needs to be generated,
-- using the task 'data/tasks/volume/generate_spherical.task'
local transforms = asset.require("scene/solarsystem/sun/transforms")
local AstronomicalUnit = 149597870700
local Volume = {
Identifier = "GeneratedVolumeSpherical",
Parent = transforms.SolarSystemBarycenter.Identifier,
Transform = {
Scale = {
Type = "StaticScale",
Scale = AstronomicalUnit
}
},
Renderable = {
Type = "RenderableTimeVaryingVolume",
SourceDirectory = asset.resource("spherical"),
TransferFunction = asset.resource("../transferfunction.txt"),
StepSize = 0.01,
MinValue = 0,
MaxValue = 1,
GridType = "Spherical",
SecondsBefore = 50 * openspace.time.secondsPerYear(), -- 50 years before
SecondsAfter = 50 * openspace.time.secondsPerYear() -- 50 years after
},
GUI = {
Path = "/Examples"
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Volume)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Volume)
end)
asset.export(Volume)
@@ -1,29 +0,0 @@
local transforms = asset.require("scene/solarsystem/sun/transforms")
local ToyVolume = {
Identifier = "RenderableToyVolume",
Parent = transforms.SolarSystemBarycenter.Identifier,
Renderable = {
Type = "RenderableToyVolume",
Size = { 5, 5, 5 },
ScalingExponent = 11,
StepSize = 0.01,
Color = { 1.0, 0.0, 0.0 }
},
GUI = {
Path = "/Examples"
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(ToyVolume)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(ToyVolume)
end)
asset.export(ToyVolume)
@@ -1,5 +0,0 @@
width 1024
lower 0.0
upper 1.0
mappingkey 0.0 250 250 250 0
mappingkey 1.0 200 200 200 255
+17 -12
View File
@@ -46,10 +46,11 @@ local Mercury = {
Tag = { "nightsky_billboard" },
GUI = {
Name = "Night Sky Mercury",
Description = [[A night sky version of the planet Mercury, making it visible as
a bright object on the sky (textured representation).]],
Path = "/Night Sky/Planets",
OrderingNumber = 1
Focusable = false,
OrderingNumber = 1,
Description = [[A night sky version of the planet Mercury, making it visible as
a bright object on the sky (textured representation).]]
}
}
@@ -78,10 +79,11 @@ local Venus = {
Tag = { "nightsky_billboard" },
GUI = {
Name = "Night Sky Venus",
Description = [[A night sky version of the planet Venus, making it visible as
a bright object on the sky (textured representation).]],
Path = "/Night Sky/Planets",
OrderingNumber = 2
Focusable = false,
OrderingNumber = 2,
Description = [[A night sky version of the planet Venus, making it visible as
a bright object on the sky (textured representation).]]
}
}
@@ -111,6 +113,7 @@ local Mars = {
GUI = {
Name = "Night Sky Mars",
Path = "/Night Sky/Planets",
Focusable = false,
OrderingNumber = 4
}
}
@@ -140,10 +143,11 @@ local Jupiter = {
Tag = { "nightsky_billboard" },
GUI = {
Name = "Night Sky Jupiter",
Description = [[A night sky version of the planet Jupiter, making it visible as
a bright object on the sky (textured representation).]],
Path = "/Night Sky/Planets",
OrderingNumber = 5
Focusable = false,
OrderingNumber = 5,
Description = [[A night sky version of the planet Jupiter, making it visible as
a bright object on the sky (textured representation).]]
}
}
@@ -170,10 +174,11 @@ local Saturn = {
Tag = { "nightsky_billboard" },
GUI = {
Name = "Night Sky Saturn",
Description = [[A night sky version of the planet Saturn, making it visible as
a bright object on the sky (textured representation).]],
Path = "/Night Sky/Planets",
OrderingNumber = 6
Focusable = false,
OrderingNumber = 6,
Description = [[A night sky version of the planet Saturn, making it visible as
a bright object on the sky (textured representation).]]
}
}
@@ -37,6 +37,7 @@ local COBE = {
GUI = {
Name = "COBE",
Path = "/Universe/Cosmic Microwave Background",
Focusable = false,
Description = [[In 1990, COBE, the Cosmic Background Explorer, took the first
detailed map of the cosmic microwave background light. The red areas are
relatively hotter areas of the CMB, while the blue areas are cooler than the
@@ -71,6 +72,7 @@ local WMAP = {
GUI = {
Name = "WMAP",
Path = "/Universe/Cosmic Microwave Background",
Focusable = false,
Description = [[WMAP, the Wilkinson Microwave Anisotropy Probe, released this all-sky
image of the cosmic microwave background light in 2003. The blue colors are slightly
cooler than average and red is slightly warmer, with fluctuations of about a
@@ -104,6 +106,7 @@ local Planck = {
GUI = {
Name = "Planck",
Path = "/Universe/Cosmic Microwave Background",
Focusable = false,
Description = [[The Planck mission's 2013 image of the cosmic microwave background
light release is the most detailed view of the CMB we have to date. The orange
areas represent the slightly hotter areas, and the blue areas show the areas that
@@ -33,7 +33,8 @@ local PlanckMultiverse1 = {
},
GUI = {
Name = "Planck Multiverse 1",
Path = "/Universe/Cosmic Microwave Background"
Path = "/Universe/Cosmic Microwave Background",
Focusable = false
}
}
@@ -64,7 +65,8 @@ local PlanckMultiverse2 = {
},
GUI = {
Name = "Planck Multiverse 2",
Path = "/Universe/Cosmic Microwave Background"
Path = "/Universe/Cosmic Microwave Background",
Focusable = false
}
}
@@ -95,7 +97,8 @@ local PlanckMultiverse3 = {
},
GUI = {
Name = "Planck Multiverse 3",
Path = "/Universe/Cosmic Microwave Background"
Path = "/Universe/Cosmic Microwave Background",
Focusable = false
}
}
@@ -126,7 +129,8 @@ local PlanckMultiverse4 = {
},
GUI = {
Name = "Planck Multiverse 4",
Path = "/Universe/Cosmic Microwave Background"
Path = "/Universe/Cosmic Microwave Background",
Focusable = false
}
}
@@ -36,6 +36,7 @@ local OrionClusterStars = {
GUI = {
Name = "Orion Nebula Star Cluster",
Path = "/Milky Way/Orion",
Focusable = false,
Description = [[In order to have an accurate depiction of the Orion nebula, we need to
include the star cluster that was birthed from it. We turned to a study of the
cluster's stellar population by Lynne Hillenbrand, who was working at the University
@@ -80,6 +80,7 @@ local OrionNebulaModel = {
GUI = {
Name = "Orion Nebula Model",
Path = "/Milky Way/Orion",
Focusable = false,
Description = "Orion Nebula 3D model. See Orion Nebula for description"
}
}
@@ -114,6 +115,7 @@ local OrionNebulaShocksModel = {
GUI = {
Name = "Orion Nebula Shocks",
Path = "/Milky Way/Orion",
Focusable = false,
Description = "Orion Nebula Shocks 3D model. See Orion Nebula for description"
}
}
@@ -148,6 +150,7 @@ local OrionNebulaProplydsModel = {
GUI = {
Name = "Orion Nebula Proplyds",
Path = "/Milky Way/Orion",
Focusable = false,
Description = "Orion Nebula Proplyds 3D model. See Orion Nebula for description"
}
}
@@ -34,8 +34,9 @@ local EquatorialCutplane = {
Opacity = 0.7
},
GUI = {
Name = "Cutplane Equitorial",
Name = "Cutplane Equatorial",
Path = "/Solar System/Heliosphere/Bastille Day 2000",
Focusable = false,
Description = [[Equatorial cutplane sequence for the bastille day CME event. This
asset contains data from 2000-07-14 08:38 to 2000-07-14 12:00]]
}
@@ -65,6 +66,7 @@ local MeridialCutplane = {
GUI = {
Name = "Cutplane Meridial",
Path = "/Solar System/Heliosphere/Bastille Day 2000",
Focusable = false,
Description = [[Meridial cutplane sequence for the bastille day CME event. This asset
contains data from 2000-07-14 08:38 to 2000-07-14 12:00]]
}
@@ -26,8 +26,9 @@ local TravelSpeedIndicator = {
FadeLength = 10
},
GUI = {
Name = "Speed Indicator",
Path = "/Solar System/Heliosphere",
Name = "Speed indicator",
Focusable = false,
Description = "Speed of light indicator from sun to earth"
}
}
@@ -26,7 +26,8 @@ local Station2Boulder1Holder = {
},
GUI = {
Name = "Station 2 Boulder 1",
Path = "/Solar System/Missions/Apollo/17/Station 2"
Path = "/Solar System/Missions/Apollo/17/Station 2",
Focusable = false
}
}
@@ -75,7 +76,8 @@ local Station2Boulder2Holder = {
},
GUI = {
Name = "Station 2 Boulder 2",
Path = "/Solar System/Missions/Apollo/17/Station 2"
Path = "/Solar System/Missions/Apollo/17/Station 2",
Focusable = false
}
}
@@ -124,7 +126,8 @@ local Station2Boulder3Holder = {
},
GUI = {
Name = "Station 2 Boulder 3",
Path = "/Solar System/Missions/Apollo/17/Station 2"
Path = "/Solar System/Missions/Apollo/17/Station 2",
Focusable = false
}
}
@@ -26,7 +26,8 @@ local Station6Frag1Holder = {
},
GUI = {
Name = "Station 6 Fragment 1",
Path = "/Solar System/Missions/Apollo/17/Station 6"
Path = "/Solar System/Missions/Apollo/17/Station 6",
Focusable = false
}
}
@@ -73,7 +74,8 @@ local Station6Frag23Holder = {
Parent = moon.Moon.Identifier,
GUI = {
Name = "Station 6 Fragments 2 & 3 Holder",
Path = "/Solar System/Missions/Apollo/17/Station 6"
Path = "/Solar System/Missions/Apollo/17/Station 6",
Focusable = false
}
}
@@ -26,7 +26,8 @@ local Station7BoulderHolder = {
},
GUI = {
Name = "Station 7 Boulder",
Path = "/Solar System/Missions/Apollo/17/Station 7"
Path = "/Solar System/Missions/Apollo/17/Station 7",
Focusable = false
}
}
@@ -78,7 +78,8 @@ local PolyCam = {
},
GUI = {
Name = "OCAMS POLYCAM",
Path = "/Solar System/Missions/OSIRIS REx/Instruments"
Path = "/Solar System/Missions/OSIRIS REx/Instruments",
Focusable = false
}
}
@@ -110,7 +111,8 @@ local Rexis = {
},
GUI = {
Name = "REXIS",
Path = "/Solar System/Missions/OSIRIS REx/Instruments"
Path = "/Solar System/Missions/OSIRIS REx/Instruments",
Focusable = false
}
}
@@ -45,7 +45,8 @@ local Pioneer10Trail = {
Color = { 0.70, 0.50, 0.20 },
StartTime = "1972 MAR 03 02:04:00",
EndTime = "1990 JAN 02 00:00:00",
EnableFade = false
EnableFade = false,
SampleInterval = 1800
},
GUI = {
Name = "Pioneer 10 Trail (SPICE)",
@@ -50,7 +50,8 @@ local Pioneer11Trail = {
Color = { 0.70, 0.50, 0.20 },
StartTime = "1973 APR 06 02:25:00.000",
EndTime = "1990 JAN 02 00:00:00.000",
EnableFade = false
EnableFade = false,
SampleInterval = 1800
},
GUI = {
Name = "Pioneer 11 Trail (SPICE)",
@@ -117,8 +117,7 @@ local VoyagerTrailEncounterJupiter = {
},
Color = { 0.70, 0.50, 0.20 },
EnableFade = false,
-- @TODO: Probably an off-by-one bug in RenderableTrailTrajectory?
StartTime = "1979 MAR 03 23:24:00",
StartTime = "1979 MAR 04",
EndTime = "1979 MAR 09",
SampleInterval = 100
},
@@ -167,8 +166,7 @@ local VoyagerTrailEncounterSaturn = {
},
EnableFade = false,
Color = { 0.70, 0.50, 0.20 },
-- @TODO: Probably an off-by-one bug in RenderableTrailTrajectory?
StartTime = "1980 NOV 10 23:08:30",
StartTime = "1980 NOV 11",
EndTime = "1980 NOV 16",
SampleInterval = 100
},
@@ -120,8 +120,7 @@ local VoyagerTrailEncounterJupiter = {
},
Color = { 0.70, 0.50, 0.20 },
EnableFade = false,
-- @TODO: Probably an off-by-one bug in RenderableTrailTrajectory?
StartTime = "1979 JUL 05 23:24:00",
StartTime = "1979 JUL 06",
EndTime = "1979 JUL 15",
SampleInterval = 100
},
@@ -170,8 +169,7 @@ local VoyagerTrailEncounterSaturn = {
},
EnableFade = false,
Color = { 0.70, 0.50, 0.20 },
-- @TODO: Probably an off-by-one bug in RenderableTrailTrajectory?
StartTime = "1981 AUG 22 23:08:30",
StartTime = "1981 AUG 23",
EndTime = "1981 AUG 30",
SampleInterval = 100
},
@@ -220,8 +218,7 @@ local VoyagerTrailEncounterUranus = {
},
EnableFade = false,
Color = { 0.70, 0.50, 0.20 },
-- @TODO: Probably an off-by-one bug in RenderableTrailTrajectory?
StartTime = "1986 JAN 21 23:30:00",
StartTime = "1986 JAN 22",
EndTime = "1986 JAN 27",
SampleInterval = 100
},
@@ -270,8 +267,7 @@ local VoyagerTrailEncounterNeptune = {
},
EnableFade = false,
Color = { 0.70, 0.50, 0.20 },
-- @TODO: Probably an off-by-one bug in RenderableTrailTrajectory?
StartTime = "1989 AUG 23 22:30:00",
StartTime = "1989 AUG 24",
EndTime = "1989 AUG 26",
SampleInterval = 100
},
@@ -24,7 +24,8 @@ local EarthMarker = {
},
GUI = {
Name = "Earth Marker",
Path = "/Solar System/Planets/Earth"
Path = "/Solar System/Planets/Earth",
Focusable = false
}
}
@@ -52,6 +52,7 @@ local NeptuneLabel = {
GUI = {
Name = "Neptune Label",
Path = "/Solar System/Planets/Neptune",
Focusable = false,
Description = "Main planet label for Neptune"
}
}
@@ -47,8 +47,22 @@ local Saturn = {
Size = 140445000,
Offset = { 74500 / 140445.100671159, 1.0 }, -- min / max extend
},
ShadowGroup = {
Sources = {
{ Name = "Sun", Radius = 696300000 },
},
Casters = {
{ Name = "Mimas", Radius = 207000 },
{ Name = "Enceladus", Radius = 252000 },
{ Name = "Tethys", Radius = 531100 },
{ Name = "Dione", Radius = 561400 },
{ Name = "Rhea", Radius = 765000 },
{ Name = "Titan", Radius = 2576000 },
{ Name = "Iapetus", Radius = 734000 }
}
},
Shadows = {
Enabled = true,
Enabled = false,
DistanceFraction = 40.0
}
},
@@ -53,7 +53,8 @@ local MirandaTrail = {
},
GUI = {
Name = "Miranda Trail",
Path = "/Solar System/Planets/Uranus/Major Moons/Miranda"
Path = "/Solar System/Planets/Uranus/Major Moons/Miranda",
Focusable = false
}
}
@@ -77,7 +78,8 @@ local MirandaLabel = {
Tag = { "solarsystem_labels", "moon_labels", "major_moon_labels" },
GUI = {
Name = "Miranda Label",
Path = "/Solar System/Planets/Uranus/Major Moons/Miranda"
Path = "/Solar System/Planets/Uranus/Major Moons/Miranda",
Focusable = false
}
}
@@ -130,7 +132,8 @@ local ArielTrail = {
},
GUI = {
Name = "Ariel Trail",
Path = "/Solar System/Planets/Uranus/Major Moons/Ariel"
Path = "/Solar System/Planets/Uranus/Major Moons/Ariel",
Focusable = false
}
}
@@ -154,7 +157,8 @@ local ArielLabel = {
Tag = { "solarsystem_labels", "moon_labels", "major_moon_labels" },
GUI = {
Name = "Ariel Label",
Path = "/Solar System/Planets/Uranus/Major Moons/Ariel"
Path = "/Solar System/Planets/Uranus/Major Moons/Ariel",
Focusable = false
}
}
@@ -207,7 +211,8 @@ local UmbrielTrail = {
},
GUI = {
Name = "Umbriel Trail",
Path = "/Solar System/Planets/Uranus/Major Moons/Umbriel"
Path = "/Solar System/Planets/Uranus/Major Moons/Umbriel",
Focusable = false
}
}
@@ -231,7 +236,8 @@ local UmbrielLabel = {
Tag = { "solarsystem_labels", "moon_labels", "major_moon_labels" },
GUI = {
Name = "Umbriel Label",
Path = "/Solar System/Planets/Uranus/Major Moons/Umbriel"
Path = "/Solar System/Planets/Uranus/Major Moons/Umbriel",
Focusable = false
}
}
@@ -284,7 +290,8 @@ local TitaniaTrail = {
},
GUI = {
Name = "Titania Trail",
Path = "/Solar System/Planets/Uranus/Major Moons/Titania"
Path = "/Solar System/Planets/Uranus/Major Moons/Titania",
Focusable = false
}
}
@@ -308,7 +315,8 @@ local TitaniaLabel = {
Tag = { "solarsystem_labels", "moon_labels", "major_moon_labels" },
GUI = {
Name = "Titania Label",
Path = "/Solar System/Planets/Uranus/Major Moons/Titania"
Path = "/Solar System/Planets/Uranus/Major Moons/Titania",
Focusable = false
}
}
@@ -361,7 +369,8 @@ local OberonTrail = {
},
GUI = {
Name = "Oberon Trail",
Path = "/Solar System/Planets/Uranus/Major Moons/Oberon"
Path = "/Solar System/Planets/Uranus/Major Moons/Oberon",
Focusable = false
}
}
@@ -385,7 +394,8 @@ local OberonLabel = {
Tag = { "solarsystem_labels", "moon_labels", "major_moon_labels" },
GUI = {
Name = "Oberon Label",
Path = "/Solar System/Planets/Uranus/Major Moons/Oberon"
Path = "/Solar System/Planets/Uranus/Major Moons/Oberon",
Focusable = false
}
}
@@ -17,7 +17,6 @@ local Object = {
Type = "RenderableOrbitalKepler",
Path = sssb .. "sssb_data_amor_asteroid.csv",
Format = "SBDB",
Segments = 200,
SegmentQuality = 4,
Color = { 1.0, 1.0, 1.0 },
TrailFade = 11,
@@ -17,7 +17,6 @@ local Object = {
Type = "RenderableOrbitalKepler",
Path = sssb .. "sssb_data_apollo_asteroid.csv",
Format = "SBDB",
Segments = 200,
SegmentQuality = 6,
Color = { 0.7, 0.7, 1.0 },
TrailFade = 10,
@@ -17,7 +17,6 @@ local Object = {
Type = "RenderableOrbitalKepler",
Path = sssb .. "sssb_data_aten_asteroid.csv",
Format = "SBDB",
Segments = 200,
SegmentQuality = 2,
Color = { 0.15, 0.15, 1.0 },
TrailFade = 18,
@@ -17,7 +17,6 @@ local Object = {
Type = "RenderableOrbitalKepler",
Path = sssb .. "sssb_data_atira_asteroid.csv",
Format = "SBDB",
Segments = 200,
SegmentQuality = 2,
Color = { 0.5, 0.8, 1.0 },
TrailFade = 25,
@@ -17,7 +17,6 @@ local Object = {
Type = "RenderableOrbitalKepler",
Path = sssb .. "sssb_data_centaur_asteroid.csv",
Format = "SBDB",
Segments = 200,
SegmentQuality = 6,
Color = { 0.94, 0.96, 0.94 },
TrailFade = 18,
@@ -17,7 +17,6 @@ local Object = {
Type = "RenderableOrbitalKepler",
Path = sssb .. "sssb_data_chiron-type_comet.csv",
Format = "SBDB",
Segments = 200,
SegmentQuality = 10,
Color = { 0.15, 0.1, 1.0 },
TrailFade = 25,
@@ -17,7 +17,6 @@ local Object = {
Type = "RenderableOrbitalKepler",
Path = sssb .. "sssb_data_encke-type_comet.csv",
Format = "SBDB",
Segments = 200,
SegmentQuality = 2,
Color = { 0.8, 0.34, 1.0 },
TrailFade = 23,
@@ -17,7 +17,6 @@ local Object = {
Type = "RenderableOrbitalKepler",
Path = sssb .. "sssb_data_halley-type_comet.csv",
Format = "SBDB",
Segments = 200,
SegmentQuality = 9,
Color = { 0.66, 0.66, 0.66 },
TrailFade = 18,
@@ -17,7 +17,6 @@ local Object = {
Type = "RenderableOrbitalKepler",
Path = sssb .. "sssb_data_inner_main_belt_asteroid.csv",
Format = "SBDB",
Segments = 200,
SegmentQuality = 1,
Color = { 1.0, 1.0, 0.0 },
TrailFade = 0.5,
@@ -17,7 +17,6 @@ local Object = {
Type = "RenderableOrbitalKepler",
Path = sssb .. "sssb_data_jupiter-family_comet.csv",
Format = "SBDB",
Segments = 200,
SegmentQuality = 10,
Color = { 0.2, 0.8, 0.2 },
TrailFade = 28,
@@ -17,7 +17,6 @@ local Object = {
Type = "RenderableOrbitalKepler",
Path = sssb .. "sssb_data_jupiter_trojan_asteroid.csv",
Format = "SBDB",
Segments = 200,
SegmentQuality = 1,
Color = { 0.5, 0.8, 0.5 },
TrailFade = 5,
@@ -17,7 +17,6 @@ local Object = {
Type = "RenderableOrbitalKepler",
Path = sssb .. "sssb_data_main_belt_asteroid.csv",
Format = "SBDB",
Segments = 200,
SegmentQuality = 1,
Color = { 0.0, 0.5, 0.0 },
TrailFade = 0.1,
@@ -17,7 +17,6 @@ local Object = {
Type = "RenderableOrbitalKepler",
Path = sssb .. "sssb_data_mars-crossing_asteroid.csv",
Format = "SBDB",
Segments = 200,
SegmentQuality = 1,
Color = { 0.814, 0.305, 0.22 },
TrailFade = 13,
+1 -2
View File
@@ -15,9 +15,8 @@ local Object = {
Parent = transforms.SunEclipJ2000.Identifier,
Renderable = {
Type = "RenderableOrbitalKepler",
Path = mpcorb,
Path = mpcorb .. "MPCORB.DAT",
Format = "MPC",
Segments = 200,
SegmentQuality = 4,
Color = { 0.8, 0.15, 0.2 },
TrailFade = 11,
@@ -17,7 +17,6 @@ local Object = {
Type = "RenderableOrbitalKepler",
Path = sssb .. "sssb_data_outer_main_belt_asteroid.csv",
Format = "SBDB",
Segments = 200,
SegmentQuality = 1,
Color = { 0.4, 0.4, 1.0 },
TrailFade = 2,
@@ -17,7 +17,6 @@ local Object = {
Type = "RenderableOrbitalKepler",
Path = sssb .. "sssb_data_pha.csv",
Format = "SBDB",
Segments = 200,
SegmentQuality = 3,
Color = { 0.98, 0.09, 0.06 },
TrailFade = 17,
@@ -17,7 +17,6 @@ local Object = {
Type = "RenderableOrbitalKepler",
Path = sssb .. "sssb_data_transneptunian_object_asteroid.csv",
Format = "SBDB",
Segments = 200,
SegmentQuality = 8,
Color = { 0.56, 0.64, 0.95 },
TrailFade = 10,
@@ -66,6 +66,7 @@ local HUDFJWSTLine = {
GUI = {
Name = "JWST to HUDF Line",
Path = "/Solar System/Telescopes/JWST/HUDF",
Focusable = false,
Description = [[
Line from the James Webb Space Telescope to the Hubble Ultra Deep Field
]]

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