Merge branch 'master' into project/b612-asteroid-uncertainty

This commit is contained in:
Malin E
2024-01-19 13:44:54 +01:00
180 changed files with 8469 additions and 3144 deletions

View File

@@ -50,7 +50,7 @@ private:
void updateSaveButton();
void save();
void reject();
void reject() override;
QLineEdit* _configuration = nullptr;
QCheckBox* _rememberLastConfiguration = nullptr;

View File

@@ -401,8 +401,8 @@ QWidget* LauncherWindow::createCentralWidget() {
connect(
&dialog,
&SettingsDialog::saveSettings,
[](Settings settings) {
saveSettings(settings, findSettings());
[](Settings s) {
saveSettings(s, findSettings());
}
);
@@ -588,10 +588,17 @@ bool handleConfigurationFile(QComboBox& box, const std::filesystem::directory_en
// Add tooltip
if (isJson) {
sgct::config::Meta meta = sgct::readMeta(p.path().string(), true);
if (!meta.description.empty()) {
std::string tooltipDescription;
try {
sgct::config::Meta meta = sgct::readMeta(p.path().string());
tooltipDescription = meta.description;
}
catch (const sgct::Error&) {
tooltipDescription = "(no description available)";
}
if (!tooltipDescription.empty()) {
QString toolTip = QString::fromStdString(
fmt::format("<p>{}</p>", meta.description)
fmt::format("<p>{}</p>", tooltipDescription)
);
box.setItemData(box.count() - 1, toolTip, Qt::ToolTipRole);
}

View File

@@ -142,7 +142,7 @@ void SgctEdit::setupStateOfUiOnFirstWindow(size_t nWindows) {
bool firstWindowGuiIsEnabled = (nWindows > 1);
int graphicsSelectionForFirstWindow = 0;
int nGuiRenderTagsFound = 0;
_settingsWidget->nWindowsDisplayedChanged(nWindows);
_settingsWidget->nWindowsDisplayedChanged(static_cast<int>(nWindows));
for (size_t i = 0; i < nWindows; ++i) {
sgct::config::Window& w = _cluster.nodes.front().windows[i];
@@ -185,7 +185,7 @@ void SgctEdit::setupStateOfUiOnFirstWindow(size_t nWindows) {
// Call these again in order to ensure that GUI is configured correctly based on
// the values read from the config file
_settingsWidget->setEnableShowUiOnFirstWindowCheckbox(true);
_settingsWidget->nWindowsDisplayedChanged(nWindows);
_settingsWidget->nWindowsDisplayedChanged(static_cast<int>(nWindows));
}
_settingsWidget->setGraphicsSelectionForShowUiOnFirstWindow(
graphicsSelectionForFirstWindow

View File

@@ -1415,9 +1415,12 @@ int main(int argc, char* argv[]) {
LDEBUG("Creating SGCT Engine");
std::vector<std::string> arg(argv + 1, argv + argc);
LDEBUG("Parsing commandline arguments");
sgct::Configuration config = parseArguments(arg);
LDEBUG("Loading cluster information");
config::Cluster cluster = loadCluster(absPath(windowConfiguration).string());
LDEBUG("Setting callbacks");
Engine::Callbacks callbacks;
callbacks.initOpenGL = mainInitFunc;
callbacks.preSync = mainPreSyncFunc;

View File

@@ -0,0 +1,101 @@
x,y,z,a,b,normaldist_withMissing,number_withNan
13428000,26239000,45870000,-3.226548224,33.95773276,-0.357778948,29
14727000,45282000,10832000,45.05941924,-106.0395917,,29
24999000,28370000,19911000,-70.58906931,154.1851656,-0.167961782,Nan
26539000,36165000,39582000,-13.3663358,71.79484733,0.113536778,9
49056000,24775000,14626000,21.42870979,-115.6088304,0.125551095,37
43965000,21472000,18760000,65.07055022,-56.36880466,0.172981386,18
15661000,28429000,16965000,76.15826514,125.3163407,,40
25046000,36006000,49453000,-22.31710915,137.4486786,0.447921314,28
13797000,34811000,18825000,-79.40300933,74.05580595,-0.02379786,12
13879000,14824000,41472000,-30.93548431,-8.755047834,-0.041777813,50
11481000,20480000,25925000,75.51244012,178.1377926,-0.044396255,0
45032000,16606000,23537000,37.38766828,175.5064508,-0.449674816,13
14395000,34940000,21968000,-31.6863061,-116.6587323,-0.09741961,30
15945000,21478000,29536000,-53.01226701,59.18196347,0.304142338,30
13458000,19017000,18542000,8.72692265,80.65872957,,45
45302000,15732000,34369000,-85.57061714,124.6890481,-0.364449145,20
15559000,36269000,18160000,-4.975784243,-156.8789425,-0.012893853,22
16552000,14570000,39763000,-39.2579671,75.22960824,-0.281792015,Nan
11353000,13410000,38311000,8.610608538,-36.43103437,-0.196021206,9
12383000,49302000,33539000,69.26506588,-109.0830926,-0.147483079,34
44302000,21387000,23434000,16.14574541,78.81171702,0.115624185,5
43107000,14206000,24728000,37.57233254,142.6103028,,Nan
49320000,43878000,24240000,-39.10527498,149.2751575,-0.086246397,29
37519000,40514000,16409000,-24.14434437,157.2871976,-0.071946303,12
37202000,40122000,42551000,-79.88824934,-124.089513,0.375414362,31
12783000,11757000,25348000,-11.83866388,118.2423568,-0.243289139,Nan
39621000,30560000,15929000,75.8365484,-95.18288548,-0.399996182,37
10937000,15183000,21413000,-32.40573,-157.8337361,-0.202310776,39
39411000,12532000,44006000,34.67409469,-83.29512212,,Nan
47905000,25552000,28902000,36.19437814,52.25734185,,32
28426000,45268000,27886000,-70.843469,-63.7321218,0.112287307,45
15026000,45897000,23911000,-89.01161062,10.16376248,-0.00400866,Nan
24625000,14844000,12837000,88.91663258,169.8003753,-0.151728888,5
46304000,21144000,24421000,-41.58069299,59.63971512,-0.371030712,48
29558000,10724000,27312000,9.663492403,-71.18121738,0.344402457,Nan
49636000,27202000,24626000,59.46440387,-92.91431055,0.26256468,31
38603000,23794000,41040000,70.45128929,-67.84861911,-0.184920666,48
37336000,21742000,40982000,-15.69131418,134.6754731,0.078786176,15
35128000,38725000,25244000,2.279345664,34.91612867,0.091098807,44
30419000,33591000,39512000,-56.16030331,133.9105282,-0.590693487,8
18665000,11189000,45438000,-45.68302316,-85.35524485,0.046936859,26
15442000,36392000,16074000,81.4389588,-56.70945587,0.038804669,5
43378000,27900000,38748000,-74.35249265,-133.1884413,0.429053963,17
44424000,19982000,13528000,-81.19709235,49.49364675,0.115926289,47
42733000,15383000,28933000,75.17020088,-11.11330632,0.127627239,32
40144000,46822000,29588000,-81.25577073,-135.8002245,0.346061193,33
16927000,38232000,43931000,-80.97022269,157.7565432,-0.096039391,39
38910000,36030000,38003000,-37.79005665,-1.5474944,0.107402594,11
48340000,38510000,39290000,21.94846638,-112.6129615,0.230803493,3
17258000,45665000,27152000,80.73726495,-31.33714033,-0.079079307,10
48363000,39701000,11905000,11.83766221,-69.99777106,-0.002514692,3
27660000,29370000,26029000,8.179457229,147.7719143,-0.006520509,31
47106000,30527000,17038000,73.00898959,9.988869939,0.797492967,5
10471000,37521000,35398000,57.46145065,-29.5045034,-0.261313809,39
27774000,44082000,40036000,78.47974779,-4.998179635,0.437739286,24
46887000,20413000,36649000,51.11098102,-136.3276432,0.237434245,41
10093000,46706000,19187000,-58.41750426,-157.9933447,0.275586609,45
49093000,36514000,38499000,-55.41355694,150.177605,0.576467955,21
48945000,49826000,23225000,-63.91174083,-177.7191007,0.475443991,Nan
26852000,28926000,32243000,-77.854481,116.9006581,,1
34219000,34787000,30801000,-62.32990484,23.24232366,0.089523916,40
31075000,30369000,36898000,-77.78314619,38.69526825,-0.046423443,7
28135000,21412000,25552000,-7.411565773,-88.65122734,0.258690016,Nan
13347000,15980000,43094000,74.71054756,-37.32614369,,7
26928000,31159000,16653000,-32.74503199,146.7695347,0.576290488,34
12364000,14374000,43646000,28.70641859,-92.35199713,-0.059531367,16
38991000,49388000,48534000,56.70658222,8.014973542,-0.173400177,30
17180000,14935000,11680000,-45.39957586,102.5726701,0.16285705,1
27666000,29337000,44778000,89.4063742,-79.68068618,0.044140443,41
13660000,11108000,37986000,57.03349279,7.98684928,0.066242706,24
36910000,10252000,41657000,-9.906961203,21.79114496,-0.378241692,6
21785000,20095000,14903000,77.49612237,-84.68789002,-0.071118836,16
33363000,42124000,39814000,-64.47776113,-30.79591997,0.371115832,35
42758000,48892000,44762000,42.39782697,-32.55868099,-0.146011285,1
16590000,22098000,28515000,-36.90992927,-55.27481385,-0.203981239,27
26448000,45475000,33361000,64.22197115,146.6687002,-0.026210913,1
41182000,23927000,25075000,-81.55929754,137.9213773,0.042229126,10
49801000,15636000,39883000,-89.22857667,159.9681504,0.035529624,15
32725000,13037000,49874000,-55.17873101,61.01413612,0.519438664,43
31130000,16471000,41939000,-45.36963748,-156.5100924,0.245045969,22
19599000,37119000,26468000,-26.58523044,174.7731562,-0.210527713,22
30024000,23097000,14711000,44.31464407,150.7894846,-0.041347399,45
39567000,48586000,49391000,1.721781555,156.1687027,,31
46249000,28249000,32393000,-13.3221674,-176.0644697,-0.108879159,30
12180000,20488000,46288000,36.02858732,30.43526779,-0.099205446,47
29659000,40098000,45152000,72.15373455,62.01511311,,46
41026000,19309000,15845000,-38.63636224,145.9569745,-0.083266866,32
47146000,39852000,26666000,35.2426196,-33.97130609,-0.650089141,7
39958000,46945000,11789000,-68.31344333,172.4154216,0.001713968,37
25921000,13147000,22257000,-15.89505915,-150.39693,0.165178387,37
28892000,28329000,49094000,-58.72206735,-157.3776844,-0.228068143,48
29563000,48312000,45703000,86.78718085,179.1386066,-0.146072441,49
46127000,46582000,13462000,39.98033674,-164.152123,-0.081830298,17
23268000,24051000,48652000,-43.61767649,83.51428751,-0.106824408,45
22163000,26901000,28702000,51.04347167,169.7632117,0.052782471,31
46968000,17027000,25787000,-73.8664022,2.915300454,-0.028069047,22
24148000,44640000,15422000,8.379412685,101.9542853,-0.049339904,14
11566000,26486000,11735000,-36.78748293,-129.8960512,,Nan
11063000,38883000,16772000,-65.43894139,105.6607872,,7
43081000,16718000,45813000,-2.464830259,87.07999887,-0.24057898,40
1 x y z a b normaldist_withMissing number_withNan
2 13428000 26239000 45870000 -3.226548224 33.95773276 -0.357778948 29
3 14727000 45282000 10832000 45.05941924 -106.0395917 29
4 24999000 28370000 19911000 -70.58906931 154.1851656 -0.167961782 Nan
5 26539000 36165000 39582000 -13.3663358 71.79484733 0.113536778 9
6 49056000 24775000 14626000 21.42870979 -115.6088304 0.125551095 37
7 43965000 21472000 18760000 65.07055022 -56.36880466 0.172981386 18
8 15661000 28429000 16965000 76.15826514 125.3163407 40
9 25046000 36006000 49453000 -22.31710915 137.4486786 0.447921314 28
10 13797000 34811000 18825000 -79.40300933 74.05580595 -0.02379786 12
11 13879000 14824000 41472000 -30.93548431 -8.755047834 -0.041777813 50
12 11481000 20480000 25925000 75.51244012 178.1377926 -0.044396255 0
13 45032000 16606000 23537000 37.38766828 175.5064508 -0.449674816 13
14 14395000 34940000 21968000 -31.6863061 -116.6587323 -0.09741961 30
15 15945000 21478000 29536000 -53.01226701 59.18196347 0.304142338 30
16 13458000 19017000 18542000 8.72692265 80.65872957 45
17 45302000 15732000 34369000 -85.57061714 124.6890481 -0.364449145 20
18 15559000 36269000 18160000 -4.975784243 -156.8789425 -0.012893853 22
19 16552000 14570000 39763000 -39.2579671 75.22960824 -0.281792015 Nan
20 11353000 13410000 38311000 8.610608538 -36.43103437 -0.196021206 9
21 12383000 49302000 33539000 69.26506588 -109.0830926 -0.147483079 34
22 44302000 21387000 23434000 16.14574541 78.81171702 0.115624185 5
23 43107000 14206000 24728000 37.57233254 142.6103028 Nan
24 49320000 43878000 24240000 -39.10527498 149.2751575 -0.086246397 29
25 37519000 40514000 16409000 -24.14434437 157.2871976 -0.071946303 12
26 37202000 40122000 42551000 -79.88824934 -124.089513 0.375414362 31
27 12783000 11757000 25348000 -11.83866388 118.2423568 -0.243289139 Nan
28 39621000 30560000 15929000 75.8365484 -95.18288548 -0.399996182 37
29 10937000 15183000 21413000 -32.40573 -157.8337361 -0.202310776 39
30 39411000 12532000 44006000 34.67409469 -83.29512212 Nan
31 47905000 25552000 28902000 36.19437814 52.25734185 32
32 28426000 45268000 27886000 -70.843469 -63.7321218 0.112287307 45
33 15026000 45897000 23911000 -89.01161062 10.16376248 -0.00400866 Nan
34 24625000 14844000 12837000 88.91663258 169.8003753 -0.151728888 5
35 46304000 21144000 24421000 -41.58069299 59.63971512 -0.371030712 48
36 29558000 10724000 27312000 9.663492403 -71.18121738 0.344402457 Nan
37 49636000 27202000 24626000 59.46440387 -92.91431055 0.26256468 31
38 38603000 23794000 41040000 70.45128929 -67.84861911 -0.184920666 48
39 37336000 21742000 40982000 -15.69131418 134.6754731 0.078786176 15
40 35128000 38725000 25244000 2.279345664 34.91612867 0.091098807 44
41 30419000 33591000 39512000 -56.16030331 133.9105282 -0.590693487 8
42 18665000 11189000 45438000 -45.68302316 -85.35524485 0.046936859 26
43 15442000 36392000 16074000 81.4389588 -56.70945587 0.038804669 5
44 43378000 27900000 38748000 -74.35249265 -133.1884413 0.429053963 17
45 44424000 19982000 13528000 -81.19709235 49.49364675 0.115926289 47
46 42733000 15383000 28933000 75.17020088 -11.11330632 0.127627239 32
47 40144000 46822000 29588000 -81.25577073 -135.8002245 0.346061193 33
48 16927000 38232000 43931000 -80.97022269 157.7565432 -0.096039391 39
49 38910000 36030000 38003000 -37.79005665 -1.5474944 0.107402594 11
50 48340000 38510000 39290000 21.94846638 -112.6129615 0.230803493 3
51 17258000 45665000 27152000 80.73726495 -31.33714033 -0.079079307 10
52 48363000 39701000 11905000 11.83766221 -69.99777106 -0.002514692 3
53 27660000 29370000 26029000 8.179457229 147.7719143 -0.006520509 31
54 47106000 30527000 17038000 73.00898959 9.988869939 0.797492967 5
55 10471000 37521000 35398000 57.46145065 -29.5045034 -0.261313809 39
56 27774000 44082000 40036000 78.47974779 -4.998179635 0.437739286 24
57 46887000 20413000 36649000 51.11098102 -136.3276432 0.237434245 41
58 10093000 46706000 19187000 -58.41750426 -157.9933447 0.275586609 45
59 49093000 36514000 38499000 -55.41355694 150.177605 0.576467955 21
60 48945000 49826000 23225000 -63.91174083 -177.7191007 0.475443991 Nan
61 26852000 28926000 32243000 -77.854481 116.9006581 1
62 34219000 34787000 30801000 -62.32990484 23.24232366 0.089523916 40
63 31075000 30369000 36898000 -77.78314619 38.69526825 -0.046423443 7
64 28135000 21412000 25552000 -7.411565773 -88.65122734 0.258690016 Nan
65 13347000 15980000 43094000 74.71054756 -37.32614369 7
66 26928000 31159000 16653000 -32.74503199 146.7695347 0.576290488 34
67 12364000 14374000 43646000 28.70641859 -92.35199713 -0.059531367 16
68 38991000 49388000 48534000 56.70658222 8.014973542 -0.173400177 30
69 17180000 14935000 11680000 -45.39957586 102.5726701 0.16285705 1
70 27666000 29337000 44778000 89.4063742 -79.68068618 0.044140443 41
71 13660000 11108000 37986000 57.03349279 7.98684928 0.066242706 24
72 36910000 10252000 41657000 -9.906961203 21.79114496 -0.378241692 6
73 21785000 20095000 14903000 77.49612237 -84.68789002 -0.071118836 16
74 33363000 42124000 39814000 -64.47776113 -30.79591997 0.371115832 35
75 42758000 48892000 44762000 42.39782697 -32.55868099 -0.146011285 1
76 16590000 22098000 28515000 -36.90992927 -55.27481385 -0.203981239 27
77 26448000 45475000 33361000 64.22197115 146.6687002 -0.026210913 1
78 41182000 23927000 25075000 -81.55929754 137.9213773 0.042229126 10
79 49801000 15636000 39883000 -89.22857667 159.9681504 0.035529624 15
80 32725000 13037000 49874000 -55.17873101 61.01413612 0.519438664 43
81 31130000 16471000 41939000 -45.36963748 -156.5100924 0.245045969 22
82 19599000 37119000 26468000 -26.58523044 174.7731562 -0.210527713 22
83 30024000 23097000 14711000 44.31464407 150.7894846 -0.041347399 45
84 39567000 48586000 49391000 1.721781555 156.1687027 31
85 46249000 28249000 32393000 -13.3221674 -176.0644697 -0.108879159 30
86 12180000 20488000 46288000 36.02858732 30.43526779 -0.099205446 47
87 29659000 40098000 45152000 72.15373455 62.01511311 46
88 41026000 19309000 15845000 -38.63636224 145.9569745 -0.083266866 32
89 47146000 39852000 26666000 35.2426196 -33.97130609 -0.650089141 7
90 39958000 46945000 11789000 -68.31344333 172.4154216 0.001713968 37
91 25921000 13147000 22257000 -15.89505915 -150.39693 0.165178387 37
92 28892000 28329000 49094000 -58.72206735 -157.3776844 -0.228068143 48
93 29563000 48312000 45703000 86.78718085 179.1386066 -0.146072441 49
94 46127000 46582000 13462000 39.98033674 -164.152123 -0.081830298 17
95 23268000 24051000 48652000 -43.61767649 83.51428751 -0.106824408 45
96 22163000 26901000 28702000 51.04347167 169.7632117 0.052782471 31
97 46968000 17027000 25787000 -73.8664022 2.915300454 -0.028069047 22
98 24148000 44640000 15422000 8.379412685 101.9542853 -0.049339904 14
99 11566000 26486000 11735000 -36.78748293 -129.8960512 Nan
100 11063000 38883000 16772000 -65.43894139 105.6607872 7
101 43081000 16718000 45813000 -2.464830259 87.07999887 -0.24057898 40

View File

@@ -0,0 +1,100 @@
13428000 26239000 45870000 id P0 text Point 0
14727000 45282000 10832000 id P1 text Point 1
24999000 28370000 19911000 id P2 text Point 2
26539000 36165000 39582000 id P3 text Point 3
49056000 24775000 14626000 id P4 text Point 4
43965000 21472000 18760000 id P5 text Point 5
15661000 28429000 16965000 id P6 text Point 6
25046000 36006000 49453000 id P7 text Point 7
13797000 34811000 18825000 id P8 text Point 8
13879000 14824000 41472000 id P9 text Point 9
11481000 20480000 25925000 id P10 text Point 10
45032000 16606000 23537000 id P11 text Point 11
14395000 34940000 21968000 id P12 text Point 12
15945000 21478000 29536000 id P13 text Point 13
13458000 19017000 18542000 id P14 text Point 14
45302000 15732000 34369000 id P15 text Point 15
15559000 36269000 18160000 id P16 text Point 16
16552000 14570000 39763000 id P17 text Point 17
11353000 13410000 38311000 id P18 text Point 18
12383000 49302000 33539000 id P19 text Point 19
44302000 21387000 23434000 id P20 text Point 20
43107000 14206000 24728000 id P21 text Point 21
49320000 43878000 24240000 id P22 text Point 22
37519000 40514000 16409000 id P23 text Point 23
37202000 40122000 42551000 id P24 text Point 24
12783000 11757000 25348000 id P25 text Point 25
39621000 30560000 15929000 id P26 text Point 26
10937000 15183000 21413000 id P27 text Point 27
39411000 12532000 44006000 id P28 text Point 28
47905000 25552000 28902000 id P29 text Point 29
28426000 45268000 27886000 id P30 text Point 30
15026000 45897000 23911000 id P31 text Point 31
24625000 14844000 12837000 id P32 text Point 32
46304000 21144000 24421000 id P33 text Point 33
29558000 10724000 27312000 id P34 text Point 34
49636000 27202000 24626000 id P35 text Point 35
38603000 23794000 41040000 id P36 text Point 36
37336000 21742000 40982000 id P37 text Point 37
35128000 38725000 25244000 id P38 text Point 38
30419000 33591000 39512000 id P39 text Point 39
18665000 11189000 45438000 id P40 text Point 40
15442000 36392000 16074000 id P41 text Point 41
43378000 27900000 38748000 id P42 text Point 42
44424000 19982000 13528000 id P43 text Point 43
42733000 15383000 28933000 id P44 text Point 44
40144000 46822000 29588000 id P45 text Point 45
16927000 38232000 43931000 id P46 text Point 46
38910000 36030000 38003000 id P47 text Point 47
48340000 38510000 39290000 id P48 text Point 48
17258000 45665000 27152000 id P49 text Point 49
48363000 39701000 11905000 id P50 text Point 50
27660000 29370000 26029000 id P51 text Point 51
47106000 30527000 17038000 id P52 text Point 52
10471000 37521000 35398000 id P53 text Point 53
27774000 44082000 40036000 id P54 text Point 54
46887000 20413000 36649000 id P55 text Point 55
10093000 46706000 19187000 id P56 text Point 56
49093000 36514000 38499000 id P57 text Point 57
48945000 49826000 23225000 id P58 text Point 58
26852000 28926000 32243000 id P59 text Point 59
34219000 34787000 30801000 id P60 text Point 60
31075000 30369000 36898000 id P61 text Point 61
28135000 21412000 25552000 id P62 text Point 62
13347000 15980000 43094000 id P63 text Point 63
26928000 31159000 16653000 id P64 text Point 64
12364000 14374000 43646000 id P65 text Point 65
38991000 49388000 48534000 id P66 text Point 66
17180000 14935000 11680000 id P67 text Point 67
27666000 29337000 44778000 id P68 text Point 68
13660000 11108000 37986000 id P69 text Point 69
36910000 10252000 41657000 id P70 text Point 70
21785000 20095000 14903000 id P71 text Point 71
33363000 42124000 39814000 id P72 text Point 72
42758000 48892000 44762000 id P73 text Point 73
16590000 22098000 28515000 id P74 text Point 74
26448000 45475000 33361000 id P75 text Point 75
41182000 23927000 25075000 id P76 text Point 76
49801000 15636000 39883000 id P77 text Point 77
32725000 13037000 49874000 id P78 text Point 78
31130000 16471000 41939000 id P79 text Point 79
19599000 37119000 26468000 id P80 text Point 80
30024000 23097000 14711000 id P81 text Point 81
39567000 48586000 49391000 id P82 text Point 82
46249000 28249000 32393000 id P83 text Point 83
12180000 20488000 46288000 id P84 text Point 84
29659000 40098000 45152000 id P85 text Point 85
41026000 19309000 15845000 id P86 text Point 86
47146000 39852000 26666000 id P87 text Point 87
39958000 46945000 11789000 id P88 text Point 88
25921000 13147000 22257000 id P89 text Point 89
28892000 28329000 49094000 id P90 text Point 90
29563000 48312000 45703000 id P91 text Point 91
46127000 46582000 13462000 id P92 text Point 92
23268000 24051000 48652000 id P93 text Point 93
22163000 26901000 28702000 id P94 text Point 94
46968000 17027000 25787000 id P95 text Point 95
24148000 44640000 15422000 id P96 text Point 96
11566000 26486000 11735000 id P97 text Point 97
11063000 38883000 16772000 id P98 text Point 98
43081000 16718000 45813000 id P99 text Point 99

View File

@@ -0,0 +1,236 @@
local earthAsset = asset.require("scene/solarsystem/planets/earth/earth")
-- Color mapped points close to Earth, with some different settings for color and
-- sizing, and a StaticRotation that makes them not overlap
-- Point cloud with fixed color and default size (fixed)
local FixedColor_FixedSize = {
Identifier = "ExamplePoints_FixedSize",
Parent = earthAsset.Earth.Identifier,
Renderable = {
Type = "RenderablePointCloud",
File = asset.resource("data/dummydata.csv"),
Coloring = {
FixedColor = { 0.0, 0.5, 0.0 }
}
},
GUI = {
Name = "Fixed Color / Fixed Size",
Path = "/Example/Point Clouds",
Description = "Point cloud with a fixed color and fixed sizing"
}
}
-- Point cloud with fixed color and size scaling that is limited by a certain size
local FixedColor_MaxSize = {
Identifier = "ExamplePoints_MaxSize",
Parent = earthAsset.Earth.Identifier,
Transform = {
Rotation = {
Type = "StaticRotation",
Rotation = { 0, 0, 0.5 * math.pi }
}
},
Renderable = {
Type = "RenderablePointCloud",
File = asset.resource("data/dummydata.csv"),
Coloring = {
FixedColor = { 0.0, 1.0, 1.0 }
},
SizeSettings = {
MaxSize = 0.7,
EnableMaxSizeControl = true
}
},
GUI = {
Name = "Fixed Color / Max Size",
Path = "/Example/Point Clouds",
Description = "Point cloud with a fixed color and sizing with a given max size"
}
}
-- Point cloud with color mapping and fixed point sizing
local ColorMapped_FixedSize = {
Identifier = "ExamplePoints_ColorMapped",
Parent = earthAsset.Earth.Identifier,
Transform = {
Rotation = {
Type = "StaticRotation",
Rotation = { 0, 0, -0.5 * math.pi }
}
},
Renderable = {
Type = "RenderablePointCloud",
File = asset.resource("data/dummydata.csv"),
Coloring = {
ColorMapping = {
File = asset.resource("viridis.cmap")
}
},
SizeSettings = {
-- Here we set the exponent for the scale explicitly, to a value that
-- gives the points a suitable size based on their world-space coordinates
ScaleExponent = 6.5
}
},
GUI = {
Name = "Color Mapped",
Path = "/Example/Point Clouds",
Description = "Color mapped point cloud with fixed sizing"
}
}
-- Point cloud with fixed color and size scaling from a selected data column
local FixedColor_ScaleBasedOnData = {
Identifier = "ExamplePoints_ScaleFromData",
Parent = earthAsset.Earth.Identifier,
Transform = {
Rotation = {
Type = "StaticRotation",
Rotation = { 0, 0.5 * math.pi, 0 }
}
},
Renderable = {
Type = "RenderablePointCloud",
File = asset.resource("data/dummydata.csv"),
Coloring = {
FixedColor = { 0.5, 0.5, 0.0 }
},
SizeSettings = {
-- The options for the columns that the points can be scaled by. The first
-- alternative is chosen per default
SizeMapping = { "number_withNan", "a" },
-- Use a slightly smaller scale than above for the base size of the points
-- (will decide the size of the smallest point). That way, the points don't
-- become too big when scaled by the data parameter
ScaleExponent = 5
}
},
GUI = {
Name = "Fixed Color / Size From Data",
Path = "/Example/Point Clouds",
Description = [[Point cloud with a fixed color and sizing that can be set based on a
column in the dataset]]
}
}
-- Point cloud with textures. Textured points can also be color mapped, but here it
-- is disabled per default
local Textured = {
Identifier = "ExamplePoints_Textured",
Parent = earthAsset.Earth.Identifier,
Transform = {
Rotation = {
Type = "StaticRotation",
Rotation = { 0, math.pi, 0 }
}
},
Renderable = {
Type = "RenderablePointCloud",
File = asset.resource("data/dummydata.csv"),
-- The path to the texture file. Here we use openspace.absPath so that we can use
-- the ${DATA} token to get the path to a texture in the "OpenSpace/data" folder,
-- but for a file at a relative location it would also work to use asset.resource,
-- like for the data file above
Texture = openspace.absPath("${DATA}/test3.jpg"),
-- Disable additive blending, so that points will be rendered with their actual color
-- and overlapping points will be sorted by depth. This works best when the points
-- have an opacity of 1
UseAdditiveBlending = false,
Coloring = {
ColorMapping = {
-- Disable color map per default. When enabled, the texture color will be
-- multiplied with the color from the color map
Enabled = false,
File = asset.resource("viridis.cmap")
}
}
},
GUI = {
Name = "Textured",
Path = "/Example/Point Clouds",
Description = "Point cloud with a texture per point"
}
}
-- Point cloud with more advanced color mapping and fixed point sizing.
-- Here we have predefined a couple of parameters to use for the color mapping.
-- Also, missing/NaN values are mapped to a specific color.
-- Finally, no additive blending is used for the color, meaning that the color of
-- overlapping points will not be mixed/added
local ColorMappedAdvanced_NoBlend = {
Identifier = "ExamplePoints_ColorMappedNoBlend",
Parent = earthAsset.Earth.Identifier,
Transform = {
Rotation = {
Type = "StaticRotation",
Rotation = { 0, 0, math.pi }
}
},
Renderable = {
Type = "RenderablePointCloud",
File = asset.resource("data/dummydata.csv"),
UseAdditiveBlending = false, -- Disable additive blending
Coloring = {
ColorMapping = {
File = asset.resource("viridis.cmap"),
ParameterOptions = {
{ Key = "number_withNan" }, -- no range => compute min and max
{ Key = "normaldist_withMissing", Range = { -0.5, 0.5 } }
},
ShowMissingData = true,
NoDataColor = { 0.5, 0.5, 0.5, 1.0 }
}
},
SizeSettings = {
ScaleExponent = 6.5
}
},
GUI = {
Name = "Color Mapped (Advanced) - No blending",
Path = "/Example/Point Clouds",
Description = [[Color mapped point cloud without additive blending, with missing
values shown in grey, and a limited choice of parameter options to use for
the color mapping.]]
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(FixedColor_FixedSize)
openspace.addSceneGraphNode(FixedColor_MaxSize)
openspace.addSceneGraphNode(FixedColor_ScaleBasedOnData)
openspace.addSceneGraphNode(Textured)
openspace.addSceneGraphNode(ColorMapped_FixedSize)
openspace.addSceneGraphNode(ColorMappedAdvanced_NoBlend)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(ColorMappedAdvanced_NoBlend)
openspace.removeSceneGraphNode(ColorMapped_FixedSize)
openspace.removeSceneGraphNode(Textured)
openspace.removeSceneGraphNode(FixedColor_ScaleBasedOnData)
openspace.removeSceneGraphNode(FixedColor_MaxSize)
openspace.removeSceneGraphNode(FixedColor_FixedSize)
end)
asset.export(FixedColor_FixedSize)
asset.export(FixedColor_MaxSize)
asset.export(FixedColor_ScaleBasedOnData)
asset.export(Textured)
asset.export(ColorMapped_FixedSize)
asset.export(ColorMappedAdvanced_NoBlend)
asset.meta = {
Name = "Example - Point Clouds",
Version = "1.0",
Description = [[Examples of point clouds with a few different settings for sizing and
coloring]],
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -0,0 +1,78 @@
local earthAsset = asset.require("scene/solarsystem/planets/earth/earth")
local Example = {
Identifier = "ExamplePoints_ColorMapping",
Parent = earthAsset.Earth.Identifier,
Renderable = {
Type = "RenderablePointCloud",
File = asset.resource("data/dummydata.csv"),
Coloring = {
ColorMapping = {
File = asset.resource("viridis.cmap"),
-- Set the default choice of parameter and value range explicitly. Values
-- outside this range will be given special colors
Parameter = "normaldist_withMissing",
ValueRange = { -0.25, 0.25 },
-- Show missing data values, so we can show these in a specific color
ShowMissingData = true,
-- Color for missing data points
NoDataColor = { 1.0, 0.0, 0.0, 1.0 },
-- Color for point with values above the given range. If not set, or if
-- UseAboveRangeColor is false, the color will be set to the last value
-- in the color map (as per default)
AboveRangeColor = { 0.0, 1.0, 0.0, 1.0 },
-- Color for point with values below the given range. If not set, or if
-- UseAboveRangeColor is false, the color will be set to the first value
-- in the color map (as per default)
BelowRangeColor = { 0.0, 0.0, 1.0, 1.0 },
-- Some other parameters that can be set are the following (these are all the
-- default values):
-- If true, completely hide all values outside the range
HideValuesOutsideRange = false,
-- Toggle whether the above range color should be used
UseAboveRangeColor = true,
-- Toggle whether the below range color should be used
UseBelowRangeColor = true
}
},
SizeSettings = {
-- Reduce the size of the point a little bit so that they don't overlap so much
ScaleFactor = 0.5
}
},
GUI = {
Name = "Advanced Color Mapping Settings",
Path = "/Example/Point Clouds",
Description = [[Example of a point cloud where the range is set explicitly and
specific colors are used for values outside the range, as well as for missing
data values.]]
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Example)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Example)
end)
asset.export(Example)
asset.meta = {
Name = "Example - Advanced Color Mapping Settings",
Version = "1.0",
Description = [[Example of a point cloud where the range is set explicitly and
specific colors are used for values outside the range, as well as for missing
data values]],
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -0,0 +1,68 @@
local earthAsset = asset.require("scene/solarsystem/planets/earth/earth")
local Example = {
Identifier = "ExamplePoints_DataMapping",
Parent = earthAsset.Earth.Identifier,
Renderable = {
Type = "RenderablePointCloud",
File = asset.resource("data/dummydata.csv"),
DataMapping = {
-- Using the DataMapping, we can specify the X, Y and Z values of the point
-- positions to be set by any value in the dataset, without changing the dataset
-- used for the rendering
X = "a",
Y = "b",
Z = "a",
-- It is also possible to specify a numeric value that corresponds to missing
-- values in the dataset. These will be interpreted as NaN values
MissingDataValue = 29,
-- And some column that we do not want to include in the loading. Here we can for
-- example skip the regular position columns
ExcludeColumns = { "x", "y", "z" }
},
-- Interpret values as Parsec rather than meter. The values in the a and b columns
-- are much smaller than the x, y and z
Unit = "pc",
-- To show the values corresponding to missing values, use a color map and show
-- missing data values in a specific color
Coloring = {
ColorMapping = {
File = asset.resource("viridis.cmap"),
ShowMissingData = true,
NoDataColor = { 1.0, 0.0, 0.0, 1.0 }
}
},
},
GUI = {
Name = "Data Mapping",
Path = "/Example/Point Clouds",
Description = [[Example of a point cloud where the X, Y and Z position are mapped to
other columns in the dataset.]]
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Example)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Example)
end)
asset.export(Example)
asset.meta = {
Name = "Example - Point Cloud with Custom Data Mapping",
Version = "1.0",
Description = [[Example of a point cloud where the X, Y and Z position are mapped to
other columns in the dataset. The data mapping also includes some settings for
missing data values and columns to exclude when loading the dataset]],
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -0,0 +1,88 @@
local earthAsset = asset.require("scene/solarsystem/planets/earth/earth")
local EarthRadius = 6371000
local Example = {
Identifier = "ExamplePoints_Fading",
Parent = earthAsset.Earth.Identifier,
Renderable = {
Type = "RenderablePointCloud",
File = asset.resource("data/dummydata.csv"),
Coloring = {
FixedColor = { 0.0, 0.3, 1.0 }
},
Fading = {
-- Control at what distance the points fade in. The points will be invisible
-- when the camera is closer than the first value, and fully visible when the
-- camera is further away then the last value. In-between they will linearly
-- fade in or out
FadeInDistances = { 15.0 * EarthRadius, 35.0 * EarthRadius }
}
},
GUI = {
Name = "PointCloud - Fading",
Path = "/Example/Point Clouds",
Description = [[Example of a point cloud with distance-based fading (the points
are visible when the camera reaches a certain distance away from the origin)]]
}
}
local Example_Invert = {
Identifier = "ExamplePoints_FadingInverted",
Parent = earthAsset.Earth.Identifier,
-- Rotate so that the points don't overlap with the previous ones
Transform = {
Rotation = {
Type = "StaticRotation",
Rotation = { 0, math.pi, 0 }
}
},
Renderable = {
Type = "RenderablePointCloud",
File = asset.resource("data/dummydata.csv"),
Coloring = {
FixedColor = { 1.0, 0.3, 0.0 }
},
Fading = {
-- Use the same fade distances, but invert the fading so that the points are
-- visible when the camera is closer to the origin that the first value, and
-- invisible when further away than the last value
FadeInDistances = { 15.0 * EarthRadius, 35.0 * EarthRadius },
Invert = true
}
},
GUI = {
Name = "PointCloud - Fading (Inverted)",
Path = "/Example/Point Clouds",
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)]]
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Example)
openspace.addSceneGraphNode(Example_Invert)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Example_Invert)
openspace.removeSceneGraphNode(Example)
end)
asset.export(Example)
asset.export(Example_Invert)
asset.meta = {
Name = "Example - Point Cloud with Fading",
Version = "1.0",
Description = [[Example of a point cloud with distance-based fading]],
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -0,0 +1,98 @@
local earthAsset = asset.require("scene/solarsystem/planets/earth/earth")
-- @TODO The labels are not correctly oriented towards the camera!
local Example = {
Identifier = "ExamplePoints_UnitsAndLabels",
Parent = earthAsset.Earth.Identifier,
Renderable = {
Type = "RenderablePointCloud",
File = asset.resource("data/dummydata.csv"),
Coloring = {
FixedColor = { 0.3, 0.8, 0.3 }
},
DataMapping = {
-- When loading labels from a CSV file, we need to provide information about
-- which column corresponds to the name to be used for the labels (this is
-- not required for SPECK files)
Name = "number_withNan"
},
-- Add a unit to interpret the points to be in kilometers rather than meters
Unit = "Km",
-- Add some labels. We also need to enable them for them to be visible.
-- Since we do not specify a label file (see below), the positions and text of
-- of the labels will be set based on the information in the CSV file
Labels = {
Enabled = true,
Size = 7.5
}
},
GUI = {
Name = "Units & Labels",
Path = "/Example/Point Clouds",
Description = [[Example of a point cloud with labels created by specifying a 'Name'
column for the dataset. The positions of the labels will exactly match that of the
points]]
}
}
local Example_LabelFromFile = {
Identifier = "ExamplePoints_UnitsAndLabels_File",
Parent = earthAsset.Earth.Identifier,
-- Rotate to not overlap with the other dataset
Transform = {
Rotation = {
Type = "StaticRotation",
Rotation = { 0, 0, -0.5 * math.pi }
}
},
Renderable = {
Type = "RenderablePointCloud",
File = asset.resource("data/dummydata.csv"),
Coloring = {
FixedColor = { 0.0, 0.3, 1.0 }
},
-- Add a unit to interpret the points to be in kilometers rather than meters
Unit = "Km",
-- Also load a label file with the positions of the label (in this case they are the
-- same as in the CSV file, but that is not always the case)
Labels = {
Enabled = true,
File = asset.resource("data/dummydata.label"),
Size = 7.5,
-- When we add an explicit label file we also have to specify the unit, if it is
-- different than meters
Unit = "Km"
}
},
GUI = {
Name = "Units & Labels (Explicit Label file)",
Path = "/Example/Point Clouds",
Description = [[Example of a point cloud with labels, created from a label file]]
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Example)
openspace.addSceneGraphNode(Example_LabelFromFile)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Example_LabelFromFile)
openspace.removeSceneGraphNode(Example)
end)
asset.export(Example)
asset.export(Example_LabelFromFile)
asset.meta = {
Name = "Example - Point Cloud with Unit and Labels",
Version = "1.0",
Description = [[Example of point clouds with labels, either set from the data file
itself or from a separate .label file]],
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -0,0 +1,45 @@
local Example = {
Identifier = "ExamplePoints_Polygon",
Renderable = {
Type = "RenderablePolygonCloud",
File = asset.resource("data/dummydata.csv"),
Coloring = {
FixedColor = { 0.8, 0.0, 0.0 }
},
-- Specify the number of sides for the polygon. 3 = triangle, 4 = square,
-- 5 = pentagon, 6 = hexagon, and so on
PolygonSides = 6,
-- Scale up the dataset, so that it is interpreted in Kilometers instead of meters,
-- for increased visiblity
Unit = "Km"
},
GUI = {
Name = "Polygon Cloud",
Path = "/Example/Point Clouds",
Description = [[Example of a polygon cloud, which is a point cloud where a uniform
polygon is used for the shape of the points]]
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(Example)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Example)
end)
asset.export(Example)
asset.meta = {
Name = "Example - Polygon Cloud",
Version = "1.0",
Description = [[Example of a polygon cloud, which is a point cloud where a uniform
polygon is used for the shape of the points]],
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -0,0 +1,258 @@
# Viridis Color map
256
0.267004 0.004874 0.329415 1.000000
0.268510 0.009605 0.335427 1.000000
0.269944 0.014625 0.341379 1.000000
0.271305 0.019942 0.347269 1.000000
0.272594 0.025563 0.353093 1.000000
0.273809 0.031497 0.358853 1.000000
0.274952 0.037752 0.364543 1.000000
0.276022 0.044167 0.370164 1.000000
0.277018 0.050344 0.375715 1.000000
0.277941 0.056324 0.381191 1.000000
0.278791 0.062145 0.386592 1.000000
0.279566 0.067836 0.391917 1.000000
0.280267 0.073417 0.397163 1.000000
0.280894 0.078907 0.402329 1.000000
0.281446 0.084320 0.407414 1.000000
0.281924 0.089666 0.412415 1.000000
0.282327 0.094955 0.417331 1.000000
0.282656 0.100196 0.422160 1.000000
0.282910 0.105393 0.426902 1.000000
0.283091 0.110553 0.431554 1.000000
0.283197 0.115680 0.436115 1.000000
0.283229 0.120777 0.440584 1.000000
0.283187 0.125848 0.444960 1.000000
0.283072 0.130895 0.449241 1.000000
0.282884 0.135920 0.453427 1.000000
0.282623 0.140926 0.457517 1.000000
0.282290 0.145912 0.461510 1.000000
0.281887 0.150881 0.465405 1.000000
0.281412 0.155834 0.469201 1.000000
0.280868 0.160771 0.472899 1.000000
0.280255 0.165693 0.476498 1.000000
0.279574 0.170599 0.479997 1.000000
0.278826 0.175490 0.483397 1.000000
0.278012 0.180367 0.486697 1.000000
0.277134 0.185228 0.489898 1.000000
0.276194 0.190074 0.493001 1.000000
0.275191 0.194905 0.496005 1.000000
0.274128 0.199721 0.498911 1.000000
0.273006 0.204520 0.501721 1.000000
0.271828 0.209303 0.504434 1.000000
0.270595 0.214069 0.507052 1.000000
0.269308 0.218818 0.509577 1.000000
0.267968 0.223549 0.512008 1.000000
0.266580 0.228262 0.514349 1.000000
0.265145 0.232956 0.516599 1.000000
0.263663 0.237631 0.518762 1.000000
0.262138 0.242286 0.520837 1.000000
0.260571 0.246922 0.522828 1.000000
0.258965 0.251537 0.524736 1.000000
0.257322 0.256130 0.526563 1.000000
0.255645 0.260703 0.528312 1.000000
0.253935 0.265254 0.529983 1.000000
0.252194 0.269783 0.531579 1.000000
0.250425 0.274290 0.533103 1.000000
0.248629 0.278775 0.534556 1.000000
0.246811 0.283237 0.535941 1.000000
0.244972 0.287675 0.537260 1.000000
0.243113 0.292092 0.538516 1.000000
0.241237 0.296485 0.539709 1.000000
0.239346 0.300855 0.540844 1.000000
0.237441 0.305202 0.541921 1.000000
0.235526 0.309527 0.542944 1.000000
0.233603 0.313828 0.543914 1.000000
0.231674 0.318106 0.544834 1.000000
0.229739 0.322361 0.545706 1.000000
0.227802 0.326594 0.546532 1.000000
0.225863 0.330805 0.547314 1.000000
0.223925 0.334994 0.548053 1.000000
0.221989 0.339161 0.548752 1.000000
0.220057 0.343307 0.549413 1.000000
0.218130 0.347432 0.550038 1.000000
0.216210 0.351535 0.550627 1.000000
0.214298 0.355619 0.551184 1.000000
0.212395 0.359683 0.551710 1.000000
0.210503 0.363727 0.552206 1.000000
0.208623 0.367752 0.552675 1.000000
0.206756 0.371758 0.553117 1.000000
0.204903 0.375746 0.553533 1.000000
0.203063 0.379716 0.553925 1.000000
0.201239 0.383670 0.554294 1.000000
0.199430 0.387607 0.554642 1.000000
0.197636 0.391528 0.554969 1.000000
0.195860 0.395433 0.555276 1.000000
0.194100 0.399323 0.555565 1.000000
0.192357 0.403199 0.555836 1.000000
0.190631 0.407061 0.556089 1.000000
0.188923 0.410910 0.556326 1.000000
0.187231 0.414746 0.556547 1.000000
0.185556 0.418570 0.556753 1.000000
0.183898 0.422383 0.556944 1.000000
0.182256 0.426184 0.557120 1.000000
0.180629 0.429975 0.557282 1.000000
0.179019 0.433756 0.557430 1.000000
0.177423 0.437527 0.557565 1.000000
0.175841 0.441290 0.557685 1.000000
0.174274 0.445044 0.557792 1.000000
0.172719 0.448791 0.557885 1.000000
0.171176 0.452530 0.557965 1.000000
0.169646 0.456262 0.558030 1.000000
0.168126 0.459988 0.558082 1.000000
0.166617 0.463708 0.558119 1.000000
0.165117 0.467423 0.558141 1.000000
0.163625 0.471133 0.558148 1.000000
0.162142 0.474838 0.558140 1.000000
0.160665 0.478540 0.558115 1.000000
0.159194 0.482237 0.558073 1.000000
0.157729 0.485932 0.558013 1.000000
0.156270 0.489624 0.557936 1.000000
0.154815 0.493313 0.557840 1.000000
0.153364 0.497000 0.557724 1.000000
0.151918 0.500685 0.557587 1.000000
0.150476 0.504369 0.557430 1.000000
0.149039 0.508051 0.557250 1.000000
0.147607 0.511733 0.557049 1.000000
0.146180 0.515413 0.556823 1.000000
0.144759 0.519093 0.556572 1.000000
0.143343 0.522773 0.556295 1.000000
0.141935 0.526453 0.555991 1.000000
0.140536 0.530132 0.555659 1.000000
0.139147 0.533812 0.555298 1.000000
0.137770 0.537492 0.554906 1.000000
0.136408 0.541173 0.554483 1.000000
0.135066 0.544853 0.554029 1.000000
0.133743 0.548535 0.553541 1.000000
0.132444 0.552216 0.553018 1.000000
0.131172 0.555899 0.552459 1.000000
0.129933 0.559582 0.551864 1.000000
0.128729 0.563265 0.551229 1.000000
0.127568 0.566949 0.550556 1.000000
0.126453 0.570633 0.549841 1.000000
0.125394 0.574318 0.549086 1.000000
0.124395 0.578002 0.548287 1.000000
0.123463 0.581687 0.547445 1.000000
0.122606 0.585371 0.546557 1.000000
0.121831 0.589055 0.545623 1.000000
0.121148 0.592739 0.544641 1.000000
0.120565 0.596422 0.543611 1.000000
0.120092 0.600104 0.542530 1.000000
0.119738 0.603785 0.541400 1.000000
0.119512 0.607464 0.540218 1.000000
0.119423 0.611141 0.538982 1.000000
0.119483 0.614817 0.537692 1.000000
0.119699 0.618490 0.536347 1.000000
0.120081 0.622161 0.534946 1.000000
0.120638 0.625828 0.533488 1.000000
0.121380 0.629492 0.531973 1.000000
0.122312 0.633153 0.530398 1.000000
0.123444 0.636809 0.528763 1.000000
0.124780 0.640461 0.527068 1.000000
0.126326 0.644107 0.525311 1.000000
0.128087 0.647749 0.523491 1.000000
0.130067 0.651384 0.521608 1.000000
0.132268 0.655014 0.519661 1.000000
0.134692 0.658636 0.517649 1.000000
0.137339 0.662252 0.515571 1.000000
0.140210 0.665859 0.513427 1.000000
0.143303 0.669459 0.511215 1.000000
0.146616 0.673050 0.508936 1.000000
0.150148 0.676631 0.506589 1.000000
0.153894 0.680203 0.504172 1.000000
0.157851 0.683765 0.501686 1.000000
0.162016 0.687316 0.499129 1.000000
0.166383 0.690856 0.496502 1.000000
0.170948 0.694384 0.493803 1.000000
0.175707 0.697900 0.491033 1.000000
0.180653 0.701402 0.488189 1.000000
0.185783 0.704891 0.485273 1.000000
0.191090 0.708366 0.482284 1.000000
0.196571 0.711827 0.479221 1.000000
0.202219 0.715272 0.476084 1.000000
0.208030 0.718701 0.472873 1.000000
0.214000 0.722114 0.469588 1.000000
0.220124 0.725509 0.466226 1.000000
0.226397 0.728888 0.462789 1.000000
0.232815 0.732247 0.459277 1.000000
0.239374 0.735588 0.455688 1.000000
0.246070 0.738910 0.452024 1.000000
0.252899 0.742211 0.448284 1.000000
0.259857 0.745492 0.444467 1.000000
0.266941 0.748751 0.440573 1.000000
0.274149 0.751988 0.436601 1.000000
0.281477 0.755203 0.432552 1.000000
0.288921 0.758394 0.428426 1.000000
0.296479 0.761561 0.424223 1.000000
0.304148 0.764704 0.419943 1.000000
0.311925 0.767822 0.415586 1.000000
0.319809 0.770914 0.411152 1.000000
0.327796 0.773980 0.406640 1.000000
0.335885 0.777018 0.402049 1.000000
0.344074 0.780029 0.397381 1.000000
0.352360 0.783011 0.392636 1.000000
0.360741 0.785964 0.387814 1.000000
0.369214 0.788888 0.382914 1.000000
0.377779 0.791781 0.377939 1.000000
0.386433 0.794644 0.372886 1.000000
0.395174 0.797475 0.367757 1.000000
0.404001 0.800275 0.362552 1.000000
0.412913 0.803041 0.357269 1.000000
0.421908 0.805774 0.351910 1.000000
0.430983 0.808473 0.346476 1.000000
0.440137 0.811138 0.340967 1.000000
0.449368 0.813768 0.335384 1.000000
0.458674 0.816363 0.329727 1.000000
0.468053 0.818921 0.323998 1.000000
0.477504 0.821444 0.318195 1.000000
0.487026 0.823929 0.312321 1.000000
0.496615 0.826376 0.306377 1.000000
0.506271 0.828786 0.300362 1.000000
0.515992 0.831158 0.294279 1.000000
0.525776 0.833491 0.288127 1.000000
0.535621 0.835785 0.281908 1.000000
0.545524 0.838039 0.275626 1.000000
0.555484 0.840254 0.269281 1.000000
0.565498 0.842430 0.262877 1.000000
0.575563 0.844566 0.256415 1.000000
0.585678 0.846661 0.249897 1.000000
0.595839 0.848717 0.243329 1.000000
0.606045 0.850733 0.236712 1.000000
0.616293 0.852709 0.230052 1.000000
0.626579 0.854645 0.223353 1.000000
0.636902 0.856542 0.216620 1.000000
0.647257 0.858400 0.209861 1.000000
0.657642 0.860219 0.203082 1.000000
0.668054 0.861999 0.196293 1.000000
0.678489 0.863742 0.189503 1.000000
0.688944 0.865448 0.182725 1.000000
0.699415 0.867117 0.175971 1.000000
0.709898 0.868751 0.169257 1.000000
0.720391 0.870350 0.162603 1.000000
0.730889 0.871916 0.156029 1.000000
0.741388 0.873449 0.149561 1.000000
0.751884 0.874951 0.143228 1.000000
0.762373 0.876424 0.137064 1.000000
0.772852 0.877868 0.131109 1.000000
0.783315 0.879285 0.125405 1.000000
0.793760 0.880678 0.120005 1.000000
0.804182 0.882046 0.114965 1.000000
0.814576 0.883393 0.110347 1.000000
0.824940 0.884720 0.106217 1.000000
0.835270 0.886029 0.102646 1.000000
0.845561 0.887322 0.099702 1.000000
0.855810 0.888601 0.097452 1.000000
0.866013 0.889868 0.095953 1.000000
0.876168 0.891125 0.095250 1.000000
0.886271 0.892374 0.095374 1.000000
0.896320 0.893616 0.096335 1.000000
0.906311 0.894855 0.098125 1.000000
0.916242 0.896091 0.100717 1.000000
0.926106 0.897330 0.104071 1.000000
0.935904 0.898570 0.108131 1.000000
0.945636 0.899815 0.112838 1.000000
0.955300 0.901065 0.118128 1.000000
0.964894 0.902323 0.123941 1.000000
0.974417 0.903590 0.130215 1.000000
0.983868 0.904867 0.136897 1.000000
0.993248 0.906157 0.143936 1.000000

View File

@@ -9,26 +9,33 @@ local speck = asset.resource({
Name = "2dF Speck Files",
Type = "HttpSynchronization",
Identifier = "digitaluniverse_2dF_speck",
Version = 2
Version = 3
})
local Object = {
Identifier = "2dF",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePointCloud",
Enabled = false,
Color = { 1.0, 1.0, 1.0 },
Opacity = 1.0,
File = speck .. "2dF.speck",
Unit = "Mpc",
Texture = textures .. "point3A.png",
ColorMap = speck .. "2dF.cmap",
ColorOption = { "redshift", "proximity" },
ColorRange = { { 0.0, 0.075 }, { 1.0, 25.0 } },
ScaleFactor = 520.0,
BillboardMinMaxSize = { 0.0, 4.7 },
EnablePixelSizeControl = true
Coloring = {
ColorMapping = {
File = speck .. "2dF.cmap",
ParameterOptions = {
{ Key = "proximity", Range = { 1.0, 25.0 } },
{ Key = "redshift", Range = { 0.0, 0.075 } }
}
}
},
SizeSettings = {
ScaleExponent = 22.6,
MaxSize = 0.2,
EnableMaxSizeControl = true
}
},
GUI = {
Name = "2dF Galaxies",
@@ -64,7 +71,7 @@ asset.export(Object)
asset.meta = {
Name = "2dF Galaxies",
Version = "2.1",
Version = "3.0",
Description = "Digital Universe asset for the The Two-degree Field (2dF) Survey",
Author = "Brian Abbott (AMNH), Eric Gawiser (Rutgers U)",
URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe",

View File

@@ -9,28 +9,34 @@ local speck = asset.resource({
Name = "2MASS Speck Files",
Type = "HttpSynchronization",
Identifier = "digitaluniverse_2mass_speck",
Version = 1
Version = 2
})
local Object = {
Identifier = "2MASS",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePointCloud",
Enabled = false,
Color = { 1.0, 0.4, 0.2 },
Opacity = 1.0,
File = speck .. "2MASS.speck",
Unit = "Mpc",
Texture = textures .. "point3A.png",
ColorMap = speck .. "lss.cmap",
ColorOption = { "redshift", "prox5Mpc" },
ColorRange = { { 0.0, 0.075 }, { 1.0, 50.0 } },
CorrectionSizeEndDistance = 20.6,
CorrectionSizeFactor = 15.0,
ScaleFactor = 510.78,
BillboardMinMaxSize = { 0.0, 11.15 },
EnablePixelSizeControl = true
Coloring = {
FixedColor = { 1.0, 0.4, 0.2 },
ColorMapping = {
File = speck .. "lss.cmap",
ParameterOptions = {
{ Key = "prox5Mpc", Range = { 1.0, 50.0 } },
{ Key = "redshift", Range = { 0.0, 0.075 } }
}
}
},
SizeSettings = {
ScaleExponent = 22.2,
MaxSize = 0.44,
EnableMaxSizeControl = true
}
},
GUI = {
Name = "2MASS Galaxies",
@@ -60,7 +66,7 @@ asset.export(Object)
asset.meta = {
Name = "2MASS Galaxies",
Version = "1.1",
Version = "2.0",
Description = "Digital Universe asset for the Two Micron All-Sky Survey (2MASS) survey",
Author = "Brian Abbott (AMNH)",
URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe",

View File

@@ -9,26 +9,34 @@ local speck = asset.resource({
Name = "6dF Speck Files",
Type = "HttpSynchronization",
Identifier = "digitaluniverse_6dF_speck",
Version = 2
Version = 3
})
local Object = {
Identifier = "6dF",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePointCloud",
Enabled = false,
Color = { 1.0, 1.0, 0.0 },
Opacity = 1.0,
File = speck .. "6dF.speck",
Unit = "Mpc",
Texture = textures .. "point3A.png",
ColorMap = speck .. "6dF.cmap",
ColorOption = { "redshift", "proximity" },
ColorRange = { { 0.0, 0.075 }, { 1.0, 10.0 } },
ScaleFactor = 534.0,
BillboardMinMaxSize = { 0.0, 9.0 },
EnablePixelSizeControl = true
Coloring = {
FixedColor = { 1.0, 1.0, 0.0 },
ColorMapping = {
File = speck .. "6dF.cmap",
ParameterOptions = {
{ Key = "proximity", Range = { 1.0, 10.0 } },
{ Key = "redshift", Range = { 0.0, 0.075 } }
}
}
},
SizeSettings = {
ScaleExponent = 22.5,
MaxSize = 0.2,
EnableMaxSizeControl = true
}
},
GUI = {
Name = "6dF Galaxies",
@@ -62,7 +70,7 @@ asset.export(Object)
asset.meta = {
Name = "6dF Galaxies",
Version = "2.1",
Version = "3.0",
Description = "Digital Universe asset for The Six-degree Field (6dF) Galaxy Survey",
Author = "Brian Abbott (AMNH)",
URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe",

View File

@@ -9,7 +9,7 @@ local speck = asset.resource({
Name = "Abell Speck Files",
Type = "HttpSynchronization",
Identifier = "digitaluniverse_abell_speck",
Version = 2
Version = 3
})
@@ -23,7 +23,7 @@ local TransformMatrix = {
local Object = {
Identifier = "Abell",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePointCloud",
Enabled = false,
Labels = {
File = speck .. "abell.label",
@@ -34,16 +34,20 @@ local Object = {
Unit = "Mpc",
TransformationMatrix = TransformMatrix
},
Color = { 1.0, 0.4, 0.2 },
Opacity = 1.0,
--ColorMap = speck .. "abell.cmap",
Coloring = {
FixedColor = { 1.0, 0.4, 0.2 },
--ColorMap = speck .. "abell.cmap", -- TODO: Decide whether to add
},
File = speck .. "abell.speck",
Texture = textures .. "point3A.png",
Unit = "Mpc",
TransformationMatrix = TransformMatrix,
ScaleFactor = 520.0,
BillboardMinMaxSize = { 0.0, 7.0 },
EnablePixelSizeControl = true
SizeSettings = {
ScaleExponent = 22.6,
MaxSize = 0.27,
EnableMaxSizeControl = true
}
},
GUI = {
Name = "Abell Galaxy Clusters",
@@ -78,7 +82,7 @@ asset.export(Object)
asset.meta = {
Name = "Abell Galaxy Clusters",
Version = "2.1",
Version = "3.0",
Description = "Digital Universe asset for The Abell catalog",
Author = "Stuart Levy (NCSA/UIUC), Brian Abbott (AMNH)",
URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe",

View File

@@ -9,7 +9,7 @@ local speck = asset.resource({
local Object = {
Identifier = "StarLabelsAlternate",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePointCloud",
Enabled = false,
Labels = {
Enabled = true,
@@ -19,7 +19,6 @@ local Object = {
MinMaxSize = { 6, 20 },
Unit = "pc"
},
Color = { 1.0, 1.0, 1.0 },
Opacity = 0.65,
Unit = "pc"
},
@@ -51,7 +50,7 @@ asset.export(Object)
asset.meta = {
Name = "Stars Labels - Alternate",
Version = "1.1",
Version = "2.0",
Description = "Digital Universe asset for alternate start labels",
Author = "Brian Abbott (AMNH)",
URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe",

View File

@@ -16,7 +16,7 @@ local TransformMatrix = {
local Object = {
Identifier = "GalaxyClusterLabels",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePointCloud",
Enabled = false,
Labels = {
Enabled = true,
@@ -27,7 +27,6 @@ local Object = {
Unit = "Mpc",
TransformationMatrix = TransformMatrix
},
Color = { 1.0, 1.0, 1.0 },
Opacity = 0.65,
Unit = "Mpc",
TransformationMatrix = TransformMatrix
@@ -58,7 +57,7 @@ asset.export(Object)
asset.meta = {
Name = "Galaxy Clusters Labels",
Version = "1.1",
Version = "2.0",
Description = "Digital Universe asset for Galaxy Clusters",
Author = "Brian Abbott (AMNH)",
URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe",

View File

@@ -16,7 +16,7 @@ local speck = asset.resource({
local DeepSkyObjects = {
Identifier = "DeepSkyObjects",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePointCloud",
Enabled = false,
Labels = {
File = speck .. "dso.label",
@@ -25,22 +25,19 @@ local DeepSkyObjects = {
MinMaxSize = { 16, 20 },
Unit = "pc"
},
Color = { 1.0, 1.0, 0.0 },
Opacity = 0.99,
ScaleFactor = 500.0,
Coloring = {
FixedColor = { 1.0, 1.0, 0.0 }
},
File = speck .. "dso.speck",
Texture = textures .. "point3.png",
--ColorMap = speck .. "tully.cmap",
--ColorMap = speck .. "lss.cmap",
--ColorOption = { "proximity" },
--ColorOption = { "prox5Mpc" },
--ColorRange = { { 1.0, 30.0 } },
Unit = "pc",
--FadeInDistances = { 0.05, 1.0 }, -- Fade in value in the same unit as "Unit"
BillboardMinMaxSize = { 0.0, 8.22 }, -- in pixels
--CorrectionSizeEndDistance = 22.0,
--CorrectionSizeFactor = 10.45
EnablePixelSizeControl = true
SizeSettings = {
ScaleExponent = 21.7,
MaxSize = 0.32,
EnableMaxSizeControl = true
}
},
Transform = {
Rotation = {
@@ -112,7 +109,7 @@ asset.export(DeepSkyObjectsImages)
asset.meta = {
Name = "Deep Sky Objects Images",
Version = "1.1",
Version = "2.0",
Description = "Digital Universe asset for Deep Sky Objects and their Images",
Author = "Nate Greenstein, Matt Everhart, Brian Abbott (AMNH)",
URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe",

View File

@@ -9,14 +9,14 @@ local speck = asset.resource({
Name = "Brown Dwarf Speck Files",
Type = "HttpSynchronization",
Identifier = "digitaluniverse_dwarfs_speck",
Version = 2
Version = 3
})
local Object = {
Identifier = "Dwarfs",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePointCloud",
Enabled = false,
Labels = {
File = speck .. "dwarfs.label",
@@ -25,19 +25,24 @@ local Object = {
MinMaxSize = { 10, 20 },
Unit = "pc"
},
Color = { 0.4, 0.0, 0.1 },
Opacity = 1.0,
File = speck .. "dwarfs.speck",
Texture = textures .. "point3.png",
Unit = "pc",
ColorMap = speck .. "dwarfs.cmap",
ColorOption = { "typeindex" },
--ColorRange = { { 1.0, 4.0} },
ScaleFactor = 372.1,
--CorrectionSizeEndDistance = 16.1,
--CorrectionSizeFactor = 7.75,
BillboardMinMaxSize = { 0.0, 20.0 },
EnablePixelSizeControl = true
Coloring = {
FixedColor = { 0.4, 0.0, 0.1 },
ColorMapping = {
File = speck .. "dwarfs.cmap",
ParameterOptions = {
{ Key = "typeindex", Range = { 1.0, 4.0 } }
}
}
},
SizeSettings = {
ScaleExponent = 16.2,
MaxSize = 0.7,
EnableMaxSizeControl = true
}
},
GUI = {
Name = "Brown Dwarfs",
@@ -77,7 +82,7 @@ asset.export(Object)
asset.meta = {
Name = "Brown Dwarfs",
Version = "2.1",
Version = "3.0",
Description = "Digital Universe asset for Brown Dwarfs",
Author = "Brian Abbott (AMNH)",
URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe",

View File

@@ -16,7 +16,7 @@ local speck = asset.resource({
local Object = {
Identifier = "Exoplanets",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePointCloud",
Enabled = false,
Labels = {
File = speck .. "expl.label",
@@ -25,16 +25,15 @@ local Object = {
MinMaxSize = { 10, 100 },
Unit = "pc"
},
Color = { 1.0, 1.0, 1.0 },
Opacity = 1.0,
Texture = textures .. "target-blue.png",
File = speck .. "expl.speck",
Unit = "pc",
ScaleFactor = 388.67923,
CorrectionSizeEndDistance = 15.23,
CorrectionSizeFactor = 13.3,
BillboardMinMaxSize = { 0.0, 75.0 },
EnablePixelSizeControl = true
SizeSettings = {
ScaleExponent = 16.9,
MaxSize = 2.8,
EnableMaxSizeControl = true
}
},
GUI = {
Name = "Exoplanets",
@@ -64,7 +63,7 @@ asset.export(Object)
asset.meta = {
Name = "Exoplanets",
Version = "1.1",
Version = "2.0",
Description = "Digital Universe asset for Exoplanets",
Author = "Brian Abbott (AMNH)",
URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe",

View File

@@ -16,18 +16,20 @@ local speck = asset.resource({
local Object = {
Identifier = "PlanetaryCandidates",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePointCloud",
Enabled = false,
Color = { 1.0, 1.0, 0.0 },
Opacity = 0.99,
ScaleFactor = 410.0,
File = speck .. "exoplanet_candidates.speck",
Unit = "pc",
Texture = textures .. "halo.png",
CorrectionSizeEndDistance = 15.86,
CorrectionSizeFactor = 8.59,
BillboardMinMaxSize = { 0.0, 30.0 },
EnablePixelSizeControl = true
Coloring = {
FixedColor = { 1.0, 1.0, 0.0 }
},
SizeSettings = {
ScaleExponent = 17.8,
MaxSize = 1.0,
EnableMaxSizeControl = true
}
},
GUI = {
Name = "Planetary Candidates",
@@ -60,7 +62,7 @@ asset.export(Object)
asset.meta = {
Name = "Planetary Candidates",
Version = "2.1",
Version = "3.0",
Description = "Digital Universe asset for Planetary Candidates",
Author = "Brian Abbott, Emily Rice, and Jason No (AMNH)",
URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe",

View File

@@ -16,7 +16,7 @@ local speck = asset.resource({
local Object = {
Identifier = "GlobularClusters",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePolygonCloud",
Enabled = false,
Labels = {
File = speck .. "gc.label",
@@ -25,15 +25,18 @@ local Object = {
MinMaxSize = { 4, 20 },
Unit = "pc"
},
Color = { 0.8, 0.8, 0.0 },
Coloring = {
FixedColor = { 0.8, 0.8, 0.0 }
},
Opacity = 0.4,
File = speck .. "gc.speck",
Texture = textures .. "point4.png",
PolygonSides = 5,
Unit = "pc",
ScaleFactor = 431.0,
BillboardMinMaxSize = { 0.0, 500.0 },
EnablePixelSizeControl = true
SizeSettings = {
ScaleExponent = 18.9,
MaxSize = 13.0,
EnableMaxSizeControl = true
}
},
GUI = {
Name = "Globular Clusters",
@@ -69,7 +72,7 @@ asset.export(Object)
asset.meta = {
Name = "Globular Clusters",
Version = "2.1",
Version = "3.0",
Description = [[Census: 157 globular clusters. DU Version 2.6. Globular star clusters
are gravitationally bound groups of 100,000 to 1 million stars. They are compact,
spherical "balls" of stars with very high stellar densities in their centers (stars

View File

@@ -126,7 +126,7 @@ local EclipticSphereLabels = {
Identifier = "EclipticSphereLabels",
Parent = transforms.SolarSystemBarycenter.Name,
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePointCloud",
Enabled = false,
Labels = {
Enabled = true,
@@ -137,7 +137,6 @@ local EclipticSphereLabels = {
Unit = "pc",
TransformationMatrix = EclipticTransformationMatrix
},
Color = { 1.0, 1.0, 1.0 },
Opacity = 0.65,
Unit = "pc",
TransformationMatrix = EclipticTransformationMatrix
@@ -178,7 +177,7 @@ local EquatorialSphereLabels = {
Identifier = "EquatorialSphereLabels",
Parent = transforms.SolarSystemBarycenter.Name,
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePointCloud",
Enabled = false,
Labels = {
Enabled = true,
@@ -189,7 +188,6 @@ local EquatorialSphereLabels = {
Unit = "pc",
TransformationMatrix = EquatorialTransformationMatrix
},
Color = { 1.0, 1.0, 1.0 },
Opacity = 0.65,
Unit = "pc",
TransformationMatrix = EquatorialTransformationMatrix
@@ -226,7 +224,7 @@ local GalacticSphereLabels = {
Identifier = "GalacticSphereLabels",
Parent = transforms.SolarSystemBarycenter.Name,
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePointCloud",
Enabled = false,
Labels = {
Enabled = true,
@@ -236,7 +234,6 @@ local GalacticSphereLabels = {
MinMaxSize = { 1, 100 },
Unit = "pc"
},
Color = { 1.0, 1.0, 1.0 },
Opacity = 0.65,
Unit = "pc"
},
@@ -699,7 +696,7 @@ asset.export(Plane20Gly)
asset.meta = {
Name = "Grids",
Version = "2.1",
Version = "3.0",
Description = [[Various grids for showing size reference. Included: 10,000 light year
grid, 10 light year grid, 20 billion light year grid, 10 million light year grid,
100 light year grid, 100 million light year grid, Ecliptic Coordinate Sphere

View File

@@ -16,7 +16,7 @@ local TransformMatrix = {
local Object = {
Identifier = "NearbyGalaxyGroups",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePointCloud",
Enabled = false,
Labels = {
Enabled = true,
@@ -27,9 +27,7 @@ local Object = {
Unit = "Mpc",
TransformationMatrix = TransformMatrix
},
Color = { 1.0, 1.0, 1.0 },
Opacity = 0.65,
--ScaleFactor = 10.0,
Unit = "Mpc",
TransformationMatrix = TransformMatrix
},
@@ -58,7 +56,7 @@ asset.export(Object)
asset.meta = {
Name = "Galaxy Group Labels",
Version = "1.1",
Version = "2.0",
Author = "Brian Abbott (AMNH)",
Description = "Digital Universe asset for Galaxy Groups",
URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe",

View File

@@ -16,7 +16,7 @@ local speck = asset.resource({
local Object = {
Identifier = "HIIRegions",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePolygonCloud",
Enabled = false,
Labels = {
File = speck .. "h2.label",
@@ -25,15 +25,18 @@ local Object = {
MinMaxSize = { 4, 20 },
Unit = "pc"
},
Color = { 0.0, 0.5, 1.0 },
Coloring = {
FixedColor = { 0.0, 0.5, 1.0 }
},
Opacity = 0.70,
File = speck .. "h2.speck",
Texture = textures .. "point4.png",
PolygonSides = 6,
Unit = "pc",
ScaleFactor = 420.0,
BillboardMinMaxSize = { 0.0, 300.0 },
EnablePixelSizeControl = false
SizeSettings = {
ScaleExponent = 18.24,
MaxSize = 8.0,
EnableMaxSizeControl = true
}
},
GUI = {
Name = "HII Regions",
@@ -67,7 +70,7 @@ asset.export(Object)
asset.meta = {
Name = "HII Regions",
Version = "1.1",
Version = "2.0",
Description = "Digital Universe asset for HII Regions",
Author = "Carter Emmart, Brian Abbott (AMNH)",
URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe",

View File

@@ -23,19 +23,24 @@ local ColorMap = asset.resource({
local Object = {
Identifier = "HubbleDeepField",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePointCloud",
Enabled = false,
Color = { 1.0, 1.0, 1.0 },
Opacity = 1.0,
File = HUDFSpeck .. "hudf.speck",
Texture = circle .. "circle.png",
ColorMap = ColorMap .. "hudf.cmap",
ColorOption = { "redshift", "proximity" },
ColorRange = { { 0.0, 0.075 }, { 1.0, 25.0 } },
Coloring = {
ColorMapping = {
File = ColorMap .. "hudf.cmap",
ParameterOptions = {
{ Key = "proximity", Range = { 1.0, 25.0 } },
{ Key = "redshift", Range = { 0.0, 0.075 } }
}
}
},
Unit = "Mpc",
ScaleFactor = 505.0,
BillboardMaxSize = 4.7,
EnablePixelSizeControl = true
SizeSettings = {
ScaleExponent = 21.9
}
},
GUI = {
Name = "Hubble Deep Field",
@@ -62,7 +67,7 @@ asset.export(Object)
asset.meta = {
Name = "Hubble Ultra Deep Field",
Version = "1.2",
Version = "2.0",
Description = "Hubble Ultra Deep Field galaxy survey",
Author = "Frank Summers (STScI), Brian Abbott (AMNH)",
URL = "http://www.haydenplanetarium.org/universe",

View File

@@ -16,7 +16,7 @@ local speck = asset.resource({
local Object = {
Identifier = "LocalDwarfGalaxies",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePolygonCloud",
Enabled = false,
Labels = {
File = speck .. "localgroup.label",
@@ -25,17 +25,29 @@ local Object = {
MinMaxSize = { 7, 20 },
Unit = "Mpc"
},
Color = { 0.5, 1.0, 0.2 },
ColorMap = speck .. "localgroup.cmap",
ColorOption = { "association" },
Coloring = {
FixedColor = { 0.0, 1.0, 0.0 },
-- @TODO: This one wasn't actually properly used before the point cloud update.
-- All points were mapped to green. Decide if we want it around.
-- @TODO: Also, the cmap is currently not applied correctly, due to speck file
-- not being read properly (it inlcudes more information than just datavar-s).
-- This should be adressed. (2023-12-13, emmbr)
ColorMapping = {
File = speck .. "localgroup.cmap",
ParameterOptions = {
{ Key = "association" }
}
}
},
Opacity = 0.3,
File = speck .. "localgroup.speck",
Texture = textures .. "point4.png",
PolygonSides = 12,
Unit = "Mpc",
ScaleFactor = 465.0,
BillboardMinMaxSize = { 0.0, 20.0 },
EnablePixelSizeControl = true
SizeSettings = {
ScaleExponent = 20.2,
MaxSize = 0.7,
EnableMaxSizeControl = true
}
},
GUI = {
Name = "Local Group",
@@ -69,7 +81,7 @@ asset.export(Object)
asset.meta = {
Name = "Local Group",
Version = "2.1",
Version = "3.0",
Description = "Digital Universe asset for the Local Goup",
Author = "Brian Abbott (AMNH)",
URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe",

View File

@@ -16,7 +16,7 @@ local TransformMatrix = {
local HomeLabel = {
Identifier = "HomeLabel",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePointCloud",
Enabled = false,
Labels = {
Enabled = true,
@@ -26,15 +26,7 @@ local HomeLabel = {
MinMaxSize = { 16, 20 },
Unit = "Mpc",
TransformationMatrix = TransformMatrix
},
Color = { 1.0, 0.4, 0.2 },
Opacity = 0.99,
ScaleFactor = 500.0,
Unit = "Mpc",
TransformationMatrix = TransformMatrix,
FadeInDistances = { 0.05, 1.0 },
BillboardMinMaxSize = { 0.0, 8.22 },
EnablePixelSizeControl = true
}
},
GUI = {
Name = "Home Label",
@@ -58,7 +50,7 @@ asset.export(HomeLabel)
asset.meta = {
Name = "Home Label",
Version = "1.1",
Version = "2.0",
Description = "Label for the Milky Way titled 'Home', sided for the galactic level",
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",

View File

@@ -9,14 +9,14 @@ local speck = asset.resource({
Name = "OB Associations Speck Files",
Type = "HttpSynchronization",
Identifier = "digitaluniverse_obassociations_speck",
Version = 3
Version = 4
})
local Object = {
Identifier = "OBAssociations",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePolygonCloud",
Enabled = false,
Labels = {
File = speck .. "ob.label",
@@ -25,19 +25,25 @@ local Object = {
MinMaxSize = { 4, 25 },
Unit = "pc"
},
Color = { 1.0, 1.0, 1.0 },
ColorMap = speck .. "ob.cmap",
ColorOption = { "arm" },
SizeOption = { "diameter" },
ExactColorMap = true,
Coloring = {
ColorMapping = {
File = speck .. "ob.cmap",
ParameterOptions = {
{ Key = "arm" }
}
}
},
Opacity = 0.7,
File = speck .. "ob.speck",
Unit = "pc",
Texture = textures .. "point4.png",
PolygonSides = 7,
ScaleFactor = 390.0,
BillboardMinMaxSize = { 0.0, 450.0 },
EnablePixelSizeControl = true
SizeSettings = {
SizeMapping = { "diameter" },
ScaleExponent = 16.9,
MaxSize = 17,
EnableMaxSizeControl = true
}
},
GUI = {
Name = "OB Associations",
@@ -71,7 +77,7 @@ asset.export(Object)
asset.meta = {
Name = "OB Associations",
Version = "2.1",
Version = "3.0",
Description = "Digital Universe asset for OB Associations",
Author = "Brian Abbott (AMNH)",
URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe",

View File

@@ -16,7 +16,7 @@ local speck = asset.resource({
local Object = {
Identifier = "OpenStarClusters",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePolygonCloud",
Enabled = false,
Labels = {
File = speck .. "oc.label",
@@ -25,15 +25,18 @@ local Object = {
MinMaxSize = { 4, 30 },
Unit = "pc"
},
Color = { 0.1, 0.8, 0.4 },
Coloring = {
FixedColor = { 0.1, 0.8, 0.4 }
},
Opacity = 0.5,
File = speck .. "oc.speck",
Unit = "pc",
Texture = textures .. "point4.png",
PolygonSides = 12,
ScaleFactor = 405.75,
BillboardMinMaxSize = { 0.0, 604.0 },
EnablePixelSizeControl = true
SizeSettings = {
ScaleExponent = 17.6,
MaxSize = 23.0,
EnableMaxSizeControl = true
}
},
GUI = {
Name = "Open Star Clusters",
@@ -68,7 +71,7 @@ asset.export(Object)
asset.meta = {
Name = "Open Star Clusters",
Version = "2.1",
Version = "3.0",
Description = "Digital Universe asset for Open Star Clusters",
Author = "Brian Abbott (AMNH)",
URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe",

View File

@@ -16,7 +16,7 @@ local speck = asset.resource({
local Object = {
Identifier = "PlanetaryNebulae",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePolygonCloud",
Enabled = false,
Labels = {
File = speck .. "pn.label",
@@ -25,15 +25,18 @@ local Object = {
MinMaxSize = { 4, 25 },
Unit = "pc"
},
Color = { 0.4, 0.4, 0.9 },
Coloring = {
FixedColor = { 0.4, 0.4, 0.9 }
},
Opacity = 0.65,
File = speck .. "pn.speck",
Texture = textures .. "point4.png",
PolygonSides = 3,
Unit = "pc",
ScaleFactor = 425.0,
BillboardMinMaxSize = { 0.0, 500.0 },
EnablePixelSizeControl = true
SizeSettings = {
ScaleExponent = 18.46,
MaxSize = 19.0,
EnableMaxSizeControl = true
}
},
GUI = {
Name = "Planetary Nebulae",
@@ -64,7 +67,7 @@ asset.export(Object)
asset.meta = {
Name = "Planetary Nebulae",
Version = "2.1",
Version = "3.0",
Description = "Digital Universe asset for Planetary Nebulae",
Author = "Brian Abbott (AMNH)",
URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe",

View File

@@ -16,7 +16,7 @@ local speck = asset.resource({
local Object = {
Identifier = "Pulsars",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePolygonCloud",
Enabled = false,
Labels = {
File = speck .. "pulsar.label",
@@ -25,15 +25,18 @@ local Object = {
MinMaxSize = { 4, 20 },
Unit = "pc"
},
Color = { 0.7, 0.0, 0.0 },
Coloring = {
FixedColor = { 0.7, 0.0, 0.0 }
},
Opacity = 1.0,
File = speck .. "pulsar.speck",
Texture = textures .. "point4.png",
PolygonSides = 4,
Unit = "pc",
ScaleFactor = 424.0,
BillboardMinMaxSize = { 0.0, 500.0 },
EnablePixelSizeControl = false
SizeSettings = {
ScaleExponent = 18.4,
MaxSize = 19.0,
EnableMaxSizeControl = true
}
},
GUI = {
Name = "Pulsars",
@@ -68,7 +71,7 @@ asset.export(Object)
asset.meta = {
Name = "Pulsars",
Version = "2.1",
Version = "3.0",
Description = "Digital Universe asset for Pulsars",
Author = "Brian Abbott (AMNH)",
URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe",

View File

@@ -23,21 +23,32 @@ local colormaps = asset.resource({
local Object = {
Identifier = "Quasars",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePointCloud",
Enabled = true,
Color = { 1.0, 0.4, 0.2 },
Opacity = 0.95,
File = speck .. "quasars.speck",
Texture = textures .. "point3A.png",
Unit = "Mpc",
ScaleFactor = 540.9,
FadeInDistances = { 1000.0, 10000.0 }, -- Fade in value in the same unit as "Unit"
BillboardMinMaxSize = { 0.0, 11.1 },
EnablePixelSizeControl = true,
ColorMap = colormaps .. "viridis.cmap",
ColorOption = { "redshift", "Tlookback", "distMpc" },
ColorRange = { { 0.102, 7.085 }, { 1.4, 13.0 }, { 440.5, 8852.099609 } },
UseColorMap = false
Fading = {
FadeInDistances = { 1000.0, 10000.0 } -- Fade in value in the same unit as "Unit"
},
Coloring = {
FixedColor = { 1.0, 0.4, 0.2 },
ColorMapping = {
Enabled = false,
File = colormaps .. "viridis.cmap",
ParameterOptions = {
{ Key = "distMpc", Range = { 440.5, 8852.099609 } },
{ Key = "redshift", Range = { 0.102, 7.085 } },
{ Key = "Tlookback", Range = { 1.4, 13.0 } }
}
}
},
SizeSettings = {
ScaleExponent = 23.5,
MaxSize = 0.3,
EnableMaxSizeControl = true
}
},
GUI = {
Name = "Quasars",
@@ -68,7 +79,7 @@ asset.export(Object)
asset.meta = {
Name = "Quasars",
Version = "2.1",
Version = "3.0",
Description = "Digital Universe asset for Quasars",
Author = "Brian Abbott (AMNH)",
URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe",

View File

@@ -9,31 +9,37 @@ local speck = asset.resource({
Name = "Sloan Digital Sky Survey Speck Files",
Type = "HttpSynchronization",
Identifier = "digitaluniverse_sloandss_speck",
Version = 2
Version = 3
})
local Object = {
Identifier = "SloanDigitalSkySurvey",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePointCloud",
Enabled = true,
Color = { 0.8, 0.8, 1.0 },
Opacity = 0.8,
ScaleFactor = 520.0,
File = speck .. "SDSSgals.speck",
ColorMap = speck .. "SDSSgals.cmap",
ColorOption = { "redshift", "proximity" },
ColorRange = { { 0.0, 0.075 }, { 1.0, 50.0 } },
Coloring = {
FixedColor = { 0.8, 0.8, 1.0 },
ColorMapping = {
File = speck .. "SDSSgals.cmap",
ParameterOptions = {
{ Key = "proximity", Range = { 1.0, 50.0 } },
{ Key = "redshift", Range = { 0.0, 0.075 } }
}
}
},
Texture = textures .. "point3A.png",
Unit = "Mpc",
FadeInDistances = { 220.0, 650.0 }, -- Fade in value in the same unit as "Unit"
BillboardMinMaxSize = { 0.0, 5.5 },
CorrectionSizeEndDistance = 20.65,
CorrectionSizeFactor = 10.41,
TextSize = 14.8,
TextMinMaxSize = { 10, 50 },
EnablePixelSizeControl = true
Fading = {
FadeInDistances = { 220.0, 650.0 } -- Fade in value in the same unit as "Unit"
},
SizeSettings = {
ScaleExponent = 22.6,
MaxSize = 0.15,
EnableMaxSizeControl = true
}
},
GUI = {
Name = "Sloan Digital Sky Survey",
@@ -71,7 +77,7 @@ asset.export(Object)
asset.meta = {
Name = "Sloan Digital Sky Survey",
Version = "2.1",
Version = "3.0",
Description = "Digital Universe asset for The Sloan Digital Sky Survey (SDSS)",
Author = "Brian Abbott (AMNH)",
URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe",

View File

@@ -9,7 +9,7 @@ local speck = asset.resource({
local Object = {
Identifier = "StarsLabels",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePointCloud",
Enabled = false,
Labels = {
Enabled = true,
@@ -19,7 +19,6 @@ local Object = {
MinMaxSize = { 6, 50 },
Unit = "pc"
},
Color = { 1.0, 1.0, 1.0 },
Opacity = 0.65,
Unit = "pc"
},
@@ -45,7 +44,7 @@ asset.export(Object)
asset.meta = {
Name = "Star Labels",
Version = "2.1",
Version = "3.0",
Description = "Digital Universe asset for labels of the stars",
Author = "Brian Abbott (AMNH)",
URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe",

View File

@@ -16,7 +16,7 @@ local speck = asset.resource({
local Object = {
Identifier = "GalaxySuperclusters",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePointCloud",
Enabled = false,
Labels = {
Enabled = true,
@@ -27,14 +27,15 @@ local Object = {
Unit = "Mpc"
},
DrawElements = false,
Color = { 1.0, 1.0, 1.0 },
Opacity = 0.65,
File = speck .. "superclust.speck",
Texture = textures .. "point3A.png",
Unit = "Mpc",
ScaleFactor = 531.0,
-- BillboardMinMaxSize = { 0.0, 7.2 },
EnablePixelSizeControl = true
SizeSettings = {
ScaleExponent = 23.1,
MaxSize = 0.2,
EnableMaxSizeControl = true
}
},
GUI = {
Name = "Galaxy Superclusters",
@@ -63,7 +64,7 @@ asset.export(Object)
asset.meta = {
Name = "Galaxy Superclusters",
Version = "2.1",
Version = "3.0",
Description = "Digital Universe asset for Galaxy Superclusters",
Author = "Brian Abbott (AMNH)",
URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe",

View File

@@ -16,7 +16,7 @@ local speck = asset.resource({
local Object = {
Identifier = "SupernovaRemnants",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePolygonCloud",
Enabled = false,
Labels = {
File = speck .. "snr.label",
@@ -25,17 +25,18 @@ local Object = {
MinMaxSize = { 4, 100 },
Unit = "pc"
},
Color = { 1.0, 0.5, 0.0 },
Coloring = {
FixedColor = { 1.0, 0.5, 0.0 }
},
Opacity = 0.32,
File = speck .. "snr.speck",
Texture = textures .. "point4.png",
PolygonSides = 7,
Unit = "pc",
ScaleFactor = 424.0,
--CorrectionSizeEndDistance = 17.5,
--CorrectionSizeFactor = 13.96,
BillboardMinMaxSize = { 0.0, 500.0 },
EnablePixelSizeControl = true
SizeSettings = {
ScaleExponent = 18.4,
MaxSize = 19.0,
EnableMaxSizeControl = true
}
},
GUI = {
Name = "Supernova Remnants",
@@ -62,7 +63,7 @@ asset.export(Object)
asset.meta = {
Name = "Supernova Remnants",
Version = "2.1",
Version = "3.0",
Description = "Digital Universe asset for Supernova Remnants",
Author = "Brian Abbott (AMNH)",
URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe",

View File

@@ -9,7 +9,7 @@ local speck = asset.resource({
Name = "Tully Speck Files",
Type = "HttpSynchronization",
Identifier = "digitaluniverse_tully_speck",
Version = 2
Version = 3
})
@@ -23,7 +23,7 @@ local TransformMatrix = {
local TullyGalaxies = {
Identifier = "TullyGalaxies",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePointCloud",
Enabled = true,
Labels = {
File = speck .. "tully.label",
@@ -33,23 +33,28 @@ local TullyGalaxies = {
Unit = "Mpc",
TransformationMatrix = TransformMatrix
},
Color = { 1.0, 0.4, 0.2 },
Opacity = 0.99,
ScaleFactor = 504.0,
File = speck .. "tully.speck",
Texture = textures .. "point3A.png",
--ColorMap = speck .. "tully.cmap",
ColorMap = speck .. "lss.cmap",
--ColorOption = { "proximity" },
ColorOption = { "prox5Mpc" },
ColorRange = { { 1.0, 30.0 } },
Coloring = {
FixedColor = { 1.0, 0.4, 0.2 },
ColorMapping = {
File = speck .. "lss.cmap",
ParameterOptions = {
{ Key = "prox5Mpc", Range = { 1.0, 30.0 } }
}
}
},
Unit = "Mpc",
TransformationMatrix = TransformMatrix,
FadeInDistances = { 0.001, 1.0 }, -- Fade in value in the same unit as "Unit"
BillboardMinMaxSize = { 0.0, 7.0 }, -- in pixels
--CorrectionSizeEndDistance = 22.0,
--CorrectionSizeFactor = 10.45
EnablePixelSizeControl = true
Fading = {
FadeInDistances = { 0.001, 1.0 } -- Fade in value in the same unit as "Unit"
},
SizeSettings = {
ScaleExponent = 21.9,
MaxSize = 0.3,
EnableMaxSizeControl = true
}
},
GUI = {
Name = "Tully Galaxies",
@@ -125,7 +130,7 @@ asset.export(TullyGalaxiesImages)
asset.meta = {
Name = "Tully Galaxies",
Version = "3.1",
Version = "4.0",
Description = [[Digital Universe asset for Tully Galaxies, including point cloud and
images]],
Author = "Stuart Levy (NCSA/UIUC), Brian Abbott (AMNH)",

View File

@@ -9,7 +9,7 @@ local speck = asset.resource({
local Object = {
Identifier = "Voids",
Renderable = {
Type = "RenderableBillboardsCloud",
Type = "RenderablePointCloud",
Enabled = false,
Labels = {
Enabled = true,
@@ -20,7 +20,6 @@ local Object = {
Unit = "Mpc"
},
DrawElements = false,
Color = { 1.0, 1.0, 1.0 },
Opacity = 0.65,
Unit = "Mpc"
},
@@ -55,7 +54,7 @@ asset.export(Object)
asset.meta = {
Name = "Voids",
Version = "2.1",
Version = "3.0",
Author = "Brian Abbott (AMNH)",
Description = "Digital Universe asset for Cosmic voids",
URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe",

View File

@@ -0,0 +1,16 @@
asset.require("./model")
asset.require("./trails")
asset.require("./mission")
asset.require("./fov")
asset.meta = {
Name = "BepiColombo",
Version = "1.0",
Description =
"This asset includes all of the other assets for the BepiColombo mission.",
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -0,0 +1,10 @@
asset.require("./fov/bela")
asset.require("./fov/hga")
asset.require("./fov/mertis")
asset.require("./fov/mgns")
asset.require("./fov/mixs")
asset.require("./fov/phebus")
asset.require("./fov/serena")
asset.require("./fov/sibbiosys")
asset.require("./fov/sixs")
asset.require("./fov/startracker")

View File

@@ -0,0 +1,108 @@
local transforms = asset.require("../model")
local kernels = asset.require("../kernels")
local BelaReceiver = {
Identifier = "BepiColomboMPO_BelaReceiver",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.BelaReceiver,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_BELA_RX",
Method = "CIRCLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO BELA Receiver",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local BelaTransmitterMain = {
Identifier = "BepiColomboMPO_BelaTransmitterMain",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.BelaTransmitterMain,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_BELA_TX_MAIN",
Method = "CIRCLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO BELA Transmitter Main",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local BelaTransmitterRed = {
Identifier = "BepiColomboMPO_BelaTransmitterRed",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.BelaTransmitterRed,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_BELA_TX_RED",
Method = "CIRCLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO BELA Transmitter Main",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
asset.onInitialize(function()
-- Circle shapes are currently not supported
-- openspace.addSceneGraphNode(BelaReceiver)
-- openspace.addSceneGraphNode(BelaTransmitterMain)
-- openspace.addSceneGraphNode(BelaTransmitterRed)
end)
asset.onDeinitialize(function()
-- openspace.removeSceneGraphNode(BelaTransmitterRed)
-- openspace.removeSceneGraphNode(BelaTransmitterMain)
-- openspace.removeSceneGraphNode(BelaReceiver)
end)
asset.meta = {
Name = "BELA",
Version = "1.0",
Description = [[
BELA for the first time will return a digitized laser reflection signal (only in a
dedicated instrument mode in order to keep the overall data volume moderate). This
will allow characterizing the surface roughness with unprecedented detail and
accuracy. BELA's albedo measurement capability will be particularly important for
permanently shaded craters where ice is suspected to be found. Here, BELA can observe
with its laser where most other remote sensing instruments will fail to obtain a
signal. In its normal operational mode, BELA employs a modified digital filter
matching algorithms for return pulse detection, while other similar instruments
(MOLA, MLA) use analog filter matching. The digital filters can be exchanged at any
time by telecommand and/or parameter upload.
]],
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -0,0 +1,48 @@
local transforms = asset.require("../model")
local kernels = asset.require("../kernels")
local HGA = {
Identifier = "BepiColomboMPO_HGA",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.HGA,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_HGA",
Method = "CIRCLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO HGA",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
asset.onInitialize(function()
-- Circle shapes are currently not supported
-- openspace.addSceneGraphNode(HGA)
end)
asset.onDeinitialize(function()
-- openspace.removeSceneGraphNode(HGA)
end)
asset.meta = {
Name = "HGA",
Version = "1.0",
Description = "Shows the field-view for the High Gain Antenna of the MPO spacecraft.",
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -0,0 +1,104 @@
local transforms = asset.require("../model")
local kernels = asset.require("../kernels")
local MertisTis = {
Identifier = "BepiColomboMPO_MertisTis",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.MertisTis,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_MERTIS_TIS",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO MERTIS TIS",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local MertisTisPlanet = {
Identifier = "BepiColomboMPO_MertisTisPlanet",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.MertisTisPlanet,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_MERTIS_TIS_PLANET",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO MERTIS TIS Planet",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local MertisTisSpace = {
Identifier = "BepiColomboMPO_MertisTisSpace",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.MertisTisSpace,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_MERTIS_TIS_SPACE",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO MERTIS TIS Space",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(MertisTis)
openspace.addSceneGraphNode(MertisTisPlanet)
openspace.addSceneGraphNode(MertisTisSpace)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(MertisTisSpace)
openspace.removeSceneGraphNode(MertisTisPlanet)
openspace.removeSceneGraphNode(MertisTis)
end)
asset.meta = {
Name = "MERTIS",
Version = "1.0",
Description = [[
The Mercury Radiometer and Thermal Infrared Spectrometer (MERTIS) is an innovative
instrument for studying the surface composition and mineralogy of planet Mercury.
MERTIS combines an uncooled grating push broom IR-spectrometer (TIS) with a radiometer
(TIR), which will operate in the wavelength region of 7-14 and 7-40 um, respectively.
The spatial resolution of the MERTIS observations will be about 500 m globally and
better than 500 m for approximately 5-10 percent of the surface.
]],
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -0,0 +1,57 @@
local transforms = asset.require("../model")
local kernels = asset.require("../kernels")
local MGNS = {
Identifier = "BepiColomboMPO_MGNS",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.MGNS,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_MGNS",
Method = "CIRCLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO MGNS",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
asset.onInitialize(function()
-- Circle shapes are currently not supported
-- openspace.addSceneGraphNode(MGNS)
end)
asset.onDeinitialize(function()
-- openspace.removeSceneGraphNode(MGNS)
end)
asset.meta = {
Name = "MGNS",
Version = "1.0",
Description = [[
The Mercury Gamma-ray and Neutron Spectrometer (MGNS) on board BepiColombo Mercury
Planet Orbiter is designed to observe and study the gamma-ray and neutron emissions of
Mercury. The MGNS is a multifunctional scientific instrument, comprising one gamma-ray
spectrometer and four neutron detectors. The sensor unit of the gamma-ray spectrometer
consists of one 3 by 3 inches high energy resolution inorganic scintillator crystal,
i.e. CeBr3, whereas the sensor unit of the neutron detectors consists of three 3He
gas-filled tubes and one stilbene organic scintillator crystal with plastic
scintillator as its anticoincidence shield.
]],
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -0,0 +1,81 @@
local transforms = asset.require("../model")
local kernels = asset.require("../kernels")
local MIXS_C = {
Identifier = "BepiColomboMPO_MIXS-C",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.MIXS_C,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_MIXS-C",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO MIXS-C",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local MIXS_T = {
Identifier = "BepiColomboMPO_MIXS-T",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.MIXS_T,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_MIXS-T",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO MIXS-T",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(MIXS_C)
openspace.addSceneGraphNode(MIXS_T)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(MIXS_T)
openspace.removeSceneGraphNode(MIXS_C)
end)
asset.meta = {
Name = "MIXS",
Version = "1.0",
Description = [[
The MIXS instrument contains two parallel telescopes, designed to map the X-ray
emission from Mercury at two angular resolutions. The narrow-field telescope (MIXS-T)
uses a grazing incidence optic with a 1 degree field-of-view (FOV) and an imaging
detector with 64 x 64 pixels. The wide-field telescope (MIXS-C) uses a collimator to
define a FOV of ~10 degrees Full Width at Zero Maximum (FWZM). Its detector is
identical to MIXS-T, but as the collimator has no imaging capability, the pixels are
aggregated into a single output. The optical axes are aligned with the nadir-pointing
axis of the spacecraft.
]],
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -0,0 +1,137 @@
local transforms = asset.require("../model")
local kernels = asset.require("../kernels")
local PhebusSlit75 = {
Identifier = "BepiColomboMPO_PhebusSlit75",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.PhebusSlit75,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_PHEBUS_SLIT_75",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Phebus Slit 75",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local PhebusSlit100 = {
Identifier = "BepiColomboMPO_PhebusSlit100",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.PhebusSlit100,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_PHEBUS_SLIT_100",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Phebus Slit 100",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local Phebus75 = {
Identifier = "BepiColomboMPO_Phebus75",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.Phebus75,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_PHEBUS_75",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Phebus 75",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local Phebus100 = {
Identifier = "BepiColomboMPO_Phebus100",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.Phebus100,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_PHEBUS_100",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Phebus 100",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(PhebusSlit75)
openspace.addSceneGraphNode(PhebusSlit100)
openspace.addSceneGraphNode(Phebus75)
openspace.addSceneGraphNode(Phebus100)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Phebus100)
openspace.removeSceneGraphNode(Phebus75)
openspace.removeSceneGraphNode(PhebusSlit100)
openspace.removeSceneGraphNode(PhebusSlit75)
end)
asset.meta = {
Name = "Phebus",
Version = "1.0",
Description = [[
The PHEBUS instrument is a UV spectrometer covering the spectral range going from
50 nm to 315 nm with two additional narrow bands in the visible around 404 nm (K line)
and 422 nm (Ca line). Photons from the source (exosphere of Mercury) are collected by
a SiC primary mirror installed inside a one-degree of freedom rotating mechanism
(360 degrees). The primary mirror focuses the photons on a slit. Spectrometric
information is obtained by the use of two gratings sharing the same pupil. Photons
going through the slit are scattered according to their wavelength onto two separate
intensified cross-delay anode detectors. One detector (labelled EUV) covers the
55-155 nm wavelength range. The second one (labelled FUV) covers the 145-315nm
wavelength range. The two intensifiers based on Micro-Channel Plates use high voltages
at values around 3600-5000 V. The two visible narrow spectral bands are obtained by
two prisms on the side of the FUV detector that feed two identical Photo-Multiplier
Tubes. The high voltage level that is necessary for these PMT is around 1000 V. They
are called NUV Ca and NUV K detectors.
]],
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -0,0 +1,56 @@
local transforms = asset.require("../model")
local kernels = asset.require("../kernels")
local SerenaElena = {
Identifier = "BepiColomboMPO_SerenaElena",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElena,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA",
Method = "POLYGON",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(SerenaElena)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(SerenaElena)
end)
asset.meta = {
Name = "Serena",
Version = "1.0",
Description = [[
The Search for Exospheric Refilling and Emitted Natural Abundances (SERENA) is a
single instrument composed by 4 units devoted to the detection of neutral and ionized
particles in the Hermean environment. It addresses some of the main scientific
objectives of the BepiColombo mission: composition, origin and dynamics of Mercury's
exosphere and polar deposits; and structure and dynamics of Mercury's magnetosphere.
Each unit is able to operate individually and to achieve its specific scientific
objectives. In addition, the opportunity to operate sensors simultaneously greatly
improves the success of scientific objectives and allows for additional objectives.
]],
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -0,0 +1,832 @@
local transforms = asset.require("../model")
local kernels = asset.require("../kernels")
local SerenaElenaAN01 = {
Identifier = "BepiColomboMPO_SerenaElena_AN01",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN01,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_01",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN01",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN02 = {
Identifier = "BepiColomboMPO_SerenaElena_AN02",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN02,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_02",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN02",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN03 = {
Identifier = "BepiColomboMPO_SerenaElena_AN03",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN03,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_03",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN03",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN04 = {
Identifier = "BepiColomboMPO_SerenaElena_AN04",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN04,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_04",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN04",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN05 = {
Identifier = "BepiColomboMPO_SerenaElena_AN05",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN05,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_05",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN05",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN06 = {
Identifier = "BepiColomboMPO_SerenaElena_AN06",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN06,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_06",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN06",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN07 = {
Identifier = "BepiColomboMPO_SerenaElena_AN07",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN07,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_07",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN07",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN08 = {
Identifier = "BepiColomboMPO_SerenaElena_AN08",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN08,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_08",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN08",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN09 = {
Identifier = "BepiColomboMPO_SerenaElena_AN09",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN09,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_09",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN09",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN10 = {
Identifier = "BepiColomboMPO_SerenaElena_AN10",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN10,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_10",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN10",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN11 = {
Identifier = "BepiColomboMPO_SerenaElena_AN11",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN11,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_11",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN11",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN12 = {
Identifier = "BepiColomboMPO_SerenaElena_AN12",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN12,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_12",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN12",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN13 = {
Identifier = "BepiColomboMPO_SerenaElena_AN13",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN13,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_13",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN13",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN14 = {
Identifier = "BepiColomboMPO_SerenaElena_AN14",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN14,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_14",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN14",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN15 = {
Identifier = "BepiColomboMPO_SerenaElena_AN15",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN15,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_15",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN15",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN16 = {
Identifier = "BepiColomboMPO_SerenaElena_AN16",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN16,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_16",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN16",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN17 = {
Identifier = "BepiColomboMPO_SerenaElena_AN17",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN17,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_17",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN17",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN18 = {
Identifier = "BepiColomboMPO_SerenaElena_AN18",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN18,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_18",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN18",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN19 = {
Identifier = "BepiColomboMPO_SerenaElena_AN19",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN19,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_19",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN19",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN20 = {
Identifier = "BepiColomboMPO_SerenaElena_AN20",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN20,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_20",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN20",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN21 = {
Identifier = "BepiColomboMPO_SerenaElena_AN21",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN21,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_21",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN21",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN22 = {
Identifier = "BepiColomboMPO_SerenaElena_AN22",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN22,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_22",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN22",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN23 = {
Identifier = "BepiColomboMPO_SerenaElena_AN23",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN23,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_23",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN23",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN24 = {
Identifier = "BepiColomboMPO_SerenaElena_AN24",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN24,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_24",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN24",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN25 = {
Identifier = "BepiColomboMPO_SerenaElena_AN25",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN25,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_25",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN25",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN26 = {
Identifier = "BepiColomboMPO_SerenaElena_AN26",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN26,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_26",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN26",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN27 = {
Identifier = "BepiColomboMPO_SerenaElena_AN27",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN27,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_27",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN27",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN28 = {
Identifier = "BepiColomboMPO_SerenaElena_AN28",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN28,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_28",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN28",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN29 = {
Identifier = "BepiColomboMPO_SerenaElena_AN29",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN29,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_29",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN29",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN30 = {
Identifier = "BepiColomboMPO_SerenaElena_AN30",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN30,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_30",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN30",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN31 = {
Identifier = "BepiColomboMPO_SerenaElena_AN31",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN31,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_31",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN31",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SerenaElenaAN32 = {
Identifier = "BepiColomboMPO_SerenaElena_AN32",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SerenaElenaAN32,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SERENA_ELENA_AN_32",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Serena Elena AN32",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(SerenaElenaAN01)
openspace.addSceneGraphNode(SerenaElenaAN02)
openspace.addSceneGraphNode(SerenaElenaAN03)
openspace.addSceneGraphNode(SerenaElenaAN04)
openspace.addSceneGraphNode(SerenaElenaAN05)
openspace.addSceneGraphNode(SerenaElenaAN06)
openspace.addSceneGraphNode(SerenaElenaAN07)
openspace.addSceneGraphNode(SerenaElenaAN08)
openspace.addSceneGraphNode(SerenaElenaAN09)
openspace.addSceneGraphNode(SerenaElenaAN10)
openspace.addSceneGraphNode(SerenaElenaAN11)
openspace.addSceneGraphNode(SerenaElenaAN12)
openspace.addSceneGraphNode(SerenaElenaAN13)
openspace.addSceneGraphNode(SerenaElenaAN14)
openspace.addSceneGraphNode(SerenaElenaAN15)
openspace.addSceneGraphNode(SerenaElenaAN16)
openspace.addSceneGraphNode(SerenaElenaAN17)
openspace.addSceneGraphNode(SerenaElenaAN18)
openspace.addSceneGraphNode(SerenaElenaAN19)
openspace.addSceneGraphNode(SerenaElenaAN20)
openspace.addSceneGraphNode(SerenaElenaAN21)
openspace.addSceneGraphNode(SerenaElenaAN22)
openspace.addSceneGraphNode(SerenaElenaAN23)
openspace.addSceneGraphNode(SerenaElenaAN24)
openspace.addSceneGraphNode(SerenaElenaAN25)
openspace.addSceneGraphNode(SerenaElenaAN26)
openspace.addSceneGraphNode(SerenaElenaAN27)
openspace.addSceneGraphNode(SerenaElenaAN28)
openspace.addSceneGraphNode(SerenaElenaAN29)
openspace.addSceneGraphNode(SerenaElenaAN30)
openspace.addSceneGraphNode(SerenaElenaAN31)
openspace.addSceneGraphNode(SerenaElenaAN32)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(SerenaElenaAN32)
openspace.removeSceneGraphNode(SerenaElenaAN31)
openspace.removeSceneGraphNode(SerenaElenaAN30)
openspace.removeSceneGraphNode(SerenaElenaAN29)
openspace.removeSceneGraphNode(SerenaElenaAN28)
openspace.removeSceneGraphNode(SerenaElenaAN27)
openspace.removeSceneGraphNode(SerenaElenaAN26)
openspace.removeSceneGraphNode(SerenaElenaAN25)
openspace.removeSceneGraphNode(SerenaElenaAN24)
openspace.removeSceneGraphNode(SerenaElenaAN23)
openspace.removeSceneGraphNode(SerenaElenaAN22)
openspace.removeSceneGraphNode(SerenaElenaAN21)
openspace.removeSceneGraphNode(SerenaElenaAN20)
openspace.removeSceneGraphNode(SerenaElenaAN19)
openspace.removeSceneGraphNode(SerenaElenaAN18)
openspace.removeSceneGraphNode(SerenaElenaAN17)
openspace.removeSceneGraphNode(SerenaElenaAN16)
openspace.removeSceneGraphNode(SerenaElenaAN15)
openspace.removeSceneGraphNode(SerenaElenaAN14)
openspace.removeSceneGraphNode(SerenaElenaAN13)
openspace.removeSceneGraphNode(SerenaElenaAN12)
openspace.removeSceneGraphNode(SerenaElenaAN11)
openspace.removeSceneGraphNode(SerenaElenaAN10)
openspace.removeSceneGraphNode(SerenaElenaAN09)
openspace.removeSceneGraphNode(SerenaElenaAN08)
openspace.removeSceneGraphNode(SerenaElenaAN07)
openspace.removeSceneGraphNode(SerenaElenaAN06)
openspace.removeSceneGraphNode(SerenaElenaAN05)
openspace.removeSceneGraphNode(SerenaElenaAN04)
openspace.removeSceneGraphNode(SerenaElenaAN03)
openspace.removeSceneGraphNode(SerenaElenaAN02)
openspace.removeSceneGraphNode(SerenaElenaAN01)
end)
asset.meta = {
Name = "Serena Anodes",
Version = "1.0",
Description = [[
The Search for Exospheric Refilling and Emitted Natural Abundances (SERENA) is a
single instrument composed by 4 units devoted to the detection of neutral and ionized
particles in the Hermean environment. It addresses some of the main scientific
objectives of the BepiColombo mission: composition, origin and dynamics of Mercury's
exosphere and polar deposits; and structure and dynamics of Mercury's magnetosphere.
Each unit is able to operate individually and to achieve its specific scientific
objectives. In addition, the opportunity to operate sensors simultaneously greatly
improves the success of scientific objectives and allows for additional objectives.
]],
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -0,0 +1,378 @@
local transforms = asset.require("../model")
local kernels = asset.require("../kernels")
local SimbioSys_HRIC_FPA = {
Identifier = "BepiColomboMPO_SIMBIOSYS_HRIC_FPA",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SymbioSysHricFpa,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SIMBIO-SYS_HRIC_FPA",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Simbio-Sys HRIC FPA",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SimbioSys_HRIC_F550 = {
Identifier = "BepiColomboMPO_SIMBIOSYS_HRIC_F550",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SymbioSysHricF550,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SIMBIO-SYS_HRIC_F550",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Simbio-Sys HRIC F550",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SimbioSys_HRIC_FPAN = {
Identifier = "BepiColomboMPO_SIMBIOSYS_HRIC_FPAN",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SymbioSysHricFpan,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SIMBIO-SYS_HRIC_FPAN",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Simbio-Sys HRIC FPAN",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SimbioSys_HRIC_F750 = {
Identifier = "BepiColomboMPO_SIMBIOSYS_HRIC_F750",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SymbioSysHricF750,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SIMBIO-SYS_HRIC_F750",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Simbio-Sys HRIC F750",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SimbioSys_HRIC_F880 = {
Identifier = "BepiColomboMPO_SIMBIOSYS_HRIC_F880",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SymbioSysHricF880,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SIMBIO-SYS_HRIC_F880",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Simbio-Sys HRIC F880",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SimbioSys_STC_L = {
Identifier = "BepiColomboMPO_SIMBIOSYS_STC_L",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SymbioSysSTCL,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SIMBIO-SYS_STC-L",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Simbio-Sys STC L",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SimbioSys_STC_H = {
Identifier = "BepiColomboMPO_SIMBIOSYS_STC_H",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SymbioSysSTCH,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SIMBIO-SYS_STC-H",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Simbio-Sys STC H",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SimbioSys_STC_L_F920 = {
Identifier = "BepiColomboMPO_SIMBIOSYS_STC_L_F920",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SymbioSysSTCLF920,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SIMBIO-SYS_STC-L_F920",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Simbio-Sys STC L F920",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SimbioSys_STC_L_F550 = {
Identifier = "BepiColomboMPO_SIMBIOSYS_STC_L_F550",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SymbioSysSTCLF550,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SIMBIO-SYS_STC-L_F550",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Simbio-Sys STC L F550",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SimbioSys_STC_L_P700 = {
Identifier = "BepiColomboMPO_SIMBIOSYS_STC_L_P700",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SymbioSysSTCLP700,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SIMBIO-SYS_STC-L_P700",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Simbio-Sys STC L P700",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SimbioSys_STC_H_P700 = {
Identifier = "BepiColomboMPO_SIMBIOSYS_STC_H_P700",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SymbioSysSTCHP700,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SIMBIO-SYS_STC-H_P700",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Simbio-Sys STC H P700",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SimbioSys_STC_H_F420 = {
Identifier = "BepiColomboMPO_SIMBIOSYS_STC_H_F420",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SymbioSysSTCHF420,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SIMBIO-SYS_STC-H_F420",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Simbio-Sys STC H F420",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SimbioSys_STC_H_F750 = {
Identifier = "BepiColomboMPO_SIMBIOSYS_STC_H_F750",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SymbioSysSTCHF750,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SIMBIO-SYS_STC-H_F750",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Simbio-Sys STC H F750",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SimbioSys_VIHI = {
Identifier = "BepiColomboMPO_SIMBIOSYS_VIHI",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.SymbioSysVIHI,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SIMBIO-SYS_VIHI",
Method = "RECTANGLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Simbio-Sys VIHI",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(SimbioSys_HRIC_FPA)
openspace.addSceneGraphNode(SimbioSys_HRIC_F550)
openspace.addSceneGraphNode(SimbioSys_HRIC_FPAN)
openspace.addSceneGraphNode(SimbioSys_HRIC_F750)
openspace.addSceneGraphNode(SimbioSys_HRIC_F880)
openspace.addSceneGraphNode(SimbioSys_STC_L)
openspace.addSceneGraphNode(SimbioSys_STC_H)
openspace.addSceneGraphNode(SimbioSys_STC_L_F920)
openspace.addSceneGraphNode(SimbioSys_STC_L_F550)
openspace.addSceneGraphNode(SimbioSys_STC_L_P700)
openspace.addSceneGraphNode(SimbioSys_STC_H_P700)
openspace.addSceneGraphNode(SimbioSys_STC_H_F420)
openspace.addSceneGraphNode(SimbioSys_STC_H_F750)
openspace.addSceneGraphNode(SimbioSys_VIHI)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(SimbioSys_VIHI)
openspace.removeSceneGraphNode(SimbioSys_STC_H_F750)
openspace.removeSceneGraphNode(SimbioSys_STC_H_F420)
openspace.removeSceneGraphNode(SimbioSys_STC_H_P700)
openspace.removeSceneGraphNode(SimbioSys_STC_L_P700)
openspace.removeSceneGraphNode(SimbioSys_STC_L_F550)
openspace.removeSceneGraphNode(SimbioSys_STC_L_F920)
openspace.removeSceneGraphNode(SimbioSys_STC_H)
openspace.removeSceneGraphNode(SimbioSys_STC_L)
openspace.removeSceneGraphNode(SimbioSys_HRIC_F880)
openspace.removeSceneGraphNode(SimbioSys_HRIC_F750)
openspace.removeSceneGraphNode(SimbioSys_HRIC_FPAN)
openspace.removeSceneGraphNode(SimbioSys_HRIC_F550)
openspace.removeSceneGraphNode(SimbioSys_HRIC_FPA)
end)
asset.meta = {
Name = "SYMBIO-SYS",
Version = "1.0",
Description = [[
SIMBIO-SYS has been conceived to be integrated on the BepiColombo MPO pointing in the
nadir direction in order to perform the remote sensing of the Mercury surface during
the satellite orbits. The SIMBIO-SYS instrument architecture is based on 3 different
channels composing the instrument front-end with a common main electronics and power
supply.
]],
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -0,0 +1,104 @@
local transforms = asset.require("../model")
local kernels = asset.require("../kernels")
local SixsX1 = {
Identifier = "BepiColomboMPO_SixsX1",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.Sixs_X1,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SIXS-X-1",
Method = "ELLIPSE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Sixs X1",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SixsX2 = {
Identifier = "BepiColomboMPO_SixsX2",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.Sixs_X2,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SIXS-X-2",
Method = "ELLIPSE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Sixs X2",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local SixsX3 = {
Identifier = "BepiColomboMPO_SixsX3",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.Sixs_X3,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_SIXS-X-3",
Method = "ELLIPSE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Sixs X3",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
asset.onInitialize(function()
-- Circle shapes are currently not supported
-- openspace.addSceneGraphNode(SixsX1)
-- openspace.addSceneGraphNode(SixsX2)
-- openspace.addSceneGraphNode(SixsX3)
end)
asset.onDeinitialize(function()
-- openspace.removeSceneGraphNode(SixsX3)
-- openspace.removeSceneGraphNode(SixsX2)
-- openspace.removeSceneGraphNode(SixsX1)
end)
asset.meta = {
Name = "Sixs",
Version = "1.0",
Description = [[
The scientific investigation performed by the Solar Intensity X-ray and particle
Spectrometer (SIXS) is the determination of solar impact on the Hermean surface in the
form of direct X-rays and energetic particles, which induce observable X-ray emission
via interaction with the surface of the planet. Particles of concern here are highly
energetic solar protons and electrons.
]],
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -0,0 +1,107 @@
local transforms = asset.require("../model")
local kernels = asset.require("../kernels")
local StarTracker1 = {
Identifier = "BepiColomboMPO_StarTracker1",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.StarTracker1,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_STR-1",
Method = "CIRCLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Star Tracker 1",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local StarTracker2 = {
Identifier = "BepiColomboMPO_StarTracker2",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.StarTracker2,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_STR-2",
Method = "CIRCLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Star Tracker 2",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
local StarTracker3 = {
Identifier = "BepiColomboMPO_StarTracker3",
Parent = transforms.BepiColombo.Identifier,
Renderable = {
Type = "RenderableFov",
Body = kernels.ID.MPO,
Frame = kernels.Frame.StarTracker3,
RGB = { 0.8, 0.7, 0.7 },
Instrument = {
Name = "MPO_STR-3",
Method = "CIRCLE",
Aberration = "NONE"
},
AlwaysDrawFov = true,
PotentialTargets = { "MERCURY", "EARTH", "VENUS" },
FrameConversions = {}
},
GUI = {
Name = "MPO Star Tracker 3",
Path = "/Solar System/Missions/BepiColombo/Instruments",
}
}
asset.onInitialize(function()
-- Circle shapes are currently not supported
-- openspace.addSceneGraphNode(StarTracker1)
-- openspace.addSceneGraphNode(StarTracker2)
-- openspace.addSceneGraphNode(StarTracker3)
end)
asset.onDeinitialize(function()
-- openspace.removeSceneGraphNode(StarTracker1)
-- openspace.removeSceneGraphNode(StarTracker2)
-- openspace.removeSceneGraphNode(StarTracker3)
end)
asset.meta = {
Name = "Star Tracker",
Version = "1.0",
Description = [[
From a functional point of view, the Autonomous Star Trackers can be seen as a video
camera plus an image processing unit that, starting from an image of the sky, extracts
the attitude information for the AOCS, measured with respect to the J2000 inertial
reference system.
The STR can track up to 15 stars simultaneously and consists of a Single box that
contains the optical head, the main electronics and a baffle which is thermally
decoupled from the box.
]],
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -0,0 +1,303 @@
local kernels = asset.resource({
Name = "BepiColombo Kernels",
Type = "HttpSynchronization",
Identifier = "bepicolombo_kernels",
Version = 1
})
local BepiColomboKernels = {
-- Kernel list based on bc_ops_v413_20240112_001.tm
kernels .. "bc_mpo_magboom_default_s20191107_v01.bc",
kernels .. "bc_mpo_hga_scm_20181020_20190101_s20201020_v02.bc",
kernels .. "bc_mpo_hga_scm_20190101_20200101_s20230309_v01.bc",
kernels .. "bc_mpo_hga_scm_20200101_20210101_s20230309_v01.bc",
kernels .. "bc_mpo_hga_scm_20210101_20220101_s20230309_v01.bc",
kernels .. "bc_mpo_hga_scm_20220101_20230101_s20221229_v01.bc",
kernels .. "bc_mpo_hga_scm_20230101_20240101_s20240104_v01.bc",
kernels .. "bc_mpo_hga_scm_20240101_20240111_s20240110_v01.bc",
kernels .. "bc_mpo_mga_scm_20181020_20190101_s20200109_v02.bc",
kernels .. "bc_mpo_mga_scm_20190101_20200101_s20230309_v01.bc",
kernels .. "bc_mpo_mga_scm_20200101_20210101_s20230309_v01.bc",
kernels .. "bc_mpo_mga_scm_20210101_20220101_s20230309_v01.bc",
kernels .. "bc_mpo_mga_scm_20220101_20230101_s20221229_v01.bc",
kernels .. "bc_mpo_mga_scm_20230101_20240101_s20240104_v01.bc",
kernels .. "bc_mpo_mga_scm_20240101_20240111_s20240110_v01.bc",
kernels .. "bc_mpo_sa_scm_20181020_20190101_s20211202_v01.bc",
kernels .. "bc_mpo_sa_scm_20190101_20200101_s20230309_v01.bc",
kernels .. "bc_mpo_sa_scm_20200101_20210101_s20230309_v01.bc",
kernels .. "bc_mpo_sa_scm_20210101_20220101_s20230309_v01.bc",
kernels .. "bc_mpo_sa_scm_20220101_20230101_s20221229_v01.bc",
kernels .. "bc_mpo_sa_scm_20230101_20240101_s20240104_v01.bc",
kernels .. "bc_mpo_sa_scm_20240101_20240111_s20240110_v01.bc",
kernels .. "bc_mtm_sa_scm_20181020_20190101_s20200109_v02.bc",
kernels .. "bc_mtm_sa_scm_20190101_20200101_s20230309_v01.bc",
kernels .. "bc_mtm_sa_scm_20200101_20210101_s20230309_v01.bc",
kernels .. "bc_mtm_sa_scm_20210101_20220101_s20230309_v01.bc",
kernels .. "bc_mtm_sa_scm_20220101_20230101_s20221229_v01.bc",
kernels .. "bc_mtm_sa_scm_20230101_20240101_s20240104_v01.bc",
kernels .. "bc_mtm_sa_scm_20240101_20240111_s20240110_v01.bc",
kernels .. "bc_mmo_sc_scp_20180317_20251220_f20170228_v02.bc",
kernels .. "bc_mmo_sc_slt_50038_20251220_20280305_f20170228_v02.bc",
kernels .. "bc_mtm_sc_scp_20180317_20251219_f20181121_v02.bc",
kernels .. "bc_mtm_sep_scp_20181019_20251205_f20181127_v02.bc",
kernels .. "bc_mpo_sc_prelaunch_f20181121_v01.bc",
kernels .. "bc_mpo_sc_fcp_00160_20181020_20240216_f20181127_v01.bc",
kernels .. "bc_mpo_sc_scc_20181019_20190101_s20230309_v01.bc",
kernels .. "bc_mpo_sc_scc_20190101_20200101_s20230309_v01.bc",
kernels .. "bc_mpo_sc_scc_20200101_20210101_s20230309_v01.bc",
kernels .. "bc_mpo_sc_scc_20210101_20220101_s20230309_v01.bc",
kernels .. "bc_mpo_sc_scc_20220101_20230101_s20221229_v01.bc",
kernels .. "bc_mpo_sc_scc_20230101_20240101_s20240104_v01.bc",
kernels .. "bc_mpo_sc_scc_20240101_20240111_s20240110_v01.bc",
kernels .. "bc_mpo_sc_scm_20181020_20190101_s20230309_v01.bc",
kernels .. "bc_mpo_sc_scm_20190101_20200101_s20230309_v01.bc",
kernels .. "bc_mpo_sc_scm_20200101_20210101_s20210618_v01.bc",
kernels .. "bc_mpo_sc_scm_20210101_20220101_s20230309_v01.bc",
kernels .. "bc_mpo_sc_scm_20220101_20230101_s20230309_v01.bc",
kernels .. "bc_mpo_sc_scm_20230101_20240101_s20240104_v01.bc",
kernels .. "bc_mpo_sc_scm_20240101_20240111_s20240110_v01.bc",
kernels .. "bc_mpo_v34.tf",
kernels .. "bc_mtm_v12.tf",
kernels .. "bc_mmo_v13.tf",
kernels .. "bc_ops_v01.tf",
kernels .. "bc_sci_v12.tf",
kernels .. "bc_dsk_surfaces_v03.tf",
kernels .. "rssd0004.tf",
kernels .. "earth_topo_201023.tf",
kernels .. "earthstns_jaxa_20230905.tf",
kernels .. "earthfixeditrf93.tf",
kernels .. "estrack_v04.tf",
kernels .. "bc_mmo_sc_bus_v02.bds",
kernels .. "bc_mpo_sc_bus_v02.bds",
kernels .. "bc_mpo_sc_hga_v02.bds",
kernels .. "bc_mpo_sc_mga_v02.bds",
kernels .. "bc_mpo_sc_mosif_v02.bds",
kernels .. "bc_mpo_sc_sa_v02.bds",
kernels .. "bc_mtm_sc_bus_v02.bds",
kernels .. "bc_mtm_sc_samx_v02.bds",
kernels .. "bc_mtm_sc_sapx_v02.bds",
kernels .. "mercury_m002_mes_v02.bds",
kernels .. "bc_mpo_bela_v09.ti",
kernels .. "bc_mpo_mertis_v08.ti",
kernels .. "bc_mpo_mgns_v02.ti",
kernels .. "bc_mpo_mixs_v06.ti",
kernels .. "bc_mpo_phebus_v06.ti",
kernels .. "bc_mpo_serena_v08.ti",
kernels .. "bc_mpo_simbio-sys_v10.ti",
kernels .. "bc_mpo_sixs_v08.ti",
kernels .. "bc_mpo_str_v02.ti",
kernels .. "bc_mpo_aux_v01.ti",
kernels .. "bc_mtm_mcam_v05.ti",
kernels .. "bc_mmo_mppe_v04.ti",
kernels .. "bc_mmo_msasi_v03.ti",
kernels .. "bc_mmo_ssas_v01.ti",
kernels .. "de403_masses.tpc",
kernels .. "gm_de431.tpc",
kernels .. "pck00011_bc_v00.tpc",
kernels .. "earth_070425_370426_predict.bpc",
kernels .. "earth_000101_240403_240109.bpc",
kernels .. "bc_mpo_step_20240110.tsc",
kernels .. "bc_mpo_fict_20181127.tsc",
kernels .. "bc_mmo_fict_20170228.tsc",
kernels .. "de432s.bsp",
kernels .. "earthstns_itrf93_201023.bsp",
kernels .. "earthstns_jaxa_20230905.bsp",
kernels .. "estrack_v04.bsp",
kernels .. "bc_sci_v02.bsp",
kernels .. "bc_mmo_struct_v01.bsp",
kernels .. "bc_mmo_scp_20181019_20251220_v02.bsp",
kernels .. "bc_mtm_struct_v06.bsp",
kernels .. "bc_mtm_scp_20181019_20251219_v03.bsp",
kernels .. "bc_mpo_cog_v03.bsp",
kernels .. "bc_mpo_cog_00160_20181118_20240201_v01.bsp",
kernels .. "bc_mpo_struct_v09.bsp",
kernels .. "bc_mpo_schulte_vector_v01.bsp",
kernels .. "bc_mpo_prelaunch_v01.bsp",
kernels .. "bc_mpo_fcp_00160_20181020_20260328_v01.bsp"
-- kernels .. "bc_mpo_step_20240110.tsc",
--
-- kernels .. "de432s.bsp",
-- kernels .. "bc_mpo_fcp_00160_20181020_20260328_v01.bsp",
-- kernels .. "bc_mmo_struct_v01.bsp",
-- kernels .. "bc_mtm_struct_v06.bsp",
-- kernels .. "bc_mpo_struct_v09.bsp",
--
-- kernels .. "bc_mmo_mppe_v04.ti",
-- kernels .. "bc_mmo_msasi_v03.ti",
-- kernels .. "bc_mmo_ssas_v01.ti",
-- kernels .. "bc_mpo_aux_v01.ti",
-- kernels .. "bc_mpo_bela_v09.ti",
-- kernels .. "bc_mpo_mertis_v08.ti",
-- kernels .. "bc_mpo_mgns_v02.ti",
-- kernels .. "bc_mpo_mixs_v06.ti",
-- kernels .. "bc_mpo_phebus_v06.ti",
-- kernels .. "bc_mpo_serena_v08.ti",
-- kernels .. "bc_mpo_simbio-sys_v10.ti",
-- kernels .. "bc_mpo_sixs_v08.ti",
-- kernels .. "bc_mpo_str_v02.ti",
-- kernels .. "bc_mtm_mcam_v05.ti",
--
-- kernels .. "bc_sci_v12.tf",
-- kernels .. "bc_mmo_v13.tf",
-- kernels .. "bc_mpo_v34.tf",
-- kernels .. "bc_mtm_v12.tf",
-- kernels .. "bc_ops_v01.tf",
--
-- kernels .. "bc_mpo_sc_fcp_00160_20181020_20240216_f20181127_v01.bc",
-- -- kernels .. "bc_mpo_sc_scm_20240101_20240111_s20240110_v01.bc",
-- -- kernels .. "bc_mpo_sc_scm_20230101_20240101_s20240104_v01.bc",
-- -- kernels .. "bc_mpo_sc_scm_20220101_20230101_s20230309_v01.bc",
-- -- kernels .. "bc_mpo_sc_scm_20210101_20220101_s20230309_v01.bc",
-- -- kernels .. "bc_mpo_sc_scm_20200101_20210101_s20210618_v01.bc",
-- -- kernels .. "bc_mpo_sc_scm_20190101_20200101_s20230309_v01.bc",
-- -- kernels .. "bc_mpo_sc_scm_20181020_20190101_s20230309_v01.bc",
--
-- kernels .. "bc_mpo_sc_scc_20240101_20240111_s20240110_v01.bc",
-- kernels .. "bc_mpo_sc_scc_20230101_20240101_s20240104_v01.bc",
-- kernels .. "bc_mpo_sc_scc_20220101_20230101_s20221229_v01.bc",
-- kernels .. "bc_mpo_sc_scc_20210101_20220101_s20230309_v01.bc",
-- kernels .. "bc_mpo_sc_scc_20200101_20210101_s20230309_v01.bc",
-- kernels .. "bc_mpo_sc_scc_20190101_20200101_s20230309_v01.bc",
-- kernels .. "bc_mpo_sc_scc_20181019_20190101_s20230309_v01.bc",
--
-- kernels .. "bc_mpo_hga_scm_20240101_20240111_s20240110_v01.bc",
-- kernels .. "bc_mpo_hga_scm_20181020_20190101_s20201020_v02.bc",
-- kernels .. "bc_mpo_hga_scm_20190101_20200101_s20230309_v01.bc",
-- kernels .. "bc_mpo_hga_scm_20200101_20210101_s20230309_v01.bc",
-- kernels .. "bc_mpo_hga_scm_20210101_20220101_s20230309_v01.bc",
-- kernels .. "bc_mpo_hga_scm_20220101_20230101_s20221229_v01.bc",
-- kernels .. "bc_mpo_hga_scm_20230101_20240101_s20240104_v01.bc",
-- kernels .. "bc_mpo_magboom_default_s20191107_v01.bc",
-- kernels .. "bc_mpo_mertis_zero_s20191107_v02.bc",
-- kernels .. "bc_mpo_mga_scm_20181020_20190101_s20200109_v02.bc",
-- kernels .. "bc_mpo_mga_scm_20190101_20200101_s20230309_v01.bc",
-- kernels .. "bc_mpo_mga_scm_20200101_20210101_s20230309_v01.bc",
-- kernels .. "bc_mpo_mga_scm_20210101_20220101_s20230309_v01.bc",
-- kernels .. "bc_mpo_mga_scm_20220101_20230101_s20221229_v01.bc",
-- kernels .. "bc_mpo_mga_scm_20230101_20240101_s20240104_v01.bc",
-- kernels .. "bc_mpo_mga_scm_20240101_20240111_s20240110_v01.bc",
-- kernels .. "bc_mpo_mga_zero_s20191107_v02.bc",
-- kernels .. "bc_mpo_phebus_zero_s20210408_v02.bc",
-- kernels .. "bc_mpo_sa_scm_20181020_20190101_s20211202_v01.bc",
-- kernels .. "bc_mpo_sa_scm_20190101_20200101_s20230309_v01.bc",
-- kernels .. "bc_mpo_sa_scm_20200101_20210101_s20230309_v01.bc",
-- kernels .. "bc_mpo_sa_scm_20210101_20220101_s20230309_v01.bc",
-- kernels .. "bc_mpo_sa_scm_20220101_20230101_s20221229_v01.bc",
-- kernels .. "bc_mpo_sa_scm_20230101_20240101_s20240104_v01.bc",
-- kernels .. "bc_mpo_sa_scm_20240101_20240111_s20240110_v01.bc",
-- kernels .. "bc_mpo_sa_zero_s20191107_v02.bc",
-- kernels .. "bc_mpo_sa_zero_s20191107_v02.bc",
-- kernels .. "bc_mpo_serena_zero_s20191207_v02.bc"
}
local ID = {
MPO = "-121"
}
local Frame = {
MPO = "MPO_SPACECRAFT",
HGA = "MPO_HGA",
BelaReceiver = "MPO_BELA_RX",
BelaTransmitterMain = "MPO_BELA_TX_MAIN",
BelaTransmitterRed = "MPO_BELA_TX_RED",
MertisTis = "MPO_MERTIS_TIS",
MertisTisPlanet = "MPO_MERTIS_TIS_PLANET",
MertisTisSpace = "MPO_MERTIS_TIS_SPACE",
MGNS = "MPO_MGNS",
MIXS_C = "MPO_MIXS-C",
MIXS_T = "MPO_MIXS-T",
PhebusSlit75 = "MPO_PHEBUS_SLIT_75",
PhebusSlit100 = "MPO_PHEBUS_SLIT_100",
Phebus75 = "MPO_PHEBUS_75",
Phebus100 = "MPO_PHEBUS_100",
SerenaElena = "MPO_SERENA_ELENA",
SerenaElenaAN01 = "MPO_SERENA_ELENA_AN_01",
SerenaElenaAN02 = "MPO_SERENA_ELENA_AN_02",
SerenaElenaAN03 = "MPO_SERENA_ELENA_AN_03",
SerenaElenaAN04 = "MPO_SERENA_ELENA_AN_04",
SerenaElenaAN05 = "MPO_SERENA_ELENA_AN_05",
SerenaElenaAN06 = "MPO_SERENA_ELENA_AN_06",
SerenaElenaAN07 = "MPO_SERENA_ELENA_AN_07",
SerenaElenaAN08 = "MPO_SERENA_ELENA_AN_08",
SerenaElenaAN09 = "MPO_SERENA_ELENA_AN_09",
SerenaElenaAN10 = "MPO_SERENA_ELENA_AN_10",
SerenaElenaAN11 = "MPO_SERENA_ELENA_AN_11",
SerenaElenaAN12 = "MPO_SERENA_ELENA_AN_12",
SerenaElenaAN13 = "MPO_SERENA_ELENA_AN_13",
SerenaElenaAN14 = "MPO_SERENA_ELENA_AN_14",
SerenaElenaAN15 = "MPO_SERENA_ELENA_AN_15",
SerenaElenaAN16 = "MPO_SERENA_ELENA_AN_16",
SerenaElenaAN17 = "MPO_SERENA_ELENA_AN_17",
SerenaElenaAN18 = "MPO_SERENA_ELENA_AN_18",
SerenaElenaAN19 = "MPO_SERENA_ELENA_AN_19",
SerenaElenaAN20 = "MPO_SERENA_ELENA_AN_20",
SerenaElenaAN21 = "MPO_SERENA_ELENA_AN_21",
SerenaElenaAN22 = "MPO_SERENA_ELENA_AN_22",
SerenaElenaAN23 = "MPO_SERENA_ELENA_AN_23",
SerenaElenaAN24 = "MPO_SERENA_ELENA_AN_24",
SerenaElenaAN25 = "MPO_SERENA_ELENA_AN_25",
SerenaElenaAN26 = "MPO_SERENA_ELENA_AN_26",
SerenaElenaAN27 = "MPO_SERENA_ELENA_AN_27",
SerenaElenaAN28 = "MPO_SERENA_ELENA_AN_28",
SerenaElenaAN29 = "MPO_SERENA_ELENA_AN_29",
SerenaElenaAN30 = "MPO_SERENA_ELENA_AN_30",
SerenaElenaAN31 = "MPO_SERENA_ELENA_AN_31",
SerenaElenaAN32 = "MPO_SERENA_ELENA_AN_32",
SymbioSysHricFpa = "MPO_SIMBIO-SYS_HRIC_FPA",
SymbioSysHricF550 = "MPO_SIMBIO-SYS_HRIC_F550",
SymbioSysHricFpan = "MPO_SIMBIO-SYS_HRIC_FPAN",
SymbioSysHricF750 = "MPO_SIMBIO-SYS_HRIC_F750",
SymbioSysHricF880 = "MPO_SIMBIO-SYS_HRIC_F880",
SymbioSysSTCL = "MPO_SIMBIO-SYS_STC-L",
SymbioSysSTCH = "MPO_SIMBIO-SYS_STC-H",
SymbioSysSTCLF920 = "MPO_SIMBIO-SYS_STC-L_F920",
SymbioSysSTCLF550 = "MPO_SIMBIO-SYS_STC-L_F550",
SymbioSysSTCLP700 = "MPO_SIMBIO-SYS_STC-L_P700",
SymbioSysSTCHP700 = "MPO_SIMBIO-SYS_STC-H_P700",
SymbioSysSTCHF420 = "MPO_SIMBIO-SYS_STC-H_F420",
SymbioSysSTCHF750 = "MPO_SIMBIO-SYS_STC-H_F750",
SymbioSysVIHI = "MPO_SIMBIO-SYS_VIHI",
Sixs_X1 = "MPO_SIXS-X-1",
Sixs_X2 = "MPO_SIXS-X-2",
Sixs_X3 = "MPO_SIXS-X-3",
StarTracker1 = "MPO_STR-1",
StarTracker2 = "MPO_STR-2",
StarTracker3 = "MPO_STR-3",
}
asset.onInitialize(function()
openspace.spice.loadKernel(BepiColomboKernels)
end)
asset.onDeinitialize(function()
openspace.spice.unloadKernel(BepiColomboKernels)
end)
asset.export("ID", ID)
asset.export("Frame", Frame)
asset.meta = {
Name = "BepiColombo Kernels",
Version = "1.0",
Description = "This asset contains the SPICE kernels for the BepiColombo mission.",
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -0,0 +1,88 @@
local Mission = {
Name = "BepiColombo",
Image = "https://scifleet.esa.int/downloads/bepi_mcs/bepicolombo.png",
Description = [[BepiColombo is Europe's first mission to Mercury. It will launch in October 2018 on a journey to the smallest and least explored terrestrial planet in our Solar System. Arriving at Mercury in December 2025, it will endure temperatures in excess of 350°C and gather data during a 1 year nominal mission. The mission comprises two spacecraft: 1. Mercury Planetary Orbiter (MPO), 2. Mercury Magnetospheric Orbiter (MMO). BepiColombo is a joint mission between ESA and the Japan Aerospace Exploration Agency (JAXA), executed under ESA leadership.]],
TimeRange = {
Start = "2018 OCT 20 01:45:00",
End = "2028 MAY 01 12:00:00" -- Preliminary time
},
Milestones = {
{
Name = "Launch",
Date = "2018 OCT 20 01:45:00"
},
{
Name = "Earth flyby",
Date = "2020 APR 10 04:25"
},
{
Name = "First Venus flyby",
Date = "2020 OCT 15 03:58:00"
},
{
Name = "Second Venus flyby",
Date = "2021 AUG 10 13:51:00"
},
{
Name = "First Mercury flyby",
Date = "2021 OCT 01 23:34:41"
},
{
Name = "Second Mercury flyby",
Date = "2022 JUN 23 09:44:00"
},
{
Name = "Third Mercury flyby",
Date = "2023 JUN 19 19:34:00"
},
{
Name = "Fourth Mercury flyby",
Date = "2024 SEP 05 12:00:00" -- Preliminary time
},
{
Name = "Fifth Mercury flyby",
Date = "2024 DEC 02 12:00:00" -- Preliminary time
},
{
Name = "Sixth Mercury flyby",
Date = "2025 JAN 09 12:00:00" -- Preliminary time
},
{
Name = "Mercury orbit insertion",
Date = "2025 DEC 05 12:00:00" -- Preliminary time
},
{
Name = "MPO in final science orbit",
Date = "2026 MAR 14 12:00:00" -- Preliminary time
},
{
Name = "End of nominal mission",
Date = "2027 MAY 01 12:00:00" -- Preliminary time
},
{
Name = "End of extended mission",
Date = "2028 MAY 01 12:00:00" -- Preliminary time
}
},
Phases = {}
}
asset.onInitialize(function()
openspace.loadMission(Mission)
end)
asset.onDeinitialize(function()
openspace.unloadMission(Mission.Name)
end)
asset.meta = {
Name = "BepiColombo Mission",
Version = "1.0",
Description = "This asset contains the mission profile information for the BepiColombo mission. The data in this file has been taken from https://www.esa.int/Science_Exploration/Space_Science/BepiColombo/BepiColombo_factsheet",
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -0,0 +1,84 @@
local transform = asset.require("scene/solarsystem/sun/transforms")
local sun = asset.require("scene/solarsystem/sun/sun")
local kernels = asset.require("./kernels")
local coreKernels = asset.require("spice/core")
local modelFolder = asset.resource({
Name = "BepiColombo Model",
Type = "HttpSynchronization",
Identifier = "bepicolombo_models",
Version = 1
})
local BepiColombo = {
Identifier = "BepiColombo",
Parent = transform.SolarSystemBarycenter.Identifier,
Transform = {
Translation = {
Type = "SpiceTranslation",
Target = kernels.ID.MPO,
Observer = coreKernels.ID.SolarSystemBarycenter
},
Rotation = {
Type = "SpiceRotation",
SourceFrame = kernels.Frame.MPO,
DestinationFrame = coreKernels.Frame.Galactic
}
},
GUI = {
Name = "BepiColombo",
Path = "/Solar System/Missions/BepiColombo"
}
}
local Model = {
Identifier = "BepiColomboModel",
Parent = BepiColombo.Identifier,
Transform = {
Translation = {
Type = "StaticTranslation",
Position = { 0.0, -0.275, 0.0 }
}
},
Renderable = {
Type = "RenderableModel",
GeometryFile = modelFolder .. "bepi_mcs.fbx",
ModelScale = 0.00075, -- The number has been determined by eyeballing it
LightSources = {
sun.LightSource
},
PerformShading = true,
AmbientIntensity = 0.075
},
GUI = {
Name = "BepiColombo Model",
Path = "/Solar System/Missions/BepiColombo"
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(BepiColombo)
openspace.addSceneGraphNode(Model)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(Model)
openspace.removeSceneGraphNode(BepiColombo)
end)
asset.export(BepiColombo)
asset.meta = {
Name = "BepiColombo Model",
Version = "1.0",
Description = "This asset contains the model of the BepiColombo spacecraft. The model is retrieved from https://s2e2.cosmos.esa.int/bitbucket/projects/SPICE_KERNELS/repos/bepicolombo",
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -0,0 +1,73 @@
local kernels = asset.require("./kernels")
local mercury = asset.require("scene/solarsystem/planets/mercury/transforms")
local solarsystem = asset.require("scene/solarsystem/sun/transforms")
local coreKernels = asset.require("spice/core")
local BepiColomboTrailSun = {
Identifier = "BepiColomboTrailSun",
Parent = solarsystem.SolarSystemBarycenter.Identifier,
Renderable = {
Type = "RenderableTrailTrajectory",
Translation = {
Type = "SpiceTranslation",
Target = kernels.ID.MPO,
Observer = coreKernels.ID.SolarSystemBarycenter
},
Color = { 0.70, 0.50, 0.20 },
StartTime = "2018 OCT 20 01:45:00",
EndTime = "2028 MAY 01 12:00:00",
SampleInterval = 60000
},
GUI = {
Name = "BepiColombo Trail (Sun)",
Path = "/Solar System/Missions/BepiColombo"
}
}
local BepiColomboTrailMercury = {
Identifier = "BepiColomboTrailMercury",
Parent = mercury.MercuryBarycenter.Identifier,
Renderable = {
Type = "RenderableTrailTrajectory",
Translation = {
Type = "SpiceTranslation",
Target = kernels.ID.MPO,
Observer = coreKernels.ID.Mercury
},
Color = { 0.625, 0.255, 0.45 },
StartTime = "2025 DEC 05 12:00:00",
EndTime = "2028 MAY 01 12:00:00",
SampleInterval = 600
},
GUI = {
Name = "BepiColombo Trail (Mercury)",
Path = "/Solar System/Missions/BepiColombo"
}
}
asset.onInitialize(function()
openspace.addSceneGraphNode(BepiColomboTrailSun)
openspace.addSceneGraphNode(BepiColomboTrailMercury)
end)
asset.onDeinitialize(function()
openspace.removeSceneGraphNode(BepiColomboTrailMercury)
openspace.removeSceneGraphNode(BepiColomboTrailSun)
end)
asset.export(BepiColomboTrailSun)
asset.export(BepiColomboTrailMercury)
asset.meta = {
Name = "BepiColombo Trails",
Version = "1.0",
Description = "This asset contains the trails for the BepiColombo spacecraft relative to the Sun and Mercury.",
Author = "OpenSpace Team",
URL = "http://openspaceproject.com",
License = "MIT license"
}

View File

@@ -1,5 +1,6 @@
local sun = asset.require("scene/solarsystem/sun/sun")
local sunTransforms = asset.require("scene/solarsystem/sun/transforms")
local coreKernels = asset.require("spice/core")
@@ -57,7 +58,7 @@ local Voyager2 = {
Rotation = {
Type = "SpiceRotation",
SourceFrame = "VG2_SC_BUS",
DestinationFrame = "GALACTIC"
DestinationFrame = coreKernels.Frame.Galactic
}
},
GUI = {

View File

@@ -1,6 +1,7 @@
local transform = asset.require("scene/solarsystem/planets/earth/transforms")
local sun = asset.require("scene/solarsystem/sun/sun")
local spice = asset.require("./spice")
local kernels = asset.require("./kernels")
local coreKernels = asset.require("spice/core")
@@ -23,8 +24,8 @@ local Euclid = {
Transform = {
Translation = {
Type = "SpiceTranslation",
Target = spice.ID.Euclid,
Observer = "EARTH BARYCENTER"
Target = kernels.ID.Euclid,
Observer = coreKernels.ID.EarthBarycenter
},
Rotation = {
Type = "FixedRotation",

View File

@@ -1,7 +1,8 @@
local spice = asset.require("./spice")
local kernels = asset.require("./kernels")
local earth = asset.require("scene/solarsystem/planets/earth/transforms")
local solarsystem = asset.require("scene/solarsystem/sun/transforms")
local transforms = asset.require("scene/solarsystem/planets/earth/lagrange_points/l2")
local coreKernels = asset.require("spice/core")
local StartTime = "2023 JUL 01 15:53:08.239"
@@ -14,8 +15,8 @@ local EuclidTrailSun = {
Type = "RenderableTrailTrajectory",
Translation = {
Type = "SpiceTranslation",
Target = spice.ID.Euclid,
Observer = "SSB"
Target = kernels.ID.Euclid,
Observer = coreKernels.ID.SolarSystemBarycenter
},
Color = { 0.70, 0.50, 0.20 },
StartTime = StartTime,
@@ -35,8 +36,8 @@ local EuclidTrailEarth = {
Type = "RenderableTrailTrajectory",
Translation = {
Type = "SpiceTranslation",
Target = spice.ID.Euclid,
Observer = "EARTH BARYCENTER"
Target = kernels.ID.Euclid,
Observer = coreKernels.ID.EarthBarycenter
},
Color = { 0.325, 0.65, 0.55 },
StartTime = StartTime,
@@ -61,9 +62,9 @@ local EuclidTrailOrbit = {
Type = "RenderableTrailOrbit",
Translation = {
Type = "SpiceTranslation",
Target = spice.ID.Euclid,
Observer = 392, -- L2
Frame = "GALACTIC"
Target = kernels.ID.Euclid,
Observer = l2.ID.L2,
Frame = coreKernels.Frame.Galactic
},
Color = { 0.863, 0.0, 0.902 },
Period = 182.621099, -- About 6 months
@@ -88,9 +89,9 @@ local EuclidTrailCoRevOrbit = {
Type = "RenderableTrailOrbit",
Translation = {
Type = "SpiceTranslation",
Target = spice.ID.Euclid,
Observer = 392, -- L2
Frame = "L2_COREV"
Target = kernels.ID.Euclid,
Observer = l2.ID.L2,
Frame = l2.Frame.L2Corevolving
},
Color = { 0.863, 0.0, 0.902 },
Period = 182.621099, -- About 6 months

View File

@@ -91,7 +91,7 @@ local JWSTTrailOrbit = {
Type = "SpiceTranslation",
Target = kernels.ID.JWST,
Observer = transforms.ID.L2,
Frame = "GALACTIC"
Frame = coreKernels.Frame.Galactic
},
Color = { 0.863, 0.0, 0.902 },
Period = 182.621099, -- About 6 months

View File

@@ -4,7 +4,7 @@ local guiCustomization = asset.require("customization/gui")
-- Select which commit hashes to use for the frontend and backend
local frontendHash = "17af9032d000a9865a00afe88eff88a822167eea"
local frontendHash = "95683e59c7fa1891e7db7b83e4eeea15f9da11f1"
local frontend = asset.resource({
Identifier = "WebGuiFrontend",

View File

@@ -0,0 +1,183 @@
{
"assets": [
"base",
"base_keybindings",
"scene/solarsystem/missions/bepicolombo/bepicolombo",
"scene/solarsystem/planets/earth/earth"
],
"camera": {
"altitude": 17000000.0,
"anchor": "Earth",
"latitude": 58.5877,
"longitude": 16.1924,
"type": "goToGeo"
},
"delta_times": [
1.0,
5.0,
30.0,
60.0,
300.0,
1800.0,
3600.0,
43200.0,
86400.0,
604800.0,
1209600.0,
2592000.0,
5184000.0,
7776000.0,
15552000.0,
31536000.0,
63072000.0,
157680000.0,
315360000.0,
630720000.0
],
"mark_nodes": [
"BepiColombo",
"Mercury",
"Earth",
"Venus",
"Sun"
],
"meta": {
"author": "OpenSpace Team",
"description": "Default OpenSpace Profile. Adds Earth satellites not contained in other profiles",
"license": "MIT License",
"name": "Default",
"url": "https://www.openspaceproject.com",
"version": "1.0"
},
"properties": [
{
"name": "Scene.BepiColomboMPO_MertisTis.Renderable.Enabled",
"type": "setPropertyValueSingle",
"value": "false"
},
{
"name": "Scene.BepiColomboMPO_MertisTisPlanet.Renderable.Enabled",
"type": "setPropertyValueSingle",
"value": "false"
},
{
"name": "Scene.BepiColomboMPO_MertisTisSpace.Renderable.Enabled",
"type": "setPropertyValueSingle",
"value": "false"
},
{
"name": "Scene.BepiColomboMPO_Phebus100.Renderable.Enabled",
"type": "setPropertyValueSingle",
"value": "false"
},
{
"name": "Scene.BepiColomboMPO_Phebus75.Renderable.Enabled",
"type": "setPropertyValueSingle",
"value": "false"
},
{
"name": "Scene.BepiColomboMPO_PhebusSlit100.Renderable.Enabled",
"type": "setPropertyValueSingle",
"value": "false"
},
{
"name": "Scene.BepiColomboMPO_PhebusSlit75.Renderable.Enabled",
"type": "setPropertyValueSingle",
"value": "false"
},
{
"name": "Scene.BepiColomboMPO_SerenaElena.Renderable.Enabled",
"type": "setPropertyValueSingle",
"value": "false"
},
{
"name": "Scene.BepiColomboMPO_SIMBIOSYS_HRIC_F550.Renderable.Enabled",
"type": "setPropertyValueSingle",
"value": "false"
},
{
"name": "Scene.BepiColomboMPO_SIMBIOSYS_HRIC_F750.Renderable.Enabled",
"type": "setPropertyValueSingle",
"value": "false"
},
{
"name": "Scene.BepiColomboMPO_SIMBIOSYS_HRIC_F880.Renderable.Enabled",
"type": "setPropertyValueSingle",
"value": "false"
},
{
"name": "Scene.BepiColomboMPO_SIMBIOSYS_HRIC_FPA.Renderable.Enabled",
"type": "setPropertyValueSingle",
"value": "false"
},
{
"name": "Scene.BepiColomboMPO_SIMBIOSYS_HRIC_FPAN.Renderable.Enabled",
"type": "setPropertyValueSingle",
"value": "false"
},
{
"name": "Scene.BepiColomboMPO_SIMBIOSYS_STC_H.Renderable.Enabled",
"type": "setPropertyValueSingle",
"value": "false"
},
{
"name": "Scene.BepiColomboMPO_SIMBIOSYS_STC_H_F420.Renderable.Enabled",
"type": "setPropertyValueSingle",
"value": "false"
},
{
"name": "Scene.BepiColomboMPO_SIMBIOSYS_STC_H_F750.Renderable.Enabled",
"type": "setPropertyValueSingle",
"value": "false"
},
{
"name": "Scene.BepiColomboMPO_SIMBIOSYS_STC_H_P700.Renderable.Enabled",
"type": "setPropertyValueSingle",
"value": "false"
},
{
"name": "Scene.BepiColomboMPO_SIMBIOSYS_STC_L.Renderable.Enabled",
"type": "setPropertyValueSingle",
"value": "false"
},
{
"name": "Scene.BepiColomboMPO_SIMBIOSYS_STC_L_F550.Renderable.Enabled",
"type": "setPropertyValueSingle",
"value": "false"
},
{
"name": "Scene.BepiColomboMPO_SIMBIOSYS_STC_L_F920.Renderable.Enabled",
"type": "setPropertyValueSingle",
"value": "false"
},
{
"name": "Scene.BepiColomboMPO_SIMBIOSYS_STC_L_P700.Renderable.Enabled",
"type": "setPropertyValueSingle",
"value": "false"
},
{
"name": "Scene.BepiColomboMPO_SIMBIOSYS_VIHI.Renderable.Enabled",
"type": "setPropertyValueSingle",
"value": "false"
},
{
"name": "Scene.BepiColomboMPO_MIXS-C.Renderable.Enabled",
"type": "setPropertyValueSingle",
"value": "false"
},
{
"name": "Scene.BepiColomboMPO_MIXS-T.Renderable.Enabled",
"type": "setPropertyValueSingle",
"value": "false"
}
],
"time": {
"is_paused": false,
"type": "relative",
"value": "-1d"
},
"version": {
"major": 1,
"minor": 3
}
}

View File

@@ -22,26 +22,18 @@
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
****************************************************************************************/
#include "fragment.glsl"
#ifndef __OPENSPACE_CORE___CSVLOADER___H__
#define __OPENSPACE_CORE___CSVLOADER___H__
in float vs_screenSpaceDepth;
#include <openspace/data/dataloader.h>
#include <filesystem>
#include <optional>
uniform vec3 color;
uniform float alphaValue;
uniform sampler2D spriteTexture;
namespace openspace::dataloader::csv {
Dataset loadCsvFile(std::filesystem::path path,
std::optional<DataMapping> specs = std::nullopt);
Fragment getFragment() {
Fragment frag;
} // namespace openspace::dataloader
if (alphaValue == 0.0) {
discard;
}
frag.color = texture(spriteTexture, gl_PointCoord) * vec4(color, alphaValue);
//frag.depth = gs_screenSpaceDepth;
frag.depth = vs_screenSpaceDepth;
frag.blend = BLEND_MODE_ADDITIVE;
return frag;
}
#endif // __OPENSPACE_CORE___CSVLOADER___H__

View File

@@ -22,20 +22,28 @@
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
****************************************************************************************/
#ifndef __OPENSPACE_MODULE_SPACE___SPECKLOADER___H__
#define __OPENSPACE_MODULE_SPACE___SPECKLOADER___H__
#ifndef __OPENSPACE_CORE___DATALOADER___H__
#define __OPENSPACE_CORE___DATALOADER___H__
#include <openspace/data/datamapping.h>
#include <ghoul/glm.h>
#include <ghoul/misc/boolean.h>
#include <ghoul/misc/csvreader.h>
#include <filesystem>
#include <optional>
#include <string>
#include <vector>
namespace openspace::speck {
BooleanType(SkipAllZeroLines);
namespace openspace::dataloader {
/**
* A dataset representing objects with positions and various other data columns.
* Based on the SPECK format originally used for the digital universe datasets.
* Mostly used for point-data.
*
* The read data files may also have associated texture values to be used for the
* points.
*/
struct Dataset {
struct Variable {
int index = -1;
@@ -59,8 +67,14 @@ struct Dataset {
};
std::vector<Entry> entries;
/// This variable can be used to get an understanding of the world scale size of
/// the dataset
float maxPositionComponent = 0.f;
int index(std::string_view variableName) const;
bool normalizeVariable(std::string_view variableName);
glm::vec2 findValueRange(int variableIndex) const;
glm::vec2 findValueRange(std::string_view variableName) const;
};
struct Labelset {
@@ -76,49 +90,50 @@ struct Labelset {
};
struct ColorMap {
std::optional<glm::vec4> belowRangeColor;
std::optional<glm::vec4> aboveRangeColor;
std::optional<glm::vec4> nanColor;
std::vector<glm::vec4> entries;
};
namespace data {
Dataset loadFile(std::filesystem::path path,
SkipAllZeroLines skipAllZeroLines = SkipAllZeroLines::Yes);
std::optional<DataMapping> specs = std::nullopt);
std::optional<Dataset> loadCachedFile(std::filesystem::path path);
void saveCachedFile(const Dataset& dataset, std::filesystem::path path);
Dataset loadFileWithCache(std::filesystem::path speckPath,
SkipAllZeroLines skipAllZeroLines = SkipAllZeroLines::Yes);
Dataset loadFileWithCache(std::filesystem::path path,
std::optional<DataMapping> specs = std::nullopt);
} // namespace data
namespace label {
Labelset loadFile(std::filesystem::path path,
SkipAllZeroLines skipAllZeroLines = SkipAllZeroLines::Yes);
std::optional<DataMapping> specs = std::nullopt);
std::optional<Labelset> loadCachedFile(std::filesystem::path path);
void saveCachedFile(const Labelset& labelset, std::filesystem::path path);
Labelset loadFileWithCache(std::filesystem::path speckPath,
SkipAllZeroLines skipAllZeroLines = SkipAllZeroLines::Yes);
Labelset loadFileWithCache(std::filesystem::path path);
Labelset loadFromDataset(const dataloader::Dataset& dataset);
} // namespace label
namespace color {
ColorMap loadFile(std::filesystem::path path,
SkipAllZeroLines skipAllZeroLines = SkipAllZeroLines::Yes);
std::optional<DataMapping> specs = std::nullopt);
std::optional<ColorMap> loadCachedFile(std::filesystem::path path);
void saveCachedFile(const ColorMap& colorMap, std::filesystem::path path);
ColorMap loadFileWithCache(std::filesystem::path path,
SkipAllZeroLines skipAllZeroLines = SkipAllZeroLines::Yes);
ColorMap loadFileWithCache(std::filesystem::path path);
} // namespace color
} // namespace openspace::dataloader
} // namespace openspace::speck
#endif // __OPENSPACE_MODULE_SPACE___SPECKLOADER___H__
#endif // __OPENSPACE_CORE___DATALOADER___H__

View File

@@ -0,0 +1,77 @@
/*****************************************************************************************
* *
* OpenSpace *
* *
* Copyright (c) 2014-2023 *
* *
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
* software and associated documentation files (the "Software"), to deal in the Software *
* without restriction, including without limitation the rights to use, copy, modify, *
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
* permit persons to whom the Software is furnished to do so, subject to the following *
* conditions: *
* *
* The above copyright notice and this permission notice shall be included in all copies *
* or substantial portions of the Software. *
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
****************************************************************************************/
#ifndef __OPENSPACE_CORE___DATAMAPPING___H__
#define __OPENSPACE_CORE___DATAMAPPING___H__
#include <optional>
#include <string>
#include <vector>
namespace openspace::documentation { struct Documentation; }
namespace ghoul { class Dictionary; }
namespace openspace::dataloader {
struct DataMapping {
static DataMapping createFromDictionary(const ghoul::Dictionary& dictionary);
static documentation::Documentation Documentation();
bool hasExcludeColumns() const;
bool isExcludeColumn(std::string_view column) const;
std::optional<std::string> xColumnName;
std::optional<std::string> yColumnName;
std::optional<std::string> zColumnName;
std::optional<std::string> nameColumn;
std::optional<float> missingDataValue;
bool isCaseSensitive = false;
std::vector<std::string> excludeColumns;
// OBS! When new parameters are added they should be included in the generateHash
// function
};
/**
* Generate a string based on the data mapping, that can be used to uniquely
* identify the dataset.
*/
std::string generateHashString(const DataMapping& dm);
bool isPositionColumn(const std::string& c, const std::optional<DataMapping>& mapping);
bool isColumnX(const std::string& c, const std::optional<DataMapping>& mapping);
bool isColumnY(const std::string& c, const std::optional<DataMapping>& mapping);
bool isColumnZ(const std::string& c, const std::optional<DataMapping>& mapping);
bool isNameColumn(const std::string& c, const std::optional<DataMapping>& mapping);
} // namespace openspace::dataloader
#endif // __OPENSPACE_CORE___DATAMAPPING___H__

View File

@@ -22,29 +22,22 @@
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
****************************************************************************************/
#version __CONTEXT__
#ifndef __OPENSPACE_CORE___SPECKLOADER___H__
#define __OPENSPACE_CORE___SPECKLOADER___H__
#include "PowerScaling/powerScaling_vs.hglsl"
#include <openspace/data/dataloader.h>
#include <filesystem>
#include <optional>
in dvec4 in_position;
in dvec4 in_colormap;
namespace openspace::dataloader::speck {
out float vs_screenSpaceDepth;
out float vs_scaleFactor;
out vec4 colorMap;
Dataset loadSpeckFile(std::filesystem::path path,
std::optional<DataMapping> specs = std::nullopt);
uniform dmat4 modelViewProjectionTransform;
uniform float scaleFactor;
Labelset loadLabelFile(std::filesystem::path path);
ColorMap loadCmapFile(std::filesystem::path path);
void main() {
vec4 positionClipSpace = vec4(modelViewProjectionTransform * in_position);
vec4 positionScreenSpace = vec4(z_normalization(positionClipSpace));
} // namespace openspace::dataloader::speck
vs_screenSpaceDepth = positionScreenSpace.w;
vs_scaleFactor = scaleFactor;
colorMap = vec4(in_colormap);
gl_PointSize = scaleFactor;
gl_Position = positionScreenSpace;
}
#endif // __OPENSPACE_CORE___SPECKLOADER___H__

View File

@@ -78,6 +78,7 @@ struct Configuration {
Logging logging;
std::string scriptLog;
int scriptLogRotation = 3;
struct DocumentationInfo {
std::string path;

View File

@@ -594,6 +594,7 @@ public:
protected:
properties::BoolProperty _renderPlaybackInformation;
properties::BoolProperty _ignoreRecordedScale;
properties::BoolProperty _addModelMatrixinAscii;
enum class RecordedType {
Camera = 0,

View File

@@ -181,9 +181,9 @@ private:
Camera* _camera = nullptr;
std::function<void()> _playbackEndCallback;
static constexpr double InteractionHystersis = 0.0125;
bool _inAnchorApproachSphere = false;
bool _inAnchorReachSphere = false;
const SceneGraphNode* _lastAnchor = nullptr;
OrbitalNavigator _orbitalNavigator;
KeyframeNavigator _keyframeNavigator;

View File

@@ -53,7 +53,7 @@ public:
};
Path(Waypoint start, Waypoint end, Type type,
std::optional<double> duration = std::nullopt);
std::optional<float> duration = std::nullopt);
Waypoint startPoint() const;
Waypoint endPoint() const;
@@ -63,6 +63,21 @@ public:
*/
double pathLength() const;
/**
* Return the remaining distance to traverse, in meters.
*/
double remainingDistance() const;
/**
* Estimate a value for the remaining time to reach the target, based on the
* currently progressed time and the estimation for how long the path will
* take to traverse. Note that the computation is not exact.
*
* \param speedScale The speed scale factor that may affect how fast the camera moves
* \return The estimated remaining time
*/
float estimatedRemainingTime(float speedScale) const;
/**
* Return a vector of positions corresponding to the control points of the path's
* spline curve.
@@ -170,11 +185,12 @@ private:
std::unique_ptr<PathCurve> _curve;
double _speedFactorFromDuration = 1.0;
float _speedFactorFromDuration = 1.f;
float _expectedDuration = 0.f;
// Playback variables
double _traveledDistance = 0.0; // Meters
double _progressedTime = 0.0; // Time since playback started (seconds)
float _progressedTime = 0.f; // Time since playback started (seconds)
bool _shouldQuit = false;
CameraPose _prevPose;
};

View File

@@ -64,6 +64,9 @@ public:
bool hasCurrentPath() const;
bool hasFinished() const;
bool isPlayingPath() const;
bool isPaused() const;
float estimatedRemainingTimeInPath() const;
void updateCamera(double deltaTime);
void createPath(const ghoul::Dictionary& dictionary);
@@ -102,7 +105,7 @@ private:
*/
void findRelevantNodes();
void removeRollRotation(CameraPose& pose, double deltaTime);
void removeRollRotation(CameraPose& pose);
std::unique_ptr<Path> _currentPath = nullptr;
bool _isPlaying = false;

View File

@@ -47,6 +47,7 @@ public:
glm::dquat rotation() const;
SceneGraphNode* node() const;
std::string nodeIdentifier() const;
std::optional<std::string> aimIdentifier() const;
double validBoundingSphere() const;
private:
@@ -54,6 +55,11 @@ private:
std::string _nodeIdentifier;
// To be able to handle nodes with faulty bounding spheres
double _validBoundingSphere = 0.0;
// Keep track of if there was an aim node, specified in for example the
// navigation state used to create this waypoint. It may be required in
// certain situations
std::optional<std::string> _aimNodeIdentifier;
};
/**

View File

@@ -0,0 +1,117 @@
/*****************************************************************************************
* *
* OpenSpace *
* *
* Copyright (c) 2014-2023 *
* *
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
* software and associated documentation files (the "Software"), to deal in the Software *
* without restriction, including without limitation the rights to use, copy, modify, *
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
* permit persons to whom the Software is furnished to do so, subject to the following *
* conditions: *
* *
* The above copyright notice and this permission notice shall be included in all copies *
* or substantial portions of the Software. *
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
****************************************************************************************/
#ifndef __OPENSPACE_MODULE_BASE___COLORMAPCOMPONENT___H__
#define __OPENSPACE_MODULE_BASE___COLORMAPCOMPONENT___H__
#include <openspace/properties/propertyowner.h>
#include <openspace/data/dataloader.h>
#include <openspace/properties/optionproperty.h>
#include <openspace/properties/stringproperty.h>
#include <openspace/properties/triggerproperty.h>
#include <openspace/properties/scalar/boolproperty.h>
#include <openspace/properties/vector/vec2property.h>
#include <openspace/properties/vector/vec4property.h>
#include <ghoul/opengl/texture.h>
namespace openspace {
namespace documentation { struct Documentation; }
/**
* This is a component that can be used to consistently hold parameters and properties
* for controlling color mapping in different types of renderables. This includes things
* like the color map file itself (converted to a texture), colors to use for missing
* values and the available data columns and value ranges.
*
* @TODO Also provide a small shader snippet that can be included in fragment shaders
* that use this color mapping. As well as a set of uniforms? Now every
* renderable needs to handle this separately. (emmbr, 2023-10-13)
*/
class ColorMappingComponent : public properties::PropertyOwner {
public:
ColorMappingComponent();
explicit ColorMappingComponent(const ghoul::Dictionary& dictionary);
~ColorMappingComponent() override = default;
ghoul::opengl::Texture* texture() const;
/**
* Initialize the color map information (ranges, etc.) based on the input dataset.
*
* \param dataset The *loaded* input dataset
*/
void initialize(const dataloader::Dataset& dataset);
/**
* Initialize a 1D texture based on the entries in the color map file.
*/
void initializeTexture();
static documentation::Documentation Documentation();
glm::vec4 colorFromColorMap(float value) const;
properties::BoolProperty enabled;
properties::OptionProperty dataColumn;
properties::StringProperty colorMapFile;
properties::Vec2Property valueRange;
properties::TriggerProperty setRangeFromData;
properties::BoolProperty hideOutsideRange;
properties::BoolProperty useNanColor;
properties::Vec4Property nanColor;
properties::BoolProperty useAboveRangeColor;
properties::Vec4Property aboveRangeColor;
properties::BoolProperty useBelowRangeColor;
properties::Vec4Property belowRangeColor;
private:
/**
* Fill parameter options list and range data based on the dataset and provided
* information.
*/
void initializeParameterData(const dataloader::Dataset& dataset);
// One item per color parameter option
std::vector<glm::vec2> _colorRangeData;
std::unique_ptr<ghoul::opengl::Texture> _texture;
dataloader::ColorMap _colorMap;
std::optional<std::string> _providedParameter;
std::optional<glm::vec2> _providedRange;
bool _hasNanColorInAsset = false;
bool _hasBelowRangeColorInAsset = false;
bool _hasAboveRangeColorInAsset = false;
};
} // namespace openspace
#endif // __OPENSPACE_MODULE_BASE___COLORMAPCOMPONENT___H__

View File

@@ -22,13 +22,13 @@
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
****************************************************************************************/
#ifndef __OPENSPACE_MODULE_SPACE___LABELSCOMPONENT___H__
#define __OPENSPACE_MODULE_SPACE___LABELSCOMPONENT___H__
#ifndef __OPENSPACE_CORE___LABELSCOMPONENT___H__
#define __OPENSPACE_CORE___LABELSCOMPONENT___H__
#include <openspace/properties/propertyowner.h>
#include <openspace/rendering/fadeable.h>
#include <modules/space/speckloader.h>
#include <openspace/data/dataloader.h>
#include <openspace/properties/scalar/boolproperty.h>
#include <openspace/properties/scalar/floatproperty.h>
#include <openspace/properties/vector/ivec2property.h>
@@ -47,10 +47,24 @@ namespace documentation { struct Documentation; }
class LabelsComponent : public properties::PropertyOwner, public Fadeable {
public:
explicit LabelsComponent(const ghoul::Dictionary& dictionary);
/**
* Create a labels component from an already loaded dataset. That dataset should have
* a comment per point to be used for the labels.
*
* \param dictionary A dictionary with the other information used for constructing
* the dataset
* \param dataset The dataset to create the labelset from, including xyz position and
* a string to be used for the text.
* \param unit The unit to use when interpreting the point information in the dataset
*/
explicit LabelsComponent(const ghoul::Dictionary& dictionary,
const dataloader::Dataset& dataset, DistanceUnit unit);
~LabelsComponent() override = default;
speck::Labelset& labelSet();
const speck::Labelset& labelSet() const;
dataloader::Labelset& labelSet();
const dataloader::Labelset& labelSet() const;
void initialize();
@@ -68,13 +82,16 @@ public:
private:
std::filesystem::path _labelFile;
DistanceUnit _unit = DistanceUnit::Parsec;
speck::Labelset _labelset;
dataloader::Labelset _labelset;
bool _useCache = true;
std::shared_ptr<ghoul::fontrendering::Font> _font = nullptr;
glm::dmat4 _transformationMatrix = glm::dmat4(1.0);
// Properties
bool _createdFromDataset = false;
properties::BoolProperty _enabled;
properties::Vec3Property _color;
properties::FloatProperty _size;
@@ -85,4 +102,4 @@ private:
} // namespace openspace
#endif // __OPENSPACE_MODULE_SPACE___LABELSCOMPONENT___H__
#endif // __OPENSPACE_CORE___LABELSCOMPONENT___H__

View File

@@ -213,24 +213,6 @@ public:
*/
void updateInterpolations();
/**
* Adds the provided \p time as an interesting time to this scene. The same time can
* be added multiple times.
*
* \param time The time that should be added
*
* \pre \p time.time must not be empty
* \pre \p time.name must not be empty
*/
void addInterestingTime(InterestingTime time);
/**
* Returns the list of all interesting times that are defined for this scene.
*
* \return The list of all interesting times that are defined for this scene
*/
const std::vector<InterestingTime>& interestingTimes() const;
/**
* Returns the Lua library that contains all Lua functions available to change the
* scene graph.
@@ -334,7 +316,6 @@ private:
SceneGraphNode _rootDummy;
std::unique_ptr<SceneInitializer> _initializer;
std::string _profilePropertyName;
std::vector<InterestingTime> _interestingTimes;
bool _valueIsTable = false;
std::mutex _programUpdateLock;

View File

@@ -157,20 +157,16 @@ DistanceUnitNamesPlural = {
};
constexpr bool isValidDistanceUnitName(std::string_view name) {
int i = 0;
for (std::string_view val : DistanceUnitNamesSingular) {
if (val == name) {
return true;
}
++i;
}
i = 0;
for (std::string_view val : DistanceUnitNamesPlural) {
if (val == name) {
return true;
}
++i;
}
return false;
}

View File

@@ -232,6 +232,14 @@ public:
*/
void unloadKernel(KernelHandle kernelId);
/**
* Returns a list of all loaded kernels in the kernel pool that have been loaded
* through the SpiceManager. The kernels are reported in order of their loading.
*
* \return The list of all loaded kernels that have been loaded through this manager
*/
std::vector<std::string> loadedKernels() const;
/**
* Unloads a SPICE kernel identified by the \p filePath which was used in the
* loading call to #loadKernel. The unloading is done by calling the `unload_c`

View File

@@ -100,20 +100,16 @@ TimeUnitNamesPlural = {
};
constexpr bool isValidTimeUnitName(std::string_view name) {
int i = 0;
for (std::string_view val : TimeUnitNamesSingular) {
if (val == name) {
return true;
}
++i;
}
i = 0;
for (std::string_view val : TimeUnitNamesPlural) {
if (val == name) {
return true;
}
++i;
}
return false;
}

View File

@@ -44,6 +44,8 @@ set(HEADER_FILES
rendering/grids/renderablegrid.h
rendering/grids/renderableradialgrid.h
rendering/grids/renderablesphericalgrid.h
rendering/pointcloud/renderablepointcloud.h
rendering/pointcloud/renderablepolygoncloud.h
rendering/renderablecartesianaxes.h
rendering/renderabledisc.h
rendering/renderablelabel.h
@@ -104,6 +106,8 @@ set(SOURCE_FILES
rendering/grids/renderablegrid.cpp
rendering/grids/renderableradialgrid.cpp
rendering/grids/renderablesphericalgrid.cpp
rendering/pointcloud/renderablepointcloud.cpp
rendering/pointcloud/renderablepolygoncloud.cpp
rendering/renderablecartesianaxes.cpp
rendering/renderabledisc.cpp
rendering/renderablelabel.cpp
@@ -150,6 +154,9 @@ set(SHADER_FILES
shaders/arrow_vs.glsl
shaders/axes_fs.glsl
shaders/axes_vs.glsl
shaders/billboardpoint_fs.glsl
shaders/billboardpoint_gs.glsl
shaders/billboardpoint_vs.glsl
shaders/disc_fs.glsl
shaders/disc_vs.glsl
shaders/grid_vs.glsl
@@ -162,6 +169,9 @@ set(SHADER_FILES
shaders/model_vs.glsl
shaders/plane_fs.glsl
shaders/plane_vs.glsl
shaders/polygon_fs.glsl
shaders/polygon_gs.glsl
shaders/polygon_vs.glsl
shaders/prism_fs.glsl
shaders/prism_vs.glsl
shaders/renderabletrail_fs.glsl

View File

@@ -43,6 +43,8 @@
#include <modules/base/rendering/grids/renderablegrid.h>
#include <modules/base/rendering/grids/renderableradialgrid.h>
#include <modules/base/rendering/grids/renderablesphericalgrid.h>
#include <modules/base/rendering/pointcloud/renderablepointcloud.h>
#include <modules/base/rendering/pointcloud/renderablepolygoncloud.h>
#include <modules/base/rendering/renderablecartesianaxes.h>
#include <modules/base/rendering/renderabledisc.h>
#include <modules/base/rendering/renderablelabel.h>
@@ -145,6 +147,8 @@ void BaseModule::internalInitialize(const ghoul::Dictionary&) {
fRenderable->registerClass<RenderablePlaneTimeVaryingImage>(
"RenderablePlaneTimeVaryingImage"
);
fRenderable->registerClass<RenderablePointCloud>("RenderablePointCloud");
fRenderable->registerClass<RenderablePolygonCloud>("RenderablePolygonCloud");
fRenderable->registerClass<RenderablePrism>("RenderablePrism");
fRenderable->registerClass<RenderableTimeVaryingSphere>(
"RenderableTimeVaryingSphere"
@@ -232,6 +236,8 @@ std::vector<documentation::Documentation> BaseModule::documentations() const {
RenderablePlaneImageLocal::Documentation(),
RenderablePlaneImageOnline::Documentation(),
RenderablePlaneTimeVaryingImage::Documentation(),
RenderablePointCloud::Documentation(),
RenderablePolygonCloud::Documentation(),
RenderablePrism::Documentation(),
RenderableRadialGrid::Documentation(),
RenderableSphere::Documentation(),

View File

@@ -76,7 +76,7 @@ namespace {
// [[codegen::verbatim(LabelsInfo.description)]]
std::optional<ghoul::Dictionary> labels
[[codegen::reference("space_labelscomponent")]];
[[codegen::reference("labelscomponent")]];
};
#include "renderableboxgrid_codegen.cpp"
} // namespace
@@ -124,7 +124,6 @@ bool RenderableBoxGrid::isReady() const {
void RenderableBoxGrid::initialize() {
if (_hasLabels) {
_labels->initialize();
_labels->loadLabels();
}
}

View File

@@ -27,9 +27,9 @@
#include <openspace/rendering/renderable.h>
#include <modules/space/labelscomponent.h>
#include <openspace/properties/scalar/floatproperty.h>
#include <openspace/properties/vector/vec3property.h>
#include <openspace/rendering/labelscomponent.h>
#include <ghoul/opengl/ghoul_gl.h>
namespace ghoul::opengl {

View File

@@ -122,7 +122,7 @@ namespace {
// [[codegen::verbatim(LabelsInfo.description)]]
std::optional<ghoul::Dictionary> labels
[[codegen::reference("space_labelscomponent")]];
[[codegen::reference("labelscomponent")]];
};
#include "renderablegrid_codegen.cpp"
} // namespace
@@ -192,7 +192,6 @@ bool RenderableGrid::isReady() const {
void RenderableGrid::initialize() {
if (_hasLabels) {
_labels->initialize();
_labels->loadLabels();
}
}

View File

@@ -27,12 +27,12 @@
#include <openspace/rendering/renderable.h>
#include <modules/space/labelscomponent.h>
#include <openspace/properties/stringproperty.h>
#include <openspace/properties/vector/ivec2property.h>
#include <openspace/properties/scalar/floatproperty.h>
#include <openspace/properties/vector/vec2property.h>
#include <openspace/properties/vector/vec3property.h>
#include <openspace/rendering/labelscomponent.h>
#include <ghoul/opengl/ghoul_gl.h>
namespace ghoul::opengl { class ProgramObject; }

View File

@@ -104,7 +104,7 @@ namespace {
// [[codegen::verbatim(LabelsInfo.description)]]
std::optional<ghoul::Dictionary> labels
[[codegen::reference("space_labelscomponent")]];
[[codegen::reference("labelscomponent")]];
};
#include "renderableradialgrid_codegen.cpp"
} // namespace
@@ -169,7 +169,6 @@ bool RenderableRadialGrid::isReady() const {
void RenderableRadialGrid::initialize() {
if (_hasLabels) {
_labels->initialize();
_labels->loadLabels();
}
}

View File

@@ -27,13 +27,13 @@
#include <openspace/rendering/renderable.h>
#include <modules/space/labelscomponent.h>
#include <openspace/properties/scalar/floatproperty.h>
#include <openspace/properties/scalar/intproperty.h>
#include <openspace/properties/vector/ivec2property.h>
#include <openspace/properties/vector/vec2property.h>
#include <openspace/properties/vector/vec3property.h>
#include <openspace/rendering/helper.h>
#include <openspace/rendering/labelscomponent.h>
#include <ghoul/opengl/ghoul_gl.h>
namespace ghoul::opengl { class ProgramObject; }

View File

@@ -79,7 +79,7 @@ namespace {
// [[codegen::verbatim(LabelsInfo.description)]]
std::optional<ghoul::Dictionary> labels
[[codegen::reference("space_labelscomponent")]];
[[codegen::reference("labelscomponent")]];
};
#include "renderablesphericalgrid_codegen.cpp"
} // namespace
@@ -136,7 +136,6 @@ bool RenderableSphericalGrid::isReady() const {
void RenderableSphericalGrid::initialize() {
if (_hasLabels) {
_labels->initialize();
_labels->loadLabels();
}
}

View File

@@ -27,10 +27,10 @@
#include <openspace/rendering/renderable.h>
#include <modules/space/labelscomponent.h>
#include <openspace/properties/scalar/floatproperty.h>
#include <openspace/properties/scalar/intproperty.h>
#include <openspace/properties/vector/vec3property.h>
#include <openspace/rendering/labelscomponent.h>
#include <ghoul/opengl/ghoul_gl.h>
namespace ghoul::opengl { class ProgramObject; }

File diff suppressed because it is too large Load Diff

View File

@@ -22,27 +22,27 @@
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
****************************************************************************************/
#ifndef __OPENSPACE_MODULE_DIGITALUNIVERSE___RENDERABLEBILLBOARDSCLOUD___H__
#define __OPENSPACE_MODULE_DIGITALUNIVERSE___RENDERABLEBILLBOARDSCLOUD___H__
#ifndef __OPENSPACE_MODULE_BASE___RENDERABLEPOINTCLOUD___H__
#define __OPENSPACE_MODULE_BASE___RENDERABLEPOINTCLOUD___H__
#include <openspace/rendering/renderable.h>
#include <modules/space/labelscomponent.h>
#include <openspace/properties/optionproperty.h>
#include <openspace/properties/stringproperty.h>
#include <openspace/properties/triggerproperty.h>
#include <openspace/properties/scalar/boolproperty.h>
#include <openspace/properties/scalar/floatproperty.h>
#include <openspace/properties/scalar/uintproperty.h>
#include <openspace/properties/vector/ivec2property.h>
#include <openspace/properties/vector/vec2property.h>
#include <openspace/properties/vector/vec3property.h>
#include <openspace/rendering/colormappingcomponent.h>
#include <openspace/rendering/labelscomponent.h>
#include <openspace/util/distanceconversion.h>
#include <ghoul/opengl/ghoul_gl.h>
#include <ghoul/opengl/uniformcache.h>
#include <functional>
#include <unordered_map>
namespace ghoul::filesystem { class File; }
namespace ghoul::opengl {
class ProgramObject;
class Texture;
@@ -52,10 +52,15 @@ namespace openspace {
namespace documentation { struct Documentation; }
class RenderableBillboardsCloud : public Renderable {
/**
* This class describes a point cloud renderable that can be used to draw billboraded
* points based on a data file with 3D positions. Alternatively the points can also
* be colored and sized based on a separate column in the data file.
*/
class RenderablePointCloud : public Renderable {
public:
explicit RenderableBillboardsCloud(const ghoul::Dictionary& dictionary);
~RenderableBillboardsCloud() override = default;
explicit RenderablePointCloud(const ghoul::Dictionary& dictionary);
~RenderablePointCloud() override = default;
void initialize() override;
void initializeGL() override;
@@ -68,88 +73,104 @@ public:
static documentation::Documentation Documentation();
private:
protected:
int nAttributesPerPoint() const;
void updateBufferData();
void updateSpriteTexture();
/// Find the index of the currently chosen color parameter in the dataset
int currentColorParameterIndex() const;
/// Find the index of the currently chosen size parameter in the dataset
int currentSizeParameterIndex() const;
std::vector<float> createDataSlice();
void createPolygonTexture();
void renderToTexture(GLuint textureToRenderTo, GLuint textureWidth,
GLuint textureHeight);
void loadPolygonGeometryForRendering();
void renderPolygonGeometry(GLuint vao);
virtual void bindTextureForRendering() const;
float computeDistanceFadeValue(const RenderData& data) const;
void renderBillboards(const RenderData& data, const glm::dmat4& modelMatrix,
const glm::dvec3& orthoRight, const glm::dvec3& orthoUp, float fadeInVariable);
bool _hasSpeckFile = false;
bool _dataIsDirty = true;
bool _hasSpriteTexture = false;
bool _spriteTextureIsDirty = true;
bool _hasSpriteTexture = false;
bool _hasDataFile = false;
bool _hasColorMapFile = false;
bool _isColorMapExact = false;
bool _hasDatavarSize = false;
bool _hasPolygon = false;
bool _hasLabels = false;
int _polygonSides = 0;
struct SizeSettings : properties::PropertyOwner {
explicit SizeSettings(const ghoul::Dictionary& dictionary);
GLuint _pTexture = 0;
struct SizeMapping : properties::PropertyOwner {
SizeMapping();
properties::BoolProperty enabled;
properties::OptionProperty parameterOption;
};
SizeMapping sizeMapping;
properties::FloatProperty _scaleFactor;
properties::BoolProperty _useColorMap;
properties::Vec3Property _pointColor;
properties::FloatProperty scaleExponent;
properties::FloatProperty scaleFactor;
properties::BoolProperty useMaxSizeControl;
properties::FloatProperty maxAngularSize;
};
SizeSettings _sizeSettings;
struct ColorSettings : properties::PropertyOwner {
explicit ColorSettings(const ghoul::Dictionary& dictionary);
properties::Vec3Property pointColor;
std::unique_ptr<ColorMappingComponent> colorMapping;
};
ColorSettings _colorSettings;
struct Fading : properties::PropertyOwner {
explicit Fading(const ghoul::Dictionary& dictionary);
properties::Vec2Property fadeInDistances;
properties::BoolProperty enabled;
properties::BoolProperty invert;
};
Fading _fading;
properties::BoolProperty _useSpriteTexture;
properties::StringProperty _spriteTexturePath;
properties::BoolProperty _useAdditiveBlending;
properties::BoolProperty _drawElements;
properties::BoolProperty _pixelSizeControl;
properties::OptionProperty _colorOption;
properties::Vec2Property _optionColorRangeData;
properties::OptionProperty _datavarSizeOption;
properties::Vec2Property _fadeInDistances;
properties::BoolProperty _disableFadeInDistance;
properties::Vec2Property _billboardMinMaxSize;
properties::FloatProperty _correctionSizeEndDistance;
properties::FloatProperty _correctionSizeFactor;
properties::BoolProperty _useLinearFiltering;
properties::TriggerProperty _setRangeFromData;
properties::OptionProperty _renderOption;
ghoul::opengl::Texture* _polygonTexture = nullptr;
properties::UIntProperty _nDataPoints;
ghoul::opengl::Texture* _spriteTexture = nullptr;
ghoul::opengl::ProgramObject* _program = nullptr;
ghoul::opengl::ProgramObject* _renderToPolygonProgram = nullptr;
UniformCache(
cameraViewProjectionMatrix, modelMatrix, cameraPos, cameraLookup, renderOption,
minBillboardSize, maxBillboardSize, correctionSizeEndDistance,
correctionSizeFactor, color, alphaValue, scaleFactor, up, right, fadeInValue,
screenSize, spriteTexture, hasColormap, useColormap, enabledRectSizeControl,
hasDvarScaling
cameraViewMatrix, projectionMatrix, modelMatrix, cameraPos, cameraLookup,
renderOption, maxAngularSize, color, opacity, scaleExponent, scaleFactor, up,
right, fadeInValue, hasSpriteTexture, spriteTexture, useColormap, colorMapTexture,
cmapRangeMin, cmapRangeMax, nanColor, useNanColor, hideOutsideRange,
enableMaxSizeControl, aboveRangeColor, useAboveRangeColor, belowRangeColor,
useBelowRangeColor, hasDvarScaling
) _uniformCache;
std::string _speckFile;
std::string _colorMapFile;
std::string _colorOptionString;
std::string _datavarSizeOptionString;
std::string _dataFile;
DistanceUnit _unit = DistanceUnit::Parsec;
speck::Dataset _dataset;
speck::ColorMap _colorMap;
dataloader::Dataset _dataset;
dataloader::DataMapping _dataMapping;
// Everything related to the labels is handled by LabelsComponent
std::unique_ptr<LabelsComponent> _labels;
std::vector<glm::vec2> _colorRangeData;
std::unordered_map<int, std::string> _optionConversionMap;
std::unordered_map<int, std::string> _optionConversionSizeMap;
glm::dmat4 _transformationMatrix = glm::dmat4(1.0);
GLuint _vao = 0;
GLuint _vbo = 0;
// For polygons
GLuint _polygonVao = 0;
GLuint _polygonVbo = 0;
};
} // namespace openspace
#endif // __OPENSPACE_MODULE_DIGITALUNIVERSE___RENDERABLEBILLBOARDSCLOUD___H__
#endif // __OPENSPACE_MODULE_BASE___RENDERABLEPOINTCLOUD___H__

View File

@@ -0,0 +1,193 @@
/*****************************************************************************************
* *
* OpenSpace *
* *
* Copyright (c) 2014-2023 *
* *
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
* software and associated documentation files (the "Software"), to deal in the Software *
* without restriction, including without limitation the rights to use, copy, modify, *
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
* permit persons to whom the Software is furnished to do so, subject to the following *
* conditions: *
* *
* The above copyright notice and this permission notice shall be included in all copies *
* or substantial portions of the Software. *
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
****************************************************************************************/
#include <modules/base/rendering/pointcloud/renderablepolygoncloud.h>
#include <openspace/documentation/documentation.h>
#include <ghoul/filesystem/filesystem.h>
#include <ghoul/glm.h>
#include <ghoul/logging/logmanager.h>
#include <ghoul/opengl/programobject.h>
#include <ghoul/opengl/texture.h>
#include <optional>
namespace {
constexpr std::string_view _loggerCat = "RenderablePolygonCloud";
// A RenderablePolygonCloud is a RenderablePointCloud where the shape of the points
// is a uniform polygon with a given number of sides instead of a texture. For
// instance, PolygonSides = 5 results in the points being rendered as pentagons.
// Note that while this renderable inherits the texture property from
// RenderablePointCloud, any added texture value will be ignored in favor of the
// polygon shape.
//
// See documentation of RenderablePointCloud for details on the other parts of the
// point cloud rendering.
struct [[codegen::Dictionary(RenderablePolygonCloud)]] Parameters {
// The number of sides for the polygon used to represent each point. Default is
// 3, i.e. to use triangles
std::optional<int> polygonSides [[codegen::greaterequal(3)]];
};
#include "renderablepolygoncloud_codegen.cpp"
} // namespace
namespace openspace {
documentation::Documentation RenderablePolygonCloud::Documentation() {
return codegen::doc<Parameters>(
"base_renderablepolygoncloud",
RenderablePointCloud::Documentation()
);
}
RenderablePolygonCloud::RenderablePolygonCloud(const ghoul::Dictionary& dictionary)
: RenderablePointCloud(dictionary)
{
const Parameters p = codegen::bake<Parameters>(dictionary);
_nPolygonSides = p.polygonSides.value_or(_nPolygonSides);
// The texture to use for the rendering will be generated in initializeGl. Make sure
// we use it in the rnedering
_hasSpriteTexture = true;
}
void RenderablePolygonCloud::initializeGL() {
ZoneScoped;
RenderablePointCloud::initializeGL();
createPolygonTexture();
}
void RenderablePolygonCloud::deinitializeGL() {
glDeleteBuffers(1, &_polygonVbo);
_polygonVbo = 0;
glDeleteVertexArrays(1, &_polygonVao);
_polygonVao = 0;
glDeleteTextures(1, &_pTexture);
RenderablePointCloud::deinitializeGL();
}
void RenderablePolygonCloud::bindTextureForRendering() const {
glBindTexture(GL_TEXTURE_2D, _pTexture);
}
void RenderablePolygonCloud::createPolygonTexture() {
ZoneScoped;
LDEBUG("Creating Polygon Texture");
constexpr gl::GLsizei TexSize = 512;
glGenTextures(1, &_pTexture);
glBindTexture(GL_TEXTURE_2D, _pTexture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
// Stopped using a buffer object for GL_PIXEL_UNPACK_BUFFER
glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, TexSize, TexSize, 0, GL_RGBA, GL_BYTE, nullptr);
renderToTexture(_pTexture, TexSize, TexSize);
}
void RenderablePolygonCloud::renderToTexture(GLuint textureToRenderTo,
GLuint textureWidth, GLuint textureHeight)
{
LDEBUG("Rendering to Texture");
// Saves initial Application's OpenGL State
GLint defaultFBO;
GLint viewport[4];
glGetIntegerv(GL_FRAMEBUFFER_BINDING, &defaultFBO);
glGetIntegerv(GL_VIEWPORT, viewport);
GLuint textureFBO;
glGenFramebuffers(1, &textureFBO);
glBindFramebuffer(GL_FRAMEBUFFER, textureFBO);
GLenum drawBuffers[1] = { GL_COLOR_ATTACHMENT0 };
glDrawBuffers(1, drawBuffers);
glFramebufferTexture(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, textureToRenderTo, 0);
glViewport(viewport[0], viewport[1], textureWidth, textureHeight);
if (_polygonVao == 0) {
glGenVertexArrays(1, &_polygonVao);
}
if (_polygonVbo == 0) {
glGenBuffers(1, &_polygonVbo);
}
glBindVertexArray(_polygonVao);
glBindBuffer(GL_ARRAY_BUFFER, _polygonVbo);
constexpr std::array<GLfloat, 4> VertexData = {
// x y z w
0.f, 0.f, 0.f, 1.f,
};
glBufferData(GL_ARRAY_BUFFER, sizeof(VertexData), VertexData.data(), GL_STATIC_DRAW);
glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 4 * sizeof(GLfloat), nullptr);
glEnableVertexAttribArray(0);
glBindVertexArray(0);
renderPolygonGeometry(_polygonVao);
// Restores Applications' OpenGL State
glBindFramebuffer(GL_FRAMEBUFFER, defaultFBO);
glViewport(viewport[0], viewport[1], viewport[2], viewport[3]);
glDeleteBuffers(1, &_polygonVbo);
glDeleteVertexArrays(1, &_polygonVao);
glDeleteFramebuffers(1, &textureFBO);
}
void RenderablePolygonCloud::renderPolygonGeometry(GLuint vao) {
std::unique_ptr<ghoul::opengl::ProgramObject> program =
ghoul::opengl::ProgramObject::Build(
"RenderablePointCloud_Polygon",
absPath("${MODULE_BASE}/shaders/polygon_vs.glsl"),
absPath("${MODULE_BASE}/shaders/polygon_fs.glsl"),
absPath("${MODULE_BASE}/shaders/polygon_gs.glsl")
);
program->activate();
constexpr glm::vec4 Black = glm::vec4(0.f, 0.f, 0.f, 0.f);
glClearBufferfv(GL_COLOR, 0, glm::value_ptr(Black));
program->setUniform("sides", _nPolygonSides);
program->setUniform("polygonColor", _colorSettings.pointColor);
glBindVertexArray(vao);
glDrawArrays(GL_POINTS, 0, 1);
glBindVertexArray(0);
program->deactivate();
}
} // namespace openspace

View File

@@ -0,0 +1,70 @@
/*****************************************************************************************
* *
* OpenSpace *
* *
* Copyright (c) 2014-2023 *
* *
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
* software and associated documentation files (the "Software"), to deal in the Software *
* without restriction, including without limitation the rights to use, copy, modify, *
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
* permit persons to whom the Software is furnished to do so, subject to the following *
* conditions: *
* *
* The above copyright notice and this permission notice shall be included in all copies *
* or substantial portions of the Software. *
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
****************************************************************************************/
#ifndef __OPENSPACE_MODULE_BASE___RENDERABLEPOLYGONCLOUD___H__
#define __OPENSPACE_MODULE_BASE___RENDERABLEPOLYGONCLOUD___H__
#include <modules/base/rendering/pointcloud/renderablepointcloud.h>
#include <ghoul/opengl/ghoul_gl.h>
namespace ghoul::opengl { class Texture; }
namespace openspace {
namespace documentation { struct Documentation; }
/**
* A billboarded point cloud, but with dynamically created uniform polygon shapes instead
* of a custom texture. Overwrites the sprite set in parent class, RenderablePointCloud
*/
class RenderablePolygonCloud : public RenderablePointCloud {
public:
explicit RenderablePolygonCloud(const ghoul::Dictionary& dictionary);
~RenderablePolygonCloud() override = default;
void initializeGL() override;
void deinitializeGL() override;
static documentation::Documentation Documentation();
private:
void createPolygonTexture();
void renderToTexture(GLuint textureToRenderTo, GLuint textureWidth,
GLuint textureHeight);
void renderPolygonGeometry(GLuint vao);
void bindTextureForRendering() const override;
int _nPolygonSides = 3;
GLuint _pTexture = 0;
GLuint _polygonVao = 0;
GLuint _polygonVbo = 0;
};
} // namespace openspace
#endif // __OPENSPACE_MODULE_BASE___RENDERABLEPOLYGONCLOUD___H__

View File

@@ -61,6 +61,18 @@ namespace {
openspace::properties::Property::Visibility::NoviceUser
};
// The RenderableCartesianAxes can be used to render the local Cartesian coordinate
// system, or reference frame, of another scene graph node. The colors of the axes
// can be customized but are per default set to Red, Green and Blue, for the X-, Y-
// and Z-axis, respectively.
//
// To add the axes, create a scene graph node with the RenderableCartesianAxes
// renderable and add it as a child to the other scene graph node, i.e. specify the
// other node as the Parent of the node with this renderable. Also, the axes have to
// be scaled to match the parent object for the axes to be visible in the scene, for
// example using a StaticScale.
//
// See example asset (@TODO: link to asset file).
struct [[codegen::Dictionary(RenderableCartesianAxes)]] Parameters {
// [[codegen::verbatim(XColorInfo.description)]]
std::optional<glm::vec3> xColor [[codegen::color()]];
@@ -70,7 +82,6 @@ namespace {
// [[codegen::verbatim(ZColorInfo.description)]]
std::optional<glm::vec3> zColor [[codegen::color()]];
};
#include "renderablecartesianaxes_codegen.cpp"
} // namespace

View File

@@ -593,7 +593,7 @@ void RenderableModel::initializeGL() {
}
// Set animation settings
_geometry->setTimeScale(_animationTimeScale);
_geometry->setTimeScale(static_cast<float>(_animationTimeScale));
}
// Initialize shaders

View File

@@ -0,0 +1,115 @@
/*****************************************************************************************
* *
* OpenSpace *
* *
* Copyright (c) 2014-2023 *
* *
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
* software and associated documentation files (the "Software"), to deal in the Software *
* without restriction, including without limitation the rights to use, copy, modify, *
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
* permit persons to whom the Software is furnished to do so, subject to the following *
* conditions: *
* *
* The above copyright notice and this permission notice shall be included in all copies *
* or substantial portions of the Software. *
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
****************************************************************************************/
#include "fragment.glsl"
flat in float gs_colorParameter;
flat in float vs_screenSpaceDepth;
flat in vec4 vs_positionViewSpace;
in vec2 texCoord;
uniform float opacity;
uniform vec3 color;
uniform vec4 nanColor = vec4(0.5);
uniform bool useNanColor = true;
uniform vec4 aboveRangeColor;
uniform bool useAboveRangeColor;
uniform vec4 belowRangeColor;
uniform bool useBelowRangeColor;
uniform bool hasSpriteTexture;
uniform sampler2D spriteTexture;
uniform bool useColorMap;
uniform sampler1D colorMapTexture;
uniform float cmapRangeMin;
uniform float cmapRangeMax;
uniform bool hideOutsideRange;
uniform float fadeInValue;
vec4 sampleColorMap(float dataValue) {
if (useNanColor && isnan(dataValue)) {
return nanColor;
}
bool isOutside = dataValue < cmapRangeMin || dataValue > cmapRangeMax;
if (isnan(dataValue) || (hideOutsideRange && isOutside)) {
discard;
}
if (useBelowRangeColor && dataValue < cmapRangeMin) {
return belowRangeColor;
}
if (useAboveRangeColor && dataValue > cmapRangeMax) {
return aboveRangeColor;
}
float t = (dataValue - cmapRangeMin) / (cmapRangeMax - cmapRangeMin);
t = clamp(t, 0.0, 1.0);
return texture(colorMapTexture, t);
}
Fragment getFragment() {
if (fadeInValue == 0.0 || opacity == 0.0) {
discard;
}
if (!hasSpriteTexture) {
// Moving the origin to the center
vec2 st = (texCoord - vec2(0.5)) * 2.0;
if (length(st) > 1.0) {
discard;
}
}
vec4 fullColor = vec4(1.0);
if (hasSpriteTexture) {
fullColor = texture(spriteTexture, texCoord);
}
if (useColorMap) {
fullColor *= sampleColorMap(gs_colorParameter);
}
else {
fullColor.rgb *= color;
}
fullColor.a *= opacity * fadeInValue;
if (fullColor.a < 0.01) {
discard;
}
Fragment frag;
frag.color = fullColor;
frag.depth = vs_screenSpaceDepth;
frag.gPosition = vs_positionViewSpace;
frag.gNormal = vec4(0.0, 0.0, 0.0, 1.0);
return frag;
}

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