From 9fd70834e6fca339c26d4a3d89331674fc5c9a64 Mon Sep 17 00:00:00 2001 From: Malin E Date: Wed, 29 Mar 2023 14:29:58 +0200 Subject: [PATCH 01/31] Add transformation matrix to labels, fixes #2501 --- data/assets/scene/digitaluniverse/grids.asset | 34 +++++++++++-------- modules/space/labelscomponent.cpp | 16 ++++++++- modules/space/labelscomponent.h | 2 ++ 3 files changed, 37 insertions(+), 15 deletions(-) diff --git a/data/assets/scene/digitaluniverse/grids.asset b/data/assets/scene/digitaluniverse/grids.asset index 97ae62244f..a3e2b4c9fa 100644 --- a/data/assets/scene/digitaluniverse/grids.asset +++ b/data/assets/scene/digitaluniverse/grids.asset @@ -7,12 +7,26 @@ local equatorialRotationMatrix = { -0.483835 , 0.7469823, 0.4559838 } +local equatorialTransformationMatrix = { + -0.05487554, 0.4941095, -0.8676661, 0.0, + -0.8734371 , -0.4448296, -0.1980764, 0.0, + -0.483835 , 0.7469823, 0.4559838, 0.0, + 0.0 , 0.0 , 0.0 , 1.0 +} + local eclipticRotationMatrix = { -0.05487554, 0.4941095, -0.8676661, -0.9938214 , -0.1109906, -0.0003515167, -0.09647644, 0.8622859, 0.4971472 } +local eclipticTransformationMatrix = { + -0.05487554, 0.4941095, -0.8676661, 0.0, + -0.9938214 , -0.1109906, -0.0003515167, 0.0, + -0.09647644, 0.8622859, 0.4971472, 0.0, + 0.0 , 0.0 , 0.0 , 1.0 +} + local speck = asset.syncedResource({ Name = "Grids Speck Files", Type = "HttpSynchronization", @@ -116,18 +130,14 @@ local eclipticLabels = { Color = { 0.5, 0.5, 0.5 }, Size = 14.75, MinMaxSize = { 1, 50 }, - Unit = "pc" + Unit = "pc", + TransformationMatrix = eclipticTransformationMatrix }, Color = { 1.0, 1.0, 1.0 }, Opacity = 0.65, Unit = "pc", DrawLabels = true, - TransformationMatrix = { - -0.05487554, 0.4941095, -0.8676661, 0.0, - -0.9938214 , -0.1109906, -0.0003515167, 0.0, - -0.09647644, 0.8622859, 0.4971472, 0.0, - 0.0, 0.0, 0.0, 1.0 - } + TransformationMatrix = eclipticTransformationMatrix }, GUI = { Name = "Ecliptic Sphere Labels", @@ -172,18 +182,14 @@ local equatorialLabels = { Color = { 0.5, 0.5, 0.5 }, Size = 14.5, MinMaxSize = { 2, 70 }, - Unit = "pc" + Unit = "pc", + TransformationMatrix = equatorialTransformationMatrix }, Color = { 1.0, 1.0, 1.0 }, Opacity = 0.65, Unit = "pc", DrawLabels = true, - TransformationMatrix = { - -0.05487554, 0.4941095, -0.8676661, 0.0, - -0.8734371 , -0.4448296, -0.1980764, 0.0, - -0.483835 , 0.7469823, 0.4559838, 0.0, - 0.0 , 0.0 , 0.0 , 1.0 - } + TransformationMatrix = equatorialTransformationMatrix }, GUI = { Name = "Equatorial Sphere Labels", diff --git a/modules/space/labelscomponent.cpp b/modules/space/labelscomponent.cpp index 60e912c93a..d1db51a8b6 100644 --- a/modules/space/labelscomponent.cpp +++ b/modules/space/labelscomponent.cpp @@ -83,6 +83,12 @@ namespace { "display rendering (for example fisheye) this should be set to false." }; + constexpr openspace::properties::Property::PropertyInfo TransformationMatrixInfo = { + "TransformationMatrix", + "Transformation Matrix", + "Transformation matrix to be applied to the labels" + }; + struct [[codegen::Dictionary(LabelsComponent)]] Parameters { // [[codegen::verbatim(FileInfo.description)]] std::filesystem::path file; @@ -115,6 +121,9 @@ namespace { // [[codegen::verbatim(FaceCameraInfo.description)]] std::optional faceCamera; + + // [[codegen::verbatim(TransformationMatrixInfo.description)]] + std::optional transformationMatrix; }; #include "labelscomponent_codegen.cpp" } // namespace @@ -184,6 +193,8 @@ LabelsComponent::LabelsComponent(const ghoul::Dictionary& dictionary) _faceCamera = !global::windowDelegate->isFisheyeRendering(); } addProperty(_faceCamera); + + _transformationMatrix = p.transformationMatrix.value_or(_transformationMatrix); } speck::Labelset& LabelsComponent::labelSet() { @@ -241,8 +252,11 @@ void LabelsComponent::render(const RenderData& data, continue; } - glm::vec3 scaledPos(e.position); + // Transform and scale the labels + glm::vec3 transformedPos(_transformationMatrix * glm::dvec4(e.position, 1.0)); + glm::vec3 scaledPos(transformedPos); scaledPos *= scale; + ghoul::fontrendering::FontRenderer::defaultProjectionRenderer().render( *_font, scaledPos, diff --git a/modules/space/labelscomponent.h b/modules/space/labelscomponent.h index 6e9aad5a81..b20927df30 100644 --- a/modules/space/labelscomponent.h +++ b/modules/space/labelscomponent.h @@ -70,6 +70,8 @@ private: std::shared_ptr _font = nullptr; + glm::dmat4 _transformationMatrix = glm::dmat4(1.0); + // Properties properties::FloatProperty _opacity; properties::Vec3Property _color; From 79385faa6802406c9d88ebf7320bc90e8f9c4fe0 Mon Sep 17 00:00:00 2001 From: Gene Payne Date: Thu, 30 Mar 2023 14:18:53 -0600 Subject: [PATCH 02/31] Use correct FOV calculations to handle portrait or landscape windows (#2554) * Use correct FOV calculations to handle portrait or landscape windows * Include missing numbers header and use float pi constant * Renamed fov variable based on developers feedback --- .../launcher/src/sgctedit/windowcontrol.cpp | 34 ++++++++++++------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/apps/OpenSpace/ext/launcher/src/sgctedit/windowcontrol.cpp b/apps/OpenSpace/ext/launcher/src/sgctedit/windowcontrol.cpp index b1bdd0b3ae..a466f450af 100644 --- a/apps/OpenSpace/ext/launcher/src/sgctedit/windowcontrol.cpp +++ b/apps/OpenSpace/ext/launcher/src/sgctedit/windowcontrol.cpp @@ -36,6 +36,7 @@ #include #include #include +#include namespace { std::array MonitorNames = { @@ -59,8 +60,8 @@ namespace { }; constexpr int LineEditWidthFixedWindowSize = 50; - constexpr float DefaultFovH = 80.f; - constexpr float DefaultFovV = 50.534f; + constexpr float DefaultFovLongEdge = 80.f; + constexpr float DefaultFovShortEdge = 50.534f; constexpr float DefaultHeightOffset = 0.f; constexpr int MaxWindowSizePixels = 10000; constexpr double FovEpsilon = 0.00001; @@ -358,7 +359,7 @@ QWidget* WindowControl::createPlanarWidget() { _planar.fovH = new QDoubleSpinBox; _planar.fovH->setMinimum(FovEpsilon); _planar.fovH->setMaximum(180.0 - FovEpsilon); - _planar.fovH->setValue(DefaultFovH); + _planar.fovH->setValue(DefaultFovLongEdge); _planar.fovH->setEnabled(false); _planar.fovH->setToolTip(hfovTip); _planar.fovH->setSizePolicy( @@ -376,7 +377,7 @@ QWidget* WindowControl::createPlanarWidget() { _planar.fovV = new QDoubleSpinBox; _planar.fovV->setMinimum(FovEpsilon); _planar.fovV->setMaximum(180.0 - FovEpsilon); - _planar.fovV->setValue(DefaultFovV); + _planar.fovV->setValue(DefaultFovShortEdge); _planar.fovV->setEnabled(false); _planar.fovV->setToolTip(vfovTip); _planar.fovV->setSizePolicy( @@ -614,8 +615,8 @@ void WindowControl::resetToDefaults() { _fisheye.spoutOutput->setChecked(false); _equirectangular.spoutOutput->setChecked(false); _projectionType->setCurrentIndex(static_cast(ProjectionIndices::Planar)); - _planar.fovV->setValue(DefaultFovH); - _planar.fovV->setValue(DefaultFovV); + _planar.fovV->setValue(DefaultFovLongEdge); + _planar.fovV->setValue(DefaultFovShortEdge); _cylindrical.heightOffset->setValue(DefaultHeightOffset); _fisheye.quality->setCurrentIndex(2); _sphericalMirror.quality->setCurrentIndex(2); @@ -816,14 +817,21 @@ void WindowControl::onFovLockClicked() { } void WindowControl::updatePlanarLockedFov() { - const float aspectRatio = _windowDimensions.width() / _windowDimensions.height(); - const float ratio = aspectRatio / IdealAspectRatio; - if (ratio >= 1.f) { - _planar.fovH->setValue(std::min(DefaultFovH * ratio, 180.f)); - _planar.fovV->setValue(DefaultFovV); + bool landscapeOrientation = (_windowDimensions.width() >= _windowDimensions.height()); + float aspectRatio; + if (landscapeOrientation) { + aspectRatio = _windowDimensions.width() / _windowDimensions.height(); } else { - _planar.fovH->setValue(DefaultFovH); - _planar.fovV->setValue(std::min(DefaultFovV / ratio, 180.f)); + aspectRatio = _windowDimensions.height() / _windowDimensions.width(); } + + float adjustedFov = 2.f * atan(aspectRatio * tan(DefaultFovShortEdge + * std::numbers::pi_v / 180.f / 2.f)); + // Convert to degrees and limit to 180° + adjustedFov *= 180.f / std::numbers::pi_v; + adjustedFov = std::min(adjustedFov, 180.f); + + _planar.fovH->setValue(landscapeOrientation ? adjustedFov : DefaultFovShortEdge); + _planar.fovV->setValue(landscapeOrientation ? DefaultFovShortEdge : adjustedFov); } From 3ae5d8bf97f6cd1208750813800b4183adfdf144 Mon Sep 17 00:00:00 2001 From: Malin E Date: Fri, 31 Mar 2023 14:54:37 +0200 Subject: [PATCH 03/31] Add new test image --- data/test.jpg | Bin 0 -> 817657 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/test.jpg diff --git a/data/test.jpg b/data/test.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e526e5789d0975e91301bd60393bb729699fb853 GIT binary patch literal 817657 zcmeFacU%Q|skaHFRVMv0KGmPXMBxewHm>Dt*VTLGC1qBsB1SIDuph#9k1wln6 zgCs#vkfeQ*&J$0(f{dfBxm_0NDTpR&FSN9}9 z3IG5t06+)<2#B(2K==dKQvd(~1PVYw`djcK1~Hz80K8}*1P3YmKuil_GSD9dFZv%m zcs`~d7@wXMLUfS!6NuS<;6)G%{2@~ul*0+qR>4aG#EhWN2nu2#ILsF>(mYg8sxc|KmZVdv?UP7|G+CCPWXYhKn%(L zUC#vBKl%fh2>JudfdwMSKjgv7hyH;H^AB~#cNU@_bWMH7^bqlZQ!&!KGy3l4Ac#6BGk^!~o!@|5MJ+4>_QBAg|F45SSDngBFvKM#>?i9MSR;QYZ(M*nc>X<)Eb?2W?7#uPbmAfF587Uig~D7byz7 zL4VNkWheYW&jjgs4!oXtM+}DWxE7xXba3#(hk1VZ$~)r_6*U_Cs63#P|L~tYa3jFe z!J_|=MGQcHj2~i<_H&F;gYEQlj4^}w&oKreIBZuAkWTOeYtw^?L8k*=cs+jl`|tJ_ z0m_5na!%a`!9|0}_l%%AjWTcd2WR!Fi

yFG?bJyOe_oxObiSx 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⪻Hvf)BF{WJ*j;)Cy8w@VkCb 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 z zjVRc$9+qkt@!F_3{tm?bMEjI_t=(q&I_tDa^7llqixhzmt#FME!Rqhk6Qa0BWeQ|P zkea8woF}Lbc79E!EPob_8$kK#aNb18hAAH?x=|*3SGnuW@*2#wdJ}se&>b)I#$;1v z-=AUXKq=rIFNwHM0SQf;E+;*QWW6-p(3>31nYOuF{$i-X1`(pq&H<{4=S_3T9mn5L zI{VOtiek3u$FuuSjeb7`z!HnS-`OAn_rH%`_^AQa!!=Q2Xg8nXrQag&O%Q2;dYt-3 z-(J;CeWdfA@sP*w*GrG;s>i;yLW5t*<6je2>e*ip2^R!QJ&?*G?5y(Wsq`L_9^!!N zald(V=#iXl^!Nwyu6wdO8GAP3d`M}nzq~o@Jv+A=_yi4TmM)D4xffRK5s`|{yf3sD zqHNsZ&2{w!&EB5gwGr75-tw!!EtzP+JTo-sw+5;8@>L?iKTu2=DRY(k!B;99Yee|7 z9&&|<8x0jDgU%!sRi66_(^k4*HA8AcC-aCmqpx4*VT%W=<3m*WVv*=2->`RwV1*Iy zbLD%9>{`S>fG5WG`^a)n2|BgBeD$@@Lza!o%GA`CM)Dz3E=>0_zBT1&Q9bkRA&LJ( z8bvl9d+S53aM|NMvzKHQ7@X`(>-Kg|mtxVXeCQgVk6BXW>%2oQZCNlW*Ke0nf7dDKC}?MY`iyWc4R3yE!AHvB zc+=ptRhU{^WLODmouI19uz%JP9A(M->+NwzRF%7ROCj@{0`knxB7JUf@SE4ke*sR9 ziy3K}47g}+;TgYA<(l`Z2keb<%9hR8&Ee?@qU z!V|&rf1Tzbf7%h&JXqe}443ri;;6UEowu8Az=G!nwWYKzd?n1B9D7iWpDr?YFyrcF zer-9y=vSCNoZxv6gfu@?eCl63t2y|J zu0#7}Dma1yh_g=f6>p#UOD*n24hd=KnKeYPI-iQnBak!E_qk6Xz#phvq#llt*1VTa zXB0$%`tA11DGDKDlS&1o-pIQd5N{QzkX)*xua`jan+J%UtUa?gezp>~A7k13uh09u zHX?Qeia3!+%XmNJ&i<~28T9c`W5|P;wk{n(#~6~Em4L;Tdvz{yf!;X(KuAW%NDMsg z(M^2Xkpd*LBF*rOU9t-N@Qf0TY#mJsqZkUp)n!fZ0=-4+GL>ya&6`n5Qcq3SpBptP zlHi@(>G{p}(&p}+`Qh}ODmKdWI@g3Vvf_NYE0(i9kp?W6UZz2xIRUIUFK8rPB6f*@ zEpDVm>z_~e-PAxjqm+X)zPgK!t!S;tHkgqdmX{6i02Xlj!e(8(L2Kd>U^LewOY1vm z3`cQ-1D@!zxU*6p=x67EeA&jlg(JPWyQ4C#W=O_lx4=2c z%`Dvhr-2F#idTx>B&~ow%w7-JW9q}!m#qdQ%UgHi0S78Mn}CpUq^|-dO8|06IV}4| zT=+&n>_eX>54THjzsfmSG?SY4$G3&~>DqCxZw+uAxx|vC30LB&NAJnq27at-qQq4Q z{pP{)miLhv1vEYdWOWhnPYVNZ!fn5*(L^uov_JBQ#Pr z^^8=bj&N&QJ6OE6Hvdvu;`Y%d?pL&LBX+|hNQwPRdzh7LXJ;PoTG{{W8F*9KKsM>C z=i+XHJOE{xnvf8%)n8OfLhlj z60-$dS1^a7+Cp+UD02XRYGy&Do+U5Q8nI5~KalX%g}5=rEp!^$&aCu0N3&yxu11!j zh3b+eN47KicbB>)o_ngiE1S%dsfHfBW?lW9ps7onA1Y~Zdu)F|P(0fIspma23c*r} zw-mWU>{$=1)gHXOAgG?Z>}=5cLO)DS98ewq17QkVg@%4f3bTic?kpEuBIGV#EaiN^CECWO2Ca$u zhnC$73Mq}+W}>TV?B~%Hk;Uyn@1D^a6=hM^y`V?7 z-_;Z>7tb&}uhybf8SKv-E2zJXN(#1`kQ2GinWae4Y=h2h#iM zXndoB8P_eEgI%;2@_#&?t5OftV?O(`9o=Un$dP-#El%5EwY1-3uK98$>{(uuAX{(h zIGJXtG`pD;JNCz_Fqo5xlb-(VB$CYEj!XDiz}|*2XSlLcSJ8^8xg?bBztgd@Df4t1 z{cl}o^}NTdY?`R{X13;79*c%znq+_bcA`CB=faiVDw#kvF5-yG$-K?(2-)`4C@~=x zwfo3!A6dNo#}9h^ibb7htzNUsD2PJmiP!;6=MrMp`f!N z4iJ+#wzBB3;vx%e(9ft#Y_<@8BdH;PrRw@~uJ*0z*uP|vii!1@&JC-s8=r+TQp!)NSju{DQ)pzeoNU%Tfxa zJrMpxM^UO8(b2CJjs`LjRV5F> z)c*u4NN4%!|Bs`yj%(^|!#ItUDBX>;N{W-wU86?I=q?eaI0OVF1gTL1(m6V%1q3NU zfel6@B@9FnM~(Qs$M@fDpM7BGJm-1t`@XL4B_JMOyP2d<9(OU)=jmVDTTxkWorBuT z;Stj(mu`B6A~&uflqvBZkMuFQ%-TdM;(m(=e0(GTmV_Z4r3kICuU1!12h+)@DR+`( zz0sNYTZJa*0MlTY4lwT6U!iVoDSLMY8&Gizpd!Oj2gfR0_t{0HeBj*x2h^I*X&L^# zVN+n~IVe>tH#X=MQP~R*KI_u{VYAxlI)_cSq4;cJ&0BXhn^C~6sAJSr*g-{`BzOx@ z+T_{oGNk~FzG8JP`kOhTvkhk29QxH>f=FS@{8sy^LwOn*-T@Y#-Ksa4e{rK1dQxbi zknxy$C_Lm+R_-}1TOKDXMrAh4@9g9|*&*&g6)#>P>{9AH_F_)v^`4tr;CM!F3gLPm zt!gn9oM#KnYesi|-Oll4r$Z;ZP+moZS3*6PXY!3_kg^IfZyAX2VRHWwsRsPUjM#|| z$Zmn&2IAMhFxEBH_0Lr595=tBR8ghu4IVMwu0@2*5pl3hsU!@}!5MH>5p4h$$(p#} zgP3vN-cuM{LgL&4k@>E9l&v0FtlGr8U-%5u>t9-R_TAP>S=(fe7{Z5o@MHA~g*evH z-=t&lA|( zOufq?)@nz;D!T@+nH_s4Hzs($xg{ZHCDR`7HC@fjlZ9C;th>4}JKjrfc?-2Tq>kT6 zebq&qo34uv%`!j!H}iFj2KXVU;VBIxj@kkCl{cyJ*|rs_rmwR)FAu}IYKzPp;K&kD z%%hTXB7Um2Cam~~f-0%mfnIemb`7kpt06kixN@D1}~Vm6aty+ANKaGf?MVYX&UB2t)RFTE&Pe9e?%yu*!3j4W2;nt$xj7u_^z;`{jtT#a>nI^<8W9IyLFH*uk zMX++OL#3FwleaX4y{~AW;*>VL4^r7nLVvT@6fG8&wQ1q)aPfGhUPTvu%msKy*I-EM zC$H<15XTI|zsS#tbyW5vAi%P9$}NzkSxQoW;G7^I+c?K09|IIBK+EPqmYeOf1d`QO zqBnGHuN|?@?d>Xdp{GC|gSNWU{dQDCt*51A!si!Fe4G()PVEh_)u2q{*r&D+(8V-M zd;U=eL08I^Yi;*nRk$Asb#uX~!c&ABv??ljyvJAP9q>j^Z-iN$L#iB#^A;rwe+Q*b z6}{i_6SZ~pF|%crjSVd@>lTi?=S-3Id&N3%UoKNZxL9!RcEpqai2Q#lJ~-{d|7hFe z8ZBQ4FWu8oslH5I1!B(J)aE?t6YO=>cLn-M^qhVhj+az6P`NZ*aEmmzKGl*8qV#fl z(i8LJq3>7IzCp-?Q>Yta_XsD3az?mZM3YD`Z85aZ-DTp8GT#IL{+9^@5jHz#j)WTD zI3|i%>?be+@kc)^;=s@Wf#|B1^Vwj|R|YaG3|pd|$BUa+J{L`y*zfzJatS;+m1u!j zvdmeyN|r(sz)|q~b4gg}Z!lHT#}&Q$>`O%Pi&=-REa+P5H>MIs%Nb{kXd!GCezQI9N=`>YgbIJIGNs@MXc}esOS0@0aGPx zvf{r2XShxGs7Ke_!snSeZblCexOe^uT{GvG^@(TfcBzwzFx2VS^B0S$HxY-MSa*9` ziqw$4gQkwn$UR=W2#CKotj-j(942(^D?~*8dibdBN{!TB>)THBw|0{E53*sK$r&@9 zw@0_B&o(_2K)s?LllSI;Kd&i7(Rua#YlPM1EqtSi=2V zJ?U=*XTBq6RAvAVA|UG!^QOudt_YdMjde?}XV&^ZymYt(f4H*1=hemL5J_;CyHQ7A zR_A;o>dsCZKV|IqGrZ>#a7f|p62fYu<2qBA9JZ@<(FMR~Xc=ww3< zYG~Fj!_K1U=wUdtbV9j4|NWL&>TzQ7*CSb4q=$+CAB_y%U=f^~K;igZd%v7iIjWu7 zIMwFH9juB$%Cr5jry;JekhVIPCj)(~lz;x|z)szvpfFRC@(9S@|Md#>48zUdmSoz| zQ&}MM3&U#V55R<@;n!O##l4DN$Y*B`FU?gOS|TD}xVDSGekE@*c^?mYLY0zH`Cl)TmNIrJ_@+ng(K*H!a=Mt4N2V@>jQwq@o$MsQCSmzF{I<(M^l1Zu=mP^H&7##zQ+y+#D8n$ZyDrh{Rb|q+4w){j2 zU=A3Eojq<+xv{T_F56nn((3l!j&BmO1>(!S1tV@*#la{_%aVV-(@DuH&bZAk+~0fN9_Eac0OQ0#Do8{L&Q$7CUR+9hdD=N%5k9y2 zY4V+Kl0JljhF$;2su+d5KV2YL`8M(zK89aP4A*I7IZ$e-zVn%W=RYFmqun3F_jTnr zjg#DYp9wPyNpDPu@Cs_2l%B47ifu$JnvDnavvi(t&LqXjaZ@>}ZFnexC6Bn*I|Gq* zTzKn=h38E31kigeaPYBtvWq-m2H`8IEQz>qE9hS?~apQ=#FMKWwN)* ztf;Pw3fZf%qBKnz`D`SDDqu#TIqi12Y^@z&=IT0ZsCexwK_SFmw{zV5;UeYHVwk!>{{WYR>_}Lq5-9Ah4NIij?pI&G zO=w1JZ1M-sy<)jZ2Ft2D)ddy8jg_^5&d|w&0f4~i5EQ`W-V-=8|9*@uC|Tu8@ip>& z&#e(T$?6258@VhxWQQL=k|c)mr+4gu6%oHmve=nkHPj%9uK}VihYn>5oX)t14&+)^ zX=<~P#r_hJZ;Dxhm5>mK+eLQ4xH5jdN?3!o9r?;|A^*hbk2A~g?LEvLu>DG`ZSrk zE2la7swe=ubHF~mW(aL!t~SA1aG^R>UvvW7avZ*|>tEjS_PPrrWY5*zhvw-JA}R6` zIMcw=bGXF>FuV97vMQl;7k}2>2mm7t!!73Vb6KQyD>q4GYl+`&Cu)`^{M$atm1u`a zcRA=*;w9>Zr{tu~&zvFX)s`*9sgb-nNTxV<+y)F%Ba1!;g>^P;1K9G=YF*f;t-KUL zMd60Y6vFbwNei|HW8=a|o`n3QK(tJ;d1VF+5bXAU9e+lwWt)i!5@)e}A!W3VjF2Gy zb^!FNu|b5eSvxBjCF+>CR68S+C$DL%TD-7d1-(L8Gp%xus@9{fGGnHe6=e;3+}SPy znH$*$5(2ffKv;chk-z6If9Csre@fCI<-Lh($*+s(gQw?ESV6gfQUj82xJDvSbzuV$ z?+Mw(Ni{bZ@zGwZA>YZ~Ss`70&$TyF@D*FbS988D}C=1%kS;CxH2!)xrt3x_N7l#JQ^>45SnD<`CPy^Ep(Rlf+b@8(lysfcr`xbq} z&g!5Ax-J^lRWT~}qw*J1ZM-0qGJQ`tFYQY4KcawNKxUGPJgM^E#;l#WO(o1UXepgW?;h>cU$MW zy1JR1>q4@xBS~s8wjgeTu|MVA*d=ObriRTGX_zb+_vKr>{02Fg?qwI#spavqeN0#T zbH{)jkD`eHrQ>IAjd-*n{*iyOJ5xwlpALj2Gr5p6B^DWllv{U>QRV4>@R1av+nuRu z;$>v9F>)aPaPkI^J@xkj7d9C>DI5;Bzx~#Q`R|^w%2VjH5%WD;s0U8g=eA7^iqTx5 zyeWht+h1$ADFAmM)p)-{vLv>%9`XG1vx5e8_m!G+QhPfc1BFLH?uG%(_L>X&k7g{E zU-!(m3`=VL`n0n+5>m$TL>YY@UKl;ZT={%yx~UYmmf9jI-x_RC81*5``mgm$@AquM zgjf_@0|JpZ;G65u4B}XVU=ke`$o3iZ$JxH0o8>FnK9Lwa!QY3U4&5ABS=h4$@BaPi z%Y`?aMNhj|#7U)C;;(CZ$zs_K~O)r*CBB!H{U9+o_*>LZ|1tP zgg)gAy(ex4g+MY!KJt7l@yz-7i8>Cs>U^*I4hdj$aQo9OS-LUsm+kMhJ=^CeK)M=9 zK6ScKH$w_{%7E#?&pThs-K%TH-5;DRMpby>hGRaVonHPnR~m}Qvvz7ELk`h|mVftfjS+@cxdS$JWV}ls(kUCD3f{%e#vDglS8_ADPa7 zKi0|L>9C(!=f`O$aaY3j`2BJv!hNkQg*p1|*@u@ilP0~c>>QpO@p{QGs?Efhw`28| zMZJa`iN1Y4+gw}<5y*unVK@qRX6&cu7h7KwT&jbzLw+f_2bM-P2}JHeH=;ZRGu;!d zs+8+>FN1!$wJiFE$GA$E>6jdh-C3{Mp9VHdS#z|JK$)N9?JRL!d*jIbewE6?k@nZr zJ|p8S0J=xV@p;#}5XaVlX-Y=DC>?eyDq9glM>#VWGH)_+lh@-+G>yjoQGQ zb#CYyjQO;MIsR3QG5Z|kYT)QlI8vVEQ4;zNq&_M?ZTg_V5JL`s<;HU3S_)>gtmy~ zd1l?l=q|haWC!e@xk_z7Q>hSJet=`$k zP354!@>-z5H<23*Uv3HL4rfS>`rjp{BmiTTaMTRoAp4m@sE9{N`G`GXA80@ObI|MF z18QWJ!^KkHsuxNNBW_D1ve-SgiQ596>T`&`STN$HH&*&Hhu7^wNSWO$y-VWjzrW({ z^oFV)@3GrBy9ikC-&w4GD1uLnfQ)p#2OOAPPeJSQ50*6r;pB-md(LVcYzqO$O{d%P zd;Ne%#6U`JRBAla&4P#=@=frNymx6lKLACQTkfzR`=~KYqAbx{B^9y()Z(jIe5+xW z`Oa@jki~msb$sr9iLaP9@lCTp3(n=YTkuKp2auJ88_J9*d6qokMr7q%z2fWQ%I6BC zS3ZTl$9|yDIK#>N&1dt({(jFe5p=*H5y*BgG|sE>SrsMyG=A_ybbs>Fvui6g!hjRV zF2)-Xi`2;?%iuSa#$%jH6mlk$+rzZf%*u$b01&T~R;1UlT8mmOnIG!Wlc7jh?* z)>xDGomn5Ls5peWRoV%b$J~TG)^Api)zsF0aHUVlFb_C5&j7n45ZGnA=a6;3>bp%m z#GD2JA(?ncn5PHI{s*qGhr+t1ot8srm?Ra)feaR&8^xAGd%r(>1fOH&d6( zq{K(b1CjQBe&zer!cj>O%1M z4CAb$L<)}jN0b*M?fkW6Da!4zTt^12%^o_(t^xzuTd)5JlK1v~x?T;jmB*}v)8epPp*PJ=&uND}!gPZ?d%t$`+Dtoh0H?w*Ktu*t zez;MV_*j-xIWy}z6SEX zXZx?+`~uyat@dtEjIaHH__2s^TNK`H)JdNKi%trC{iNoo*+#)g@u5UpN3V(syj92 zYckykpo_f5&2$>}B4&Y9N zgXfzB^8I^NOh!#LjbH5n^B^3<+HU<0@N7HyJuVJv&b?Vc`$_b3!ns~YQl4e{IR`en zGUXW>H+KxD+eUf~zJR)@s(GH%`b{3&;UfGVB$RX^=2~!QKTFM_84UxWv~ITT=QkI} zrQ%8Le=1(y4EXi|=3%Z*X$v0i)kKY9WNJ&)seBa4;)wGw=dE{n8o$sNO9`mKn~O7}0)`Dh=bdE4%AoP>{!8lKX=?L%&XNZhVIBu1(7K z+dkncmF<@9L{flZbyMrHXlcQF#x0bqs5%L=g-xW$g#&u&NLtObpj8%~dM7}0zkbuK zh_-xWX0?Vh)b;DCD!eOr68vc7;oV%rNLN!ozVd_-Hv-MgyUKlq-fI0|i-ZI?i{dng zyFqrAG^Z>v{P=M*@1M4mv(P{C`}$poG|2r5SIOW{Gh#9~RjguLM@;Q!WKw(>ueCIrlb zR2Dl28;m^tX$>Go+|Q6!C{d$T@}_#g%K!VH1|8^w=5Rfs>4|5A+~d;%#Z3tUkr2TB zzdWT47jenGLk^7=8Z!wpTDRLim-Y6?^dK&4x*`M`~P|1Am4s z&MSG8U2Hzb;0s5!L7gh-mRDlr@#bE5<==z$qrJ+iBXo;bjtD~z4I|@g)skhe*?@2O zQ{y&_n!2;OAhIqLP?p*yT3-V^u!ThGC;RYyhDfqE{BAsDES9d4R9h@|Pn18LHV(O@ z!0JGO%u{zt#e%BpGv>bCawgm?Su>!yrFvTZqt`RA!JG_(m$*|01M`2mu5bivssOph zdjGb-8aoYpIpk5gLZxTCy?EKm3zhYNXTZoIOWsK+fkEDl#ZM>wKO(^sAbzU`^GwH? zdS2Gcu3fyy_5i4cfTACAe=D6=U(qVbCga_xnUF|yC9dom^1)3_;U;KWQKWYB5m$Xx z+Cn*$M)*n`+j#^mpQ82;S|ybfA}4U@Q^?J{78pl+vY*r1!5p_ZWfjHUdI+#)Q@n4> z)q&7pI?#XUmV0_z^NGuO*AW!g>(^z;C9@y$K%6A1Zj={%)_clVTZsCXTKK>CU6o0U zx4;8OlfqI(^x0)ZT&uZkRDZf5y1baxNOhND)wi*=p!`nJlMkJ$QeO+d5w5?u+g6Pf z!fd0>r-PSU1SW;}R`gfL`^EZH9K3LbX88_9GZhY8MlK#^%sM9=J9~qKrPX*clbwd( zsjYEpy>dk%8H5ft-(}IOv|R4qPwtRoCflEa;?;}M3dQ~H7+|mR-Hp(=0G-0boz=(T zwlZaQGdkO~;7;1Gl|iPxI$M{DF?_dbg5_5|H%rp1&XYP-Q!S?bFBhBB=`Ai+5?TM)crdWvNt>8;dmrAtH&t|XgAmGi;QQMa z=><8$YlPgmQ<|dL+;UpuZF8$uYsGwyn5WNlhw%5ObrFtj_f?eMh<)9|hy~p-yFI!p z3d}=^pkMv>M{z^*f@@Fd#`ph3C}j{1_*1)n3tVDI*wi1^PUB zU2`pXsZ!aS1Z8f3avW1*%bCfw<6SAHy&5-T9d$VR2A6uln3DnlCWP(=mJjJSnZfxV zQPXMlO>k({%(vU3(2UWd#5_iqW0BP|95 z#w}ju9mBa|HS7|x zZJ(}o)q&N8`TCvjto4AxdAHHMrEyw8TmBp4zl_FWYbUV=spDF2Y+vlT>CV~M3pL6r z=@%yyQCDCEk&u@BGIJ9_W?sOLsiNoquBtkhCvoOZ=dH-9L>l5C;1m+qvY^apoT{0$ zL8>vehGmnK@{w})HjFk^pAf7lkrp>Fsn`I;WnVntT3Qe~WzeScM#x0kS*lfPT-j@b zd|zgqEjX1UJtE7>nUa{y28;M0lA0)ZyTnhya3v29wCxt2FY*Sp3vXj^&!V}-db(kn zwqOp_fN4%s1W%rNNX30QuQiTMi{oLarQe%gS$9<1Vo>>Eq&cju*69!;i}0akP`vL?)3A#*vaqa3j(da~a$dDjTNMp~N># zjK`M_^HB>tBIs1gLe1>@T3s@pbQuF-4Ot6;PUpv?O{<^#+D5jnAv+5b{)^wlwbopGmUWLhotN>uEtOhvdy7I8frb#)QwxB;XcH1R zV{}Zc@K^pCx34>{Kd#|ejoB_=pPg@Jv6n}EWqX%j>fU}~qP&0vdq|j`1UHM36fsw7 zcUOl}Q|EfWg@qEvQ`ZSD6Kdr{R&szypy}CBB@EA6M@NBXd!U02Pe=5 z$8#Q(K21A9=2H;hx|>H@=d*Yf2e`A?T$0#~els2M6uo+S_HXzApUZ0DLeo#2bxW$K=MlDk&;-5JmI=NqY_O&wRNa zjWM;ma_RjTmTkrq0Q+FKI-o>vM_Kt!`pKuhV6+m{Z9HU5GsX&nYPB;J3Va&2P^HY% zd&KQ>KL;)`jMRoC%)DAP8OgeQqFnH^l6~Kir|C0?KEPkI>i zrw+7XQ8KD}S2w9lGU6+RPk7of`uwz9x!04YQ8^=R+wPIHAL8CKzQ>)X-Z#MkDCQ(a zlW69_@sE`NQC*UCB|{9n5^_w+0V~j<7fSdj&|ms^SM8!go3|`XxzE8r2JkasAv2?H zTC{up444fC;|8OsDVsE{pmf`(djw?oNAyF~h$Y$Eo0&^izAn!l6WPvVKY1+naJ_6xsbqAZ zO~YM?zlp1+R41k60|LlTkTx%cyzKacX0@!R0>LV73gPQZ@Ox^xLtnJyPLsuRn6Aow z1EZf8y+_y(_a;c6y#6)Sa7!iIF61$xK^OJx5_8N^=9b3s0C`_na1N|y+?^g#iCrAM zV-P=t+QH3cigp=8tdHdCm`SstNj(9mO}mVsAw$(mz%aG^_E`TmnweQF_J&KS&|4}7 z!9;E4GTjLBl<)sa#2R>s*9Zz?>?==NzBo8reX3j{`l#jV6wH49Twe$SKZ z>2EFbiCG<4TihRknTQxH4FAIv&VPYei)DOMhe!fLmF|&2jpWoT{O%iY%BQLCVS*R? zS3m6(dbxJbY_lpU2BT>=O9p`HJ1E-WZE$Fcm2nD zkS#~o@$i&EMs+f>z&lMx!*IZ(uHKrtRgGO-DDx*OuqyFFtHb_GRP{6Q?x#;*_2PvX z9q!helk4X{`eT{DvU-(#+}nef0lNq2%@R~;EJ^a(YVT3HAyrqe0-aXA z!>h2XLB-qB-c|Ktf7zQ$s*57X##dn;T)x3R+Z%)KbCGq;6Y>u{u`uO-= za>+66Q#@ddTIyJ|g(t{2&l#CBP|7?|))R6G`u!BrF2gL8{K2GNw^EzZ(=9YQaN|!% z!SFA=lWVXKhd0+9R!Wxek03%SgW_vBhaZE{MY2ehS-S=Jz~aq9=9I!h1K&CIl_E5c zJ^g&rO7jz@u@5r6=*1V0V>B>>FzMb1ishP0WZtn$^TUK}U8@;AI{n)1hhz>Jv5$h@ z5s95azLZjY$b6TZN}rtxk^!s5>>Uh7o4#G?PL$2Cswq5Z=`IzCo6v&T8cLTjeimn> zSNYZ6*|D*?1d`aE4$cbB=A}Q{9r0UzH_vv|k+8h_J*inBzhYRg_b4Xs!CiDaOe9fNL?}>{_)dNc~u2{gLYo{mbIhTwLQam zmq(+*tou{ZXTwWN^D3RSHQ9n!2W8bY`B1pr3>tGINhN)6nltZ8@q}B~QkkUe1)h&p zx-0gk>|bun=VKhAdrjxmqdzL^#wJ`Vf@1@OZoau29~p42$Z0np=c{50qV|%nd--QN z{5x^0W4JvO=Hm9tMmA_m*!QIu(|)~e?pew0=48tWf1{6CTvy<)3ZE2zGSgU=Zez59 z-=;SSM12g|J@svBs!~|A*s&6O|MjXz#YM+3t>V6yT7}*ok)+AuXA5t@BX{tYwjixJ zS#CtPy1LX33J3xH=mc2AGcZH%N{nEsHl0#eklt89afDYZnp?C9?nQPJnL*OOl2k^n zgA=-V@fbI@m#^LM&fm@0TgW;0K-Z4-_RvOJ+F57NhxSi#~`|cJS(Z5~b@^q}W$b((3UA{P(NrAP3j>+L# zOa(GAmv4s(pwM6(D<$yG_mP{mR3y>m(zR6uj1)1N9_eFzj-RKoCTaow-$Nr>w&z+f zu5|2OdqTorXkJw;$Eu_texAdBwaj2z%{=*EIo>SYGZMO@B&<1vR?lSa+e74~6?4o- zB-&DmFMK&xQ;GY80Mq?iY+4#nNJ9ih#0mlGiq#=V$m&=S% zP9$#u>BH-f3vvyRBqfAPL%m!=0i6s&yGYkf=t`3E0ucMad3qn1?~LV}>DoT3yG&sH z+yIRdUp>8U=K&($z=-FC0)n^owuDCKO!0sIBWnG7&U00Ep47t%0mXeopV_Rp3z}f$23in z^>E^Fo#V?;9U5KNQU+~Am~CapaRJpvT1;N7E6gIsOjo4vxVN^_>gRdz;G^*wrf~a4L92qHgbRU#>=^UMMzwItm3wFeVrq_3g2IV z7gpI_wmZR+9};PJGd&YZL#O(xLxX!&)pBcJMYV4o57-QRZo^#@@C!V>`a|6Y=Hl#1 z@o(ykqhelshz|PJ)lByobRsr0?gSN9NoHFbWjXPQiUAUD>&|&j_A>gpz4Hyq2PZ0! zHkJ?J!^vCsCE3$W%_6GqjI4-K-fTzz1gccO+t5xK!M0ahf1CpLufRXaF%sA=4NUW( zsJZN?VX&EOjqQI#nF>Il>u-Nl0x=eaw#ck)5b~bxdK}_z&_sA#MKO%sS@8sePC%0o zS>2fG$1K`i%29-+3(e|lq)NjM;DOhvgca@6E>Q0{n5P%f;Cff!3on3>c6@X{{3k%z zgG!>`W!(8txqj9$cXv;Xu)KJ^V)iCY3+z*V>$7dHjd0qJ{8=@47&RcAF1HAyM5lxz zUHH&7Ry%V9qb)CTr8m5}@?;K1^NK82MxX1hM;6Um!KHOPWo0mH^G|7Sk%em#}YKw(J4r{IM!YNr-IGZ4>KthgY$D0=tse2 zfb6#4LBHY3y`f0FU+y5~B4SUFY$omVFn0R*MF;doXV)($utR82st zhG+4r0~*^<)As;YVR}k0%|>0^zQL(1ii!ZRfiFH%0!cG9Pid&{)a-}mJ{6)auOo2T zrJbv+M?3@A&M;h-WSgn>n<;L_Ql(Uq0lf!*82T{00Ss|(xP4Hw%=bG|z0fi-+Brx9 zG;8#2#PIOoqF$B)vXwFp281KFj5cez#bii#;I#=FYzOBG%KNHMLg3nU(&)r3ac9jq z-6te5qQS67PlEH7fmma0#VbmvmD^dQ{C?bOxAx@Snk@=qcNC8-jzQ&pxkdV z-vU+d{oUuynX=XDAgha}ae$sVAd2yOSKt{4mv_trgVdK>Uv>M|;o3U5>w;sAIp8rL zT$ZYmZHlG=<3(_4K0sP0pisb8)8DMn1CuK8Kn*e)?LiteyCeV?fQB^aO!;b#upw%i zw#d+8w+DUIacR2-RHp!&b$UjfPwrRzdQO`@(Ghdsw8Ni&z2P}3Ph9MWr05PyA#aL1 zPJ`k>PEW!M_b;Be*SJ*S(voxWf110ByQ&+T?V`(qoPG}iE4K+NS`G7_7at`lU~-%e zZxEd^O^7`2+gLOGJ<%_woR8>L#xTq;&U21bd-j|*f_hXs8LYztoTc!}=tSfba>O6W zkb-Fa*NCzsw)reVTM7_Z;bYaFb}VHKIr1x~br3Vu zp!qKUxGX@u>K)~p5B($bXMaWcjy5q1GXC!y8rkM3U)C7A)wQ4h@c0YJ@z+UrkTT5k zC@70#c+u_ae}KhYp_;!17UHjM6rIYv?bTGUyc)nSQ;R=M%|w2e%CQ+KAFzkz0eO~A zzgN6Vv8ZObuDdfwU#eIhIHQiy5kRM`$#k&60)ZcSlW6#LhCk#bk|nKvh*F8D56CnD zJdKw7pPNQ1Yd+@O;uIw{ioEXe0+g@8+_I=%#4fjpZKHy{!lkzo0ErGCfz=@JYiTw- znVG4L9;^xy$H3yL4UbGv7DW=(K|1x) z49wu#{zCb}nZ`q^>-PYXX!ooBVtPZf&qq56OF?R~bVg1`eCtCg6wRHHY2D*K`J z(SYvip%8|kYf!T1{$oxBNx4I~m^SM{oSF)vL-XVpFTB-XQ~e)Nz5_;2fd>8nSaMiX2!nCFFBy`^Kg>1&Pq_Mb!*&&WZloEi9CFOT zS%mM6_3f4KwH;MfBS;y?R?nbG|IgC}DW%*Aw9I7^3N+@oHw-|1!~Q)}p4g^aztw{{?uJIw-;KR`hdI|O z5ciyvyFXgxm~<=(wTt4p>?E^K*_pSzsz@$R;cYKfj4%P(-tI+<6GvKlIu~sW!*?w1 z_E&M`a5c5XVe*#d)pr69x#GysNn%sk0qyB+D)$xU3^Uh>)N)9RZD(d& z|DHE8=W|aRYs{FZ;S4qY&D8wl2&Xh<*r5B47_u{sSY4`V2>Nbeb$sogqIi6J00LDj zh>c^oJz0jV$Vq*dNcRirIngC!UzR5Of&Oa zR3x>wQ0naJsl|MuKXKv7v{X7$>%(u(7kUv=@J~u(L{$c-4Yy3piynd7Jk`H|gm zxC-5QMq{wNCAvy&LtH8-;+x1N7{x7EK&;Bht?*jXcTH81GD>ABH1IL8arznE9w<}C z##BpY94Wt<`p_h}Hs+zp$&b~&=~>TZke_QRNBVTi0yy)Ic7Zr;rh#@m)U^D`@U4&l zDy72^q6>P5#a3VLkXsRhGZ$8OYwfVbU#Wvr%`xVNB9-a!+Zs5ZWXprek)5l}1y5$2 zrEHB+d332Gs4F6m^|U*Wor+PKYh^~Yf%jl*KR zle;r9DR-zEnEyhgK?3n5;x|ucErZ^jZxeIQGbU8B(^_KQpv-{rFYGqAKgO^Fxhw7| z8aSaR+!jfSV7?^Ip6aIgCX)fB+}WrPB~*}aXQ9Sx^tMVM>rWG{cf=SpX;0+yGN0BqLE+?~O1LqSV*I z6IrpPfT|eVJ4Y?`f3-R-vFqm!J-0f zxDJyvFBBdOq9;I9i~M4)H4*wnJY~)u_ADT~#3T>gInO0i0k^z9 z{>V&$&V5z^*)MC8Q#Y!DDg1N#r2pBm_c{D-E{6?m+S!bATI@4bwVmj(rmlZG^?WYe z(lM&F!BlvJKUjKnfDI?QMJ07U%kdZ3zZ{BB+cGUoqUWN$nae>3si-8Anp?UY;jhTI zg05Llel*Pz)&*MhQ%h>}1iiJ$EwV|zJK!RYzx9PgH<(xPllh@u1=x`URL=TCSpE^N z51jK6`5rO0KW(>5K?wv^nrq4>p~!S>M=)^hbRbHm--HH;Icy}EGSr?Jof9r}lzt*j z)z;_wXVd1`bYiBYrUy|+Ve%yEEG*X_SKJsz%Fph9gHiWmxbTh&r=A`P2Tb!y@2z{c zTg6`n*t}X^ERUtCmDh_ICAb&o6R~9SYBdDA97r$ut-V@DPq$F-?->Wx<4(1Rmaky5 z3lm`s9KE00Y!%B_^1MNBG@T<_D(!7(pFRRs9jMC4U?+)&;-q4A33p+cakTFt1&dU= z^h+_!kk@s&pGMY*ksF;4ibM~ zoB>MrRPV8wE4&j zxY6|!7UyCCg${>r7g(MNsoGn_k~L<5$?sked7I$vpF-VjgtUaCjnUmr7+Z~S1J1u= zC*mKHN(XuGrY_&D2W&2Rr4XSvj-PuHhg>XP^W4z7EcDKgsz*+7Il&)F zV%|_mU1z*-i7}Sgw#DCF%2`({l?0ThJNgMYW@iaA;z~>UBUXRkhBP~LxCdfHnnJv? zqDc;HH@75io8a($C21PWs;S_1cYptJn2;&kQ@FXgYrDKVyTu!v_XNIvMn~qp^N$Th z98sV!T_94P*tSrah*x9!G*I5<=-m0^V@lpb#LYJfv-*Y^Mm#K0zP)A^WtberCrBeQ zGs(!b)Y0%BgzcrnqSuGhT=ng74zog!23tuG@2}o0?9%6J5 zKla@6@DnNJY`qY4KUkjQ^*|p?4%#W}@JZjF^?OV4ea$YjovcYpLH_BB_dV;%pX)WQ z%0$#a?{>|?N_-?xn|##g!J7*2P4G^qu&tj-9kY|~YfE-}yI)D0Zr60XgdEgmM}}0y zeIe_3E`!lawQNz&WqaI0(pR&>a<35Z9vmdh3`b8PHOhe~eO-v#Lkj8){N6H2Gs7Q2Kc zmp?B55wVdIt^YmVEjVEvOW+xq+=dda%V|6Ljda^=vU5oV3ptJPZ_2GqKjgs%0T#NR zV74>9JPah8;-l+wyST~$rrgW8ieB)G8Z~-cqa#+G#X(qhP2bN=H>WC>R`p+%Cq*ir zeE6isDG@y@{8q`$E{-RD^=J7*zYAfOM=l48!xK>R{`4QsGG^u@w|`VrE0&5^$9LuD z$HeU%(xTj63bm6VMU`T_Bm5~%>ra^iC(9Br5!uCvLheg*5sG{M&Skm5NnT=}O_3Ex zW;0Ppiy<|M3aoQPr82fGdB_J`nX)it^UaBfr}P(Hi&m740J4W;*doi?(MjA~R=$Tv z?TIz-EWiu;vVKOjPAEJK&MupJB9O*vz>3~{iftmD1NfSRP$O)YiHq4CKjW_VqGF+k zdM%t`%7xg~cMPJSQwVb;OO~}?RrB96z%~ptH8%M%~O`n6} zYEr8HJ?~-dm@Zq30x*MSoqLb(;Hy4uyX1iIFrX!r@X}R(1~uzuZy>PzigNbFCE!EZ zQ-Z8(Qp<~pn7Di`?N`|k`*$ke(N6o~?ys-%D^)ug!b%B*EdYjUbD$wDIYaTfg<(+5 z&I=E?>;AX^aB%?Pr+tszT%9|!G@tF$kAeX1QI7Jvk}oJ<>6~30gFZ&jgpF00Rv6q( z<9Zx50^#41I)88(_}ktD@LU>sZA;o(`A~9fcedzj&B;T`555Vko?^SkM1Bp5uTE3} zF)s7-yXZ4u?$-OyG*e}E=6ctF=HASxsz2Sx&Pvq3Z0tapQq?5BCaBEgWb*%rfK6(3 z-(EI5%^GP@7JGU<)n0QI5bP#|tvePqZl@n0M4)=(@VpuTyCImT7glQfz^ARl`BXVQ zXh6B}@E^9vs^0AD7+W%*joK_uFjcYb+gV}wA>hui7feItSm1gy^{8X9;)NKyU5N74 zI^UT#0&6Un&MxT4sY@m+##^;CW06uG$Frwh(2j{pARXPVHBF(o&oP*or97|beQZ8b zFCdo{;$S;mBITNgcz2(L6sWMB`;%+gNMRYoQ@dIs8ZvRF*S<{wv!%G};Z?NW?X)%$ zP={j>`m<(jYufZ^mB$MvZQE0HAR#zh@yGQsclSO!w~uv$+6T+`7IRe7lH+om^!3?y zMy`?$ey+-vdm_;J7M14GtBUsJd~2o*#7@HnM5m=lM1z6#(~SBAk`{;+rKy4nop$6?z<+?#{zQL=c?m z^#~#KkQoS(7m(OtmNhT~cCoH;s9q;gd21sf%s=F`xjZ}!kle;9NWt6A0CWYbUEamK zI?%UmFkeqL($ecf*cZ&1QA$P)?q4haa&i>c-Jjjhj`?9p;CI0(d0X%leISHIG;|Ng z=6e>DyI>E*o!*UZ3{k0P@@N7c$?*{7U(-5e*c4cUx)Ou-|42ITc&Z-%kDHMh*?aGi zE!i?I*_(`vtgLcn#0^pQR*`+V*WND5ip(VUUe{hBTr0ZPH9o)7_xJC8+=uI)d&Yab zUe6bYbf@R(@4#tvsH=ML1=RRwMWBrLWyMvdHNfTgaq&PLY?)l1Zpm3D*xP}U*J_cUSSz!kJz&7Y@LQd8aNWy4)d3%5ML4+DBWzA`M5+UPDVOWJR| zb=&L$fUvX!erH6jRFzOksj@XeoLB}(2@Z(Z-Mv;nzA zr8*lYj}6Gl%%7VyL8=MA_4ZxXu$`2nzrFrEgsg00dcQ#}Y;eK_0r+3hNFV1mlSrV^4aQ?gI>L+8gQJ=Q>?pAu~}B<3t%-es0{571Tj0aA0k%TjEHACMtT ztk?A5i#Nmf+IF)#m;t~7p82)BWJBq2(o-Pj?M`acC}e7;6*OWM<*@kTAZ^{&`2zfn zFGY;L9HYh5u^L?ya}D9b8b^Rk3Pr>)Dxqxd!Xu3R)L1mR39YJQafq54H%-2HjcV=< zU%LSTQ%atN0hJx_$j~T`1P*FlxNEWLTO9OYa1Kqt3QRi@Tts-iC^17Ud`O<6g;2Y%Eubb(ckO4q@1wJUH$Vmuf6?S|b z!1QZ>2cc0M3S_7{!XE#YaC^d+;MtS$Yd+BP*1(nW|1;u3+4S=f;I;O^` zB5>7-YC2hx0sp#T@ljYTrh^F63p`o4PB48{u*U+TFF{;m&#Va=+Xik4yg0PR&eJ|l zmYAv*uX@OjG++{w0FLNzuWdt^S8c39wn>F;VtR_gw>JZMmI2XkBFjha5JhwW@HaS- zdN$Zvm)KxE*)djQIqLm{%K2NeaTH8Bc=x~QmfICzJl&IRqD3F#zc;GaQ3KZ?&U-dv zQ^Sf`-;(h90>@JGrt5%^UaQ^VIbR6D>uN|F)}kb{VdYaOcO$OO%A0!2B>CX?$bI)n+3doZS4wXFK8@%87SZz{2ZoLkRuh>`(U^Pqg_B#%%By z!S`$6Xt?`xqa|i0-Rc`a;kv+9&@;y{maF=JbM1B!=MYo3{j#lrR3j8mh*8HUnxtvj zhi$nQ{LN)1HcYB=l0zB0*MJq6QDD!Cv4ZxYt9u1Yk$l)(Vsm??WnbGl{}p6lK6W1% zc*y@j%Rgb)q>(3>59AM`bX<9pqEe-~7!erJblb;Bq^E{n%CHKbe%{cP_It9}QTcH= zn8>$zugidkGFofvkK?gg_ZrMNEOmzLlTaPoNd!50EH{H%)|4}`VxOJRkE&YS zW|YsBbd%;Mehzg>55ZnPFq>hEfL4P9(!ajSWDK>j?ViA8!d;Fa(VR}oMM*P3E$V-2 zb6S-0vP#x!qxUE zKtrQa^j6R*Ck=NzoR;r>V&G>qV&2Go1l_EK78t4mfG!&eX;5F#zIeZ;9<6t z^Zadk(iB?w6}Ouodmn+Y#(S-auha828<5GLlny-KKBdVT6xLXO8LDTvMXUPij#csw z3g;Hx^X)YIeAi5!Tgyc4)@EX|X@eQ`l}bNv{gJtr7-ixw-RjhhYx7}M%{I(RIt=l}(6b}ttu_j(`y@#$ z7A-fbaG#g|GNVDL;PEZQWpwzN>)5Xvlu2y2Kr?#TA(3b&HD5BI|Cxf4K=w^9YAz>W zz<^sS|1S&_?&Fo9D7)htomLlRqa=KdXoC-8y5*!8z@#~LcNC;?Xky}P2<9yM<1X1w zBmoOtMd!J~0#+Y)_IxlY#06vU)K`xrre3brN7Zk-O1(JU=eHS-4EC$IpM+Z#7o^hA z=>5Fe;)xhkQ&gmP)TU9NP0gOS(m#}g#sF>Hamx86)zxiG1VHN9AY02-RoI&8!#y&2 z1BsZp_$2)OSe(d(wvNefdd8P=B5*ZvPvWby+lc zAYLz0QuEc*uhLoj_dRJ-(Ytmns7}Yf`vUJJ`TZxv+RwL~f*A4#eJ}RLpiTWw=)z(;bfG>$>{Zu{U4B!Umf(lmlvRzYUB#v~c!&#lcgfQs0StOLRhnr5 zA|~V~a{McOn$G=C!0H}0o)MDHpP?i2#nXs>^YvBczmUCMd5Yf9Od|>JlFE2L-{43Q z?w|kqr>UbRs|V$jO*n!&oD#aH;j9<<3-`5>pcOFhjS7$#RfF7E?Qc)~>o)}iUjS|6 zb<`p3l?;+r(5!J>!q*y<`(4X6leNPPGPL3n&0l?wB6udN2$aX_plg@J7^0Y)tI6#D zI4ZjRDiQ!(lbFr7IIBkZ!rA;ZMmMAANQseCvkpi*I`>KB@JbD;YoT7jnw~G5_&tx0 zb#SDNDtmDRwi1fz7WB)+LIHgIb)zTI>BiBE8}7CJCH|UhK%XpT2%^{Yd}~JPuq%hb=rjyF2{~KW>7AmVc{L zpu=`5{YO9zDUOyf5C{t2_TPT>-Vd|wrnEYB$V3RP4b$1|+@n`Fl4eL%ZoyXVk5QdH2Wrz16k!kl;i(x20&>(Ao(i{dIJYcps+9^kaX53g7 zcbJr}BJHer(8{<>rwSGB7~IYwC0T6y?ai12a+wxh50c^VqXUPx0>O+&cx%?+d&xi5_ZZEBat1`{YX7kiUjW}8=nq!rGKF{X{tTSKhRqm5Mw4f)AZ@qLmQCz&6zJS5p-+aQ3e2XG0muZUNfBsW7 z#PaZw)M7$7l>4jVsZeRPpF-?$zVCZvsd<1C(;$u3`n>quh}l#Td^^~U= ztooOiH=JFOjzJdP@`R#(7D>bccdJm0s^+Cx;S%9YPPX_Lf!>mbMl<$RT!j)$0@OSq z9uezL!D&B>#1Eamxd1P zsVY&Hn$VmE-K`BT(E6FKq#}3oX=H!u!b$FZ|B89(PTL0sbMT|EUH4+QkslWnhHwxU zspmb=Wn)(ng;5JhZ>340+nfIgRBxiBT0iFaIuNPuOo!Xx+JDTVk3DuSm6T>rq#4q6 zXpp<#(`Nf>Eey03YywsGc|>}vNFL@fIX;hi3o|ls$Ql#fym3yGJY#PTkt0%fhYBsE zu{PHkB`ri2MRdRv%&cuxwQuFg`M)sSPO1h-!sm^@mwztG`{u8zz!ll-`sYd%*Sf(TNW?*nl)K$4NK^3)CExMLiv-ubFJ2tCE>Q+gqNjZhV?Or&y z+i9z3b^Z?b>bB6qJXKhQ=tW5Ocf_87{lwP`a&mjLFqMbE^66D^v_@r#^xsK?kD4qy z^ttA$-`$0dT0O9<8XO;Hj>$GIE8DTHJ6=gON81?8XNP_R+>L2Qlm_M$a9`?+U-yaM zReRmcgloJhDfR~qf}2oIo|Jy}qOs=z)>Bs0!pV|Ar3l2Fm>|#^?L{Js)jMf;s5y^- zjH-{zKW$PyiE5^yfDa!b3w<9PxnllLAPJbaF)8^8CAXhEb+Sd15v2cnBkUb-44Zr+ zSYNO(Mzy?j<1S!3>zXlbMYcU~vhy~Zu}~l-jnZC8_s`=&)mg=%?PV#$r(Qw6lv)hh z-9(q~96Bu2gr%Z|Q+!+`+{WhhO0figYH3f%wjo>x&`isjYDeK(y*t_Bv35k2f^Ni!ig8)XNdnu<3iNGc?R%1K?rc{nwK*F=)$;g-oo<4h71=ujK;q$M z?v8BK&s-0oRmy4y3<2#3&?NrOd&9(Wyo6={y?nlLdNYAAi}9<7_mbA0>Xx5{HX^VD9vhYB80;xFDA z?!H3e1h{7@D}@Hw9`2Zt&0UfNuSfY5mnF@Zkq|ZT3d54i3?qxTP!w zDU}*}hN6!af>C_GcfEvnMmE?XgOL^t(uBh^)#6Nb5zi~2KAx=>%;xUG`}j;{QiASD zRls@pWdHqn*9%zZjt4n^64{flRm`hOST@M7sPh&sz(T3O&}^wIkTuNb`^0S^*@xh9 z^!>BdL4YfQ()r9Tt{Q=>QYD0TbRdDZ)9K7~MGrrP!rq~N5SQPh(CWAW?omVCsFv%y zZ}WU+x)R0mKXRZ5*v(r+N#%*%J-GMO&V68BG~F2fckn#B_0;I!246}YunF36=BhWD zHzg{;8$vbCrwAG;jp2o6rwUz-e$2bv^c~a|hIM<|N;=(= z)LM+DDA3OwcPp$?O#};}+Jp9agdd(M>NJ5Qd zK;d64e&y`seIk#v^6nC=Ql!6=(*IhO06M4p9|2D!A~yH$b+>P!h>Wy^z{Q3*i^ms3 zhU(za4(90#X7wFDF-hCH8U_W2=%@!)4A*5g7TX+TIfV{}e*o=q`ZMrvx8JbJ(Iqww zL+{>-382W#8VAB>&kkx(5@QrY0)l8#4=MtR)P5!=poslZu*reLFA0{juxW?pRxy0XfWFaMiY85(rHb3 zjsP6k#lV3L_J_c0c%1p^)nAX@H-}yCxh%zThyphB*o~?|b7oKdrx;eVMv+B_@o0n7 zRWoI9qsoM_B&UT{CyBgPT{X53#FHcoY0yaTJHy&GfD67cn82}3BX`Y^_|(bLcl<|( zA;)TwwNi;3CO>qVD6Haco)P#TRQyY$lat{xqyMU)VPkA!$8D=|s6YR%4@vgkxLFbm ze$zFUGa-UT+7SktRwb%N2CwNdGVU5|rqY@!;}J3IboY-&b{XpH27QMn1bgT8g;&bs zS*&JGPqsoWwNQK0cZTI^nhm=?JRHu1?QoPrrn$m_3)qM9n?=nqObaU-ax?xomUiZ6 z9mM+Ws>3pNFpbmugvgpLPL60$iPGJ#2w?wUPUl9ecAc~{q;i{t^_B2Zv_#8$o$}Z+ z1vR%B!MQsG$Om2T{q?rcr!R2aYX^9J8w!G9J5?&=kbH9-U!t?d#QZ_6{7`kV8(4C1Nyu;I$mCIyz6~TZ`>p? zJ~E0Y1y;PjQ~A733-t^&tsNC|{B9XryX_9LqM;K0dn3F6L?2*JNCl@Qo>+;G_t~@W z25xI;tRM7it^q4Kvq54$Iw;-|TasR7eHE=Xqn+)Hz&M0$6i%s;WmkRFq>_x3K3`aA zm3E#qR1Ut$G2jf)sf^W(L~MbsT>kFEbg5@LPR1VVTEy`fM+>@`LYpYJnJ6O{mU9{M z0XqlEKF00~Qn?vW7)nvOeKZx2dE!cT!gYEihAi}rt5mAiEf~AALu}Zx$mHZ4TmC2T zP}7n#unKIwYiYX9mW$j>pFTVxKmhC?KtHZEEN3LAC7L4DD$Y-t0cy{_jsljT)i*4O zrHq^8_K7srpy|=0oGUBO0|n(JG7SfkkQ^eNlmda|rLO>Nh&q88z5c6@Q>XeDyyp|z`$_Oivf zS9$3=kh+tzeah)7v~CVDAK{A{10_78AaGM@==OF7zHyJbtnDB;Rj|V7xOAyarg!6U zlp4}t>UD#SnJV69#=OAb#)2U6i4Pg`!xphOfbdu8bS91&=7?1J57Qi_@}cFvhGpO> z*P6(D8YKr4mhVXipr032J|_e1k2y0fk&(VUgvbV^O517%LsFBuGfo;4u$S6Mz6n* zQIe8}_tyN~=PTq(-9>#;(VIrS%eF8uMdItK&k)>4z5e&$^1IGaN+MGIAfdH79NE#u z=_pAsK-5KA0FKqSGszJKs@af}UM{5Sb5<~65+1-^VGO>rh+u~H?CWs71W{_AWm_cg z0)(c@@Hfk)6=2yc0#&=C3w2bO1)h6hrt9`4S0G}*is{yGp_~{$hCjKT08i=sv}=m( zBj+=-JEm4`3)9YzHtm`vWItoG3u-iE>UxJ~djs`&C?Y~Y9rpsboR~IK!Uf-{_|Pw< zrs9@Y<8Z>Wg$z3kob=K(odz?q1pRG)n%SFLqHGO;ec>?IqP6QZfV=-0-@%dRf)4L+ zRR&n?0F%|Ts#5mhTf@&yJq5F3K(0tvJn&qM6BPgU%az%9uaAr2M*0GQU*5L_;9Gy7 z@XVPZtGM9Oz&@eP`lya(zB(2hik}J2DaK!l)2aTHN|7}7O-oTV+kLVtvxZ=M=!hItQe&2`9MJSi8 zJf(np7h*h#+<=%yV|uzH%XSx)cOYp~)9PP2n9tlNH|6t*)qH`@HJ+9+Q~Nt3@lFA<5!*IJ3HNz3m)@o+ z$Yj`<6|a(QIL>l|i|(aR25oyH9!?la!(e(V!2u3-)r>M0x2r&AZREp7vYcAh#@!k- z*N8@j>s7`d5v=yjg9O=}l7HBTx>UGZhb({X>>i8h%!DZzQc%Xa-z1SXL_=myjh@%K zAZE(pTZyx;r`OREH*STo?z=L-n`!xcBqax|n!P`|r!0>JM8mEFpE70Y^%?xm8FuXG zpwrhvJ-pPf^%Y1H`(BCbx17M`C8cF6FvtP>Tt!hq&nTrE%xA(I_3vLqhOGW}AC9Nf4_ErWZ`A9mF{!8=n%uUa<1Jhk%3$lfq zNv(yEgQu?Ae;Ph)Gb}E!hnV$q;93hJ^6pVhO;epp^qUy@@b7`c+ni6;A4D<~{H)XT zRkz-uLv(Pzy}%_#easwjId2PHG4LQ4q_@6bgE3Vw%c`aXC|3M{KgMVeb#-m-CgmNZ zqJ5xNr<*u7ZD#J7Wf&2fyf5aeS6i9MdHea6nQNdcq~dV0MLe=n5B)W+ax+(=pWTz%ZZ^&0m_yn*<+5jrv}D~9CzW|XR&HkDJ_zYWNHFgix2YD6yDIJ z1mXx@lL>9@LVV+hf+E~>1x3ir*)}2)5x@Q;KmrBOOM)U!0Z;KGu=-nGa~*SPD|&`3 z;%ZswAMzH#-f|$P-0vepl#D>!E38ag+Whw7!QgX%c>V0 z?|W~#Jp!|;$Yc)kYHX=C4eE|vihLvqunx1VAfOjhAql>#@YpjkJiq9E)rODR;P)A3 zT6Vj)F6C954(oIIqbwDs#$kbjY1y3}Ov>n5?;;SZkPr?uYJmzB!PmZJbXZC3kTzMCp=0 zPbr03K>Xv+nK)?w07Z!R_viH98pSpZ4Q5#o26)Sz?=jkH2jGOR9KD~F-o4>oVswsy;_0D=v ze{bQV)b_r?&6_ZPQMW_9Qbx>^vEuwg0xJ3&GI+q8vx{4wsoN^0j}>E>-}&IBWwG$~ zT=`w9jHCpEw$BEJkZrvAb==Vf+5FQaNO7K?O|AKpF zA){PW@XN5H8!gR;$|2vddMz&zV2MH$U_c1bKrLKb!gKBH>&J=08M5Zh?Z-(r0QooM zUwWn?hY%yBF5_b@&-YeSEVB=!lO8m;m+k;TYCt7w6amOw=55r(rAeIZc-BqZQ#Kt< z9T|^zTJ;(Po~z2dw{8vOM5pq9lt(~|_b$7-n#%G|_9b^vG$ytmhx) z0?vh7Lsxf}_e~HL-710Q(2tM+&v0R>Dx#qj2mQ?0H+c5z0NP$~o#fQ}IXlBoCa6(& z>{?iLb1ukS)rb8y8%tGEKgY)7J1O%C*^y~sXHBSgsh_}#@9PD}ZPxyvRfOtUevfQC zGI$pI68B}<1+~+px`2PN|F(;+$XmZQ8)TDjbl3od|)Km4S_|~S0Jdh<#G7RFRn(v8SNw}I{UO4iMo|LNf zh7!m94DP-(N$0jrfI}I@Nab^i3~;LHk`fg~iqc=p?Oyv2t7D(_)KI5tY+{o`GU>&O zlHPlqUWdMvvCpyl{=7m~hg|kENhp^nOGn!*?an!Xlfqm+^v0)K72&$fRcO1;I%Kc) zdx9hXBVg4{T?~P7W-YLfyFV@WQJi$&AQnovKc>ZN)cc^>=;stsW zV_*^Vyw|JrA}(%gHy`I%Emowb-b{J`b>2t^3@%quHP*p~xR3QFWw5t29Ya6*?MFPf z3ZB!R0}b6vuz)MLRKk4{-h9U?@me>XJDJ$;vN=hT7PR5|!;Y&^CKyqaA8IAee%Fgx zk0*$Qc36G>V@yg63Ukyo#**Sy@#yY=kaocjtCFzsJ0bcU!HVsYI06C%_8YQRdZMX( zuX0@;V&__~7N5USQAaN8hkEOG+|M+E(H=M6FUfLrxb({DKKlsmx+FWQhws!+)jB#S zOLzW?$;rM75CxG9?^Pc#P$+mLiQrh#Ti4sK)%9WiSs)HsNTob(wL^n9KRmt2D394Y zRAOH~H^bIK)u2-B9LALwRd8JRI6pQ4#t80jol zU%kwHwqG6f;?B2vSGT_r=dyjHg&7x!yPvlIVwl?hbTRC{8;gn`Hq#cH7ls(AzN3^p z@BO_zcEFSOLry-6_z`M<$GStBXKHh5VGhFnAe#Yq!PYZbJGhCm5~UVou;*l$rek<2 zXIm&1a=c2JUNPC_f0bO3vZZQ|i<4G8%Qot35Pugt} zR^r1*e5{z@>$b-cl>SB(7BB@*#b|aF{2!`o(QdtH0#e0u|IPKS(pA zathddTGPM(C0u_bKeVvO@OxSMUw-p1nyIGO1k7iu`$=^~AX*~1M`n01V_?$5Vc?D- zZFr^bC7Ai`7q#)juW1y)5+UxVqTi9i7dva3#2{$wk7(Fjd+*1aC}O9ayDr7XCsmSG z781JBGMNIrR`(L?u+k^OY0`(&KV*Jxi1o`Tds~DULl_qGWzWYohzG`b31g zJ#mp%?A?qV6`4v00(Go=eOVV$*EjK7X3$7eic-$LpXYh9AHD&16w%0d1#}_w_fjBsVOG$vN43x zymvev1cKjBBIoouB2H+Htr;vnVk$)$ZOrD~DR)zbipqt5ebXnQZD{W&`3c@TNlF88 zs7_SwKH;jt+AZ#&=anTRBmc7AU1Myp0ZO-*E)L#hhHpvVr17~y<56z*AGLbVgAZM0 z82N?k?)ae@KYXxyZ7ra#OVl58HH+W@HmW`W-8$%M-%jUXenWeSB;x3-#mpc`$<|Vt zKD}QhAb!^Tuq1fYke$_2llh|Gv3TU{MF127YY3?rHWp~sJAPP-*`N<}^~VBM@%`&_ z-SV|b$DIX9NwQeRnxCZy$$WpSX4w~?hXLO7aKA?<^>M6^L{1Evzwz-IHW{RG7%(`R z^IcsB9sq8ojhUy&{VH;18&AYJC8Qk~rOlM3KWh5$wMyT#vXaWkUXyS2?>QGRx3y+Ye&d!6fA? zxE#kfi%X^pw1{?9d92?E&+FOx=+JQ5!ovT8OpqfU1_!aq2e-{^`Y352@H02^bxhX* z$3;<*w#`T_p0S~7_NYvcnfPb~fJO*t&iernFj~7EU$(k@>A%M1BTWgQJNDOFY+rxR zs9su5cdgsYX;FQr>D7lG!Q=3W+-m@=3wq0x-@-5FE2^CQ`cXQRk^hZMx^aCVqyYh< z5>Y;>Z|vjp1M!V)-hP@nS*@u0$95OkUucuB10&wbO87@7Mm0k)Psdi;GY|r`G@U~M zh|ffFSSef{zr+OMwD1iRJ?&@DHAi=y9>HGPARpI#+e@mIPe(s|4=A|fyLTP%Cp}HJ z&=x(;kR5Ggg5P7l(oR6vNn_gW=i=OkV&pVJJ>+|-UdE6AMarM@B*x~Rgb||Iv#KnXPt(bu$ zp9+8#o|v>p6dI+_RQe#NnkZ_U-n&J|VYUAw7z9Q|hZfM36KC!~XR-#Z*!1xS?`HI3 zlYW%`Os1z4KIufX5!Zp~6BuE&?-<$2C5Y^{qYTZmn77M!gK=k#w*feX+0ZSRJptX_ z5XwkVJU+T|W%n|~il$Z>oKyFJns<`S_Ed{1J*eCafSn#bx(z@n7sAkE8}YfB+C=tw zGfFo-3&9%r2VFqy+KE(tfhN5^R~_-A_W_KL@ddjl1i^<6jzFUBj|!_X zrtgNy<-|B`{}%^X5xMCEmBG?q8Olh)YraAHxYxEqUq^_?w}8MBe_7U zK*R&E&@=hr;H#UF)n}0Zt&e|%HpQv)_srRsqHZ)ZJY&p^-ClPFAH2hj`WG};LsOz& znZd}0PB+(ZGVbSaoXUr&qc81J4!1sdint>8mExqbarf zM2_MF>?rtKlDR0I|3A&2eOL_Uv?4IgjBwxYw#?7lc(J zQDJhk8?(xE(*aIrQ-CPBM7}=l9kI^&pp~Zn2I?V0WF;4E=i7^lIXPPe&b=1Y!V8ur zZOPzryfo42=^r?!e~h?Exg2SRct?9~2j4ftg0!g1N>pRkP1Fk>R$y;w`9;S%X`44S zBj%>>^2F36mK?sTn&WRyFR@xDFQG-b%R@Nu7Xnak4-hC_T@slQDng2~ma4$N2}3i$ z0@n5JKpi+OqvfM5$c990dEVYW>Y4O4?Pn~3&)?mL^wcU53Bu&=iqvqKpqNf>C=ogF zQFK%rD!4|p3LB+h6{zs0sYMIkla~UVa;qI1nb%}9%lMa7AWI-X;Eq0PWoPeYs|E{`w!mZseIGmU8$q zCh7^4S4)YIb0T|0y~`B23_NzC%b@UBOM!P`6lx9{X6hA!+_#r6Ux*qPlI69;*6y@VI8{=qyO>_w1)B_qN( zOts2K5S4|r1$IwE`!hD@6DF+)K_5Bu^*Y-%{8q75Z-W&OFc!uww$~wRK4{HN3rGGSC_4M;s^?aTNC3iwE@WT zoWc&H6{EG4eKC5zw*9X~fk2O7Y!dT7$G3Dj7k#h75|WvHmC4eDP)mqC79yqS}AYm*`g-Q;B;{1mPO z58fRpv1~;RC;jaIlw@C?BlluQr=<8?MwRx@Y1d-eJ!6Fi=O<}ZI*1Cb{L!yH-BN<7 zNjLKXdf(%L)#@U|#qBdsgCT`w$@SWV8fd#6B!2NI$=W)Z$yzlkIzBq?8sgRG!?0bO zDpY7F8*@h_M4=W+=&yt4{$DKiuWFG|DFa0_lZh(U}2j95`PVIifH!3yfx;l%X8sK{6L9XO_aHV4D}DrCKkPqi{4$K42B4a+ELub-y7oMCu*9ZDQRz1mhJ}{tF7NNQ|gVlIMp<(ZmYs z8-tsMX8fZuE1$WN8@=H7`g@uV?MZ0}jiQHCLSO_|ITjClvfU%;HP7Hu9Fx!>4&$&_ zc)pKL1jAg(L#yZd84EwB4>}P=;tEZoJ{yHEml*!Gvvs{01J!1M-cQm?Hb6_2nDDcg zY>rC~BP0Q&D$efBNk(>l~xZ+gP429gEM92E@~RB#xnz5QD+ zIaW$N`Q*%csWv|eivGj!cZb-qqYAgJKC*`8ulmHoSp-__$q0z=q*(t$)&iHND<}G- z;!z__XObEI%ve_hv*(ctW|n-;FA>0)c>08)KjV%{sRJ(GYz4|Lx|$s2Kha%(TgL(C zf>BB>oVNMh7kgXapCpzxP~2xHG4oSWIQUIfO2*6=c)X)--SY$H-pr_s zhgMhQBE7qfpop4epCEFeIwsy{_*0(pM@=0eNbTb?S^fg8R{Fle3E`A7GMc{3t`zL{ zl4f?q($MwtSrJo@YP-7qhv%{P%PojjtXqq2pWa!La26dOSZw9q+#Xxr_~OudQLLUm zGpgL!(5rYD@N9*V*6CI5oL5JC8wXvhjQ_-_?)xaj;sQ~d#f{1*^)163!{Cw1qK^O{ zhk$-S60-`P&nD+SJT(~$8$i?D( zS|~pbE7|4mam{n^#xlu6xQnLfGsPYDID1O&NJw9tcG692#{e75X&JPG@q}*X_jT{b zlcpReW-?y3St9)>RTRAz1Icu_vo4Ka3_E#lx++lYB^eu9opl00;^LRBBB8Q8lOdgh7bn%k53 z^X){5&5$fcH(&`*kA*o-0yv)oLnTqM%D^dBCx-(CwSJm%Jfscc65#FNRTna9$$A;0 z=UU-G0vXo6ea!uIH8hWiO53*SHvExk&02%r$C8-*26X25x zqRW@!(E=~oz~K0TwMmO#^B-BOeo6#e%0u6#Rql%oLYAsnZ%VQ>Pd8)-L^Y&=kVwfz zjyROf3va7m7J4wRJUNpa7I~%_RaZpTU4NsEPFykU^KE_~DxVGU=_|#*3_D8kb8U0B z&i1!7SJcT+ow9W2v{4l6%_gd1zPuI$Q{{;#c!?F zx-WhP#*B};Wc5v0TC^djCl#nYu5`+5D>5C&`x^C$%>e5grl?ysYosh+qgYenrB}a> zPVta6Iw`z-{KKz`@Q^PGIjEdGgQ<6D`)BNFy6J6=j;e7k#vrk~^_{G+W0=;{{pE3& zlyIMMeMzzVAkVPAe8b`e&q~bzyT#(&o0a)($tBPQ&PiOV&L|&8j{f~B>8G`Lo}qsP zRE5o+5v&j1%4_RxNL!jE{tHa6j1$Q@RP?NVdwzJpJ_|^|>KUc(H=gn^WhMZ7acK7A zVp^h)ob0qI7b+(63zvvrG@J5$r$wNb5bdW}XEyL0g#XX%duac$Yt|{D54xBrQ88h!xJL5kI_;Y?;1v=T<-2S6k1|*E{Mr(n18!iM`2* zebpl<1|}7tKlGu@v8t0BDheT>@c7+|t6Ei&XQGt|ansb0me%+i(sMz)#LnOLc`_=r zhoAk!@H(P?wQ}rPDzteJ7pYNmdcaoTdlK;Ta+J}i;ucXHr|BAEzpE>~s*~~C#5B4# zDJDe5{8P5&@ZWF1g7K#`D(3v%RSgp28?Zm#du)buYtLI9H=A&wC*FiBzsnN6Ri07% zP>f&8jp5!Eq;9Xr@1y@`ubf-BTd?xTP@i~hpW(U)^|@M(%fB#{2fk*%j&na}%guG4 zU{szT^-MPYlghjkM_lUsNI)0`| zduyEBf>0dH=1hlu1*IfD3VM|DyI@k_p`Y!?1#_C-`KGq+oB-P~hHpV3*%ueMD0g>0 zAVJRkyP{`fVEZ!YQh?ufe;&@NKT z(sFJsTShJex1ZVm{iO{GU1cc(xHq?=TMXBp=q@B#gIk%GyTLoAgt$bt=TeuUy*ZS z=g%u?cPTpjqnqUs4Q}MX0aTRg6TKXor@;{P z3LkCn{%3;L>hPG2Dpl#}w_A>!MwS*QR_I(gv~Q;UMiqshXciHnAc&)hs~Fa4^ge*} zTg#x`kXiWCj=xym--)eDgsfK@o7=XsmgnB^?Y&v7L0OEataM(PtE9psWHP6~O|Gir z9NP4kpy`#17PV)BK3Ao>q5v!^K=hzQJTA%>{~WdxEk%nUgjwAx6rvm@1~D~PbDCy8 zR&Foyucf=`)vL4C9ac&4N<^- z9Ap*m*^!vp${R%S&eB#^)G|Q*3qZf?wgY_dnYq5aGC=;DVSIpT{fJ>I-(oqW`sRz{ z64+-ShplLt5&3o9_ye=XV3&u0;o>z8)vp`sZ0m1d>M~Fpax__v3Wy?v@line3g+fe zS>bxmfOZZ|c8u}F9oN=<8*Ah#qUE4FSi@?Omez^d!7TKN%2k(DBtsFj5*dI<29uM(6*5M z-H&5@g+H3K^mfn-TQ!T9D2+d0soJvmkHGTV^|p4odQ>E=qxG9W3LSq)QwI$=7;iPC z4oHr_T>cC3TZ+iY7|obwD!wZVXU;4H0@t!i^A{ZpBA+Xhq*k`>EQX@oSqe}^KqXZd9&ENU{{@rzUT{~y*dEva!%5~LwJbDH(Gofs!`EQpAh0sA1Drw0V*@`L3Pr zW?28hUvOa$x?KsJZF9CuShyxz zq#0kA)X7h>@-93txLzCHuTN{#N{*yIlBbp@3s-rkkczw(1E6g40VC=kg;y6VXwO}pAA6F~Ox1_p9k~c=ZZB!4 zQ80G(zrn)QA#l57i$%V<(qs3%UtM z)Cw$N(VkEzF29p~s8%~4jeG)mKk6|m_QYP3V|C#oDBY?)9b{Kj`f4})-a0QIMC6ur zqQY=R?c}sQ-B~(t!#a9V-`@4-LhhHAcieyyfPx>c9AAb3XT-ox5>P*ZIG6t(i$C<9 zpnC0*5dYov@rWB-fW~?ga6=%LroT}8LLZhzWOb{W5SIU=m+i(DKdNa+RQK$%?33wK zG5RmD06Mef9xcpE%Ks=;yiS_M>!^$Xl)4biyH4narC!IonptLXB~ zC}^hNu~+i_%-+!WZ3($6p>Bf8e=lF@jKvX_S8~*yfyQU!=hrfOs&HSwaKP=uSvea* zQT~!`1jN#@tv&bOcy`Luv31`1<<~A_Oxd@U4UF5mjD+AUqcxuXN-~gmWo_P7MnpaU znFYL2dk2=9=I%KqM2`Cr5Klti58&zsYNlLM@>Zaj&;^8ibQ&q(Yw-7knNkW*3qGQB(b}zAr)HA4|uZ!VYoyr%u63v#OQw^aKs zN<*jr!{p{9Antb21omq?-?9ycf6V#zkvKXKaJ~qgR@NUkSoZY99 z|E8Kp6I!TjUaIjQ5mqh}i{a3Cgy3(iNEYOpEUuzM?fRu0$#r_W?)`LI1iJ$H8K>61 zqGbx_Hut*ITRI8~jx2Q(3&$XTxReD(AZo5$$5Z*%)IcB zd#9c)(-85v1*h5dVWnfP8Plvj9zbeH^{(^EzVuXixX9g@5mj+_%u~7T7sXL+sJL{z z!f=*PK1TaWyQSTo`bDU4eee;^B#pPv2s{odTlKvzq5~GjA|R$dEtsRuI9%-WMNtu> zFTSTUuJS$*aHdb$sH5s6#U#U3hP)^O0wJba{>x||vkx+<5q$pIhM1v)`yc2n|W*vcGS@sC;L+yB5 ztXabH!-LzF6>!@(UzzE3jSLKJqcZJNj`bABtaq9d7^B7wQsb=e!6KWJq-s;>u=A;*6(9(URZ={q=A;NkZ5zTbIf}NoyL#MAnWzz zriAgSsgvS@T2%STv)2%5Z>{m&mxjvu0T?Ij@#8=3XO`;El9%Y`84{@>v$rK@pIn)l zphZUH1%jgYJ@@kz@Oga7@dV-G`(YVONkQA!3k#1KidZ`?DQHwYTws|Zl`E_XoBbAI zq1G0zZ~=tEc8Z?PiyE?GRaq{h7veH_T5!>aE5|LM#G-oz&QJJpj3w!94$p4oj8#$o zy=-&PS(417*6#OMri40fJo~0~kokVks=j6FM$J*NDf%l(xNAzrgZ&XP2f@#zu{$Lt zI+emVO)!LyD^K-T@2ZH+Sjfp;bf@z^`{qqi2xTAUBJ1<_8RfL|aTRdno!KhSKwG)g z+*MU$Z)|iEw%m^~|3rPDGqVyAgx?Lc>CeQKUH9#sn8=FvfAv<{EZD6FHqyE+fq(z@ z{_uSCfd9_QJJK1Cit%SPxs(_)45v$;m>$4Ki2=nA21v!Gk5`Q52|R2vhX&QxI9QjVXtrO0cR zb-2U`;{>PeO+GjM_=gg*3cY2eh*QLKonA>*MWGqlcFVF?Tm@K>?uVV7O>GkzCi`EXnXr2AAnBppaOskAJkqo1L* zg?T*P&Mhdk%=B5;QZ7oz4#js^Sm}U*#vhUM_9*YSK}M%A(Aw}RZ`<)`7x%`CSi;ev zsc>#Nhlij6ogp)`G{i1R4zhGZa&M?L--9f zu-5g-amaJ6Bkn}hkBgE+_JUy0*>#%1JbR8WLpbCtcz@Btn2pRv`o%z}2eu7Nc;OU! z48D^xB&#I`OqE3EcpDHCOrPdU=TVL|{1=ZzVO@<`k{w^f$m$71GZ28Vkcid^T9=fRVIAil^ZP~&EIn33tRnstj8WRo zh>}|W+L2}zj^!h+-AIyoMQWd3c8XTa{h|~sd=Vsk(8ay_@lZ)x%J9X#Z@TGaaRn?7 zI)=~>D+bYD=)XTqymjjnvB5Rgr?ru0Hg6@5^$S)ydkLAESHbpvEiY7Pi7hGo38@8r z=@cYX?KWX_X9+-xJ(ECBylmQTacF#bU2l-Lx=^FHNE*Bv(60Ve3~K(&)e%W{lOlV6 z=v@`t!VWYgB9?=y;Aw7R)wcm{nupfEeZ~zWN4M1O9=j%rxjnds0&M9?&gC#`W_>3@ zrEjh~WaN0mTXgZCA!zbGQVrG2;chUXN2c+P~pVb>VyBnBi1^8^gw`8d0wz-NQ0KGqe9%#{-$26F0GaUy;i-5 zo{qL1T|<^AXe&Z#v7ky}0jJ!fLRnJ{f^o*YT=mu;%0w`IZSDNEWSfY6SvRLX%ASIX z_IrTZSxc>phSX#!Tc~`;eIGWs$<-Rv^Y?e|W%(+zX4b*WPj_8zn{o5X?ZP5e(riFK z7^J*1M^Bl47JW! zXcpYukXe9KwxHo9-Lz5D>zI3c#J%ARe1&K1K@~%XbxG(0;TL?c?EPoik2$O{qy`cu zrh{}=q;Z%}B>M=NQ7%EfbYSD{mKYorD!Po~eH51cz*^WP)6f&dNs6+bZ)*ao6r;r0P z5z{|ad<`IN`--WO5~M@yn(4KY_MTmv$8r~!7VNgh*3nUOwNN z_dT0isf0xr4H;Nug+84GGe#uYf4!k%)Y^ob)!2&6&jfOM#_KKX%?3~O6BU64ptc^r zl*m7m6!Y`S4r4$7Y*`Vz1NUOf^L^ZY$w*T}TFnowx;%e)OFv-E6bi~n)_)Rv`D9SS zi_1-xZRM{;nG*XF8F==|NyLS_*q6C=rULO$ZuXKvVJ<2MIK*E2)6FIg%7q`fn7)14dJte(K0Za$JEKDLwAR#b)Mdv%qv zp^YKc43 z^8ksWK3dG7EB~0h*1t9joqQ&X)B9oC8Mh6IgJY>=D> zrNuY=4s%wF*c<-o*h)-Vcq8Di)lv=yVskj++kWC3+$ zC3)I6b4j{J@n3%N98hBxr4W-=QrlI$cNS~5^8)!1ZtzGU4D7ck5yjGbJM$=p8@r}9 zbTqx+YPg!3(c5A75^-L9H8J^odO5k&1RGT?VbXm;!svH8e9wrTX_blRTjR!ZzH9r? z_^ucwS@JG`E=H$LjW(Gx|ESkA%wDI)qQsL#B~b*%HD z0cBH_c<0X7bf|42i+XQ1x8SfeTc2LGliFF&lQ$Qq3i_i|W)_MP164!y>?2EUfq1sa z&!&|%#{$;)f~bcPM(y5%^fCnh9g`P?NpzhBdB zF2fN|(va11v?Wcs?#2AG9{J{07w5dk5ye8Xh-d95kvk~0mv7PiSUSBB_xk-VOZ$km>yo&@(b|Yye87*sCHOuWL zQcj~wI-tHO))d?wtTFoPQxY+8O$7sm0DDB4FJ2jl3g1zDkrj-(am#im3vvudpg#dM zPV8_r3)7$5Ubl&uqeQ!n9-uH>sP^%0X=8N#Nu$vnElcZfohKLO4|g&K10wp+Ybj~{ zDWQP_3Fov$_mdt4PeZcanUhgLE!idMb_twI0brq7Rtse!y_4HpKRiQN#9n6c#Pt=(+h@$s&6#*1p!ye}?wJ*B`4D+9Ja5dDQUPuoB(ZXRLe5 zaPYF5DlqWx&f0M1|1n(1iVP|9pWh|~26k!gWmrd11^5#Bx*xUISRpAPF}(%aIc1XC zl%sAv(b<+Ux36pe0IEZ8eD8Zua3my8yy_dm4Y10Ds1HZW#j7Y8c$yD^l=IGyw|M z=#9;fs?$K=h-R#RZoSkSWx2dlJrU?yn{W79O^ysu%&O>pJy6)lOd81Z<9< zSqgSBdO?LHRh`5j_1zhEo+H~w<+-}D_W_0&pjR~s_2qbdMh8=!F;{5RBC;qv1Na93 z66?A;6i=bMXsh+gmoJnxmuL$iHo~<(+2`SC*rPU+%$R|I6hzbr44!)+9L%y?*I^E@Y&fsq{74rKu1 zdpzeM7?;DLZ)^PX+lXOq%W%-zdabUH%KTX)lOJ}F>It4VjWXK!hL#(sQl`pxxo3fc z4;$vV_CARd{^r6MWjQ?{snrzAS1u%UeedTMJ)wVR+4+;UIaVdRAxjeu%dk7#c-S60 zYOGalLqX;DAP~Cm=Z>q9N5pDq&!JD_grNiiB&P&+*6?h^TxuuWJ0l z*ge9WLA5Pw9w;&#r0B@)YS#r0&$L#^#d@0ZIGyt34JsiCB4#i@qJBt{Vb8EwC+s(G@^v+)6*ax@^{$car9;1+#KIbX$^tF7yQM zWT9;{5Zc!HsdD#Q_UF@PmRAkkgm9BTbDop|gCkT@ar`$R4UHszs_d7MN@lQfC3TJO z&Trt8k0eZRq;z*MO7?-zd?$Nm3E^Q%PJcoN>n!YZWSvFj@u9kX=qsf|`y>g6j*`sT z>_ptQsKt~#WtCr9A2*HwEAF44TR+-&ArjH<5$dIaUU{@*xpmxkHlBGf(jP)3YJR6ub8Gs^#3RE|CU zh&>GE@Jp)BS<_!DXib+WgCU&wVbBo)UK;dj#={m;Y3zXx5_Qhk(;2|ih}7cf=5|(V zi067FZFYC&JgTz-MO|ay6&illSaQ_6t4nB^zb(GrFnGQJk!fWXv&0e3kLXkk4?pOA zYNcpoT9w;%n;%PP-vpc#4eSbS)=8YOP3mms1cak4GSm9jt@=G}Ac&pIp;iN39Imq5 zLRG*DBKs`E_nYEk4QG9VgO@3X%Ye&^X4FW~{(mVjfVk(ZUb_~9&#j=w4N5o{x^{tz zRepYTME|J)jJ!(!t?dZ-s#42 zgt+ifDV^-|^mXVlLo)?cxD)G(C?*j3eI920%)hp7gzQlJjI`uX=vCQYeqwl!N;ql^ zr$L9{QM-x=UlcS@I0FIWq}UfB4JnjL=F(S z&+!SR$`{V@yo=_Q_N`$g46G+mq&w`AT1-pjGk66KVZuX5R)gy0Aic#?@fnXEX*mN2 zA8$T_+GgoXd^ac5d{(rzmr1<=86vJyI>9i3A9*ZPD4Pp zT3Xjf|4~^0Xp0dbRv#`E&BGWJ#JKJw|4lca54Qzp`i#Rf`f)k{a`it-V(itFk1BPY zNo#tg<1d}lEcn>le{^Cd)v7Q9rJU_-Pe^FI8p85P;(-5)d~5}E#WMW z?p(}JG zaHu%np|5zyJZXzrC$)Mm-$`GXcw4ctQ9PSG(d=HKSwPD2Kar~SwmAX?Jq-lGm{SM_n$(hGU z>P9Mz42HT`rsnJZ135*spCaCL|K>3;GM`w8HSm5Z_=(%Xi>@wp3}8|4t__EIP{#C7 z_}=;pH4=}OFnr2p5Na={1zL=LJ|nIIyX1PF;^{RFfv}}@)r5bpSndV?KA>FP#Je?ty&|?3=c*0&l{A zSYkjb>a^3Cg7262ex~FHW5TyKheBSRJFAu|)+cYf?kBJQ1EJPa#uU@{c4x6rH;JBA zfzB>1iqrFJO{#09ZfKb-(hlb);Hl;8{0&;-sAzB^fw2yqibZ`C=+plwzqP*DyUt-g4;8Os6WS#hzVE(BXO)~8g9a)>g0g2rimAn@ zUux87QOuW6G*2AAWpi{=ZLyc#E#kUNrjOy$b8=K`tq zk)GcBn|?Jt;*65e!tb=v6NuE6;&+|?%g^0i)>=feGt{IIA{u0(^lKijwIxRCS}c12 z%47G>9_rV|OL_RO-Vnod^rk~Sh0k73@)5GZ<1FtoEnkH192!&uzeBmV0;OT9t}9JMxbo`9eJ^%IGSsZJqb9y-9=qV`(ydZ5KlzODr)yShFZh1Wu|S-j zn2CK%>J^%HT3xkkJN?=?v*TVp{3QdG_?sg+wxLMAsTpBMFfr2TgpVbCg_vubGfN%w zj^2$~YuzdZOMYzw{;k@{KUmTR#>UtWZ@S54C+&W=OH(r!Rnk8=^Hm`IOS2O@g8um` z&y-w7$e^fTTju$R^@v5Ha=4QW#(U)cbszq8$K3brb+O;J?oR37 zbog0s27ZT4FZto@Gq^nsfNcR9;&HT@2j06=;kEPE9~(ss?)}b{x!leZlru5hL9?8B}<)DseV9;WRJ!joNB|4lo3c<*`9lL}u!9pCXq0x!%Kn z>`YgmAI*lDAs(;2SvMUpA&k$5dn?`^L8j&gY9-&nrL82MQQtLgb)xHDvPs{#)ZkBj zo>s|b5szLB7_54olET&Ma-PIhfYgtDNB)VzSOf@^{D;sng%FIA;8MDsr8tHn*? zQX?NvmJEVHg^3l!8TZ{ox3m3jF=gOn^ z{Z<#te$9#SsBYxiA7TCbvN_a}V|f&(%*VUR5o2C(`ntHoU-|RT@Zah8J7Kk!D&i`8 zkgkn@ik!{q2%w4lIAW= z{v-WT$2|tm6SpnNm-L!2SCI*)164XVL6|q6P`0|2;^e_64>ujT$WIVMYNn~$CdI3N zpLpAL=DI&|5ca;2l-LwT9SvwAyqe$o4F9_%iSKU2Y* z7jX^ptE>*5QTjS{6g=;u2=NPlJW3pI#MP?+;&>I!dMc4=L^fekeFx>Uw|FVyw1sVv zzXu!HI7>RP6=V1ndXu}FY3kgyw_Yp|&__5fsDv;2JV?t$KeZTD`S}an{`8CQ-8um8 z&g`>tz}FjgTQ<8AQd2c52TRq@O}5X^w^p$bB}?ro^uAQ@?-i}&k8C1vX8PRy;QN@@ zGU^{FyGoj=bERZ))!#%BBJUY&#oIcSH>6Li3!#Acrkl|= z&Nz!8Y8^d$4>4uovN3&+%2~Y9;InWp#-eqOluEUovnI%IL zYCdmC*o1JKl2D7+vRH5~A;TlWUk-k@+I9pgw6#0aT->qlmS$eZVyKSLd7E-fT{Be_ z45xx1lw4_Bru+)mu6{+LqD<+yG5r@>A0xz9Zu^!Ip8F59#C2>C)uBB0^If5V^d{=s zQ9M;2mp()ipN|{~|D@32m|g7A?X;qF|0tAtMGp5Mp+_TT=+u7p7(GGy4YzVX6MIX#bZO; z%46G5^Yli>F@OV0kn?BivLB8NV1rLH3z>MNO!(@f%bu}^_Qsj&UR`RAZw^{C)!m9z zPP_TrnJk@Xd%7N{)V6%x*3<2RK!h>Uqz?P;Uq=rfu-{`#qfB|VzAzR4?G-t0<&h~! zGf2+Xb~L5A%S8O`_r}JceU^-G4qBpu{?Vm;CGyqU)uA&+VkF37<%p0=iO&}oC!4*G zL(b-3`FQ%1iRxpxyW?xxuleixf2@RV{*pKg#P&m!h@A$ zERw6tV)o)DvCQ_by;6dOKjeAO;~5e<&%yr1Uy8Tt`S#S2#cV0>8O?+B4cW9uFA|(m ze+>HQNLsx25V%=mVc#H8nWglEIEF{WCGg~wt7K3Ao{I$f{KPriepC<1$w3pwTe@X9 z`FTWOHK^;&)wBku-EG~Bdidas241TSJ_0|!RhF?$^5FZQy)K&2G`PkLmadzi4Ke4sjT=ZfEFPDfX&JHO;hl=$BgNI+HEUkzPIstV*aL zOpb)ik8`kVQ&!GaN)htuj(5t_$>x{;fr7vs?z7)qE31!G$<=G+Gy1iqXdz%pH9Joa z^B7helSB$U-E*0uKq-a7g8P%#Y4uW58u^Jj=aeV>oHe5^NnbwJoDTnaF&NPO3=40u zxxt}@$}P6PDF8@qS4=v)m~p3a=jEw(2ZNuvjGW#n zIbI+3EMz<3dDuV2PVrKqiCJ~v zUFd`EXFpn>rz#+@5+{oe6IFD%?<{KBpflu|t_5t^yJZ(t*P`KLMOu~4Rz{^2y!|6LZLDeu+#OqzZ?QN}(~?XVfW^ zxCBAU1PT^zTIG_}*U7)FP9fk7iSMELNoksJbuKiYbw*J0!)tCk936kD_b!J;MvHk+ zZ-Q1$P|i_~w`-IVznuZl2 zG$5Bvmr_TYRCdGQM-W;jM=OVJTC@RG7Vocumm3_DBu-J@Y1R9xU67m-uXaYvf$xAUX|0J35w zULi3C(tQ0WYimb?JRnl3holO3vWtq>?axB-SY_*qzRh8)Q-6Ds?FEGR1dsmNwZLu^ zmh(kvefuohoc%~*R=idc!L_HHe-(C?0tg0Yw0Zx50xk7omKIy{*zTf-lG0z#DXc2Q z3BGN)1=EZo_bP(T&0|8i_9*(iI6{kcYm)R{ZOK#U2$*x3(S24qQpRu4_869f6-&VC ztl?mr-om}^)cGUS|F3?mw)vXa!U_z+HqKUeDWBCra6xU)45w9Fr(3;nM1ZU&<0jbX z^XX!ywFk!w2t79QLq@_6$~b)E*0B#oPbC@aZn!*ujNAw8wO?Nfxq^#ZI925Di_6|7 zzyMs?9fNJnHl_^ap(ItLLohi3C_O9fqFn+BKX+c%Fx z%sE6W(|zL22B1r-AJl${A?iz>KGLJYdeGmYGhvW{&S}qIr}qUX(J1)p1|sJhuy+gu z)jw|a4kn}7R&e%psae8YRq zCozwU!P2>ch7IJ^UH@_7%p?}h>PsYEb3O$lM+6v60N#7_zGCJhC9q)Vf|3yTP@%3% zjU`)*Cnd~8n6B#2wfyF4<-1utTTo*Rm_pCGrd2VkOu!oFr0ahBf{F{qxy}dWpwTvv zuY0e)MwZZmOf%wsE;txP36}xP4VUvzGBpe{j&VljdRL|QaXb)~Cf@Z!htn#O`FH~~ z=8;V5b903)bbw*zx!L*YFX<87sx}|+X`1x zeRb`rv^0N>+dF`})D;$D-n9=7s$%?9dpE9$Cg7%KTl)9xSN}lPVMcfp5@>wA8N5Yg zi1BM(9rQEt4H*;cMWm5WUDD53B)wswKs|cHam7My6cZ#AsV_%>uB+{jS=Bruik*q) z%CZ*96SN-xnd_;ar9tDLBaHfeCpm{btT!8tC-cDE4Cw0(Sd>MI??^gTqSxcJX%G_p4|Cw*H(v@J0pTR zmB__our_}4Oo|I&}oOc0QOAQn-0e`?wB#;kSK_%zsagC;t<-miy ztbIeVx4SBe@Tk0$bEtRDb2IHuYkIaV5bX8GE8M76=iTofdp3U@`72E*(|DOolYn-e z5S#Ws)o8dX5K>jYKS^wqZ#So)X3?6(dUvYsv_03t&heOu?hN@_r`TQs_ZA;hXg!cn zYK0LJ$62AjNJLR^eGjiQQvRf1X&Mr-Q79p>NjyRpWePqJRe}AzT=b(`1bhjld(>G} zbuGF)jS@}9>PPs#jyI5Vd_z`9KldkzrtTOU6u;yj;H;icmpL~asxvadN5Rhl4(Czd z<@OIyF5UEfJ=Y`SY8*PgZ zVT7X0yG{k~z&SSx=@_#vv654kD&JgC$$uiM6#Vq|Kz-1xh0%tktB>vr zd~%#O?^X0)LdmS%k<>Y4b56m6Z?NoRoHtz{o?`de-&0t9P#vN?PRI0x!$TzPThmHo zsehn$pjm53@&78PDt*HHT&ra3lMKB)lm1MXzl2`E7qEesW`L#sHTM#6%tzzJfbj>_ zex0B*9n;|qv9^v400FEmz|T@Rn~}IRcla%D)=Ty;aM<7kzM4y8?8c+_yNcY0xD5~3 z6dZPeL;!Am;#gh3s$-qbJ~S}3Jgr@u5cRY%=2kJ@+}-BCrU9b%R%eB^?O-NPE*wUB zt1oVR#xVT}_~gIuVU7AS-@SXNPnMAdP9!6=JEAxN-fkj`#w4Fskae+DPlB;1h%4I{ z1-uN+I-`@72k-j4qHh;gRKAmvc>XSahqA`cE5_uMT7>cq(>K3M|mv1?7 z=qgx5P5p;Un?KukL7GGU%`{&WQ2UA^!!7w6ul34(fPZC3=|5yA`Qk;MI;**4BR|8- zmj)B4R`iud^({XYU)6|BNQmuH!$kd1pI&Sj0_eu<^Ay~=num20b+F^W6%biTv90c7 z`_h-=!C4J?WiX&UC63HKQ|I6>516QmQR&}VdX-_-!iO}g8mvkLbDYY4(vUgj4*b~$s!e4rrmJnhU?L4aTYk-L%{Nbun>`=gP8DO z>AwB?V$x$atL?dTT15Km`Iwmk_t2y-{7vH`2rexJAa$SHaV4>RS<8D)!xmjZg#)#3F)2=d2-|1zti_}iKQ(|@zMNE+gm36%i+fk+>XlyKBXhgyw(=>Tv8Tek zedXx4LTU?BEJh7P@Oept+6w!_+rim`S!{-uGjo;*wnpTobn$26XCg}HcMqMV`Dr^G zib}M_Yf^@SSh^Hf`u<)9tCwM{>aEHibW}39`UkYW&DL}Q&xGGdb${+VG1}OHUb>VK z)I*vF&zV$rM>mN$mw(Er3ICSCYoiL0B=OVh;F{mvYY9uX7Wr`E)*+WT+oPZ$H!<(1 zyb6mybg8}Ubk?{fL80TaVelgF;$c(Y=8F7lCg@SdMm&Oc#`@E(wH|U-&*pD?!|KN) znVD({(+WInEJ#V4Shup*e0R$>N~%M6zou61)@SvwH>Y|B;;rcp%g?3^0E>DCv0 z#}->1VM?8ApvcT*KACS82G-P^HLne;n55RW^~aGC+nph8)zZ658Ef z%}kh}qKc0s7G{sYVwT!G8PJO1&mGP!-C5F%zs!l}Wo1B@vqP<>sEe4^AJgHX(vRz# zKicgHb@aF?xrOWHE!XPnw6*M%&#-u41>Wg(KR8_}xf?s$(O7l5m(7$;DHr7OqI_QW z_!s?Z*fK9Cy++5+s!}?$vy5?lBP*k#T;j}A3_fQpM(RGs_WSy=Qo+(f0YPOO{YX9) zu0SrEhh4fX6n0&;iwxbbtA9-S^_4HZqne3nwvJD#qk(aSkaG_{fWNC#F#zJ$wp=>{ z#uy=Cuzjpl2h|U*TPJZ+#l=5DPTOsjrqhtNx%I;sUF{ttOlQQrZoo2mL|4W7oPA+= zu`YAjE}d2(#{V?PPQ*ZXE+*#-Hu>2>_+*nyp8Y))v9)T6R(O^nPOHn1#!uEU>5QQqypbN@)S?Tjl+#a(j%5j>G5@M_6fnzHF;s zAbt;@Fta5y$Ixy+yr4I;{S!Vol$8mqe1{CiK51agsAB@rioF(r8fQlhhGdp*&j^WC zMr+5L93NlxsE9``)gx%68mCcDEi2pt?jfL>ux>E|+~6PRbL{A8Ap2LxC@g2Q{|u-7 zQ{z9a{sr98#STtK3pdsc>-pD9>!XzCQGB;T4P=3(3Ug7zn8*h)4 zmQ)94<2WPV-L?5f-!C2PVI2m4g>a!8y1b}g1J~a#XG70oN|n1rNWFx%9=09gfsmOn z)Du1?zkviL8|ASgfn$~Ph*R><_0Pu-A4EMaEbV$lTvzgD?2X5v(h&Ld!F88*YP2R& zt-T}XV_=}R*p~Hep_~w6t?xCud_*{v+kfBmO`M-N)jbKdi+O%s>(8~XQ%{jWvR8l3 z=aw1Gok140u|a5vTwY$A=Y~KzSpo3J7o5#lxhXvfNSvs*;X$M)F_|=$Z)KDhD|OY~ zFOUHuvF%@pOz)EzlQ(zA7 zYWH)TssvT;+#R@gN7UXO)MW^!!yyj<3ENSxqOh#L=Y62E(vuIn>)li{SB?(RGm zs$KU6){D*4KE!Eh&!Q+QCVpYD;tzMh(!jvD@y zv8OiKJpE*7EGKvV9w5bVv#e=SKQVVhpr-t|aDOKCy~k@kkprk}iP7s4M{fn2ecJ8h z+o?6xwZ$CHX~jZS&f~gesrSeVAVk=c>^(;R4i;Lg#CippxS!S&{u(F_&3*CX5uXpH zV9=ev9=KmeQ@`qLU`&GII-ITjwo@TnmheA2a$JTf4|A9>W0T78hD1Lry#Srit5mOe2NgvpYE;%o$Q9Z#Fz}7d-DLK z_S~C6^M*+JF$4#Bbh9{~rt_4br9%d0dGttE>51^fU2{{#%|nl5p}qsHr(}Kbvle$v zx46iK-Bl$YJ$3_2-Y0XMtS_$Y(nWMl37)Ske1s(iSzQuV&_dLiZti?$Y15T zpyY;wI~Qq10@0un)kac4BZ<>&VCB0_q30n3z+gA8|BHvzD*b-?v+T>8Qrt_!fOpMy zF3rd1hUsf}TDWy2A6tED%vCabpH?SvW0ZJ1uij#!ZLl5>x-17-#4n@aORIb@NzzCD zf#5-QvWAOedp#3fuU>_c=oc?NPL^)_BZacS9(Piwyst|keMpX#GW?W|>ZxV$K)ZS< zgiBmXprs5o9&j1@M3nCLEZ0L^xWeXOm)$L`eR)~vEQNVNV{{8oCXRnb*prI&%d1np!7so%NLZ7o*(lkJ>(eekySQrF7-PV-&*BJ{UqtM*4_s>e6x31ByTF_e8<9k zlp#w=qT>D(ohv=oga2qm%2UXmn4+|lQ;8Gh_cc}zjbYC)^f>p!uKTK8fvap@_sFo6 z^2vOFn)Xo7)GKJ3pI2Oa^Yopvot>_Z2kSQQ*qhVBzkmHM4-HiWWIYc#Aamhnt3At{ z$198fu}CkrTCA9N4M6Po8h=a2VskV1ezF-Iao9Gu zXC${}%(PITyVUt(MK@j`LkM?Emw3XFma9!(168HDoNdgbB;X5}Wv0ezm2p*+!MeWS z^dy^I2@Q()mWsj*c4XRBOQ$Moy_{X-JEJrsHDeY*jhphG}Esgq=5!W?MzP z^O{sIFPB~iXG%!Di?dcfZ{o>^x&UWLhcfld)Vwb_lnr67QXGlgMfw^oEc(9QHJ7G% z!vJaH>+DX>eZb+;li#$mAEg*B{{ul56Ih`ebnmorn_qn`SNCfd`R+skexHQX@%7Bt z-OSAY=&~yXKK8?%H8VU+c3C;WC1O69A%M+JR^D46j4@=e2=z()0XrC)hNp8~-%j;D zo7-ZX<6`=L2}BgensJ0HGF}hZS+v@kD@5eH^`5*eke!?!X6!2r|0pJ&e=rGvxg17k z*9|{E;ajzbKaZHwuGj9l6zuE{E~9A1y||PAWMM0L_y z(LSyE!(~qNHxsll`2n@H+90yg8!TXAhg%;@=urOVY=p*OjNgYZ-%c<*&y&pr}th;G> zuSWYs7d)kDG^Fa2_G-?CfU~lf4m+;11;y4=L1{m>wOcHqMw6i$}{}ni}AhibuXy` zkl`IEmer}?Q6{2lf2pzI!39pGTRys036|aPFhm7tq1t?+L&`q}$tv_-{Ym=T@2XfR z3smEe_t}+VDe(n@3hBN$Q}Z>!STBB0nISSIotGg;$lu#QXhguhW}n zduQu<27uo5lF%CD;Ml184Y6yP+XuC`Pyc>J2~A9mUeUi{S;by@bA8o1^aDNcutcZL zF`!1hB-fEtU+r`JeexsJ{lEYLM^o_oz{O_*bFIk00-&Mp0|!4EEn1}X=gZ}R1&Z24 zN}KfDV%AbS8|leDstX{D3J%^Yvtye{DAW*Bn%tRX+!Fw_XZ?!gmR@|j*aKZDLfN9A z8(XCC$)@5^%p2|xZH()vl|l8Qh%Wdax`$tib7;+iSILP@>18aSTnv_(7^SnBGP^w(wzm6zc>&-Pa)oi}U~l#bzGJ!fLJogWIPODDXH{b`+= zK%SRpiK9cHz0$p#O8;hI*Iu6!n7K01H8stLN2g-lh3YJwmo6@i!Js;R6WWi6KomFL zm1$PC%Jvu{7X9PX`fI2KF@bt-cFLl@fj*-r%7Lw4sYsk9DRkAawq6@tMlU0&M>piB zMxmZ!yl5#eKs5inKCkD;3R&0ylQm4&LPmmk^%aZ?J2PoKNCc*OL(RVTI1O=RVT^|# zzSUvVvv(eAhj_d>nVW<20Q3}hGwo(06sR5kfVbyN>CYbP^Wd6g_5X7$4GlL5_7AvG(p0VZMx^Ccc5VHuhYv+saDX<- z&MJR8+z_-Q=;Osn+8cH5^ffIPW^n<+*CBdC5dGsbCKtMk^Px&p8Ck(SRo7XXP{O0} zS?#z=e*m@B!=mWMWIK|CQLQ}IX|+&wu`9~RkI;C!=x#Xzf&B*}39U2$au1WWZTtmI zdDiozSL*Z`-$bnaL~uJhZ*t{y5l7#%I_WN!(<`6<;fq~t2*`(9XXo{H-HZayl-8mV zB~h+x#;k(fCI1(UH2KW();EgCo~Y0dfE@evaw-BFv$OW> z%PL4q)me>+6L;Yu#0*ah8Csdv;VCn-E%^NyKGbWb&F)C1$4D`d+OR z`VN4Ct-36(>mvpu6_$v&ofFF5dU>;YAAv&_Ac*6svSD%?6vOw7V6|uM0`!4ndQ5J@ zP>t=hv&-#>64@@pgqae~jGug)iJ@IEgggM!*5N!4)UL$mFhP=mIyNvrVh{W^V#?+^JO^Ugok zzV4$y_5!umM~>tcNZMpXqKZ?Pe!7P|$n6I&uzCGQ-YV^Gque9GHiF12r&jzM&`-o0 zuo7nmM%NXlHDJX5wGq1;b$pHAjBuju$UQg|fB=OTfR6O_tr1AD@taB2YsuZ{f5T3R zG1wD24nseC!zw_x2zuxp#F7f(*|fC%0kuKB|29IDW=Mm!Rp*1yvH<7|^9axx6HpxU zN0;isaO1C>@t)U2KhoUZDJ>zEsoQ8sDp#X$(C!(4D+|a9%-BE;pFF8bzs6Nqdl{$X z+@F$KB)9wb%8&!g1{jahjxCAM71@k+&RTq1IFw!iq|}+tsrn7@BKRUbJyMVY^ykE`PxTgRe8_l@u9!WO!?VdsTjt!qav%v|VRam^IvDV>24Jgx-T zFz)tCQo)YSuOV73>BceW8&7v~^!1geN;YDmNDOhtXYTMSXBA2jzk5HPVXyhX0jMax zvZ<{%TY#PLO&FU|2LhEN-jFfr^{u+45An}Y|1Go@{Ng53=l)H2b520paz$2Gmsr+h zpsP^*GgXN;%L1X+-q0;S$Rb)_9abHf;2M)6xjlnPW){(-;<=pu(wp~pD>sDg{EtY>zd@9qL zXu9rnJ9efhmV3Eb*qtFidw9(%72QJ2i5~;Dah(jvbkAk0*s(G8C#jmBiwei_+RCqv z71JBod-iN^rD8r;uHBE``n>V#I7~cAkduvy&*n_7@5EMZ20RFB&9p!uzCiffoIGOF z{;gt!V1f7>7>O{N^|s3r(W@pj7`WMfO3arwJqiVQNIFKu&DFWwNVCW{NcWA}bxhZQ zUf^+2xpIIvgQ(hsm=(6#qI>9EDG+%~GA2^Dw+~*#5sCrvQ+jz3EMU6&6DjnUd*j%6 z^twMcys!(oyWO@yF=AD48R5SWo~~!OI|Fb)o3oL6fb@aWCW`H)WU=$(#ox5I4CjTNqy?&kjZ8~@`Q%Y_Dnw@y^*&Pc1hNFWOF)JPq7E{0%q4=d7c0~6fU zL9<8nyjaFf8A5ddpr4lBh+c_{< zMe@8iGI)(*{7>)6uYY1xF5tKuO;`1;V&IO@2j-7^lNdJD6pD)F+B*x`#L? ztj6P{m~{26O1G)W8z! z2EyWhf@G_|9Hy#}Zn#O2wEDmoaVd=IeT6#Mvd6~EJr51<&%A_xuTj!RTBT-WBnPBy zgnDyyB4Iyj>!9^<{AqD)X|+Ir5?1}u&9Q(T@YOx#JL{6RJyh)oIY*YUj0GgSBx+3% z!HISeK9Cw_c#V{*#ex<^aqn}~6Sn*^8?&xMMw@SU5ZNO`)Pg|-Ev!n9AI~vsUZ+&z zCQR~j=ben`0i0zTzyRFb`j`J1t?)m6+t*w~bgpXWt$jw?!wj1e@~;nF$BzoJ-;g2L zpyMmhj6my`E)V z{YT+phaoIBA9=pjs{i%9_x`05u{s00SLZA_<%p80Qz*`mwW)|RD?obsh4m;P7Qu%i zEO5ZofI(y%GKDsRV+KaE?zhj5`URJ6exE-`gOfp^2lrwpuM7#A0=(|oc0^W~R{O%0 zy*@h7Tj!lcdo($Qr7B7~jCctxHZ;%)C9USLa|BUaW@>n(7;!#*7l!Birb@S0Osy0- zCJ*ic@n4n*CEn{w=6?Tm9vb~39X9UV7Q%P;-Im{Czr2elcVba2NR!Q6bbDN2;pN!x z@T!E%RTZ8%4H^iMi>Ose`x#h846wt}b!C__ zq~RZ}lGA62(_4j-o?RevJwEMoXr;<-R+|4xQ)4z)I9Nv0TsgGq8>oQokz%iR8v~3f z9&wBj$A-zN4IIA;mrO z%adY?#Sc@6)ebbaHJ<{(b_h6kLy%W$Q{k`w{5tKYXA+;=(bMA&vC#Xfc->G4}Gs6q++{|ed?1)=2gae)2IpxKa5>Mrv9>_Usa9Hd2At31iC_p52asY=y=1y?1+#Ai-}kYaIbgO~6Q^pBwvs6Pd59pX>af_hNrE z&1*Od=7Y%N(IMAXfw02w6{cglaqlGvP&3Qx=wazzH|TPeHMf)6SqBxRHnQG`wW~gh z93=4qH)D9F{Vh#tcfic*d@=$t8rC7JBG@J_@#=NidV99vI6d4V*ug1FpCilP3j!Um za5MMSwf!}<_OkisC(iV+@dqY9kIlA&>RIPz7L+ARyj8Xn-$UD!kt zFn>I)yg)HlKDIy_C+4s(H{YC{ypH0ND#HVSS?dsC+07|E=R+h<#rPYy8c{lMt(}S4 zv%dw|W4lhIg#51Mie`_~U-!@c!pN)OVZa`<@rW6|XM!=e&#naGp+I%{)PIZ?Q z*BOHuVjtX`z$M)|`&3_5b2y@-jH$Jw%7N{e-15Qdqd``CW2j~z-RVfqp;h(d@88Cx zJU)8}M+?WdnNgG$YIpp#1~cRWmpe}fYPx~oxe1%%!DQ9sbM=QA@uk!Y9%7G3VudW3ey3&*#CcvLF!Chsb*AFHZ=?#dAhe&3u6JPdgro?K+!q}k|XD!tI-bE(~^dW?f)xxvj+? zDnr@J%RVJS=W0|c-W)yh^nkSC4J`gac!buZ_B4QFj6Xk>uv<^!DgL(K`rIIP=uOR2 z^r@-QLQ?l1q9d}*5P`j{iw;a(l3h%Og-Qi8N0od3oWwP__`~77`X}FUTT4sTn2#?q zOK6pqD8<%p>@tkvS3wxXZA;s=;T2Xx<1)F|h_vnLJKLWKUDfl0ATO!-%YJb#Uf-Nq zZYkm8ldQkdhJVKlTIRr-k0!~_F5~=H^w#M~T&4NHRV`U=qzK3Ish*ayDm%Ps0VHXl9yA7J0$nA0+ds zKoJn3+NCIw%8z99$j`FoAxWxf71f5hHQ$y(GO0 z)AL~+Uts#NCCi`SdPL~K?aPyvWFGe;ZbCUWjf4M^El+v#O=pnVG2~kx%-H>)?s(3f zLHEfm{zqIoc1SbMMs;6DZbw%N> zn0N+Es(hDB3!YT{)N*XJ)Ex>Ws>{5I?0-^KoLOdvmy;`}-$KKt#u>V8gJ8+4 zp40ndsracNDo-j=6p(p4Srm?1={^Qpp+}h%n6$DaT+35PRb<3jd^Vy1gQpn)`P*)n z*de#Hkwj>4({(e}fjBQlxP@rc$!D#x_LsYu(JF|E)WW)RR}(x5V?Hcb88W7N4}tID zaTsr}og$ZUdMaGg${LGym@i|Fesz^o;@RJ|XI>98y;N^DZkLS_O6nx_&6#V=x{E=t zX}-PhnqN972?gTQ^Z7i~z>MSjM3M*kovvcf;)xfRIR zW5W9z#SCC-KprYT14oO!wtn_>p;9`&w1s>u(1hi;;Qi<(OxJWd(Ui$4wP!Dt=0nsg zt$G3u^=#BEq#>;m5;x!~TjW-^Ao!}-+(8-B!CBWAZht?IgDEWZlf3c~S$x2s+Q+O* zEY(eG41e&K& z6!bW)r;j40RChDp9KRxS}}sx2Y-$@J4Z~H0dM-C6ZIRV1qFk7Z97o!W*W*p$q&G4 zn-TAKpqx#ul4+}8O0OC26(5WlVYo*Tkkcz4=vZLmaUr{+aln(ev&};=N&ecOR$)Z6 z7}b)|0V*^TI1c(Vw)UNeALpAr*GVu{3vKH7Ysroi`~N`HS4X%$OztwGi^`nOddH%T z7~bSyv06N5>CW9>I>11}SyN>~&CNc&dxA6<* zO8s`+V>Kp)eY>>Xg?MS&k(+3KE3cl+q&2{6HvKI zo@Y6eA>&v&^~_3O=9zM62+@N_6yvyI-WOfFn=3|!wTooQ@r;D7Vb2(#pvF-=~wOOWl&?KuFjI7Q-F3+Qhy#vREf2!YTm)IY*?m(xN= zZ4g!1{MZwknVxUP=Ebnh!ewrv0Y_@BxtqOP*WU@M)oF>yNN?ibEuCUx21g;r~ zJ{mt-}>{Z@H!SW$6eSw@F}?poKP(o)QtF-#jxiWxf8});A;VMHOrC2_!wGES9iZ! zU9_K=?VW7#RcVP(e`@p8=OA{6R;+L$_T31et8)NQIa=y@^h8=?=EZRAUlUYc0qsej zyVbSPY#o&HcGSw73G)qWmbDwyu*}QP}g&_#^;N(9n*MlZ`5(>} zh1e2-wW&;8W9GDQ`M#oOvv4a z1><$>c6V>BnX5y12Zl4boT8X4a#HpdVG6LASxLi@(g9sGrfaD;FBK+`k#mE<-=6Kp z#ku8S_H1@Jejfs6`}L3{LMQOIdBo>v_6E zY=bOtiaVtosEi5KLz^+WJeRa-YX5iRh*|brJd-!Gb%62QxUIQ&Rlf$vwn?t! zEuJn}e`=pP6FpZzAHORucI@c+bBylIJ;0hPWKx^kToJEK3`2`Ueq>4l7b_h8xgT6n)hJ&6 zxW@VkKlq(i0L^_0LnQK_tGk3^(v^eBrKH5*oT5~L*N(@NZ?IyoRIY~e#r;59D9ZY& zx-ovIDq6JC?rzgu*p7UE7j@qSXab)cRfu7OcOJkvu=OToli~8lVhgb3f8k54kDt3q zFwrFOA;MqUE&Oxe3@op3h-A>OTsC?Wj20vAMWH1o2GgUjK_+9-jgrVJde?JN+d}H0 zeiQp2D1jMCF@v?#Ds`|EDD)%Nnaj(|13QYiYZ>Kx^ef@wP9~T_3;iFw6+D^0(wO_k zhr}#J+UDx&filbcUU!?y;^_Ww`n1tsYDtRKS>(T^0y*DsGJ>PS{^N3l-nmLyjve|* zf6;*8J%DqtMdkvrR*E<7K+n5&MR}x?6Cp! zRKVuw-u9m(Nvh|lu;-dO<22=8tZo`BUo0d1AWgEXg}0*1z3wi?A6KG`XmEXlcrHp@ zz{}PGoGrj|ykYSl=tTB%;Nh*RCE{}@@|}AqKBwg=`Oem~9m`H8ncXfx+=VvXJgf1Q>lqU24o>cT6LjO<Zd${}CoT*h{RMgc{ zA`PI!^)4UB^FrlQ!?}gP;*)9pn&CN5Y14ve=bv@6d%-o<}cw{JSv z?Z~Y%>VgYO7*;zMDY;rLl%2p%`{$xYfBD?@d73(kt0)${8b8|lk{bMpwAN##XLHzC zMxGgF&FJbq$edZH^7(Mo74fLET2M!ZX@+j9A0m>o9lP`)H%ZlE z3`q4Otrv?}i-((8LxxIDFK_NRs@DZ{&7Ax~x+*ih7EnLB5h-%PuUsHZR&~Hvt&T7dN4LCA3icwgB#UZ82YW|4`(>&bGYF zZC&7xH6^h|b(SCMJpb~LjqxoVXx}i~9o>I{GIQfad%m^QYEo>BawH32RO!@K=|JwN z>MMM!k5PN!Xm~$lyQ!gPTD9q%a3}Ra(2oEo2?7+f3Ki5WF1DjHi72X!gB)C$0w>n$ zvAmnmUA@xI>QJc38Gm9xXG24zda9i994Q-J8a;^0v6}$(Mf}qE;z;WNV~+Uc$=%+h zqRKSDIfL%UV+7(a9V4`ie38066%|mo_hwp^v}gBcAe(QPwAQcXi%D4e7Lng7+(QiB zFjfs&bjF&whhPo*FH%J7Jyx&~Ey*1k} z76d12n0>rxbam-HGzpfve)Uul~b!>6;*Y$ z!WY3q^+`@Ya%nH4whMy#(5a4DF$x5ea=&&Lt5!}b6b+s!{DCTnb2u9Pd@H-5pc9Wa zk7qYSDrUS`UzoJylP*!JQ~ttYL$JG2JL9LhmOtY{-SDm-GCu3IGqQs}k18hkHOrql zY_h!HTE|GrP%Jf76<#_tR3|#A&yi$h_E7SM+|E5Te(H5}l#85DQguT5p&W3#3r<<2 z=5I#Ay&c=k3%1kczG1wZI!2>gJg&ulpA~kT?MWd%aQt48^>^u*QP`Ya z>DDMxb$1=#T(pY+ekI_Sk-hEBfU_nkGfq|2nLdEf)<~4te^k3CwasIxP?azGjbj%% zl_ysyH~^KMQ}cqfQ$Xa-109Tbbb9Y?_e&8v|A8LYynU%{zQi;Qe>t=WxQ;eEEW2x^ z{sRRrewiZfpy3GrrbHT7NSNE*+)*F?`K~Z(s>9tTQs!vs_D{Y4 zWW;Z#if-{(9VHG!!vo*8+0l$xal%Ej#Oi(-2U_-p`Dsq4ohdJwg6BClOq~7|I6Mn+ zzt83J)cC5^`50lH>2#oEnQ;TDZB585(0R_dpK;3g0#+ zu8W+kaQeyI)b*sQ2_^+@*~Z3G+}9$@b!W5{Xe_w%$LKqTKXKh(+khQJL}IUYLlW`$ z&v63aVQ7A{PjC(9F$&1(A+D7o4U}H&KrcR>ot>RmSy)_JTGC*xtcF%6)4a`8F*4Ru z=fs-nV=gezPa>-~z0Nh(_t4ov%_K-LthqJxokmv&$&D5uMEsu&Ex%<*=zFwR4W`q} z`J*`?`eA}5J9GL06;@iAyjooi$xQ)}ue2-YP6??%HeDucPl0Kb#ydm^KRG5a7Uf)zVji zYK+uA#KRu0lx{6vCBNWkOWf4^5ODQo-shpc=6)81Q?l`(im@(A2+ zNKH@M*krMWGpJ2%D3v6fstKr?F44s>ckc1)IakW6N{UfUb5V!#28q-8x{bRrw#iQ6_5kJfzzHxiFsGUv)K;SDJVv0_NDi-E~{y-f4$SAwZP$DC;?x~Ftg z;XBYOz~*hnGdAL!oM^Tt$z~uOKTnc`#E9Q)uX+xTMaexZAifAB+Y(w)@jp-)ts_L% zVqy}$?6#N{<$OeWWX=f+S^C2le!e9QT*Y&GH8H0@y4x6)PGTb-l>P!{6-sp6mt_r& zq$q_lEXDl>v|I!3!InXn!4D*my5%Yvr;!OKH<%w);g!4h%2JsyslUmN|HYGfx3@!1 z2I73Gixog&K^g7k!=f#UsuW*%*6Y%TiiUSZOetkuKP|xE+Fr&S!Pl{bcrvd(o2^MK z&xx^@wpKuD?n_F1FEQb*&qn+e!7^uJK$(-w1Id_*IBYb@)3Q{;9arL!Ol_fJQZCE$ zQA}6sOFy9aA{K@72bnBu>wS$7rC#^O=E~y9fsvS`<7a+uo0f=UNvtp%^qXO0&Y|Vr z2rZQ4a97{8t+}5LO)IT-dk1@_hJ12BQuEG`>Qx&hFTR*_#C4XuR9{NXSs#7ey$zjk zs=-c0UhokEvC!mZAa^Bk;@0HUH1|H>LD&0So1wArE%CJE%36*w)Y)g-#`E4XMZsQ! z(~bOxz79|~p*bn+**o`C>w++0N3@CvM1`X7!n9HQ z(h?&>#J9_195wO-OdJp5XcHn-&k)-$E@s&7xR=SrZ1SE>A8^&aFWDhy`5m?)2KFCn z%G3I@Jdsp8wpX*Ga6xmCDOYy&xyEW4Ht_ZqYmEnAZ9$&3?bVc0Yup{+K)O1vpVrqY z3n?Hj@;Oy->cKS|zscQ(hY26YxVbL`OoL0Vo~4&H9K7)_(?|+0RGH%wETGqKu*e{5pTOKK}dI|D=%gDhpJ-WN~i4#a|0yF{HVoCa< z@14!WUmkfcOpoq`hjkhhhlz7knDk4{%}FnW@D=4s%o3VvTCV{0Cyk!oo}#XZudegu z+~t`Zn!GfbT&l%CWII?^Az18KP|V=-%ZvZ#hA8>Y%tizI*a zz#=;~UHGQ(ADQIn$Hk~6!E;2TIYyTbcU_nEK+n73%ij7HI$*!J)JSCcaS{_aL0jIe zW?o1a4fw`^woQrWC;`eA1FqL~uglb0XuOPoF&)ggQCrob$-Md*=$MXhX@gu1)Wp4g z!n~zW{|K>!TDE&CFjgv%i{@@ClY7w*tYdGEX2=hg>z4E?G(pQ)8s_;VI7p|(`?KTv zUS;r=+5OfuLhm~vU;SE?ifk!4;;41v0TF7`(VQ_h{{bJ}gI6@2g;-9PD+SM7Z3<28 zT#QnS4llGxG^QB`zenT||A4V;+ara-$36{Vby0BbkXxq|b~TxrGAeUd(*zf&$M^M9vCh`2;|H5~Ruv zXz~7kmT&mQj85$$MezHi!4?Nk!8bLdpi~LqCS2~_b+f=}3m22#y$8IXszUVE5c-|OA04N*s(9`=cNt=>4 zBjd`rskE0n^UgwRzf#|FXt;L#_V$qjg+g&I1CN_^1q}wvI8{~cYQ0MvrpK@bMz>Zw zhyzWel)>X#jXxiD)@bKs7p6C0I_1uoS2Hez06spy8#Q9S?;+erm5()pbN0_e=wwZv zG1~vjkI>R0OPo5>Y7UVY5)kxC44?6-{FB=QqpYXG%x5e)?=w$taK)A zuFsXHrZ+5sC~FC(NiJz2hGIz@H3vi1d28#qs%<^F;;>a(b0}H=5|}`eaLGV1#Lz0@ zrg7;;lBFa($i-5P;nU5^sNwGDp(Qez$rQ(I&tm64(85jVD7Kso@h8f9T3X;Ugpezd2M@QlE>V!<}DLuqCYJxol*uqP)wG?C<4t-EiBf zpccUYgj2$}DpyidLV0n|fXKcsMF0W{^|qa?HLWrHwF6Br)nt!|A6`_#nW<9S-@-Hj zp7#Z-aV`%(D$clU&4#d7h@A-n_}aHMQGS7(bApChU({oM#Z2tRdWEyU6ZJ4qj}XH$ z0b;a+Vx~Sr!?5X*PL^oG@o{PMd@xUn>L2@S=53(MTil_nN~-Vxg6lh>ltGg@J?Ko! zx^f?O(hxi#RET6^XSg zF3UR6dgM*I<9fKH!fy#?zibo>dSBlEhN?H&ps1yte9eQHy-!vC;EftUbhDh`0OvNdU+T&Vv$i^=Yw}WN zO|vZM6hLDOJ3K|H#+h-(tiQ+p5oN5#i7i_h>R>o!T0Qo>ydZFqeMVa^g)=D9IO%be zgFEFzmT-!wd)Cp(I$pQ83~1R3b|y!&)tnFMd{*aX55K&ab!D*)vU*|32p+`s`1!D| zH`_#z4p&8vE58JK!LiMs_J4yw1Oh<7>m6=6gv6%b^3S~aDh|NYBBL(#8bx6Gi z6IV8ntWCH8Vm8nT2DRX>s97|Kd(WXrJvM7i2%q$x9vCeFWA}^CRL&PEzkkl42qXnS zf@m(~NY+p^cqwuJ6L`-l=Uv+1qVQbqrL|mD*lz~3iM5P!k&PZ*E{*%CS0zMSE)9)2 zsYNG$PU07}Rl{E9K%u)Y4@_My5|{v{<8H8sSH zWy*0Sd~si*>v4G2_cz4wH|m`T{5i$-t^#8eO@KNl_7J|5Sxwi)-K|kKM{QOmfQfZ+ z%~dy`*pJ~1Ui=v6WZaoYDhn+HI*Ioi>vryXW8tK&qMWL_So(PRRx4Sfy%dHv{W}2c zwT(k-?g3~u&{AzLj{R5Ktv7I?%u|aCeq=a=^7*MNz|4Fxb+>203|AwN_@c5pX_VFH zw+%ly0oSc#h6nMl8?{TPgVb5uM5>z<$1Dlr25_N(W!3p%NN`u`m(@w$*J{o9+wgx8 z811X!xmif;d-XuYqj;uJ$ z=e{)r{=95$-lR50Fs{cGeROLU@Vwqdy*ZNPJVP!b zi1b;V;SxNCHedW9hca-Oq)ceNogxyq%sfH>LaYE324OmpF@!SS)gg|r>@-$3nrYa= zySkVc9{X(L1CkX}a;D8w>SdwKFUZd__8Zd}zHZ(zP ziW_SrJJ7-dM5HPFuz0eLoBSeXfv8E{$==08v+1+barT##U#IHu%Li;5V)_frnuQuy ztHG6V&1jRyQO3otRd^MG4|xe`TlSvZ`TllvmlL-$a5R#RR-sKyas8_$ql-Ca} zai+q-snkAWE~c2`#nr#2!sAeX(Uyd0^B?ZNt-Uxjc`1C%=9Iz+@*v0v1bJTr>o(9G zpYc_SgBtTpO{eTlWyI2dphtiIX&CYCh0Tti>#&I!DZcOkD~k4?Jz}j1v%m02J8wS; zJ3#

#gBT+lKTmzwH$;HN~QJ)L(}QDS_3IirJ~F-X_kC_IJW6nme%!T}m(%h#tk zibEi}8PadVn47rZ*#o;bw>pQFdp;;PkQj5A^kS<-3RO(-hv@>8lkYf7bSSy!0Tldt z(hfSc+bVImZHZ9G?HWATTSX&J+>)*e`A z>bnAR((5aqV5cZuwz-$;>{B3#8pI`cZi!Zl3s;^dK~SF?i$b^{Caf~^`H0jDRl8^z z?b3;9ZPBq__8iNR+%~=_h&<2DHZrV*Q$&hM^9w^jqa-5;3lY?#1~t=4SIePz@5BIy zWrUb2cZ{NM{sT2%%Acn9?^jfH@F_4cFt;B?cg?4JlUjItm{rax;W;GtV7esprS`;+ zeYT7U@unUT#IIm?-q3EuBq*vzKx9*laxE_GIzPXBnO~dc9}xR@{N!DXqv4_{V865b z8idbYR%msUnJ{U%sQQ>%-%x9f5u{O_^;=YMqXqs+9_zqjcd1C&%z?^ITk2`w3$Am% z3eFV)@vF^_zNM;6k1B`NyGlAM`%J^5+A2dTe=!kKE|80XVBOlf_17=6)9beSqn8&` zbG7MX&w|em^``dwIB+NxOgGI^u6iHV8qFysi%kNKvGQ^Wzg7`S7jJn8J%e)7^`+aq zr?){vG-828DAM|9m1)yb$+*esw?^$$K+GX`Q#7r%K%m-l`l)9mEsPdd1UI2d7eQXn zD~#@DZe>KCH$A#+Y?P4u*)&-$+#3pM@uBC7zrvSIVlq$v(~e3^{V>Pn{`vj)=t7%+B>xud=>5G^SGTXJ$LGxOKM>U_H9eo28ymYzO#v|5)(&HS z0ZmTF`(A}h7BbK->@<^r=Q^M9j*iLb%VDp>?IWR#7sI(2JxDZ6f#9DWl$%`H- z=9bMRn>yBfEM6Wghl)Hh(2HDn<|9|4WupSBqg0*$y3~AGW`vWPRLMnCw`?(k8z%Ug z{DS%FGSFqE6^@Qi*L>&&Y&@7HI(n`?GjaYwZR`$s3O_jFIetcyIWmsW*`1na#yS&hL(2{cud5p8 z8Y|9ag4@Wp*`Lfk+$vP{M_(RoTH=JhsSDaVUs*4F*>)AQIj+*;;Pbe`;}`eWgVT;P zHa4fK+9)$F%fe?F!0(sK%DDKbnyl(H*q81t9ycIqX_aoKnAs~pzKAZS6HacJXz9WKXU1x|PByblon{>Y3 z(h>$eSL(cq-7w==wGY(nkh&?(24K{Nflapa!!1(B1s{Tm>taUcNO*CK0Z2O3hJHqQ z7kH}c1@HT>ua3KxKUdrd1A-p4Ebw-`0`%Y>Uc8uV91QaQpJ+G@JHyDvr9tJ=z^shS zAI}`nsPQ1&FyVijHrgwLB*enp%coLlR&lIS>4Zic#VT3;qy5wt0XM}z7xG~R+M=3Y zn$7lo@Jl~ZVFh=0wST8;axT%BCMV0Y^cKAnb0A`Pwygdz=OY;6CV%;QKu_(41=?D8 ztMU}}2NATL$9jrf0`hI&w?S9BHs`kPZ=PB&FF#%gBMh$M5e?xVYH%)b9J7^L`zguY;&h z*<2167cTTAWyNJ{R*>lh$#_NPtQWD6-`lI5+5C1o7G)w23`aP2b3R~0lh4NozzzCq zi`8FR$s&A<=A(6f^%Y63Hq2HQ3)rQ#Nw1Nyn~#gzaM;Niwr*u!&K?n}MUZazOOLIz>vW z%eTo)_zrbB(jg}BX)R!Zgd|AJ%xY}PqEaI6B8HERWEj)d4lntk*GG|4QU^0bmAqjv ze>8vFRCGfhM)ijUR@ykAc>QwbL6lOMlg@@s8qUzi-_kr=)vsH(9hHpcw&_7C-(+qB zxo#uQZ37)jMt5NHa>*&fiBrd-7vbc~>r8;|TfDL_R+sPfLcd*2|pUr=&omO~Vu+9ZA95%0i~ z-{%F5_VM30KKORrL^K^fml9bYMO~;O=1WK{J?I%^0&(u@eogYNbXLhC{bVc=85@~^E<3jsPyuqU-p3zXW0}px?}< zzR^#tI?A*3>{P67Rm~`SUnW|Je=h5i@AXzVdAdSb0!|;^pA9H*pV3TJEHny0rJvjo z^~z_3{R|DR?f4W?Q<3df=0Z|U-I(DYcCWqtA8k*)`8m?zRWg4YOm{PX`T4A^N~zS; z_wcX+*)|GU=^_X8Omu(%gDp#@l>~*YT(+d#^cAMrzbeIGukyXvvt%)i1va>q!g9pX ztI9QUWbf=ou>Qtr#)OF`)y&hGz8i9hJ|00FTYQ%YyIZ0!oeRB$5b8fS!4|G*!wPl= zlY>h-^({^^24fk8PupST$!4FdUeEXl#*sh0AL-?>hy~_eY?B7J4-LM#r#=jXaC)9k zE=9;hmTsOGYDYhCK86n)63f5W6f%^tKYKr1E-Cr5baf7kl)NkG9T!wu1YKR7J#TG$ zV{3r7zt<13W=!EKEGy_JuV`H!(@|5Skjiz^9pT>hRQYsAR)2_=iD-iNyf)-YV%Jks#zphPuRUMO z%cBGjDn-T%g%w3r0}>(9zZfk>w~$8XB8Z(|EeB{)7Nb3 z>XV1(*R0Mi`afOIeLmPb3Tq*2y-Yj7&DXOT%a1T?e(_(>%WdQM^78ERh+Mjef?Un! znJ;jsR{ThBsNAVkR`%jE4K-djEg7gFCc&~l*V{5p8II@;78+C0O|adYzqgF5uHaMZ z&Sqm@!&TJB|5nm%ri~*z?;=MB#T_GUgZ?I;5;oNh%rhv?3-II=4)?2$v6K8p>B@x{ zo?}mr7HPYrSBUiS2`68`e>xCe$gAE0(g^E0h$W;NmrbtL+X#fWXGu2o6$p)`a%8EK zR?ujtKaBgDr0{QixnaKJ_gTX*3hU+w)+itoDe14?Nf{F z-=k~o#vJB3Rwrq_eBYWa29i39{s{x?jn{>#$pI`>T@^j<)SmG&MOGcf^;+>roSi;w z=)zM{7LW2@8bgm7_~%&i-?JG&2ZrXcvdE}m@hI)CU`Tew1hGLWeQq14Wp%>{Df#$#Hr!FP4=BHa%|9%I&(#?(TZ8mE3AzoZI-PmZn}{i5F+)Gv04p zFXeZcIhhvc5H~}u*7x8Ma}!!-qY)Y-q&3>xjwW=Dg2)QiAm)&%%35lO`lh5VEsm4l=< zdRI}Cjk$1`xlC}DliOQ%CFVg~Y4ti=n?0{HdGsI5IWi9Sc)}W~Lk-4%kWwlUeHc)0 zFF)V*7ep@ib!kc#xW=`vI9RkKKRQM$#k7TLLu_WWBAO3|5N<5NQKdYF1p+iFy!($t zyqJT*GBzu{G2(XfDOy?2pGP$5hn3HPiLb*VynO09FTqFvz8g%kF5W+U*J9h@>D`~_ zCzpNU^MIL5u4h{f~7MUxq`|>GRBb#7U6@^3TM62rP~NVk7Y3wQ8QGvpOJMgt0;=# zo8=DPYKTg&j3*XzH}KKJvemT&|5u^A<)+%U`10OqbpXd!|QP@%@h$)nL{|NG>bg197*9+mX75gWI0E$b0v8 z)@BONS(lSsXIVnZoN?WZc{(ZImx5UUJhv#XB-fuS{MQG)l|TSK)5Dl1r>V1|m20m$ z2oK1bgSmAWQq+fG4=@epXJvybTkmGms9#D%q>pf|p-Z8zz=oiyfKlz3!~_UkS_!(j zmz1kM?2ndb-0d&+8#PH0S1Co6J9(`dpr zoUMXIuGmANtov#7D4jxU*~fJ6)Qh9c6^i4ot)j1{0?#kGNk2jps*k~Vtw~CS3^R^W z4IZZiw}-IGvlZ)x9Qq{#q4fAi-VcXcH*XOLLktQ+N~dOIoERBxx=c2E3tg2(!Kz|B zN%QRzrHMEqgT#G7MAKCXA&U)svNB}aaGEqu!}_W36nO@?SOh$>AaG;#XtraRT`7&- zP({Trh&$g4oRc6Rc&_O$mg_eS zShRe;b>E_EAW6LT^wB2kI*dkfxPx2Ju8_Gb^bCtjYPO*rV;Z_uUP&c-s3YBQGI;Wg zMbfZX@cgVf&VqnT563bOfcx~2%DRnHrwzfW4f<=1jlX8n-iJ=!m2BSeEmi26nARPj z8X6@$X5bI><uWv&qd!JI4L{+|c>`+krf;xml|M^T0QzIJ^>Sa*l z;oUyO`P2>Lp}4ivZ+;ELqHR_(Nh`rJ!8zAG5G%T=d3H*b+J3T-scs(w$h%@hO+p5` zjoAiyrs;pjdRq!90dLM|AUOMY!y$XZ1X-Tc;fhIDM5}w!^RJG}(;F_&XbF1R8J}Y_ zZbOf%XdR+vW+IJwhG2t9whB8tTmDBYflozAb9VHnnS_E!3X53N?#k+bJ*?efhnn@= zYWMRExAIwj!O>)7(4$L(vyVtJ|+9}kFS*++YG%#`{@=Do{lp+_yEj-u&%X1*K zbzSP3p$M(L&qP#CSfKl@`7uW|-4xE0H$4DW#V_c7p`aT4w&+u{Ohil++-$jUhTDrL z6_>Sy_N}^k#O>0hCeqPe}KDVk(8 z^7E^a5q&jTL@8Q7^`w7*Zl@TGl-%%)ZcPAW&7X+%>_2F8rDLQff13rLfNlSMn!g}i zx+nmiV--@%b06_wz!Fz)#td3ff4z47uW<b4twZWk<%~JKRw+DLm}In}(#gpLfe+ z^2V0QdOy$us`xMYW>`nPp=GX1upW;4U7e2Z8qmGbf;fIfsj_->QyocdGonYmU24|o zoYxG7(2@#PB||!kwHctLbH(%R^%;lq743K8o$qTWtlve*-so5l+5DYrSdPjkt;SLE zR`|Vktaw5BBC?4EEU_oNtk1@zTB&=vIFGm?B>LsGnC%3ET?M~>#v0Btzz3HQ1KO|_ zcY!bp@HlRA)FltrmtzeV>3dpZl$2DUw|92^=z*iu)~z?duK&jV8g0c{p7?zzGS1Iv zg6NLKLH;Og(c^tuQ?m!)DK`ATOHX6U1TClm=U>v{5Fyt(?ex;ikq9+^UErw&7(+uV zv*7^iC`c;bp83Jy)IVov9f)68CKbk3;Dvtr^tkKoLS_olS_rQz%%b> z6tQesGLdVALvjPzKj=Zy?D;e4Uqgu=7*6n|K@G@TY_x`EfWmV&m#X9B)StCv2D9(Or7mn0f$^9)?v5PAB(R0xU(kCcns#|@ zuYcidAaKVm**CR4}p8v0!jimrq3pmfq+IZtLyf$P)H zdBT-1fjZpjLz#h1;|}$*Z__-V@<^%i?l8awQue@Jf=2--AU2TzK-tY--w%_Y1GK5R z|HOuAD%ozAr;^xj&9O)i3qZ88>fgxa;WFS1`YF%RuMhv%rlZfI7sHv_HmuiZ?La z#&zrCc=0ofSxq(j6c%TlGNFHdINHC7dU6c$k~My$;h<>>?+~MBKJa+q2K%_UOPLz6doK)tIDwP)t5pHPaCM z^p45WbG#WGT~<*FB(1tE)KrYL!-It8f?MV)u=UQuL&&QOkC(YqX{^6xuzzM*@tq$9 zb1!W|r@FnYLvF@Ry1x7@b+f8vXfXZY`t{2ud)h~8pw*ji79lra{KE0WBZi*ILYevf zz4TKR?t*w)%vxvc6B{Fw&E!bwNLe`ncb6m)$0vrvjBCGf*ydJ;n4Fh96O2#gQ8&T& zEwvMPp592S4s|w?>vu~n5Ajbuno?#Owz4qK&WI$Iullp!cLAwtusgp>PQR@5{q(j{ z<}TEhY3RBC&2fJ^Jh_Y`LTRR$^UjGqGH|`_$icgX4-YGA3g#@FT|b?$+P>hX@f$c# zo46N8l5@|<{vJL%b_pF)_+NtO&+WNfod=kmt_TZo-9E~guu!1$&qtP;*1huKLza>3 z!2|50XIca=9G?bN_783BrB~K$#>fj#ae8FU(q1@&D8*X}7)~A%$e`y7c35O|_R-yA z?^aks+l1cip!(*2`v>NZ?uUjFyeVV?c*ET+;IgWBO%fEu4iJs^+<~j}YEJC=gR~l# zo)2Z^$7bhLUda(7(_eLhc|TKv8Sthy_Nx(AB8O;(8M)P_ouag9qgQENxtq$2t-^)6 zOt&zsY%LN$-c%Pt{4olJm!bn?`X;fmJP<+G;QkAQzgm z)_oz>(Rni*YefTlk%^WSFgIrXM!M-}M?g*M6wd_onFUO)@Gl5O2W>!b(F2!53< z`{Ph@Y`Rb9@m1p<9*@{jqVOf@x1v*Zb2q;rYC3nYX91s~A8Z)MpD!pLgPOay}OY#Dhdk zvclWijPAlu0E!CS8Za>X&3YFsd6E#qfN$%$MKRSQL__ouW&gwYUJ+z2Er>;J26uN( z4Xf7DB&A)0Zzpq|qp4q!X056+=jHwI>j$o-r>Y0hn^Q|*heTs#^yFXA<+sJo3_63f z#Wu!~C$k|1GTL~TjhtgVlC(qFqy3eH{QVziqjq~Ir&Fpa-3vgvL7Vb&aYvqB4yu{G;-4IN5iW)a3*83oVkckwj3j6g-S_Gew3c+-$3oR>Tf#VfO&+Q8uXozZX0Smbq_rq_LmWK#)6~F zcPib9=U#KGI~>f~Oi6B^BHe)!)ss-%3z07>#-vSL*ju|7EG2ta7s*Yh2oIGO{3q^j z^uVoK)fMTb1)!N>U^Mxm^>^d#Fu23GqelF11MJoMWUyHjYZhVAUr=`bJtpPPfAU%h z8vN+r20)H?{bI7~`jrjatkee~4vvZB0f_6>VV~CK#&l{t3lU*6U#m4r%C;aK{bijt&&`j_NFh+e*qx^ z_VYRH6!7*?Sr?wq1em`UE1VEhRIu3&bnpOPmaSUU$!np9GjRl35v3x%jC0@ zsOo zDRrrW$c1bF5f7Mbni8YhP6??ebyS{GBLFXM-p(b-) zk`z39)J14~_wz5v@HsYwXN5RTDdo|-C99I^7}YWzRZ%xD4fA1v-DTA$FPTT{6~>wC zX!c9WZHf#q@`bibso&LU>huZM=wg($`Q^ucX8#v+pTdmhA$~w)39+4eQREJLoRjHh zEB*r1Iy6JGMMs?HJ+n@sl53r<-ntT?S*ECc*jyo%=F9l+TpLQ!D9IvXC;{orE-$F< zun~@TxqBGXSA0wQcTqvW=){ZGMW>Y8U^ zp=KuL=P*OVgMDbAi|M zZiq=X@IMr;eL0eMa{Et6= zM2RrHsrW{^W%+bbK4?ZJrA`GF1||Dtk@WhB^Shw@@dsHoT5M@ztAZd(_c%My$1Dl< z?xsiu=4DXQY*#5=`Lox1p>`cPw#Phtyj?OwIxBWyJ>@q3M%4m6r3318qq#J8c$OpK z)+?~B3dR&#kLdK8y9j$mUZb|OJB5ZjTuZ(;F>)>H(R>BfVaV1^0DoCqyvad%@K9}F99N#f30$t* zuuML#OxJuWdd_}|`?jfho9}q={Qlk0!tEr#jQk%68xae?plj^XRaxStr*0?66pazw z11vl?ix3ZGh$?$-a(X5T|1U^^+G+ftvmW6H z1vNpkmeLLB1vI_*$zv`|%~qHMi=em2oxF`F4fj0Iu{Ud^Na3jBM$#evo=Pco9F>-` z-INcs9X5#TONW=VpQ1e${pakH%C?OB=!s3E&x*d5C9;js0_eIaZr9u|xY9r~q``=U za<-9_BaU`HAs`APZlKPi#p6s7sG{&$q=+nyAr&2CxA(W)>!$n1UPt<>Raz|1H$=6Y zs79#qDYvJTWU@sdLcOAAdbjd*hzB5PuO!og_8+FfBM3Ug-0wd}p(eFm#gY8{0e?Xr zCV1B==c|B&9vbgOuDW9-v`Iyv9O`lXNDTuR%AR}fn6EjfG~`c(Q*hr5*ho^nSWJ6VrT7-~4$ z99ApgchyUoo_dky=%<<%LI%bIM%`qAPB%xpJ-L!a(*p6;!M~t`+po_^n`h?1>`rs< zf44c|M3MKQFE1efHrOt(Bxhd9_c?D94`@cSlz-Hn%kArZLa`Xu)5|^|OL3vpa-HOQ zsbA$JsX#+4Kc5_m?(^w?E@3Gcloz=tTa47%v)r#r#37yy(O2exZH9 zt}6k5=)*2l*>@Y;vLpd3v_@u|Z3v=;q8lm3f+O(s{qGiTY~jqoC$=T9ih4(i*$uaB zRimal(F&SYJd?|id28bbg3^8h24(k)z+}jouqvP~x=&{s8@dn2?GCKRh1Cuwi}RCK z*#<0K6G`2*UI3{=n5q67_bfGTQ6cy-XK#ntCkEjPE*TD3!o_?5X6<6PKh! z-4JKsb<4k;7VkPN78-074{x=)kLqyg4Fe9exsu;xtpf=c(@zzWzC##j_syKD zNs0wZ!pSf_tv5Xzp39_!iD?sku$JX@w@sHdCf*_(8}=qE@4E$Li-nN+ zBvCEtM#kih@G%`{zn8g23|Y106m~@+lexM=)0y~gJ`*rchmXI)#bj({s?8qF6MhF0 z^bM>B562qBf#Dfzijr+<|B9?c%i0<(TMc(+wu{aXy$ur)z)-9GUWAW78h+oBqh5Zo z8_@?aqvvbRex{XI&h&f4QS6_|0Cc~Y>EK1T{MfLifBOO=BwTa=4dneM0Qzgq#T)(JVx2qGyl zS8;yHzAA#JN2(@Wb2vaxa@K2Nij)tMAQ1ibpr2rS3DpO%O1kCebkk|LA29Lr#)e?V`ou(I3ZVSaEo3NJ%Kb# zeUg#13eNuY98=a;OxVBl2X!4%Oan~k%L>B93}@obvuJ%dg{yQ`>%Sxih`Zd#YqqwW zNtqWTOM>Tur`CK=1;1{w zOkZ9&=|9x51|_Fs;+sV`RY)ZW+!(c_GZSJbFQ;$iB`>_;oOJBTFukb({K@`tnx;TZ zbc67klF9Av>UBpvNcwg4puqtC2CBA$S(EX4gm-7+65luUrsgah?sgwc@zY_3>3jii z&r5m!ssU@UG&I_s_4@;RW4J+G!yTW`fK$J_7WqV+#XS~2OF`4rLPtv3 zgG-N77M1c1F}>28xj7rF@3!~ZcC_IgKAB;7^RK@kF5svbSVBt3%vRHg^0_{~*Vi0! z#?a8pm14s}4-BIW=6Yb3*!KkQADI|f<(`_J23@D!%I*VCh2YQCnw+WNDGBm>{=VwF zdr;cHpr8v?clh)W0JMl{fv+dYEmuhQq-D>aP)jO6izVAG_7Y<{t{0FoogBLqD1Hm` zE0z5oQZ|4|WU;hPOaqvoO{E&wnqR5{ClTd&VMM?GnKiE7-PW1C1QZ-6C^O-rwbSx* z#3uS^kqJQhOg-ziem|Qa@P_g1R%Q62J`p$zbzo_@HF4z2Z=VCBa|o{RQ4T&sXaDAn zE8K^@9&DvP{1#%qn;_a^vmyH!*y5sIWoa{xl}q8^ICIW>d&;EU7G7gUxCxizuh{tS9@C;Aiwf!$7{Cz{I zQagABp#uha;%Hg)|oOMZ<%=+hwBiJn5O0&3~`+mKz z$lYbgtQzo3=bHecVexj?G4-%$HIj#jnu$(AX6cImJpN}X77Hw* z5P)TYy+K%$6I=!xZ9O?wNvh0d7hbNH30nvSP&Ie}Bt~2KN!sIhN}Q6^?9uUYuF(nS>DawN$!Wga2vEFsJy(c)VGdruPjvbrB<*$UCl;$;f!t z=IH_a6E0{xG`XID$dJaQI@GCqdrI}?2V5i+7L}L z)5n+%Cdnoohr$6y$r&b8cA12PwME)%RR7-M3}n1WM{+Op?op12W3|Cc3h3ZNX-Nv?k>MeRL3l`two-q9K z`EzigrZw<zYwArP;91fCclo{%OnpLy-AC!nC7BU-_*xl+*gyfz>=|!<>tPZ zk@jt1`CP;%XZXW0dC|gxfPF<>k{#G@wXARnEow_I=AIxQa>uBhvM9cvQt(l@f5sjP zL=nc!c~VjK!L3$}>g%7{^}KkZ+pwWTa;p+BAD||Z??2s8r=Dxn-5gNUCUdiFx7cw4 z2;wEx;lo2(Dc5PEe=g|&2Ft}4e&ARqo(hIBVIFg#)MWf*(RBg8GE#H(L7ie$9={Y2 ze1*t^g-gii+1J?g4}%$Fl-vnAkIL~9a*{vq&dXPthAU-Gra~H%tD^iLSI+7t zR-6paCDr2Sok;?w3x+v__SXrUi{h^*9DCf^0(xCZr3sB@T36gDMc5F^!SEtkKL6!l z-{e4J2{&rWuTkH+7fv96FW+#Ep_{IR!~{LWRw~|A3Y!!V$=g7jh+?EM!SOs+8fN5d z29(71#2)bayU$B}g!w+TUILQ1^1AFJ4)#XLX+=~RAZmeLQIAholT1;Dd;47fY-m>{ zI+cq7x;Ly*_70g@u08r=0V2cFq1KCY!7I{8j$FyOZ=J-l8WE~(&A}yqLFQPXc?G2j zIm~MCJNZJObno^h%1iC`Xa&Mzh+cWFZLazsN!dsLu&|oyTWIkn0IGx37Kb)Xd1QX6 zj3#NQ0K6nUF2GIGISJS(a@r$5{QgoTrEjMz_4Z7RkulS_YpQqSM1AghAtB_+V*a~a zaE-^5#fsQVFf|OOa?KdU7+xACS9A+qxOw69aH!m?+({qA@_f20%Vt4Tu;EGdTMxbz zGr6hZs7_gt7~{0}oSA#QkXpi+c6XlPDq4XDZ1xUbqEPEP0mLq_a>-Eda1ef~op@l} z=*BmE)-`^x%!^}J@WHFFlUrS4PK!pSq9!0IUA}JX*ylDh#(O6uj-+9V@W~zX)frc7 zV~Tc1?wu7$r^V|rD=jSoR#B$tva)QxRK4ja@t(&)mf!EHQc0Ez$8Tf2?}PQM>DfN0 zr8SfMhE@dFHL^6c-w3$UNoSfq>Ozl775CUzY(KWG*EAo!V)*^}J&sj&Z6;w=H6+N9 zLk}p>D}EQRtV?9=1VXWf(rS#*!r*6+nl zNhJ?3MCH6W9OebGbl+?31!3tlYNiOU+@w$*8ZxFmVJAjd9k&8HeHScb+(c-ut z@7CuafC@|xV!Z7R?9b#YfBrZyXzSRmq6}zk@xia2t8c&0v~0cxtnR;aw!PuQyE@C? zFrns-4-Uwv9MII>2c@g`xvKG#*VAnk^RDSQ>#6TNcAI+c#Zb!QuBKJMhUT&tRx+5DA`6YZ>-=U4m8OluG_m2x40B{lB`fA$zl2y(xUo{oRmv|DiVRiJr zlsJ27Dq4`|)v8>M(E{i2&b$~nE0d_Q{q!%$gbm|Rz6i!e>E6QtKRT4m?Ck3R_dfvG zd6?4tnh^&6mB6Akv^~%EAKEJ9pTQJz0xTq(pxg6$;I)vDuh0*Y+ar^JUfbvr+3TH> zlw}rY`|1tR&V?39SF8G@q8Tt#M!fcHu?ygHjY|uN%DG3Bc1*(!ogZ7umq814xM&F< zF}8(%js;4uj3w1rEaGaa2eyGKu69c=D{Xn6#9;$1HJjwxk{oyyzefd%#xdU2$vD}x zRClze3Z!@rXVO2LG%|PlgTb7k=sF>_UC-Hp0!_$avX06RU?o9&=j+1d6#to{`I@V? zC^OP(KHxw67qu-p41ry#UdTsejD~k!2RSd2$UYd!g;MzqL`M0j*8>Y!Y-k%bp5AQ7 zFzaZOxqWM^XXAtwUr75fY zzs&Zjsk$(zUL-6?s#R_&W2`2*%tp8UI++&0_l4hhl);Zl+hXiN^>~GtqY%KoLs&gw zxAgZpxqgkgP}TLHW$?&Nn?zj(H7x=haXHnp(iCRb)f6^H_wjpZJq`A_6Bm9%l{$UoWr&Th zt8_`+&eZN~yv%Cfg95%Knd&u8@*QYrj2tE}pjaA{s3aL-0roc@P4`k}ngcv93+fid zjb2hQi;(*;s#}bR@2`i_;U-n(=6N>c3MFax3#zJtOfRTzh3yMqCFrDDuIu>XuWJ}z z0OK{ZcaQ(H!CQAEqk5SIp+?|*p8?EKUb2|S=kDxxI^&dMpjS~by84_|eu+Z$9bO2r zf7(^P=XqXsCV{&iBTVlEwj>isCl*5awS#CRG0T zbAwKqW<5u6Ed>=2$zPD>CHyLY1hG&sN)W7@T~wDNzr7cNDk%PrInu$z9DVMe-gNv$ z?>&+b$m=?4Ke{VsH5otPAc>_e4yq^}&`EugVPD+iQ*=(e60|yn1Pg+>b(8VkHvIbw zWJ%wM(nvN{%~fLC!YU_ohEZnzId0vzEt}x%?48ckI*s0bOy_KYqsC z`GCmo;2>_!A~5bLgL{5n(&A-O!^|;&OBsJPOCOP-zSaImW0}@I^y9$?Ii7dCI*CzL zr@V+SS+eXNZ*Wz)B!F``RTMUz(#rB5cF4V=-fE&jj`u(VB{=^1I0fDkJNV5gK4*z6 z{UFgnr#no;I~sP&84T!gA10<>!0mrdO~dUels*bqf<9a}o?nrjo@J{unZ>D+6P#`; z0Lpyb#Coy&+Hk)jbNHi%O)4CZmBl`lTGN!G3$sU>93)TY(tpO>z9IugW)F2l2W?_* z*ou+5_BTE|nHEx8bs+}R8evD?*w;NDGB#ZFwtlN-+2=ji_2^_1(9n4Cjdw9!v63Cv zbX!7rEw+iRkX9y;6m**}rz`IQa@D!kJ5Ee_nl95Bi#O|8&RZ16ohk02t)xzNHSSmQ z(;ssO*r=6eGill_9J;`4zaWi?rRQ?RR>G}f_t%11E=t#6(NFp2G975GS)06PMAtUA zv4|JsZquo6Ss+EEio4jb!p*abUD+&TudC2h$upHjztBx-s@ z2CmK%TWV!RBWa2z7N7;RVlQ%wG97) z;*olyPR>G#V0V|uxY(r6us2Cvnmwv^w}qJY^Q4y9hZ`p{(h>=QZLpXhmT#~92ffcv z2b+!?O-V9mxhy}LQi!HnE|WiNZ7FS15U0@28t7CfErRy_M990I)9w!Si!nGp%MG#} z*m(UD*-h|r_{ZtAE{vOop!D^~7L~t`-Tm=`5$+QT?IQ5zU0tE-o11a$mQV}XrL@>( zu&0xpjml7c& z1JRwsMd9v(AnxnxFi_S%(RbjE>5wufA!c=FWHkL0Xdmeo z?)Iovgo|IeKV8JfPSa}CwY;*WF!kR^PiAXUHP&E=9^1h$KW;&X5No@uUjC^%YX#M6 zW*?G!_4I}Ap#Xa8#NK@!WI9eQ!YzjPBb#<}`S#!zYm&<1^0mO)rTWbUDIXmpJX~kL z&Je|PFgiM5O3;*EcC^(zLv^*YrsJoh_n-dS)2C__jx)Fbmd9JM7575k=HHilJvYRQ zdFtMZ%Dd<-{cw>(@tEe@vXD%Zd(u9DLi{dZG;ybRIWJrH`Xi-A{g*8HpMV_F9p~^i zqpzyA;UpfCWtVNDqEGB1C~vZ{sLU4fZGCnyI7fo2nBtXbIPsfg=Xa4%>2T@T%aGC} z!EifqS<52iE~}AS={yrnvMh1M^^*E^N6H&DzpU(N#K`vSy<(WzDBzvgET*atqq=S5(}Z}l?=PM-Rh9)A?eW_|WT(G~y@fWQqy#Z?t!%!s4n$bJ`AvWCvPnSSEk zJqJo_z)w=q3=YJxr1GiTSX~lUgqha{ha?bc0VBIy6XNzdIGX)F6IVUZ)q59VHS_p= zBc*X9rXu0H86mfH*njCLxorG0DWVb1fg3ju{LFg%l{Uf8=&SQ0Ulx7N}5IVWXalXk$&vDo9BFgMLs!fyj8udq%z2|%+$=zJY9Njzz`5wFCF+qAR#S?YJ)Xe}v^KS1hoaT3;1diDoo zBKuPAajSkSkpUpi8UT;h!jzD?V4pq~2(!Rz-S9@LG6d)R@4{gKLQ;)EJoK28zS8X( zwNJ#Io2^J2nz>)-UGcy*_;onI71xq4G0JiZdZ2wD2X-T`>ve}{oujccFK7Z;lIC+( za)3|MMav@Ezd#LqCOXCM(KgE(s%z?EM2BjhNL~TXSHK6;^Ot6mUrcI&1CO5ZF!1C!yA7 zEnYsRnfnc>FifmutrXN5+jEzY2|i`DR~@!I<+c`@jjmHc7VN(%IEsfmN)u0Tv2V7y!%QqQfs}9HaI(-{YcX z&DtWAkwFxAc@wd%A1;oIW5OCs#D!e$xUU@ra`UbnDX z%Uk`wpktc>#KO&gH32Eraf_A32Ss$oD!)7UK@VTPp12H?U1;abH)JR5)+ip7b#JV4 zo92$x-54JdDe?__=l|~=wpx}I9ajmFV`GdUlFTQtTVVQRTKrmS{#c`n$c-$(n4t~z_(%bJQd52n=NVF@k~MDgx*2wXw}y($!NLu3B^mAPp& zsH+Qfzd7q8G>$Fe$V%>^O0aJ#N^@=06%>gFZk2_809NG zbjS%1D5^d-)?V|Y_^3K@<1sNyCgL*ybawz-nC%BfN$lB=!7~s+GOY<_)L#%D@YiM5 z^wnbE3zD}}a?yVt`?9DUc6|LruGRK0mS{fOZzc%O!7FMv!)bq@2Kaet|6scm>~K;l0#ow{S^fXxZ>}h>sb-|9Is$dHt3>D|cwHpNcgPuD^!*+KPqh1oM`| zY9K_scw*ct4)|;4xc4^EXh4Bl#S&;qUuY3o0u|Xl?AN$n$lpuIgUg>TRldkvFJivm zD7N2Paoq#mT?7OGXKKMkK)+TuE2%HF?^b;pI9NVs7vz@B9skyX(rDxBt<*QDwInSZEL$Q`}nP{d*H zItqt!r9mF3+sZfJ^;j%C3@l!CS5hc?>-|Zx*=abZB*xK=?ynj zkxjy4L~ensZEg458#fS%!lU8{!ev}h45EV&4l{zIsAgqs)$Ef;YaraKL+Gn|)@9U+ z_R#2f-S^5LAWrmcHlJea^#6`McSrS6b=1gjQqduRhW7D92WFPr%zTxF|K?>}6fWKQ z=Xxk+Vi#!LjSsW3zsYwOF3$P(JM{UMX<-=h*c}H&U~;8gaeArCp&jHbd8>Q^JMpQx zy(usIEj^*>h|4+8r#Rz@$8T|;41M&{q&)cV&-(9`ZAv~cts(i0y9%ICfpUbM*nAo; zltLOQ@_qDGuFkyrtcN9XTkZ1o{?|98iiB;*OU2?k1<7rtBku4eL;L-}PX2aXDBmI- zbMTv}BGK2>qE6C5*!vHqgY0}xfSt?G65jT#icE*%OciGY6K;QUSUA~4OOF4dbgS7$ zqI!!Czx~X=8FZ5VnjGCAk@owz&+uW#ph28oDoN(Q7%y+ogCL#`k6lPc@*we+4v(?Z6 zSp=03i9nq-s_{-!t3;qbSv5X=QwNlZ5VOGW(@6t-_aDL~b+2uH{44!Z|!!rdbX@rBvKSEtF45gVgt42$aTr?IzNjl@_n^(l{s)TW+1ZXa)X*2XgAo z=DcL6b`Zy47N4G!5u3j3HEg~TBYjUxQHXvPYLsco^m^iE4M7K^0v?&?q|v`VLwwPt zu2aHtF#wBdwHa@BzN7bLMCO<9WsjM#Ql<##_}9;?*BAP(Q*Q2z`c~|3NWQ?mL^$he zd~VftS0EtQ;0uj)En&SBg_Y|Km!>LvPtA#G3Y?*S#?21m18 zvF2zlyo$TjQH}6K^Y2~DQa491gvmr*00u1kf|FK&yBcJw*je9<{d60Owwb6oS)U7H zb~{z=06!{6;ec+5um)?*WY(?A&jMI|5*3DRPaFD}{lFsBgZ%l1g~GPO5dbtgOlL%3Ct2G^QY#KrWvm3T6M?+1oT7EOlNx$)Xt;o=jb*)oEXJMm;|> zZ0qDi@_nBq56|!3tPkeuydGDJIzT6QmOIKiH47~ASVTBDGi5&yWp@o-x(h8-!s8)^ zz4VVL`3hm-b{AuHV_-<3coLq;chYo7gdjPE6Hgq0rbz4!-WAbG zmn8l4eBQdOR`N@I*7aq|Q4~Rs6f;{7u-9Gf9e##4&GMgwf@$IuK^nyLAxEAbHWkXY zdD!!V0LSjCptazmM;?PAoFd-JwR%*c9avC}PgKaSAGp78AGr(V3Y-R)r2LxF4+g^* zw;}!BqrZKr^FX`THzv&arG$5(w1N7O?yw3}ExB0UlAb+rN8QHVQB>M|lRP7HKppyU zaLvlBgTM8IrT6#4u@(Ab{X&UWzo(m(1=*?wMk!U~*Me>?B$OrTW!y1FXPQiK!8dl4 z4~3unL3PCED>YvQcxL;8lsGVFp4RfJYvD!jH|H)DVg?-=O-m0mrwM%m~b};$s*>*C4 znsi%gU8O}n+)%5A>X_xpKbo9AB6|S$~A8yNBKS-jlo+JBLy)(hsn5q`87` zO{}pC=(@%sZ1Eyz^2fH4D0wrB;K2mS;sZ?wqcxZL^`BF8Wbr-8tE9F z5>iU%j3Ft4bhmU2MuRXw5D_Evuo{MtaUjy(Mtt>>2PuwoqMeXs7O~>f$R=hhbk`6&txEB6K>~l zyNkyCSLXdcU8G`sD_s1)_wBe>J^e)RSmP4+?LQUUek^!7J`fnx{coztMdd+&_lp<) z*kr)i5PQD-S<9Bg)nYO@a*jK~2cL5Zh3cpM44!bq5^tqrcG2VAK{fp#`>w1PZjSh_ z9Rjm#wLlFjN|Kd1Am6CeRRcqNk6BZ5C?;_LO-nX__EbWY$f;$#^j)R&abGlK517f`)bmjN`t+hrKa-rZR8cxmMR)c zB5ITC(^PknnDb{Wk7oq?-_9jM>}fyM$+P;OH5<0_7IRT$UbaSjn!Wc-Q^(>_Xh{|} zW+LL?nd1QXmRF)3dux}a2eRmv~#i{uOA@K+Y)?GqX-BY`d=rItyN6zspZyw{AaQ&LbVA}r%6kldscWzL~*js20VWcTs7 z_{yD%eD$cSEXv)&O)~c2?>l~MKFa5-KfP{Y3w-qAjljXad{?l_UuQJD@Cf>xiS$9< z$006v_^UkqsMLU|A--5VmHtm{60UiRCQbwoXoH$~qw3Tj@vzQf)qwe(_&0iZNaJOE z4rcqb%d7nU7q7o5zga(7pdLKy9`b>q;(aI8&$ce7gfD`pb@E!6wE-`tjeVcI@}WPW z=&I_%~Qk{iahD5~!EA8U?M7C8k=yneOy zQ4B5hgV9gtgwqJzjyZ;zab>#ZuL+Cxm1TYY&^EcaevJ^)H{IWNY@%tp&f!9jDpSp?9=*n@Lwe{c)d8EX zEGhex9?17KpO~>{ZDQy}^AUbzB-!B@Ns&1rTaPa-!hgSx9bA|>EKvB8zo-@V>M%u`9h`x1@r%^MMk&p z`REfisK1|m*+clrC}j!*xZH{{(x|8fbhd(deuY7jwa{2h!S) zDiZmKgc!IacS5H;!X8TLp1tuNNi5DX(UB1-O5sYu3zL6YOdsTxi#)G<^Og-Sr@dKf z3ZaXd+?%9eDwuK++iT~&yTYVKYTNzUxoHR6x-gr3i_;|0&*{@|= z#N^FCJb~hO$78BznTIZw5p-#+dAZb= zFV)lr#(fMTe7#y%)0YDgM;`d4c@*!!kul8pRa(_2-3kG^rz`n==f`PO322|k-Q5e@ z0o`@T*)I8w0-4z@w)!?m1YPs^{mdYwdGtfRSYu`OJ0Vr(rQv-IZ%5lz9a=`}&Hv$j zNhz%x&6d|PEYZ&|rwl1_tV5kykXNSZU8dKsL%l0I^fxsEC-z!qvHVI~os6&yS zcT?tb-4Q4UBRJ%lW)_#cLL@_q_2?@al*0V2DiDzHyq`m4PzM>%g!nMg@&#F54)N|w z$*ZA{D~3gD)s}cz2l$$V_)j`H7yfbc0cB2q`iEzp8%`wLAr^P0YN4R0gupexOME6K zVd%6NP=gkzTGr*saOK!b(Vh8wAig}t2Z=)l7hlW3)9QFG5Y$b~5lEzDmjCt1saIR` zHOV0_vMh`NMWN76BbCf^<=>!w+q#+Bt3mKB{ACSOG!*|!V+LZX?{!}3$4hmXw%n%~RP-q{DO|o9 z>B>{fkt;nC9DH!KnFF!vBELZ<`P4D7@#;zUQotT*dj2ak(q+b-7h6LaoCLQk-B`sv zgnehKt|ZAroCis@EYsOKP?Nbe&R}}=g+*Kj+*uVoF*Bx$X8r_CrFZnx9;#mPp%0xNWx(%9IVhDBl>=5{HELzM z7yk1Aj)~BPrw%%(?=I8rn8{3sal;z4JKnp#l>I`O*;=;4)<_G zQd&)7($SVuN->{IsZrY>mdMbeULt0vF)^?HD(9+? zJL|X**wCLD-IPI&m#-tt>}1?`FYt&PE(KBEhra^TXJhoG3~?r@>Fghj(w09ask(|$ z$4vMiVo1m9Hfu9Zrp*Y5K7CA^XfheuB8q;%_SaiklM5Z(_7;q~lfhsV(&hff_^CTc zvV$nX&7AtoGz@XnuRLD4nu8{>2HMeS`_|=Cu`spKG7t~TDVRPuxSh|?5CYYCZ1RXg zl(-RtJ`3+Zt$4Q!aMmF6M8`;fosw$zDBg{ywz~5oghNwGAJ%FN6(KQ*TKexr0SW{% zGu64)L(~1MDDgAwHAc(61TA(sQw3G&=i??K@&zn5Hp{^ntp>m+n?V}u^EZugU|=P|CxVVA)MVw=~60szs}kC z#Z>XEYC7b_Z}BcrMfTlu)d%{~kHhipK1ZoMzG<;NIhs-G4u&q;*dUk-c;*;m{VQjQ zRW0~VX)xz#wxm_X;3|^OI>xoaox}9aBsaoTMqwXs;cI^Zb6F~%rPLD(O94sNUDdhZ zwc~g2ZaOW_E_eO2u{>x%#JU!bx+{EFDpsJw} z%w~!aAWL0WfEw(9WE2zGA_o6eG@FR$cAka#w+dxIy9d1*PyCCzL{Ub|xpbyH)-(bk z0HB@I9nt!pA{#~L2zygDNjFRhX&UwL^!KojF>v5CPPCzB#i{Sl$whamCOa|DS^Xk=b1Z9+_3gUp5S+xwfgu06Rt$F2Ji%4)Ys2UsUSxvrDORXDV&sQ zMwP#&6eiWCt08!dyQl5?1845`;4oF>n@_5nP8N5EyvU}^Ufs}+ z^R2=FB%`h$ifG60yQe3-cZ`FUQ~3;2b*Be#*7sRN}w)Nbpr)> z)o^yM@gBw({owWQ$BIF@w3N(HCU+W%{$rIXG3D8tU~lyHjDv+VW^``Yh&=0&HdnP5 zFq2;eEcuhe0zfdYZJjKXMh*)V*G9|PwoialLR6~ZwYMRNN@+OMAaGNl+^y!?HArlP zA-u-j6OvN0ML;7M(siwSy5o<;J^owI_Q{^|lHHx5gOCdp%{+Of~Gsz(DB1(OGyEl!>YKHK<* zR|w#1O{US1*<3|sC5sHrKlK3+lCg2HP;0qk#Qh{d$r{bFFQx5GR@rrliy-b{# z!DM^n^7Py9zFa6g$`BtK?y&xA?}(X*S!|}NMJC;7gwB1YUj}D6iwC&X^9xDD(@Ek5IhL@;yhKN#<1<*TEl zI9uVr0#4J6;(BPI60`6JjzIs<;hb~@CSRX*hWwGwcwhgggEcu_hVh<8$m{8`u!?rX z(M$tKvox3E$?SSsT+SFpZmU1<=$`^T8vAhK8P)XwA4Md(9Jx6|(Dsd`L5FSP3v6~> zyj7-^nE8wb6T2P^c@PdcJ4{7Rlc8z1PKbzC7;_KGxivc!!fclSMO}WC^iIKhcOwQ# z@z=J`u@q~2I=CJX`1`ndS|^R6$b<-tmaX=sVF7nM4$tBEd^*jY_k*QbVk4MqX^zR; zUL`9r#E0yxMyB19rUVcUz}EP@l|>Q-RTU6#i2KV-a}RyJ%HM0%_yQL|piNJ82xPVb zgPasz;58FVfOUdBh#or}1fN%6{sV^AYa2;~TT%MI5f7I6od%rgv1?W+R+ZZi!6ok0 z5h9`AvTni}4wJN@2JOxUifRE<5=BO&I`}%ozE~X`{Cus*V5UY5;#hT`BOI@>y@|Pn zW~`?H?ol9&ZjVanoxeL$?m_Ug-uvj#3CD5k;u&V2Z~Wp_isDuO^8ryqK#N z9EbXEaX)`Z^~4riAI8jyL0~N>z!cD-geK%nfI&P5zwNdCa#ECKvP~)WPMOM~e!u;R z{SbQ+DK-Mfxm?SFMzJw=c@OnNh) z0Ljqt0!f5opSKEsvN>}gh>$y>S(xi| z9F~o6b~E0UVIWL78M;6QK7u;dFCdvH*l1GWC0B6O|2LIpJ+6^u~98 z*VkP?{GDa_oFYp56xH(A_d!y9$oq1Y5w3~w25974T+u;y{J|kJ?Zj<2$)S?05>Rtw zS~Bye_1(rQob3O!k1P-{tpod^%ygSOAwODDgKOmGPLStEwn)!Ul@EBuTzzCjGl^Q_ z>Gy6Z0qXl?MiV;Zsf7uHiCt!DToTzj&4}DYSi_MjnG8TbFO?@-RI`FMq{u`E?V^4u z6|MUoj`l+4Ku81aCJiEE)P#)%Uc=Qe@uFH-T|2xjXL_yCZ50obG>iBc0jX~_8ITC8PW0L2 zD9crJiH&BNNJgPpTkQ4AI^mKA>$7<}Tq&jBV_8z9@43>2eM4;!LPj_5UCQOEgIE){ zWK%oeKoHs6FIGGT*b}d(BlO{rdI2HO$|LU5ofB>xP)}`|4(-@8Ej;wdnHQ0?jUwuxzc@ zQY2;gCqX{4<&n+NMFLSd6qWgmryjohVIYIrkO*kaNGb?k@-bpc=PIbV=9f^sj*>Se zw=p*8E9D)UiR8NEHj2hSg$aGtn@K4%wh4Wdadr2Nt(dhyx(=w};Pgw`3zW>;pv)r% z0_mddDS5G9vty=$B#-A68-^#V>{+n>k}$FkP0q!inieF{@0AJH_1gR*cwNU)BPYK&8ZgqtyYg|&D)oAm9v!wRD^eD+j-{%{^60qVfOK_)uw&#g2W@5q@}_- z*qfJnM-+>3Ha1iVjorelx1dfQYmxITWaJZmhN}dRoSn0usg?B=B!nQUWTpD?r3y_& zHtjr$z5068&9etXE(tqg{BpaqED#7Ra=6rHsSUSjC zI&S*1ds4-LCKHSx`hxj*a%}C!C8M@t;{gJsVN&cXa4!Q(9q`X`hxP)&M;bAQ^Z-2xp`=ub}&7oX%_l@ ze5t+8sa18kY^h1rjstbnx6h&D=gKpEH691TTW{YdV*yKrv7))cbS6Xdn1LnHbgS9v z2*}jHm?34_)Xa3~MIq~-6cQ~9;14g7Od;7Lv$q&k##c`{%$cT3>lq5V{&P6G2)WRb zV`ZAJv@0NtRMT2TPUJ46yE~%6EY}iT(GZev$*`8vE@)cq*k#`(f{3aXsHXA z2hj7jZRbh%7#(;4Ug1v#Fve0v^wBFKuncVqDb&2*`4(`Q#C#rPNbDTyH=<82+DG%q z{s@g_h%*XZ&1iqeaY3TRWi4MvWgAfcs*J2ZZ?TcPqTOCEn)f@`AYy@Q;@6;^3J0g) zIrmNS6-0Ik68Ap(9({uKv(_L+S~gU45Q$dhpqT&jJMS>=xa_9g#c_(%OcU~}AR8Av z0xiy#7hyyGxig<~&~zkuZ7w_7tLYxaa;NcG$8AeHKE02jt(*=$jZSNh|q$l%&u{U`5)c}|)S@&~D zgu(W6MMg^6?VS+fw`Q35_cxFgJJVyz`c4V`+Q5l7mO~PQS8vv=-D{Kvo^#n8B-SMq zd3jy^B_hZG<3ZbU6w5e`h9cP!nV@}jLOIMMLgRfH?#D9s{DWj^~`Q$vax#$0W=Q31G z1-9o79N#tMX)t2~v9W%T$TnfqH}M`MC6M|D4ov4V2s5U7*^2M()pASnWY2Nf6W@M=r3tobTOHdlJhCvoEon z#u7S!99oK>eGN)!ORH$vo{Hg_INd)?UJM?8N?TsL%wp5M#3b}9x>mhI)F$84bgrWN zk)Cc(un1w0mWtQhx$V2If$MC9su0B3Dv3gq>ABmdp2v*&L@mt)*9 zzqv$AShiO(7sPxNpOw#;X?#eN9-Y0UK2zb(VlmiVfI9 zEk}wmw=f$D3P}aw zT89W2Ao9Hn0f#7x?j;JyV;WI~E*jFq+?$6F9HT;gK%7&{4?};~L)8!^YaS*h8;114 z*_i?Pa0!bRM!1l^sq^bwg3%_^Z7I|4xx<%k-S_!Dtj*pD@S+NPm*z9nPBp)~V>Uw7 zx6xNYlJf@%XGuM@|L_DY77*RmE$28vzU-A&Iv?s|?vf#Mi(S{#Z?Z{sL~B3%%w(7u zCfm6|qRD(o_-2h4q<=ZlfqY^VKUKtGF&lpjD-Gg3tWp#*qzOk3_AFwEQ}%Dp=*nt@s=x z>$gSY#S&N8bW~y$gyQR9?S-r}Wb-21anAWwqBmV%#C*PmJM6r2x=c#!bkoq{%T<6( z^N>QOd2{JXH?4>!o}lf|E?*~C))YSs^v1!^Yfd6tl%9<+?}|nwNb8$xpL%=Mxy2oQ z566?Gmn=u0_dox9ma!D(t!2tLcIPQ`e5I*)sLu2vned=sE~^n8+cr3F)jZ2$pFz5$ z%2x_G5mw06pWT=ItvoJ?a0kL0duL^-okcL+ciS%{Ff~m+@453#9oLJC{xh-A-`;CQ zQ075zOxkG(kXh`=z*?d7EO#HSeOPkLRGxggS(Ur~w%pB!13$m)&CZ(;Gi$1jXbSfC zn%T@B$|`O2m6#%*P?~J|UG9Z>2$f+YRo!k4NBh%Ui8OiA9a>7SSfuFW^>tFUQ~LJ@ z#Ho(1?k7(JnuTq!g@%Uwi+p(b)>X9obC$E8<@wC1N8>2LJ>}U81HrjUJ-I(9bBO@( z#8fiB5|0l}3T=p3?PI)ucpiYh6O2guZ2dH-P*L{@KDV12Q4jN0Db05#;C)x*=Zv7a z3ZH7{G%%jnL=c7vNGNRp&YKlr1`nasQVW5fF%yLv;iR{_iyx)AF+TaIN0~;NM$Zy9 zT+JP7vv*Sf=whCcLT8ycBpXB=x)}*0)-Fj)<1zY;?|NKKI?(%$PEJ-Cb0Y?`S=7E^02m5(JBrT z=TTM4GmxL}A%gG65}LARs5k-Spm-EGU-uinN9k7id67F~nBiQ2?Gf&A1wb=lDLJ%#y=2J`G*HlI^w4r==^L1 zuJlOCb6?b&k!WQ3xiO_jr&(-p7$$oY> zQ2fh7R2OiAOpWp+sqYGxQfd<7kxf?c$hY$yYt616Rz`ORS2fW;{7amWjctx5c^X>L zq+ImogcNEIH9ST|F4&A@W7Yp^ zd~HDl7(dR`zp? zM_%72?<}QhPhh8?!(kJ1arECSn6&2dufhaa+v&$fwInI$%JI(u8*B(*gZ;^X6UrGx z@`Q)*j^530OZP<{>32ddj6^*QROsn9F|QI287>jwZ0CSA=+&(DdjK5S!)|u}gcy-}T6qnRG zO%N^ZqCMh~m|5;y#>BLXwOxU%8QZY_h)Pv3YNX)AM)>~@*Fq!@|F;f_bPkOvGe0eW znOu!S$!0G9`(L#L)rA(meA2(3seUq#Hg;+e>fv3sq5%sO7|$7TxLEBZ9*GiM@ME>R zuW)mnz;kvExNW_bH9t43*_f&L1E_O1xU7EMzLVWu`r-J#Gr0UBA;#&3850Rj!=EC` zYXGe0wrjbq;BVzWP{3T02{vx1-@*9wxg`9IJs6tG5nPe^l$?)#KxPo_Y@F5#n%vL-&1#`2FJ|x)fZkmkkj^!jLIvw$4!S;RSKVDL6>xduo*9%s zl+FCY**A2`@@ukvh18U6{m1gmINo#~;@Vo`WseS}jAWIn!}b%`}L_vL2Z=v7fjQzl&P^N>dW!X^sOdcfS&7ISPK9dH)d z*h`&-NDvZ)m2e)-V26_vqlV~){_??oRT#!gd`(e;v*RDxfL~)VhaIj$f1DtALOpUME-*7qR@0TK%+KS3jD%_GS{S5CYeKt61_-I>w6I zvMwp}t^0N^G(mj9tkzBajN5(_Cw!p!!Cuj$K-}E~FJovb)r`IAqwyCs!W$$waWX!; zwjZ*fAwQ4&)jDD_M*HGT;y{^`Ojr%yN;t5u?A;$yh*yG}n1iEcu86EMI9JRObDiF1 zI%3)_&(pa#O>lhtVW8J&J0ao8D3Q6z;z$``;&5NXv@qx_?r@S$*dDgPfMUSVnzjt= z*m=E=)6Ams9lgUPCnOA~FsTvkYSk zosOvGq0p{1_VTGE9vc7#n;ednjy7lvGw3Tk5z@6@?05BaO3bYSs4+sgwhbI=tOoYB z3<1@JsQji}CTL2L5O?&t8`gMX-(B1^OT&JaJG8kirElD?&Hws#q{ZqUo-QzRqKHuB z5BMojx}zS#y}YO3uxD_Ku3Y$$M?1A6ni;340udYihqutt!vyC_0Vx zz}LeX&r#ge7DH&eXOIZdToz(>SbTEBboXr+t*vmx4C~nmnpiN^&6|ix%;)AV@gX@E zFt^g3GsM_nLr36lm?7uzJ5x}{38q^#ydI(mpTU0G)=t%u&zyPxhD~)npVQkj`TReL z<=>RjyS&&a{_rOm1m56v;NGEeeapg|BPivUCRIk%TB-setxY)*u)AYW?Wx6Y*%z9x zAs(mb5CYc4G``#d#;$r*zC@mOHZ8>Jjn-tjX$-K6D97{_rbN;R?q(68I(Adf;9mkH zxe4czb=)L#?LK*0;h%LMygtv&`Jg)2*(=qgRPM<5)^|!}#_{og=}&5-et@gKp7BY? zv>q3br=wg10d)CP&haZzC-F<>9UO4kzM11$-wT5?RYQo3)s#Y z`=&ap!+GLa)ntA~BEvg;enJdW52DEF8T_MR1?x40#^7_2Qred@$ssiDY|kWMrQB=n znLCG;qe?VW`=CR|ukP8`yv??6^pc72BPeQU1!Ab;jn8Kvf>^+zHcDRJ0W?4j2(-En zeHEv)1StLrnbl9dT69pb*6?@!)BMwABPgg~=#EWesD%bRA#xJkuY*F{U z)u)D%6jC$3$nh@@=`Lwa#HR!IsrJlTm5ppAV_3T6erm=mv+j7jusK{IW{|_Pge0yq zzmGp-;E6`24)4X;d?V>Cyz?QRbKPBe9o^o%U{Nu5VJcM&V~+?I`si120%l!uR?aH6 zUDyvyxM_q(iKGhaTY^Qa7X!j`x}ue^b9oTyx#suU(T(P%pLkNnzm*ncgoriRWb^V@ z`+=T}2>`2r!Vds7;a>UDRL;feX$J zSXx6L=sR`Au&lQjm5y%b9azC2VIRq? z0`?@mz!y9Y>pMB{!qZ&I+56^?4a-62>^~N*+WqP3-!x-v-v1)becdK6E|6!6rDz(2 z05-U;V0#HDOV#a%at+mCbiz|pU&}wD)^L~k(fK^V-mB`*n=eitK2kTmcL!|KTTcKa zq#PvIepYm^+5XWZautNQBM;eS8ZN0R$@3}@XLJ^!way%5EDbc<)cws0A}Ul1*P6Ns zp6Kd)plLw3tL~6(Z_-zs1SPf9k=i{LhD{Q4Uk9eWVT!N|hW*(vgLy>^Xf@7ULpb))&Y(Bp`uNk7F` zu=cW`^b8_3Gn6uLa){o=*e=fB^hm_llP6rd_r+{as}X-w^>_h27-QjlGyFPf z?SQ?#3l!4?l>eaM|G)Hb|we3-E+1~R=_n4dK6JaTzR3w^OTfVmRnw5g& z=gX4lyP>}v6Q7Nen{I_=XP=^Q9Lx@>|M18*lxOxJHBlQ|_h@Q>jLNrZZ!z}CFHKDf zMvm!sTxlJL8=t0cD8Kk#7l3B6yxyLB!WJGjUE?A&@ei-}`}qRD45_&SXnXSRj3fEY z(&9%akOg|yNykYnv^cEp#o?`IeNHAf4MzEh>Oa}P|K9O3U{^W^a3w(DD)13kbR-CT zgI29_z_j>V&Ks4-iovzTOCSs%j;{zj(H&g>dgj-$7SJx5TY6@MsKYFDF0{{tHC$7M z08wOMi3HQ`=aMs748Ip04EpRM$eol2Ru>C$v^0REAY#1(UQh7gG0KJIYkRSHzwmnlijPCVOQ^nyl6jx?N+taPX zy7#-|?E}I#p>>H>_bbwU*g6DM&!;or-8Z?AQZ;;LVo>GqfydlLsr>q9d=cBz4&(XM z=a#iGt+-w-sLr=aU6TUaL@lc2b-e_tZ?XD=Fa#p+?XA$-(`+%S<(;wU)AJd}iHaMdEzXN17z3@6-@x zqn#rUWoSF!#e%!zX?kzC+=wy~J`P&e7jm%sG}pie{~+BxoL=UArM~^sgb8U_i8pzt zie*+|5$c(^=IO}OkTDT;P@Q3AjCCF?Q6}iH-YkKE(?kN{+q$`~RM8Z_I<~c9onQ2S zG<#w^kVbtp*v7fx)D@Pk9c6r#l)6-<^P%d8w{G+kt1?)!|KYO>t#K zi+R$v{KNbD;8ro);#E@3Yea#=LC;24dr%rm=qJmaD2al-qm7j}Jx;&PoLyHOc)qFp zX}*pTwB5FO&bc_>B#Ro|_VD269${J?X37TO^N;@bxTCtsLJPDW`QO&PM*%f5{ zoCNyRRwEfDJZUk~mmdD9Ru&tH_R7;b=fX?AYaS^My|Eb_R4R_OepUpJr@lPqsq%~q z(x0V$F4Y&*nHpZTPFAl9WmI5ce>9_AqG&MB;zhDM0(Eh5*DxTuYrYde*G8Am;gHcM z16nZJH%LuLXdE=QM1Ei^n-MY2a+4FoCrZ~ud^s=~^)LWodn6KwB!!AObZVCJTNFE< zX1AV3?aD>(EEe^i4{*X@MU3%Y(ABukPdg1cFfCnvaw40!K}Km2TD|#TG259!BkJ$f zS9h{C*nV{KF>ooI*`OtJp5Ie%J7%0XN?b_NRsSldIxuGNMKZs+hV2USOP`;y%nr0f zB15OGVpJ;aXmkEBM?{lNZW?r|XdSLdpjeGyt^KX;V$h&-a&HDQJ<&RIn$AV5TsI3VyljZ)l$ z+E%$wr0iz|<~J_+VQ;dHy%L9s`R^IBlgPDPYw#u6BqZ$*yP`ydohwHTkO&Z!QLm0V zA^h;^_><<7eQRdv#e-{Wi-uUq(pL8pcYDOv;8>%|pY+J+#nI#{eB;x)u$dd|-EUwo zGPvEH*@dM?u{=3ALMo>_GPis%-txNMu$aO8O z1i4b3S@G$oR;S4M{sz@fFiRV!PIImtEDNQlUHC|m+a_?k|EXOpvp|E8rQkT<7p_L5 z&5s~s`<==SKi&;;o6iYsT)Re|J4(N^Zk-V_*Mh|tK$Y#%G}?~UzhlV82FqyxiKQPB zEk=5ntkYT4Ef%uIRFqRO6bLRpy&ir;Js`@GNbPy$T+#E@sjbm{n`2q^`tfF|bKCJ4 zOWm@yyqgURZ?z3AZ}M7AuFh;Vu7V+}`!>F^!%T%fw)o~Uh(Yo2`3bUFEace&KE-#c zF)d=1S$x}R4o^v3cs1!tRHySS?h9%~=-6tjzP2uPKBP?{s;uXsfkiX&T|5_zdp8x= zx5P|8P*XE{cH8C7XFRA$=wzg-*DefuC9;uLU)Ib2PKcIH#3tj#^`~(p8%X{W_L}(c zqAC6z<&Ct=ZMU{Uojc!Zf9%fuZA=YqQLC)d&!x8oB_E48ls3k<{?sg6vzArW!`>0; zW6V3m&W^;=^%SDCsM$Tdn6{F&FUSw?fe-%#@=q2a3|W9j6Zc=#t0dIwA`Nwn-)3RV zL3QD%&sE!RdP+`PFQY>?EJu${x161ev!7c4y#VZ&V)vIlg-RjrSZ@PbcUbvtfJkUc zfovZe(R+9ibmZ3I&t99spe>W>hrTjI+f(&d??aZR4uDj%cDtISxXK3>=I_TNKiNEfQyl;HlU#er}6;{HO2yOjTiW7@I`yQ+b#)yu5VVR;R(q z>mkqe?R~V`2Vp9VIUg%OzP)^2m9ookeu{5ol)^+=FMQqT2U-~2iC-x~rlkgIB6cTj zu4IfaSmhIE3I{jkl91Y**&c&ki#5WnvJ@i}KXOH=V>OQ_x~+_e0%po9)RwgQi#%(~ zqe-nMDCqG2HfUs@Xs@TH1b+UEv9>MDS8j*X@5qIQJ?KF3*g$+YzyY;J>Wm_9k<~)g zFDMxmgvhOs#fipDzlgh&4=P(CiBrTW-`~m;IxOkfa4F@88j`T=Sc&K-qi87lr=ncs z4OTAKkG(?j7gz3O!3x(f@6J>MeNqzquOZ|jCQ=INF-}JE8Ph*?2tSkqg@v2Dg$E}G zLx(gn)rJ3SD3@-Ej%Sk(Iq8Y7?<@O!WPeGNMAM5BhvX?s^x64t)JG4kzi4wAbgan9 zm-yQHl5!s2!9Bww^MKNDmilN7w6^AS+&W>GXyQGp=L74+j9VZszS7|L$f5 zdaOm~Q$<|S^>ER#r7K#*`DImHAumm=S-w@eqxaE|4}wsFL>VNF9*CY?v@Ge-*mYus zI{lWMlZ0}^ba0T)J+=qtB;79~6Sq^KwYR?hF9s12xQn9@-};@3B++WecTI>PQj~94 zXa#Vh*6FG<^OwK>NGx(TZ>@?Kml%e~zjo71lK1$FN&rZWci0n}hZ%Hr^CNjrWuur8 zgTREi_@2hp7w7`wnOitm_W6uXT4f;%qVJCtzdQYfK5VtI`FW!3y8n^d3m$|?C;|cd zWI$ugU0xH=&lpRu?bJ^|X`2a*iUeci|7wNzv9BPIhMH>uqlcS(sVFLuA&IbPm=t^6DL>$`8sa5#mbW~vr=zHV7_vQ5*QDcT zlXyJsko-oBtKAP3h4)Hc2O(lk%i|{8FjzJKqqOe_8ZP5=tDP5y@3`73PqYa5iPYH3 zxvTQ6W!*v81|ZlzxKdaD%d~O;k=QVQLV2#k)C2IVY5$+VVYnO&yVC@+RM@oUcjsQ2 zFSOmOdbf_#`uf1V3g9I=TifW+J^8`?!dDls_zo!)2@EAv;wORtN+#IAl&VppG$I49 z&69(7IGCoPM?_c}km5iI&zMc3-VkVfh0Mob>y}W;K%Q;jk7PuHX;qk${rATvUIQ|! z70eFY|9PR{ZMh6|q_%iL*|pjh#*9ySbGlNHl$E%e8Y!9?-(tZPl1K7OB~au#=23K> zPPq|+td$V`7SlNo@ghg~fHqe#a`s8AIc7irt4=;0t&4?AiWQ4b=tonPueK4v{zr?+ zmQxB?pNCr1C2zCMLIn~5DrrBi3^$k`+zeFw7IXhGvs1X(XW@EwjHxR$OB)Zt z-~QU0dcq`U>U)mco8-2^z=Gg4)vBtTO?0Cd)O*a1)b(X2<85aRw#9ogLr6$&PHG<= z86Kgt9|)eQL283yf5G_SZ`H~NzPl2N>T z3K?l_bA2!Uyn9*G%<(jPWEWa^>;N%1%F- zWTKfUv-T*2^Ze{@L;f-iK(OqipRt=ay3M@mH{IR+B;BbMD z9nzUsC0KEvOJpJ}DPLfK?WFP}s)8Y}uw~Qsg6VDvnP&%m3UaSyEdvUaZcxVv~(+#pre++SD zz11D}zg7BnBap&2cLg*bXLN|pOgeR&#r#;G7zf8we!ThXqqz3-9X|E!plZ-Ce>2)# z4K^^S+W`F1t1p5Q)soBCNTR+rErN(MGbg*-uGse)A~s?nl$pU}t++zmA~#BfSR8_Aa*1yX#h#ntRW z6kr(5H$Zwl{?*f`wXQSCAI4{7RwXuu;miL!*yHI_s1BsUJR5a}MoYWBG{=io1X3n` z%wdE5T~pdX7R5+Gb19Ph3__MJ_l+%VlRSd^|`Byl7<>LM$vC+k&sp z+t4dQuV{%9w`R%Nyzn-bBQO`G{eWPpJZPUP_9{e3kJYRy7`OV78z2VnnXwnbj3ld3 z3atks@_X3!jI@C{k~svf1L)j+MD?2)VF=V=uXaP9y?#4+C%mpqKdNeD_jY&f%LDV{ zxe96Xy%+d{R~05f_*J6$5)J5sHU??bI-Zcc&#x|}lv;H?Y^{s~HYD_O@SH6YFgS1J zJoV7#xqrD`aB${}^bvO+-(Br2shJb=JgVEhBEg(osH*AD-v+r~6 z=O5S)=j?UP`Mm2wlxTlpma{H)tbIgNf0zV*p*(u$i`}T|&6~mRv6t}?^Y?SX^Y{MZ ze-F?l#8cMWzp_jglD8s_sBEm>5FA7+v>Bwo0b(686;IoXTPsmYN#PfFJ{d)oe6y@B zE`-0JuAk=s>DcvHLCXtdUG^Q16)GTSJ56bJZ1KkZs;lNnY!zLv44H&yM3i4i$XlR? ztE$NSzPx;rftDr~&(QqL zXL>O*(rhQVFU68=;ICfLzOHdtMp2#b*GH{9N_X;8ig`)SIk+>pd@;=0pwb^J{N@OT^K04%%T_S*Wq); zDOWv4yWkag)}<0#?KOHzM$#vKXKXN^ESoG<Ytd_=z_9pUZ_3F|5gN zDsch*O4`A7awd(PyZ`9oAmaMjc$$M93}W<+Pnb4gMlohYQyB8a%FFoZTcC^_?z8{U zLQf=XR|r?zvu>uG$R6vaj84Yc`rmJ;%HMVW{`w%qQ$HLc*B1 zw0>;ak`~2vDvSuM8ogy3zL=C|T_!S^;0?Gc;{p3-;T9%T$W?ZK;xoHxee{>7h5JiQ zD$~x!`J}HH;D7#3ZKU`|lEW_6Okf)O@4Tc$&Hht#1D2gMRY1EkYm5$D1i>Y^lOoyV zqZ=#6kNk(PP=B|fBRD;I=e&Xuyl}k(ZTvd7I}KR+UAmI%8pk|Y;n4UR5pC%~pt9{Dq`PCjZ$ zBm0uy0u$y^ns?2h4#Clr*TGjOg3W4=DYBBK>1nB5aMjC&rVl_G83Th-hVL=m-MDHQ zue1>}gld~4Oxs)yWbNW1j)RqFtuG{+uNVux=9au|pdtOw0BUk@) z>kz(m{w@x}GpH*L;z|l+HY(#GW9Y|ly<}PD`B?6(zP!*>qegX~&_pk;^g`6ccf*s+w$I#pzbOCihP-c2J{ z0s}S9D}@gXiYk9Zr>arR#4Y}twedHaf;AUs266OT9J8>Xzfx}}Z}hsf2FyCA(?mH; zrBF!jYQQud5!eUN59VC;{{YecyC$H|XJ4aTkX+r46W}YjF!rw;GEvk3xxmXVSr(uR zU3@5FXz)$+J*_Gdp?1vPAwTh;`b_~Uh~X?ykKG$HYuT{#_tJ`R`3ilo+pZU-==H1DSYN;Jh&vM--9A=x zbwe%aIm`AFw=#s#)4zs~TyNNlg6#WK-V}-jXAsMmZfqp`9Wj9N;vtu|VhyO{JCbAnbq@|jWZJ`566>Zss;vZs6N zJCFhY(Yr;4mZ$L9x>0?1QtC6HNjdk>*TG3+wO`J$kuJxa?QY4W$r#)jYA;YfltKGZ z=fEBik3EMwWmXDbnogJr3>#uLO;!u=_LCjR9;!|%rxsUNDe0D&DD=)W;^GCf?0k3H zQxu`@OdwlE_NZIN9?=+Z@fFjHe-*;(? z5s^i~BAeb(h!6OFW?Sfq{^TYq(jr-ZEn%xKJH%$8~6}!mDhY~r76mQ zeN6x4)vq5Tto=y$rh$5`tiPOp-S~%_>8QaFdk%k=gLHGg-RHCDMEU9UWSM+f#ROn;q48L!Eki6$e^QI zR_a%+E`v9J|2BS|vgMOfwsA%rw{S zgoX60t3}f4@LFOQKL)W;viwT%Zn;}yEk^XD_9|paE_gq z^7M%+|F)B_C~C!ycp{em!pUCl=P}|;ii&YT0?LBswjfFxM-xp=2gq~uxNX!0o4KIA zAfdRrNZQC!kw98`L=K7e>toF+$sc~Hyk)zVN66J3=qLMI>)r?Av2uPbrXnH<@%9O8 zzFV{Am7cy@vTvy0M^&SSx*0BmR{Dum_2qn=Vru(UL%mfyyZ{RIe1}TyMTmbNS@**l0^6iP)Y82Iji- zND2vC#feYJ)oGz)g-ZtvO0ovDzg?jU;1#!i?9xhB_j%?o6ow?wWhdJX?k3f76HAPT z+j^?1n?lbtcD)2b?zo(}%Zkd=>2$%Mk*S(k^lOnlHQQFx-k4ac;<7<*6;gFJc(1rl zHH6^rQM0BTxrdsp_b_|ucrNQ*Zc^#EYHW+(q~eMAkEPkP8Std(kywu5j~q7hx@^*g zWmKlS&agTEj>4a@R&FzS0Qxl5)3_}E{$ysoviZQw2!S~sb(_333!*K^*2-zm$9{FFYS0_JWmcd}7}$ z*AWbtGW!p06V3Axh{^u+XI0F4k954Ye%!wENn4^(Q<*TkT-7n+@>mp1$CgW@6W6B0 z|C*t|nhB6z3<70iHXaPU1M0Zs_7Y^3?!p3M&iPBkAgY8#Zz1>#)o(*an1URA;+G~)6ba?$bCHy-3!;pZfKkwE&ug80fBrbts1YhYbzFuvm- z#M3s|n6C5H_Q28Z2X<0@OGa6RJHs?kSIc5B4*YUGxcc>#tku^oC4B(vt8wtpZKZgb z>`B}?Z~0Hsq3HF%vM^7OZ^O%s)ofHdbwZS}$EZBh^0F$sH@yULcx26f^=Wl^T!yr6 zj&%eDb{BNrSgzvobn_Wn4Ly0yZICI$(n%%vyE1#2Ct@zd1yVgW_(PV0Mxg2Xt&4kL zlkkX}Xq7Fm!R_kYT_L+t!fy!7Ow@OGq*rvN@008&PFA1sJ!xb?N4A11j76`B>b z_OWo}g0^i<+Vg$5E3YWfBbm`ba{cL3b1&0>040l$Y^`XX_$-`hY}{YYZ#pn0Yg>gE zvSbJ31X|0BdCTwevYxT}8iY_>a(PG$CwrOAxYO-ebv~2dPbzZ#Q%qzeiWFmVY97+c zjSBdFD$YO2uPB-p@j-#8Inw$S7jVprH(uQOJxz&*gPH&1&p2ggQS$FD9I(UM7ak+o zFK?*VYR-UcKe1DYK#lD2&o0@d?~l+$lIPFZs{A>aH-ZA;$)SjDSYV=gB>S1tp9Tjx zU7qI*y_g3Q!^rn-=t74Nh(@{cF2XvYPN<@sRa`xG~)i^%ct@=27c3nf9lO}{g)ht(M8xwk?(G%amrYgu8;6QbHae0Y3 zp|DaSPibk5ZIq0`UTr8hkE*4prXoRW%=DwE@_Rg96=g&ObFK^eYxQ~5fn|nDJ}S@; z+vGJ-nCYLdk-GFu`B;jVPH6RQo5?`>E4qWLjtPgJj!}XXLFPs3SZ0AK`bXmHD_TQ9 zZL>aBQTj96lea&oh?%U~T1H_gzV{AIdW;&`6zcrm@@@~cUL^-|+1V}~;bx57PqLzR zmWT{_V~-Vym+u8rjg~NXpyniTvXokA6rzt1RYfbvO0aRzY5cl0pZ7q-4oZz%&o&^P z#PZj6J!NRA$Y<2JWIujnf6-iGQtid%9X*^OL)))b9`>o(;)|=q2Ee*DD7FCbmh@qX zH(l=+6LMtPIb_AippCV~t|jEucL^__swB+anFZ8U6+A%r8)LeA&Wq}z$rugFsxND8 zLqvLFfld1kjRg9v1DSqp{<7a`1V>oX0P@vD&SWcu=j0p zPz5Aby-C-$9zG?Vpnr1Bt^YD8x4gQl|B+5MEY$Mb7k;G(lGIeVGXNmg@bYYAb(t!Y(s^;g6D#H&s{43mlohY1D>t%imEHb&g7swx8?@v~N`3NFjwr8+^puzn~3a{%S zph1jotpO+pj}OD;=b&^GK|bP8x>f>(W`Tr&zB}O8=XFI zR%bykr-x41XI@f4eANZ0rNv2woJAg$l8kJVFJ3(#l|r>%Piaw?R$bt*Vk+5ii6s4m||-aP>d>&HkWk9)gkgP=q%Nsgd-OG zXSX*sl!E5Ts_jrG(8;gvd;uKv{twtfU5TNO#;YoE*y{SF>cW=_JBryR3f2~^Xc=sk zGH-ztf{DN5u8b169URvVqnH}sla#XIAsl7zt3gRjJ(M&Z21-WRYI+u_9v5ea^yrB) z{6B+vW>@#~iuSZzI>~@i4%40{BQb(6IEG>7@FYP>_;B_8Z?>o}m=Za0#2OtOucmv{ zVW@5-Atim+fuVWNuK>o zpqa%$)7Ky@YrW5N_4#KQ@JQNAAf<)dUE4eZsONx`GO8?Ui%b0&5+e;r5_c`s9H<)QR9o1AK6fX=8Ja63O`j+LLSX|7@_!(?iJ!GB>f{|7OM7 zw&KZUh>eRV+SoT3Y5-%C&@R753zEoQl&>zNGq$IvgFcm#pg^P!tav5+oDr9*Ig96@ zFDJn)U({jjaH?y9-28;@A1dBWtNpn0Of?H>zq5VmJZ*GxU#S{7iP8Tka&62%s6+kb z>LlwMx3Co}k2)fF=CUbdf33(10S8(+4Fk+P_{x(#>r8ozsfcUle}L?SpU;ILqdylfzc7ka(Xef4L)e!k-}N6 z8{u$+oU}M?ZYM~6&vr)2kiNFP(7q|Oo}Pb7jSa1>nR-(!Xp%AyHci8IJHbi@7M+bCEx zgpezuu3>Fl$2^K*`?!9u6SN9S+q1*|8S<-0w|DAG({PtxG>}xNEG#KL!0ncvf228h z1f0C5Ee5qNwKg#^pE~he6Qe#wiQG3;!;L65aUP(R(9B#95r{vTsCp;EGguw7mcht- zg0sD9nBGm_3Ce~#eo}&i8yZB+;m)V%E!!8zU2=`3Mm3q5oKRCGT=YrS@RD9n+m;9S zAfU_YclkgkmGp^GPHTt69Zq5THi*~q>PD?*IvK}Y)U#hLO_5butNILwQElv3wA5A0 z*4or0%grqM_@vsM0hn!>k6uWZ zOYU6VQ*sTf2p?Sgzk5TCE@IE}>+^m=dB*df2&?g~*_Vq?moZ}wIDLi`afJ&IrO(w# zrw&YF*i04upOgBxGW?^TTNAOV;?$l7QyXiXAM{#!tA8EPt5Q|zdk5{q$D^d$Duqjv z&t(jR^sDw1Tz}f>W0Q0Kaap|5{80`xMl*C-CC{#+th)c*zK?#khMXpGz%g>dTyheFD9u{S5{b6LGYrXJAh#yT zA_WFHr@rhw5kD}1?PodU^HeEVwTmm;RB|ZKr*Xu^K&#ay$M@f3B-8@S48m&Y#T>-m zs};)1fCEv6yr-x)aMe99M=AY{G+5)p&A=1=Y*U9z@A#TY# zE*_B1PusWV$wS)P0LVZF<=YNoOyv)MG8*bR3<~UVN0Swmb)5bfE0D+%ieMbC^wVgr z6;1OGN}FtQURKXk3^Mg}Mznz>1+jwMCvLCzW6uv~53?~?_-N3rErNfSD5V{;EUviMbr$BF`erA?%P-*9zL|+e3Tu1h&}&~TPOP?2B&*<>h01~Kg;B_^*KmKPGs zNAR>|5IeyWcRpOc3#XDV%Wjk4lw-=3LY1XGUw(84@Zy9ehH51I{R)C#lRv99axyNt`}bV1$hjTjw*CA8h2BRvecD= z7F3ilE0l!UDq2AWvG~G>o3Q1wuB>wzkat%O>*F-9!taKF(oa~5qpSRt!h-6LAZ0nB znEm17`oCbI)L&or-h5VdF24NA%ONqB8%A`5JX%-s9d@|f+f?jH0?S*wi+B7Q{ei$rz z$Um&N;KG47YND)4Q`)5VyM!_RC_^kwSuCUVD~Bi&cu}aW2HGRBYdzx7x>D3=p0T#2 z_&Fv@9I?NSW)YI{T|I8%bxo+9#gr(tD`lczjyw>`i_39oP z40}pfY#OC2&ioLE&5tw7@Bwk>^Tu&oKVM+;&&^?HZCNxG+2G4#zQxg)Su>GA6)RHO zJmdHp%=@%p2bapReEh$qc?xe}px)9vsn5TD9e-ycv^vI z*-my{M|WGpO5o$x1paq%2QzMDblMDhuHJ1oL-ZNV8jaI-97SLjscfC%2rO^QtJjab zm)EV8UNW0^CBd%RlX{e3U_og#n zkV#L)0gqox$3%;~8^%zRd7kW^UCQC+c{K>_;~S-f99vpXwXe5X_*yBBPij_;nuX6= zibFqN8~Xf_eH)4q7U)OqY@4lxXuuZu4(PkL0`oX2N{SlRh@VQCGj`s!GESS%oKAb#>p%-3Rz6 zmCgj)o4x-cK=NT4?>{sp#v%cUodf9;$Wf9IOKJ^lf?Zz7G@)qmfr8UofL^Jba{FU) z;DRKsd{#iXGP9hNjzOVbd!1I(UZBA+QC3T$hBHjf?~>9zr!$s)aeQJ29_}tYJR_@9 ze)ZSs;=!{ifI^csZDdj#6k43I*Pra0ZJ+*dD06Lnefd)`YWBl)J8#<~PPP5yzXLTh zSpCa6?U@D5&UEFp^dWPqr2LX}#dHg~hUQswf>K;(LeTjFb01$iU)CXC!bg_Tj; z>hJ^KA8fgCJ;`p!9r&X`v27J4+M041M$C}+uy~HfGUuSW+Uks|_L8Y*JQ76B$@0_9 zCy%N_pT6Ra3`+uRl>3bYl_?23r;`;M*>G`ny&`pBjPLh>cRW``QS6O17`T0XrKQIQ z*P%qYyLIQ9~pfAsWptbCpN@ZE$vl-4l7%_S*kY|mnCe#j%C&q z_MG9xVWPe=e41s} z8VuCG!)9jHL71@uHf9H2GWLE`l)HzfIZA2NocHEVcB`FjFJ&}Y`vr7Wq;+?`!p3!a z$vxece+|>mH9g~jI%`WSrp7R4>60_(#)+OQ68@facB9vKYT{Esvnt86xHzajR?Bk9 z95Q;EUUqU4>sw!quD#F8zem8=;+ZtVM|P>>OjjSp$u25iYR}Bu*nNZRl*YYNixuz} ze`$h3IY0kCoJbZVFc8jRgQ@=Wnt!VeP(#qDeF09 zc}{~9w$u?GJR18}QL6d+lFoAG8$Py|r@u0`+Bct38$0pxxbcXv29}g^?_dG7ba4R< zY{8?-k;*Y^*;9!d5=xZOz3OU;v}UBG>^zM9S>GFF5){wk>)$!^Pc0u&1{NYXdlBL_Zt##)(&aHp1#M#gdVc5gp($3n zvQ(IkbPdrvDW5!|Y^<-GoK>!fUuF0Rs_kZm1H{amzdM6gx3r_3Tc z9ZroE^cx*J60!%P5^c*_Pb!(l%5x-VJ=asn+}uizPZH_5ypc2Pg-^0 z1OE}E6C_q?_+66LalR39^~@-&y(ntXtk+@I#K6hguJ)01xPvBIH25cEE%b0+*de#M zSh}t`LoaK|mF0G*L`uYG z{e4Savq}`R)LWrW8E0%8QS2CE>Lb&@4t=BB`0VQ<3WJdovICs8)tJwAW_*z^@nXY3 zPRi-Z-*HEF*;jrTM5qp*h0i@gu7JiAkOjQ%*&;LsOO_zhkX&-zz0 z&}aqJ>EqM~APP3#XU={bpRsx+8PV{jW&a)9IJH$nTrs67OEwwW!j8|eM^GsfnmE8!xYrW2)_Z!5(yt@M9-A)iIKK)&4(Er)^ zRa(8yM^RV*aTJdKmNSUvDM;*_F)Dx7LteFkT~Z7)9r#v^2$^_|$CRq^Jj6JBazEJ_ zlN=%X14mhf-HTe7!U|KDUshC&_aS0kf#sZsxIIl9s49Jqb<8QQ$ngE3j?P!>%>6

qm@D#CBiSmf>xC;N&l(z{=z-z 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≻FFDWW~me4TI>)SU<`PyHkfrGy2&2V-50-2 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

hSO+0MjS3i!e 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 Z`z_> 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

QrheX^E-Qgfp0Yc8 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

3=P!5#8S1T<7z*%g@*LfNjetR3`!Z6 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⁡&-1E#_RL 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 LV;p4t`|ke$+A<6c literal 0 HcmV?d00001 From 49f305c5bc4ea482422d4837c1ae3d96a93902f7 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Mon, 3 Apr 2023 10:11:27 +0200 Subject: [PATCH 04/31] Add missing registration of planet label keybinding (#2571) --- data/assets/util/default_keybindings.asset | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/data/assets/util/default_keybindings.asset b/data/assets/util/default_keybindings.asset index 4e7026033a..fe2d6da3c9 100644 --- a/data/assets/util/default_keybindings.asset +++ b/data/assets/util/default_keybindings.asset @@ -202,10 +202,11 @@ local toggle_planet_labels = { local Actions = { - toggle_native_ui,toggle_shutdown,take_screenshot,toggle_pause_interpolated,toggle_pause_immediate, - toggle_rotation_friction,toggle_zoom_friction,toggle_roll_friction,fade_to_black, - toggle_main_gui,toggle_overlays,toggle_master_rendering,next_delta_step_interpolate, - next_delta_step_immediate,previous_delta_step_interpolate,previous_delta_step_immediate + toggle_native_ui, toggle_shutdown, take_screenshot, toggle_pause_interpolated, + toggle_pause_immediate, toggle_rotation_friction, toggle_zoom_friction, + toggle_roll_friction, fade_to_black, toggle_main_gui, toggle_overlays, + toggle_master_rendering, next_delta_step_interpolate, next_delta_step_immediate, + previous_delta_step_interpolate, previous_delta_step_immediate, toggle_planet_labels } asset.onInitialize(function() From 1057b369c980fec2b24f516fcb6726660aada1d0 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Mon, 3 Apr 2023 10:29:20 +0200 Subject: [PATCH 05/31] Harmonize the handling of the IsLocal vs Synchronized state of actions (closes #2566) --- data/assets/util/default_keybindings.asset | 1 + include/openspace/interaction/action.h | 11 ++++++----- modules/imgui/src/guiactioncomponent.cpp | 4 ++-- modules/server/src/topics/shortcuttopic.cpp | 2 +- src/engine/openspaceengine.cpp | 2 +- src/interaction/actionmanager.cpp | 4 ++-- src/interaction/actionmanager_lua.inl | 13 +++---------- src/util/timemanager.cpp | 2 +- 8 files changed, 17 insertions(+), 22 deletions(-) diff --git a/data/assets/util/default_keybindings.asset b/data/assets/util/default_keybindings.asset index fe2d6da3c9..9779bbc01a 100644 --- a/data/assets/util/default_keybindings.asset +++ b/data/assets/util/default_keybindings.asset @@ -16,6 +16,7 @@ local toggle_shutdown = { Name = "Toggle Shutdown", Command = "openspace.toggleShutdown()", Documentation = "Toggles the shutdown that will stop OpenSpace after a grace period. Press again to cancel the shutdown during this period", + GuiPath = "/System", IsLocal = true, Key = "ESC" diff --git a/include/openspace/interaction/action.h b/include/openspace/interaction/action.h index af46d8c787..a0f21bd76b 100644 --- a/include/openspace/interaction/action.h +++ b/include/openspace/interaction/action.h @@ -31,7 +31,7 @@ namespace openspace::interaction { struct Action { - BooleanType(IsSynchronized); + BooleanType(IsLocal); /// Unique identifier that identifies this action. There is no special naming scheme /// that we enforce, we are trying to stick to the same . separated structure that @@ -59,10 +59,11 @@ struct Action { /// for the root path std::string guiPath = "/"; - /// If this value is set to `Yes`, the execution of this action is synchronized to - /// other OpenSpace instances, for example other nodes in a cluster environment, or - /// to other OpenSpace instances using a parallel connection - IsSynchronized synchronization = IsSynchronized::Yes; + /// If this value is set to `Yes`, the execution of this action is restricted to the + /// current OpenSpace instance. If it is `No`, it is synchronized to other OpenSpace + /// instances, for example other nodes in a cluster environment, or to other OpenSpace + /// instances using a parallel connection + IsLocal isLocal = IsLocal::Yes; }; } // namespace openspace::interaction diff --git a/modules/imgui/src/guiactioncomponent.cpp b/modules/imgui/src/guiactioncomponent.cpp index 7c47b3f088..a9bb377201 100644 --- a/modules/imgui/src/guiactioncomponent.cpp +++ b/modules/imgui/src/guiactioncomponent.cpp @@ -64,7 +64,7 @@ void GuiActionComponent::render() { const interaction::Action& a = global::actionManager->action(p.second); ImGui::Text("%s", a.documentation.c_str()); - if (!a.synchronization) { + if (a.isLocal) { ImGui::SameLine(); ImGui::Text("(%s)", "local"); } @@ -86,7 +86,7 @@ void GuiActionComponent::render() { ImGui::SetCursorPosX(350.f); ImGui::Text("%s", action.documentation.c_str()); - if (!action.synchronization) { + if (action.isLocal) { ImGui::SameLine(); ImGui::Text("(%s)", "local"); } diff --git a/modules/server/src/topics/shortcuttopic.cpp b/modules/server/src/topics/shortcuttopic.cpp index db2eab047a..4125257635 100644 --- a/modules/server/src/topics/shortcuttopic.cpp +++ b/modules/server/src/topics/shortcuttopic.cpp @@ -59,7 +59,7 @@ std::vector ShortcutTopic::shortcutsJson() const { { "identifier", action.identifier }, { "name", action.name }, { "script", action.command }, - { "synchronization", static_cast(action.synchronization) }, + { "synchronization", static_cast(!action.isLocal) }, { "documentation", action.documentation }, { "guiPath", action.guiPath }, }; diff --git a/src/engine/openspaceengine.cpp b/src/engine/openspaceengine.cpp index 74a956a502..ca98e7d4fc 100644 --- a/src/engine/openspaceengine.cpp +++ b/src/engine/openspaceengine.cpp @@ -1811,7 +1811,7 @@ void setActionsFromProfile(const Profile& p) { action.name = a.name; action.documentation = a.documentation; action.guiPath = a.guiPath; - action.synchronization = interaction::Action::IsSynchronized(a.isLocal); + action.isLocal = interaction::Action::IsLocal(a.isLocal); global::actionManager->registerAction(std::move(action)); } } diff --git a/src/interaction/actionmanager.cpp b/src/interaction/actionmanager.cpp index f00c5fb4bd..fb8e4fe904 100644 --- a/src/interaction/actionmanager.cpp +++ b/src/interaction/actionmanager.cpp @@ -96,13 +96,13 @@ void ActionManager::triggerAction(const std::string& identifier, if (arguments.isEmpty()) { global::scriptEngine->queueScript( a.command, - scripting::ScriptEngine::RemoteScripting(a.synchronization) + scripting::ScriptEngine::RemoteScripting(!a.isLocal) ); } else { global::scriptEngine->queueScript( fmt::format("args = {}\n{}", ghoul::formatLua(arguments), a.command), - scripting::ScriptEngine::RemoteScripting(a.synchronization) + scripting::ScriptEngine::RemoteScripting(!a.isLocal) ); } } diff --git a/src/interaction/actionmanager_lua.inl b/src/interaction/actionmanager_lua.inl index 4a10d51ae9..7e55b3fdb7 100644 --- a/src/interaction/actionmanager_lua.inl +++ b/src/interaction/actionmanager_lua.inl @@ -120,7 +120,7 @@ struct [[codegen::Dictionary(Action)]] Action { throw ghoul::RuntimeError("Action's GuiPath must start with /"); } if (action.isLocal.has_value()) { - a.synchronization = interaction::Action::IsSynchronized(*action.isLocal); + a.isLocal = interaction::Action::IsLocal(*action.isLocal); } global::actionManager->registerAction(std::move(a)); } @@ -148,10 +148,7 @@ struct [[codegen::Dictionary(Action)]] Action { res.setValue("Name", action.name); res.setValue("Documentation", action.documentation); res.setValue("GuiPath", action.guiPath); - res.setValue( - "Synchronization", - action.synchronization == interaction::Action::IsSynchronized::Yes - ); + res.setValue("IsLocal", action.isLocal == interaction::Action::IsLocal::Yes); return res; } @@ -172,11 +169,7 @@ struct [[codegen::Dictionary(Action)]] Action { d.setValue("Name", a.name); d.setValue("Documentation", a.documentation); d.setValue("GuiPath", a.guiPath); - d.setValue( - "Synchronization", - a.synchronization == interaction::Action::IsSynchronized::Yes - ); - + d.setValue("IsLocal", a.isLocal == interaction::Action::IsLocal::Yes); res.push_back(d); } return res; diff --git a/src/util/timemanager.cpp b/src/util/timemanager.cpp index 3884fc46b7..ee8d37bc95 100644 --- a/src/util/timemanager.cpp +++ b/src/util/timemanager.cpp @@ -509,7 +509,7 @@ void TimeManager::addDeltaTimesKeybindings() { ); action.name = fmt::format("Set Simulation Speed: {}", s); action.guiPath = DeltaTimeStepsKeybindsGuiPath; - action.synchronization = interaction::Action::IsSynchronized::No; + action.isLocal = interaction::Action::IsLocal::Yes; global::actionManager->registerAction(std::move(action)); global::keybindingManager->bindKey(key, mod, std::move(identifier)); _deltaTimeStepKeybindings.push_back(KeyWithModifier{ key, mod }); From 379a050bc0fd2d353db75bfd6e68cbf4deb51b12 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Mon, 3 Apr 2023 10:42:01 +0200 Subject: [PATCH 06/31] Provide a proper error message when trying to overwrite a hidden profile (closes #2575) --- .../ext/launcher/src/launcherwindow.cpp | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/apps/OpenSpace/ext/launcher/src/launcherwindow.cpp b/apps/OpenSpace/ext/launcher/src/launcherwindow.cpp index 60257a1ab3..9f379e3d63 100644 --- a/apps/OpenSpace/ext/launcher/src/launcherwindow.cpp +++ b/apps/OpenSpace/ext/launcher/src/launcherwindow.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -41,7 +42,10 @@ #include #include #include -#include + +#ifdef WIN32 +#include +#endif // WIN32 using namespace openspace; @@ -137,11 +141,29 @@ namespace { void saveProfile(QWidget* parent, const std::string& path, const Profile& p) { std::ofstream outFile; + outFile.exceptions(std::ofstream::badbit | std::ofstream::failbit); try { outFile.open(path, std::ofstream::out); outFile << p.serialize(); } catch (const std::ofstream::failure& e) { +#ifdef WIN32 + if (std::filesystem::exists(path)) { + // Check if the file is hidden, since that causes ofstream to fail + DWORD res = GetFileAttributesA(path.c_str()); + if (res & FILE_ATTRIBUTE_HIDDEN) { + QMessageBox::critical( + parent, + "Exception", + QString::fromStdString(fmt::format( + "Error writing data to file: '{}' as file is marked hidden", + path + )) + ); + return; + } + } +#endif // WIN32 QMessageBox::critical( parent, "Exception", From 0e2d5e245dbec91e21f0b785335fc2857f80fd8d Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Mon, 3 Apr 2023 10:53:09 +0200 Subject: [PATCH 07/31] Add the ability to configure the Console key through the openspace.cfg (closes #2573) --- include/openspace/engine/configuration.h | 3 +++ include/openspace/rendering/luaconsole.h | 4 ++++ openspace.cfg | 1 + src/engine/configuration.cpp | 17 +++++++++++++++++ src/engine/openspaceengine.cpp | 1 + src/rendering/luaconsole.cpp | 10 ++++++---- 6 files changed, 32 insertions(+), 4 deletions(-) diff --git a/include/openspace/engine/configuration.h b/include/openspace/engine/configuration.h index 0fca1bcb60..d63fbc5086 100644 --- a/include/openspace/engine/configuration.h +++ b/include/openspace/engine/configuration.h @@ -25,6 +25,7 @@ #ifndef __OPENSPACE_CORE___CONFIGURATION___H__ #define __OPENSPACE_CORE___CONFIGURATION___H__ +#include #include #include #include @@ -91,6 +92,8 @@ struct Configuration { bool isLoggingOpenGLCalls = false; bool isPrintingEvents = false; + Key consoleKey = Key::GraveAccent; + float shutdownCountdown = 0.f; bool shouldUseScreenshotDate = false; diff --git a/include/openspace/rendering/luaconsole.h b/include/openspace/rendering/luaconsole.h index 88086bc3c0..f7a828fb97 100644 --- a/include/openspace/rendering/luaconsole.h +++ b/include/openspace/rendering/luaconsole.h @@ -58,6 +58,8 @@ public: void render(); float currentHeight() const; + void setCommandInputButton(Key key); + private: void parallelConnectionChanged(const ParallelConnection::Status& status); @@ -71,6 +73,8 @@ private: properties::Vec4Property _historyTextColor; properties::IntProperty _historyLength; + Key _commandInputButton = Key::GraveAccent; + size_t _inputPosition = 0; std::vector _commandsHistory; size_t _activeCommand = 0; diff --git a/openspace.cfg b/openspace.cfg index cec2e9cafa..686c9a106e 100644 --- a/openspace.cfg +++ b/openspace.cfg @@ -237,6 +237,7 @@ LoadingScreen = { CheckOpenGLState = false LogEachOpenGLCall = false PrintEvents = false +ConsoleKey = "GRAVEACCENT" ShutdownCountdown = 3 ScreenshotUseDate = true diff --git a/src/engine/configuration.cpp b/src/engine/configuration.cpp index 9f610d37e1..1712c61b02 100644 --- a/src/engine/configuration.cpp +++ b/src/engine/configuration.cpp @@ -254,6 +254,10 @@ namespace { // the OpenSpaceEngine with the same name std::optional printEvents; + /// Determines which key opens the in-game console. The value passed in must be a + /// valid key (see keys.h for a list) + std::optional consoleKey; + // This value determines whether the initialization of the scene graph should // occur multithreaded, that is, whether multiple scene graph nodes should // initialize in parallel. The only use for this value is to disable it for @@ -352,6 +356,19 @@ void parseLuaState(Configuration& configuration) { c.isCheckingOpenGLState = p.checkOpenGLState.value_or(c.isCheckingOpenGLState); c.isLoggingOpenGLCalls = p.logEachOpenGLCall.value_or(c.isLoggingOpenGLCalls); c.isPrintingEvents = p.printEvents.value_or(c.isPrintingEvents); + + if (p.consoleKey.has_value()) { + KeyWithModifier km = stringToKey(*p.consoleKey); + if (km.modifier != KeyModifier::None) { + throw ghoul::RuntimeError(fmt::format( + "Console key '{}' must be a 'bare' key and cannot contain any modifiers", + *p.consoleKey + )); + } + + c.consoleKey = km.key; + } + c.shutdownCountdown = p.shutdownCountdown.value_or(c.shutdownCountdown); c.shouldUseScreenshotDate = p.screenshotUseDate.value_or(c.shouldUseScreenshotDate); c.onScreenTextScaling = p.onScreenTextScaling.value_or(c.onScreenTextScaling); diff --git a/src/engine/openspaceengine.cpp b/src/engine/openspaceengine.cpp index ca98e7d4fc..824de87119 100644 --- a/src/engine/openspaceengine.cpp +++ b/src/engine/openspaceengine.cpp @@ -470,6 +470,7 @@ void OpenSpaceEngine::initializeGL() { LTRACE("OpenSpaceEngine::initializeGL::Console::initialize(begin)"); try { global::luaConsole->initialize(); + global::luaConsole->setCommandInputButton(global::configuration->consoleKey); } catch (ghoul::RuntimeError& e) { LERROR("Error initializing Console with error:"); diff --git a/src/rendering/luaconsole.cpp b/src/rendering/luaconsole.cpp index 3c2404ec48..b7d97d74b2 100644 --- a/src/rendering/luaconsole.cpp +++ b/src/rendering/luaconsole.cpp @@ -54,8 +54,6 @@ namespace { constexpr uint64_t CurrentVersion = 0xFEEE'FEEE'0000'0001; - constexpr openspace::Key CommandInputButton = openspace::Key::GraveAccent; - constexpr std::string_view FontName = "Console"; constexpr float EntryFontSize = 14.0f; constexpr float HistoryFontSize = 11.0f; @@ -274,7 +272,7 @@ bool LuaConsole::keyboardCallback(Key key, KeyModifier modifier, KeyAction actio return false; } - if (key == CommandInputButton) { + if (key == _commandInputButton) { // Button left of 1 and above TAB // How to deal with different keyboard languages? ---abock if (_isVisible) { @@ -580,7 +578,7 @@ void LuaConsole::charCallback(unsigned int codepoint, return; } - if (codepoint == static_cast(CommandInputButton)) { + if (codepoint == static_cast(_commandInputButton)) { return; } @@ -832,6 +830,10 @@ float LuaConsole::currentHeight() const { return _currentHeight; } +void LuaConsole::setCommandInputButton(Key key) { + _commandInputButton = key; +} + void LuaConsole::addToCommand(std::string c) { const size_t length = c.length(); _commands.at(_activeCommand).insert(_inputPosition, std::move(c)); From 4de371310716c8e7be5c02ef5503be7d6802c9b6 Mon Sep 17 00:00:00 2001 From: Emma Broman Date: Mon, 3 Apr 2023 11:40:19 +0200 Subject: [PATCH 08/31] Add a central function to create an identifier from string, and also expose it through Lua --- include/openspace/scene/scene.h | 5 +- modules/debugging/debuggingmodule_lua.inl | 61 +++++++++------------ modules/exoplanets/exoplanetshelper.cpp | 7 --- modules/exoplanets/exoplanetshelper.h | 3 - modules/exoplanets/exoplanetsmodule.cpp | 1 - modules/exoplanets/exoplanetsmodule_lua.inl | 7 ++- scripts/drag_drop_handler.lua | 7 +-- src/scene/scene.cpp | 13 ++++- src/scene/scene_lua.inl | 13 ++++- 9 files changed, 61 insertions(+), 56 deletions(-) diff --git a/include/openspace/scene/scene.h b/include/openspace/scene/scene.h index 949ca1afaf..188d20bad6 100644 --- a/include/openspace/scene/scene.h +++ b/include/openspace/scene/scene.h @@ -346,7 +346,7 @@ private: std::chrono::time_point beginTime; float durationSeconds; std::string postScript; - + ghoul::EasingFunc easingFunction; bool isExpired = false; }; @@ -355,6 +355,9 @@ private: ghoul::MemoryPool<4096> _memoryPool; }; +// Convert the input string to a format that is valid as an identifier +std::string makeIdentifier(std::string str); + } // namespace openspace #endif // __OPENSPACE_CORE___SCENE___H__ diff --git a/modules/debugging/debuggingmodule_lua.inl b/modules/debugging/debuggingmodule_lua.inl index febff86860..c8951ae0fb 100644 --- a/modules/debugging/debuggingmodule_lua.inl +++ b/modules/debugging/debuggingmodule_lua.inl @@ -22,6 +22,8 @@ * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * ****************************************************************************************/ +#include + namespace { constexpr const char RenderedPathIdentifier[] = "CurrentCameraPath"; @@ -31,17 +33,6 @@ constexpr const char DebuggingGuiPath[] = "/Debugging"; constexpr glm::vec3 PathColor = glm::vec3(1.0, 1.0, 0.0); constexpr glm::vec3 OrientationLineColor = glm::vec3(0.0, 1.0, 1.0); -// Conver the input string to a format that is valid as an identifier -std::string makeIdentifier(std::string s) { - std::replace(s.begin(), s.end(), ' ', '_'); - std::replace(s.begin(), s.end(), '.', '-'); - // Remove quotes and apostrophe, since they cause problems - // when a string is translated to a script call - s.erase(remove(s.begin(), s.end(), '\"'), s.end()); - s.erase(remove(s.begin(), s.end(), '\''), s.end()); - return s; -} - /** * Render the current camera path from the path navigation system. The first optional * argument is the number of samples to take along the path (defaults to 100). If a second @@ -190,7 +181,7 @@ std::string makeIdentifier(std::string s) { // previously rendered ones std::string addParentScript = fmt::format( "if openspace.hasSceneGraphNode('{0}') then " - "openspace.removeSceneGraphNode('{0}') " + "openspace.removeSceneGraphNode('{0}') " "end " "openspace.addSceneGraphNode({{ Identifier = '{0}' }})", RenderedPointsIdentifier @@ -215,23 +206,23 @@ std::string makeIdentifier(std::string s) { "Identifier = 'ControlPoint_" + std::to_string(i) + "'," "Parent = '" + RenderedPointsIdentifier + "'," "Transform = { " - "Translation = {" - "Type = 'StaticTranslation'," - "Position = " + ghoul::to_string(points[i]) + "" - "}," + "Translation = {" + "Type = 'StaticTranslation'," + "Position = " + ghoul::to_string(points[i]) + "" + "}," "}," "Renderable = {" - "Type = 'RenderableSphere'," - "Enabled = true," - "Segments = 30," - "Size = " + std::to_string(radius) + "," - "Texture = " + colorTexturePath + "" + "Type = 'RenderableSphere'," + "Enabled = true," + "Segments = 30," + "Size = " + std::to_string(radius) + "," + "Texture = " + colorTexturePath + "" "}," "GUI = {" - "Name = 'Control Point " + std::to_string(i) + "'," - "Path = '" + guiPath + "'" + "Name = 'Control Point " + std::to_string(i) + "'," + "Path = '" + guiPath + "'" "}" - "}"; + "}"; global::scriptEngine->queueScript( fmt::format("openspace.addSceneGraphNode({})", node), @@ -280,21 +271,21 @@ std::string makeIdentifier(std::string s) { "Identifier = '" + identifier + "'," "Parent = '" + nodeIdentifier + "'," "Transform = { " - "Scale = {" - "Type = 'StaticScale'," - "Scale = " + std::to_string(*scale) + "" - "}" + "Scale = {" + "Type = 'StaticScale'," + "Scale = " + std::to_string(*scale) + "" + "}" "}," "Renderable = {" - "Type = 'RenderableCartesianAxes'," - "Enabled = true," - "XColor = { 1.0, 0.0, 0.0 }," - "YColor = { 0.0, 1.0, 0.0 }," - "ZColor = { 0.0, 0.0, 1.0 }" + "Type = 'RenderableCartesianAxes'," + "Enabled = true," + "XColor = { 1.0, 0.0, 0.0 }," + "YColor = { 0.0, 1.0, 0.0 }," + "ZColor = { 0.0, 0.0, 1.0 }" "}," "GUI = {" - "Name = '" + identifier + "'," - "Path = '" + DebuggingGuiPath + "/Coordiante Systems'" + "Name = '" + identifier + "'," + "Path = '" + DebuggingGuiPath + "/Coordiante Systems'" "}" "}"; diff --git a/modules/exoplanets/exoplanetshelper.cpp b/modules/exoplanets/exoplanetshelper.cpp index a9d196eba3..ecad68a0f0 100644 --- a/modules/exoplanets/exoplanetshelper.cpp +++ b/modules/exoplanets/exoplanetshelper.cpp @@ -154,13 +154,6 @@ glm::dmat3 computeSystemRotation(glm::dvec3 starPosition) { ); } -std::string createIdentifier(std::string name) { - std::replace(name.begin(), name.end(), ' ', '_'); - std::replace(name.begin(), name.end(), '.', '-'); - sanitizeNameString(name); - return name; -} - void sanitizeNameString(std::string& s) { // We want to avoid quotes and apostrophes in names, since they cause problems // when a string is translated to a script call diff --git a/modules/exoplanets/exoplanetshelper.h b/modules/exoplanets/exoplanetshelper.h index 2075d68a92..d4e9c9ca0f 100644 --- a/modules/exoplanets/exoplanetshelper.h +++ b/modules/exoplanets/exoplanetshelper.h @@ -108,9 +108,6 @@ glm::dmat4 computeOrbitPlaneRotationMatrix(float i, float bigom = 180.f, // so that x is pointing from star to the sun. glm::dmat3 computeSystemRotation(glm::dvec3 starPosition); -// Create an identifier without whitespaces -std::string createIdentifier(std::string name); - void sanitizeNameString(std::string& s); } // namespace openspace::exoplanets diff --git a/modules/exoplanets/exoplanetsmodule.cpp b/modules/exoplanets/exoplanetsmodule.cpp index d7c9aa84cd..68c78ca25f 100644 --- a/modules/exoplanets/exoplanetsmodule.cpp +++ b/modules/exoplanets/exoplanetsmodule.cpp @@ -33,7 +33,6 @@ #include #include #include -#include #include #include #include diff --git a/modules/exoplanets/exoplanetsmodule_lua.inl b/modules/exoplanets/exoplanetsmodule_lua.inl index 539210c10f..8faa22754f 100644 --- a/modules/exoplanets/exoplanetsmodule_lua.inl +++ b/modules/exoplanets/exoplanetsmodule_lua.inl @@ -22,6 +22,7 @@ * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * ****************************************************************************************/ +#include #include #include #include @@ -123,7 +124,7 @@ void createExoplanetSystem(const std::string& starName) { using namespace openspace; using namespace exoplanets; - const std::string starIdentifier = createIdentifier(starName); + const std::string starIdentifier = makeIdentifier(starName); std::string sanitizedStarName = starName; sanitizeNameString(sanitizedStarName); @@ -286,7 +287,7 @@ void createExoplanetSystem(const std::string& starName) { double semiMajorAxisInMeter = planet.a * distanceconstants::AstronomicalUnit; double semiMajorAxisInKm = semiMajorAxisInMeter * 0.001; - const std::string planetIdentifier = createIdentifier(planetName); + const std::string planetIdentifier = makeIdentifier(planetName); const std::string planetKeplerTranslation = "{" "Type = 'KeplerTranslation'," @@ -631,7 +632,7 @@ std::vector hostStarsWithSufficientData() { [[codegen::luawrap]] void removeExoplanetSystem(std::string starName) { using namespace openspace; using namespace exoplanets; - const std::string starIdentifier = createIdentifier(std::move(starName)); + const std::string starIdentifier = makeIdentifier(std::move(starName)); global::scriptEngine->queueScript( "openspace.removeSceneGraphNode('" + starIdentifier + "');", scripting::ScriptEngine::RemoteScripting::Yes diff --git a/scripts/drag_drop_handler.lua b/scripts/drag_drop_handler.lua index c6becc7219..e1b58c7473 100644 --- a/scripts/drag_drop_handler.lua +++ b/scripts/drag_drop_handler.lua @@ -32,10 +32,9 @@ end local ReloadUIScript = [[ if openspace.hasProperty('Modules.CefWebGui.Reload') then openspace.setPropertyValue('Modules.CefWebGui.Reload', nil) end ]] if is_image_file(extension) then - identifier = basename_without_extension:gsub(" ", "_") - identifier = identifier:gsub("%p", "_") -- replace all punctuation characters with '_' - return [[openspace.addScreenSpaceRenderable({ - Identifier = "]] .. identifier .. [[", + return [[ + openspace.addScreenSpaceRenderable({ + Identifier = openspace.makeIdentifier("]] .. basename_without_extension .. [["), Type = "ScreenSpaceImageLocal", TexturePath = "]] .. filename .. [[" });]] .. ReloadUIScript diff --git a/src/scene/scene.cpp b/src/scene/scene.cpp index 32a0d2f8f7..83d790b0e5 100644 --- a/src/scene/scene.cpp +++ b/src/scene/scene.cpp @@ -844,9 +844,20 @@ scripting::LuaLibrary Scene::luaLibrary() { codegen::lua::WorldRotation, codegen::lua::SetParent, codegen::lua::BoundingSphere, - codegen::lua::InteractionSphere + codegen::lua::InteractionSphere, + codegen::lua::MakeIdentifier } }; } +std::string makeIdentifier(std::string s) { + // Note that we want to preserve '-' and '_', but replace any other punctuation + // marks. Hence, we first convert '_' to whitespaces to avoid them being replaced + // in the puncutation check + std::replace(s.begin(), s.end(), '_', ' '); + std::replace_if(s.begin(), s.end(), std::ptr_fun(&std::ispunct), '-'); + std::replace(s.begin(), s.end(), ' ', '_'); + return s; +} + } // namespace openspace diff --git a/src/scene/scene_lua.inl b/src/scene/scene_lua.inl index 0460bc619c..cf8d768b38 100644 --- a/src/scene/scene_lua.inl +++ b/src/scene/scene_lua.inl @@ -23,6 +23,7 @@ ****************************************************************************************/ #include +#include #include #include #include @@ -51,6 +52,8 @@ #include #include #include +#include +#include namespace { @@ -1004,7 +1007,7 @@ enum class [[codegen::enum]] CustomPropertyType { /** * Creates a new property that lives in the `UserProperty` group. - * + * * \param identifier The identifier that is going to be used for the new property * \param type The type of the property, has to be one of "DMat2Property", * "DMat3Property", "DMat4Property", "Mat2Property", "Mat3Property", @@ -1161,6 +1164,14 @@ enum class [[codegen::enum]] CustomPropertyType { } } +/** + * Create a valid identifier from the provided input string. Will replace invalid + * characters like whitespaces and some punctuation marks with valid alternatives + */ +[[codegen::luawrap]] std::string makeIdentifier(std::string input) { + return openspace::makeIdentifier(input); +} + } // namespace #include "scene_lua_codegen.cpp" From a67d407e150cdf302d883e511106ba14c7fa2b42 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Mon, 3 Apr 2023 21:00:00 +0200 Subject: [PATCH 09/31] Move the keybindings out of the base.asset and the specific label keybinding out of the default_keybindings --- data/assets/base.asset | 44 ---------------------- data/assets/base_keybindings.asset | 30 +++++++++++++++ data/assets/util/default_keybindings.asset | 17 +-------- data/profiles/apollo.profile | 3 +- data/profiles/asteroids.profile | 1 + data/profiles/bastilleday2000.profile | 1 + data/profiles/dawn.profile | 1 + data/profiles/default.profile | 1 + data/profiles/default_full.profile | 1 + data/profiles/gaia.profile | 1 + data/profiles/juice.profile | 4 +- data/profiles/juno.profile | 3 +- data/profiles/jwst.profile | 1 + data/profiles/mars.profile | 1 + data/profiles/messenger.profile | 1 + data/profiles/newhorizons.profile | 1 + data/profiles/osirisrex.profile | 1 + data/profiles/rosetta.profile | 1 + data/profiles/solarstorm2012.profile | 1 + data/profiles/touch.profile | 3 +- data/profiles/voyager.profile | 1 + 21 files changed, 52 insertions(+), 66 deletions(-) create mode 100644 data/assets/base_keybindings.asset diff --git a/data/assets/base.asset b/data/assets/base.asset index 5d304ca709..341463b15a 100644 --- a/data/assets/base.asset +++ b/data/assets/base.asset @@ -57,53 +57,9 @@ asset.require("scene/digitaluniverse/voids") asset.require("customization/globebrowsing") asset.require("util/default_actions") -local toggle_trails = { - Identifier = "os_default.toggle_trails", - Name = "Toggle Trails", - Command = [[ - local list = openspace.getProperty("{planetTrail_solarSystem}.Renderable.Enabled"); - for _,v in pairs(list) do openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) end - - local moonlist = openspace.getProperty("{moonTrail_solarSystem}.Renderable.Enabled"); - for _,v in pairs(moonlist) do openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) end - ]], - Documentation = "Toggles the visibility of planet and moon trails", - GuiPath = "/Rendering", - IsLocal = false, - - Key = "h" -} - -local toggle_planet_labels = { - Identifier = "os_default.toggle_planet_labels", - Name = "Toggle planet labels", - Command = [[ - local list = openspace.getProperty("{solarsystem_labels}.Renderable.Enabled"); - for _,v in pairs(list) do openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) end - ]], - Documentation = "Turns on visibility for all solar system labels", - GuiPath = "/Rendering", - IsLocal = false, - - Key = "l" -} - -local trailAction = asset.require("actions/trails/toggle_trails_planets_moons").toggle_trails asset.onInitialize(function () - openspace.bindKey("h", trailAction.Identifier) - - openspace.action.registerAction(toggle_planet_labels) - openspace.bindKey(toggle_planet_labels.Key, toggle_planet_labels.Identifier) - openspace.globebrowsing.loadWMSServersFromFile( openspace.absPath("${DATA}/globebrowsing_servers.lua") ) end) - -asset.onDeinitialize(function () - openspace.clearKey(toggle_trails.Key) - - openspace.action.removeAction(toggle_planet_labels) - openspace.clearKey(toggle_planet_labels.Key) -end) diff --git a/data/assets/base_keybindings.asset b/data/assets/base_keybindings.asset new file mode 100644 index 0000000000..049ede6326 --- /dev/null +++ b/data/assets/base_keybindings.asset @@ -0,0 +1,30 @@ +asset.require("./base") + +local trailAction = asset.require("actions/trails/toggle_trails_planets_moons").toggle_trails + +local toggle_planet_labels = { + Identifier = "os_default.toggle_planet_labels", + Name = "Toggle planet labels", + Command = [[ + local list = openspace.getProperty("{solarsystem_labels}.Renderable.Enabled"); + for _,v in pairs(list) do openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) end + ]], + Documentation = "Turns on visibility for all solar system labels", + GuiPath = "/Solar System", + IsLocal = false, + Key = "l" +} + +asset.onInitialize(function () + openspace.action.registerAction(toggle_planet_labels) + openspace.bindKey(toggle_planet_labels.Key, toggle_planet_labels.Identifier) + + openspace.bindKey("h", trailAction.Identifier) +end) + +asset.onDeinitialize(function () + openspace.clearKey("h") + + openspace.action.removeAction(toggle_planet_labels) + openspace.clearKey(toggle_planet_labels.Key) +end) diff --git a/data/assets/util/default_keybindings.asset b/data/assets/util/default_keybindings.asset index 9779bbc01a..f91a42bc87 100644 --- a/data/assets/util/default_keybindings.asset +++ b/data/assets/util/default_keybindings.asset @@ -187,27 +187,12 @@ local previous_delta_step_immediate = { Key = "Shift+Left" } -local toggle_planet_labels = { - Identifier = "os_default.toggle_planet_labels", - Name = "Toggle planet labels", - Command = [[ - local list = openspace.getProperty("{solarsystem_labels}.Renderable.Enabled"); - for _,v in pairs(list) do openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) end - ]], - Documentation = "Turns on visibility for all solar system labels", - GuiPath = "/Solar System", - IsLocal = false, - Key = "l" -} - - - local Actions = { toggle_native_ui, toggle_shutdown, take_screenshot, toggle_pause_interpolated, toggle_pause_immediate, toggle_rotation_friction, toggle_zoom_friction, toggle_roll_friction, fade_to_black, toggle_main_gui, toggle_overlays, toggle_master_rendering, next_delta_step_interpolate, next_delta_step_immediate, - previous_delta_step_interpolate, previous_delta_step_immediate, toggle_planet_labels + previous_delta_step_interpolate, previous_delta_step_immediate } asset.onInitialize(function() diff --git a/data/profiles/apollo.profile b/data/profiles/apollo.profile index febd2de247..8b4752c377 100644 --- a/data/profiles/apollo.profile +++ b/data/profiles/apollo.profile @@ -1,6 +1,7 @@ { "assets": [ "base", + "base_keybindings", "scene/solarsystem/missions/apollo/8/apollo8", "scene/solarsystem/missions/apollo/11/apollo11", "scene/solarsystem/missions/apollo/11/lem_flipbook", @@ -110,4 +111,4 @@ "major": 1, "minor": 1 } -} \ No newline at end of file +} diff --git a/data/profiles/asteroids.profile b/data/profiles/asteroids.profile index 764981f458..3478a25104 100644 --- a/data/profiles/asteroids.profile +++ b/data/profiles/asteroids.profile @@ -1,6 +1,7 @@ { "assets": [ "base", + "base_keybindings", "scene/solarsystem/interstellar/c-2019_q4_borisov", "scene/solarsystem/interstellar/oumuamua", "scene/solarsystem/sssb/amor_asteroid", diff --git a/data/profiles/bastilleday2000.profile b/data/profiles/bastilleday2000.profile index 7975cb4492..46c0379e14 100644 --- a/data/profiles/bastilleday2000.profile +++ b/data/profiles/bastilleday2000.profile @@ -1,6 +1,7 @@ { "assets": [ "base", + "base_keybindings", "dashboard/default_dashboard", "scene/solarsystem/heliosphere/bastille_day/actions", "scene/solarsystem/heliosphere/bastille_day/density_volume", diff --git a/data/profiles/dawn.profile b/data/profiles/dawn.profile index 77e8f29ee3..8a5f89f46b 100644 --- a/data/profiles/dawn.profile +++ b/data/profiles/dawn.profile @@ -1,6 +1,7 @@ { "assets": [ "base", + "base_keybindings", "scene/solarsystem/dwarf_planets/ceres/ceres", "scene/solarsystem/dwarf_planets/ceres/default_layers", "scene/solarsystem/dwarf_planets/ceres/trail", diff --git a/data/profiles/default.profile b/data/profiles/default.profile index ec5bcab272..ef68dbd24c 100644 --- a/data/profiles/default.profile +++ b/data/profiles/default.profile @@ -1,6 +1,7 @@ { "assets": [ "base", + "base_keybindings", "events/toggle_sun", "scene/solarsystem/planets/earth/earth", "scene/solarsystem/planets/earth/satellites/satellites" diff --git a/data/profiles/default_full.profile b/data/profiles/default_full.profile index b191457fef..551282e242 100644 --- a/data/profiles/default_full.profile +++ b/data/profiles/default_full.profile @@ -1,6 +1,7 @@ { "assets": [ "base", + "base_keybindings", "events/toggle_sun", "scene/solarsystem/planets/earth/earth", "scene/solarsystem/planets/earth/satellites/satellites", diff --git a/data/profiles/gaia.profile b/data/profiles/gaia.profile index 941db99b3a..ff834c694c 100644 --- a/data/profiles/gaia.profile +++ b/data/profiles/gaia.profile @@ -1,6 +1,7 @@ { "assets": [ "base", + "base_keybindings", "scene/milkyway/gaia/apogee", "scene/milkyway/gaia/gaiastars", "scene/milkyway/gaia/galah", diff --git a/data/profiles/juice.profile b/data/profiles/juice.profile index 947f087d97..63b7024a45 100644 --- a/data/profiles/juice.profile +++ b/data/profiles/juice.profile @@ -1,9 +1,7 @@ { - "additional_scripts": [ - "" - ], "assets": [ "base", + "base_keybindings", "scene/solarsystem/missions/juice/fieldlines", "scene/solarsystem/missions/juice/fov/janus", "scene/solarsystem/missions/juice/fov/navcam", diff --git a/data/profiles/juno.profile b/data/profiles/juno.profile index a43863c26f..99d8c8e30c 100644 --- a/data/profiles/juno.profile +++ b/data/profiles/juno.profile @@ -1,6 +1,7 @@ { "assets": [ "base", + "base_keybindings", "scene/solarsystem/missions/juno/juno" ], "camera": { @@ -61,4 +62,4 @@ "major": 1, "minor": 0 } -} \ No newline at end of file +} diff --git a/data/profiles/jwst.profile b/data/profiles/jwst.profile index 07439f6c33..eb836a4329 100644 --- a/data/profiles/jwst.profile +++ b/data/profiles/jwst.profile @@ -4,6 +4,7 @@ ], "assets": [ "base", + "base_keybindings", "scene/solarsystem/planets/earth/earth", "scene/solarsystem/planets/earth/satellites/satellites", "scene/solarsystem/planets/earth/satellites/misc/hubble_trail", diff --git a/data/profiles/mars.profile b/data/profiles/mars.profile index 5eb8a9b4c0..3a2931d7ae 100644 --- a/data/profiles/mars.profile +++ b/data/profiles/mars.profile @@ -1,6 +1,7 @@ { "assets": [ "base", + "base_keybindings", "scene/solarsystem/missions/insight/edl", "scene/solarsystem/missions/perseverance/perseverance" ], diff --git a/data/profiles/messenger.profile b/data/profiles/messenger.profile index 9401e55fbd..e41816ea00 100644 --- a/data/profiles/messenger.profile +++ b/data/profiles/messenger.profile @@ -1,6 +1,7 @@ { "assets": [ "base", + "base_keybindings", "scene/solarsystem/missions/messenger/dashboard", "scene/solarsystem/missions/messenger/mercurymagnetosphere", "scene/solarsystem/missions/messenger/messengerSC" diff --git a/data/profiles/newhorizons.profile b/data/profiles/newhorizons.profile index 80a82748d3..f7a326680b 100644 --- a/data/profiles/newhorizons.profile +++ b/data/profiles/newhorizons.profile @@ -1,6 +1,7 @@ { "assets": [ "base", + "base_keybindings", "scene/solarsystem/missions/newhorizons/dashboard", "scene/solarsystem/missions/newhorizons/model", "scene/solarsystem/missions/newhorizons/newhorizons" diff --git a/data/profiles/osirisrex.profile b/data/profiles/osirisrex.profile index a351f29964..ae41edf7b6 100644 --- a/data/profiles/osirisrex.profile +++ b/data/profiles/osirisrex.profile @@ -1,6 +1,7 @@ { "assets": [ "base", + "base_keybindings", "scene/solarsystem/missions/osirisrex/dashboard", "scene/solarsystem/missions/osirisrex/model", "scene/solarsystem/missions/osirisrex/osirisrex", diff --git a/data/profiles/rosetta.profile b/data/profiles/rosetta.profile index d8e968e569..9d600b0342 100644 --- a/data/profiles/rosetta.profile +++ b/data/profiles/rosetta.profile @@ -1,6 +1,7 @@ { "assets": [ "base", + "base_keybindings", "scene/solarsystem/missions/rosetta/67p", "scene/solarsystem/missions/rosetta/dashboard", "scene/solarsystem/missions/rosetta/rosetta", diff --git a/data/profiles/solarstorm2012.profile b/data/profiles/solarstorm2012.profile index 43542d1842..1f34322d4c 100644 --- a/data/profiles/solarstorm2012.profile +++ b/data/profiles/solarstorm2012.profile @@ -1,6 +1,7 @@ { "assets": [ "base", + "base_keybindings", "dashboard/default_dashboard", "scene/solarsystem/heliosphere/2012/sun_earth_2012_fieldlines", "scene/solarsystem/planets/earth/magnetosphere/magnetosphere", diff --git a/data/profiles/touch.profile b/data/profiles/touch.profile index 2609bf1582..c7a3813303 100644 --- a/data/profiles/touch.profile +++ b/data/profiles/touch.profile @@ -3,7 +3,8 @@ "openspace.setPropertyValueSingle(\"Modules.CefWebGui.GuiUrl\", 'http://127.0.0.1:4680/frontend/#/ontouch');" ], "assets": [ - "base" + "base", + "base_keybindings" ], "camera": { "altitude": 20000000.0, diff --git a/data/profiles/voyager.profile b/data/profiles/voyager.profile index 7c830a0de2..1af4269fe2 100644 --- a/data/profiles/voyager.profile +++ b/data/profiles/voyager.profile @@ -1,6 +1,7 @@ { "assets": [ "base", + "base_keybindings", "scene/solarsystem/missions/voyager/dashboard", "scene/solarsystem/missions/voyager/voyager1", "scene/solarsystem/missions/voyager/voyager2", From 606ad2de5ff630dfb6c5623c060d6d75dd132937 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Mon, 3 Apr 2023 21:26:30 +0200 Subject: [PATCH 10/31] Don't subsample the height map on planets (closes #2472) --- .../layers/heightlayers/terrain_tileset.asset | 2 +- .../layers/heightlayers/terrain_tileset.wms | 18 ++++++++++++------ .../layers/heightlayers/loladem_sweden.asset | 2 +- .../layers/heightlayers/loladem_utah.asset | 2 +- .../heightlayers/messenger_dem_utah.asset | 2 +- .../layers/heightlayers/magellan_utah.asset | 2 +- 6 files changed, 17 insertions(+), 11 deletions(-) diff --git a/data/assets/scene/solarsystem/planets/earth/layers/heightlayers/terrain_tileset.asset b/data/assets/scene/solarsystem/planets/earth/layers/heightlayers/terrain_tileset.asset index a5236a497e..7a0e42cac4 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/heightlayers/terrain_tileset.asset +++ b/data/assets/scene/solarsystem/planets/earth/layers/heightlayers/terrain_tileset.asset @@ -5,7 +5,7 @@ local layer = { Name = "Terrain tileset", Enabled = asset.enabled, FilePath = asset.localResource("terrain_tileset.wms"), - TilePixelSize = 64, + TilePixelSize = 512, Description = [[This globe layer presents elevation data at approximately 90m or 1km per pixel resolution for the world. The elevation data includes 90m Shuttle Radar Topography Mission (SRTM) elevation data from NASA and National diff --git a/data/assets/scene/solarsystem/planets/earth/layers/heightlayers/terrain_tileset.wms b/data/assets/scene/solarsystem/planets/earth/layers/heightlayers/terrain_tileset.wms index 5de12576ea..4c910a7cbd 100644 --- a/data/assets/scene/solarsystem/planets/earth/layers/heightlayers/terrain_tileset.wms +++ b/data/assets/scene/solarsystem/planets/earth/layers/heightlayers/terrain_tileset.wms @@ -3,14 +3,20 @@ http://earthlive.maptiles.arcgis.com/arcgis/rest/services/GCS_Elevation3D/ImageServer/tile/${z}/${y}/${x} - -180 90 - 180 -90 - 16777216 8388608 - 14 top + -180 + 90 + 180 + -90 + 16777216 + 8388608 + 14 + top EPSG:4326 - 512 512 - 1 Float32 + 512 + 512 + 1 + Float32 5 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/layers/heightlayers/loladem_sweden.asset b/data/assets/scene/solarsystem/planets/earth/moon/layers/heightlayers/loladem_sweden.asset index 64821b6005..c2f88054f2 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/layers/heightlayers/loladem_sweden.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/layers/heightlayers/loladem_sweden.asset @@ -5,7 +5,7 @@ local layer = { Name = "Lola DEM [Sweden]", Enabled = asset.enabled, FilePath = asset.localResource("loladem_sweden.wms"), - TilePixelSize = 64, + TilePixelSize = 360, Settings = { Multiplier = 0.5 } } diff --git a/data/assets/scene/solarsystem/planets/earth/moon/layers/heightlayers/loladem_utah.asset b/data/assets/scene/solarsystem/planets/earth/moon/layers/heightlayers/loladem_utah.asset index 116e382fa5..3d6c9268ad 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/layers/heightlayers/loladem_utah.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/layers/heightlayers/loladem_utah.asset @@ -5,7 +5,7 @@ local layer = { Name = "Lola DEM [Utah]", Enabled = asset.enabled, FilePath = asset.localResource("loladem_utah.wms"), - TilePixelSize = 64, + TilePixelSize = 360, Settings = { Multiplier = 0.5 }, Description = [[This digital elevation model (DEM) is based on data from the Lunar Orbiter Laser Altimeter (LOLA; Smith et al., 2010), an instrument on the National diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/heightlayers/messenger_dem_utah.asset b/data/assets/scene/solarsystem/planets/mercury/layers/heightlayers/messenger_dem_utah.asset index 4bd91d0fbc..bd5a377fd8 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/heightlayers/messenger_dem_utah.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/heightlayers/messenger_dem_utah.asset @@ -9,7 +9,7 @@ local layer = { Gamma = 1.59, Multiplier = 1.38 }, - TilePixelSize = 64 + TilePixelSize = 360 } asset.onInitialize(function () diff --git a/data/assets/scene/solarsystem/planets/venus/layers/heightlayers/magellan_utah.asset b/data/assets/scene/solarsystem/planets/venus/layers/heightlayers/magellan_utah.asset index 5e156d9429..59aaad0fdc 100644 --- a/data/assets/scene/solarsystem/planets/venus/layers/heightlayers/magellan_utah.asset +++ b/data/assets/scene/solarsystem/planets/venus/layers/heightlayers/magellan_utah.asset @@ -15,7 +15,7 @@ local layer = { into sinusoidal, Mercator, and north and south polar stereographic projections at a resolution of 5 kilometers per pixel (4641 meters per pixel [m])]], FilePath = asset.localResource("magellan_utah.wms"), - TilePixelSize = 64, + TilePixelSize = 256, Settings = { Gamma = 1.72, Multiplier = 1.1 From ebed869f4bde2a23375469a044fac3fe2d82e3af Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Mon, 3 Apr 2023 21:35:07 +0200 Subject: [PATCH 11/31] Update SGCT repository (closes #2370) --- apps/OpenSpace/ext/sgct | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/OpenSpace/ext/sgct b/apps/OpenSpace/ext/sgct index 2f82990b3d..61fe0fe3ef 160000 --- a/apps/OpenSpace/ext/sgct +++ b/apps/OpenSpace/ext/sgct @@ -1 +1 @@ -Subproject commit 2f82990b3dddb1404d83cee4ed7ea9d76068960d +Subproject commit 61fe0fe3efd67fc822f4442ea96837dcee5705b1 From e743d387f28ec07be3ba2a362c341542102c6a60 Mon Sep 17 00:00:00 2001 From: Joakim Kilby Date: Tue, 4 Apr 2023 14:38:36 +0200 Subject: [PATCH 12/31] Exclude translation files --- apps/OpenSpace/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/OpenSpace/CMakeLists.txt b/apps/OpenSpace/CMakeLists.txt index 80670c427e..94ecb33a82 100644 --- a/apps/OpenSpace/CMakeLists.txt +++ b/apps/OpenSpace/CMakeLists.txt @@ -141,7 +141,7 @@ if (WIN32) find_program(WINDEPLOYQT_EXECUTABLE windeployqt HINTS "${_qt_bin_dir}") add_custom_command( TARGET OpenSpace POST_BUILD - COMMAND "${CMAKE_COMMAND}" -E env PATH="${_qt_bin_dir}" "${WINDEPLOYQT_EXECUTABLE}" --verbose 0 --no-compiler-runtime \"$\" + COMMAND "${CMAKE_COMMAND}" -E env PATH="${_qt_bin_dir}" "${WINDEPLOYQT_EXECUTABLE}" --verbose 0 --no-compiler-runtime --no-translations \"$\" COMMENT "Deploying Qt libraries" ) endif () From 5e63eabc4e69e3a182111ef529ee1d41ba668f01 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Tue, 4 Apr 2023 22:08:28 +0200 Subject: [PATCH 13/31] Provide error message when running OpenSpace from a folder containing a ', ", [, or ] (closes #2563) --- apps/OpenSpace/main.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/apps/OpenSpace/main.cpp b/apps/OpenSpace/main.cpp index 1cfd5e0ee2..3cc1e87ab5 100644 --- a/apps/OpenSpace/main.cpp +++ b/apps/OpenSpace/main.cpp @@ -80,6 +80,7 @@ #include #include +#include using namespace openspace; using namespace sgct; @@ -1258,6 +1259,19 @@ int main(int argc, char* argv[]) { QApplication app(qac, nullptr); #endif // __APPLE__ + std::string pwd = std::filesystem::current_path().string(); + if (size_t it = pwd.find_first_of("'\"[]"); it != std::string::npos) { + QMessageBox::warning( + nullptr, + "OpenSpace", + QString::fromStdString(fmt::format( + "The OpenSpace folder is started must not contain any of \"'\", " + "\"\"\", [, or ]. Path is: '{}'. Unexpected errors will occur when " + "proceeding to run the software", pwd + )) + ); + } + LauncherWindow win( !hasProfile, *global::configuration, @@ -1280,11 +1294,12 @@ int main(int argc, char* argv[]) { windowConfiguration, labelFromCfgFile ); - } else { + } + else { glfwInit(); } if (global::configuration->profile.empty()) { - LFATAL("Cannot launch with an empty profile"); + LFATAL("Cannot launch without a profile"); exit(EXIT_FAILURE); } From 8502376af3c50349eee557e3f1809938857a8b69 Mon Sep 17 00:00:00 2001 From: Emma Broman Date: Tue, 4 Apr 2023 22:01:22 +0200 Subject: [PATCH 14/31] Make it possible to trigger camera path with zero duration (needed for #2568) --- src/navigation/pathnavigator_lua.inl | 32 ++++++++++++++-------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/navigation/pathnavigator_lua.inl b/src/navigation/pathnavigator_lua.inl index 26d3e79bce..989d07fbb1 100644 --- a/src/navigation/pathnavigator_lua.inl +++ b/src/navigation/pathnavigator_lua.inl @@ -84,16 +84,16 @@ namespace { } else { double d = std::get(*useUpFromTargetOrDuration); - if (d <= 0.0) { - throw ghoul::lua::LuaError("Duration must be larger than zero"); + if (d < 0.0) { + throw ghoul::lua::LuaError("Duration must be a positive value"); } insDict.setValue("Duration", d); } } if (duration.has_value()) { double d = *duration; - if (d <= 0.0) { - throw ghoul::lua::LuaError("Duration must be larger than zero"); + if (d < 0.0) { + throw ghoul::lua::LuaError("Duration must be a positive value"); } insDict.setValue("Duration", d); } @@ -134,16 +134,16 @@ namespace { } else { double d = std::get(*useUpFromTargetOrDuration); - if (d <= 0.0) { - throw ghoul::lua::LuaError("Duration must be larger than zero"); + if (d < 0.0) { + throw ghoul::lua::LuaError("Duration must be a positive value"); } insDict.setValue("Duration", d); } } if (duration.has_value()) { double d = *duration; - if (d <= 0.0) { - throw ghoul::lua::LuaError("Duration must be larger than zero"); + if (d < 0.0) { + throw ghoul::lua::LuaError("Duration must be a positive value"); } insDict.setValue("Duration", d); } @@ -182,8 +182,8 @@ namespace { if (duration.has_value()) { double d = *duration; - if (d <= 0.0) { - throw ghoul::lua::LuaError("Duration must be larger than zero"); + if (d < 0.0) { + throw ghoul::lua::LuaError("Duration must be a positive value"); } instruction.setValue("Duration", d); } @@ -213,8 +213,8 @@ namespace { if (duration.has_value()) { double d = *duration; - if (d <= 0.0) { - throw ghoul::lua::LuaError("Duration must be larger than zero"); + if (d < 0.0) { + throw ghoul::lua::LuaError("Duration must be a positive value"); } insDict.setValue("Duration", d); } @@ -251,8 +251,8 @@ namespace { if (duration.has_value()) { double d = *duration; - if (d <= 0.0) { - throw ghoul::lua::LuaError("Duration must be larger than zero"); + if (d < 0.0) { + throw ghoul::lua::LuaError("Duration must be a positive value"); } insDict.setValue("Duration", d); } @@ -294,8 +294,8 @@ namespace { if (duration.has_value()) { double d = *duration; - if (d <= 0.0) { - throw ghoul::lua::LuaError("Duration must be larger than zero"); + if (d < 0.0) { + throw ghoul::lua::LuaError("Duration must be a positive value"); } insDict.setValue("Duration", d); } From 335ae7ccfdf48be6c9a58ed5f4cd93d0168acd40 Mon Sep 17 00:00:00 2001 From: Emma Broman Date: Tue, 4 Apr 2023 22:13:25 +0200 Subject: [PATCH 15/31] Update gui hash (for #2568 fix) --- data/assets/util/webgui.asset | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/assets/util/webgui.asset b/data/assets/util/webgui.asset index 5fc1f3f4dd..4c3c00cb50 100644 --- a/data/assets/util/webgui.asset +++ b/data/assets/util/webgui.asset @@ -3,7 +3,7 @@ asset.require("./static_server") local guiCustomization = asset.require("customization/gui") -- Select which commit hashes to use for the frontend and backend -local frontendHash = "4a27a71ccc7dd67f3efa6c54c6f04da71d99ffc2" +local frontendHash = "44cfa50d36ca72003c0601f87e206e3839f7b2e5" local dataProvider = "data.openspaceproject.com/files/webgui" local frontend = asset.syncedResource({ From 56dae46e05297e8a87317a07694f36a06ad6890c Mon Sep 17 00:00:00 2001 From: Ylva Selling Date: Tue, 4 Apr 2023 16:38:49 -0400 Subject: [PATCH 16/31] Update gui hash --- data/assets/util/webgui.asset | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/assets/util/webgui.asset b/data/assets/util/webgui.asset index 4c3c00cb50..660acb27e7 100644 --- a/data/assets/util/webgui.asset +++ b/data/assets/util/webgui.asset @@ -3,7 +3,7 @@ asset.require("./static_server") local guiCustomization = asset.require("customization/gui") -- Select which commit hashes to use for the frontend and backend -local frontendHash = "44cfa50d36ca72003c0601f87e206e3839f7b2e5" +local frontendHash = "b6de72c6d3087ec26707c9647771d36b7b421eac" local dataProvider = "data.openspaceproject.com/files/webgui" local frontend = asset.syncedResource({ From 784d5f302e34eff0c4061c6c6f0d8e66de8092f8 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Tue, 4 Apr 2023 23:14:30 +0200 Subject: [PATCH 17/31] Address 1-based indexing issues for satellite trials --- .../planets/earth/satellites/misc/hubble_trail.asset | 2 +- .../solarsystem/planets/earth/satellites/weather/aqua.asset | 2 +- .../solarsystem/planets/earth/satellites/weather/snpp.asset | 2 +- .../solarsystem/planets/earth/satellites/weather/terra.asset | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/misc/hubble_trail.asset b/data/assets/scene/solarsystem/planets/earth/satellites/misc/hubble_trail.asset index c4f0081243..5462b52207 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/misc/hubble_trail.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/misc/hubble_trail.asset @@ -59,7 +59,7 @@ local HubbleTrail = { asset.onInitialize(function () local hubble = openspace.space.readKeplerFile(omm .. "hst.txt", "OMM") - HubbleTrail.Renderable.Period = hubble[0].Period / (60 * 60 * 24) + HubbleTrail.Renderable.Period = hubble[1].Period / (60 * 60 * 24) openspace.addSceneGraphNode(HubblePosition) openspace.addSceneGraphNode(HubbleTrail) diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/weather/aqua.asset b/data/assets/scene/solarsystem/planets/earth/satellites/weather/aqua.asset index e237bf578a..48d9d6e722 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/weather/aqua.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/weather/aqua.asset @@ -84,7 +84,7 @@ local AquaLabel = { asset.onInitialize(function () local a = openspace.space.readKeplerFile(omm .. "Aqua.txt", "OMM") - AquaTrail.Renderable.Period = a[0].Period / (60 * 60 * 24) + AquaTrail.Renderable.Period = a[1].Period / (60 * 60 * 24) openspace.addSceneGraphNode(Aqua) openspace.addSceneGraphNode(AquaTrail) diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/weather/snpp.asset b/data/assets/scene/solarsystem/planets/earth/satellites/weather/snpp.asset index a1f28bfd33..4eefd790d6 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/weather/snpp.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/weather/snpp.asset @@ -82,7 +82,7 @@ local SNPPLabel = { asset.onInitialize(function () local s = openspace.space.readKeplerFile(omm .. "SNPP.txt", "OMM") - SNPPTrail.Renderable.Period = s[0].Period / (60 * 60 * 24) + SNPPTrail.Renderable.Period = s[1].Period / (60 * 60 * 24) openspace.addSceneGraphNode(SNPP) openspace.addSceneGraphNode(SNPPTrail) diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/weather/terra.asset b/data/assets/scene/solarsystem/planets/earth/satellites/weather/terra.asset index 6e998f1116..5a8451aeb1 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/weather/terra.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/weather/terra.asset @@ -85,7 +85,7 @@ local TerraLabel = { asset.onInitialize(function() local t = openspace.space.readKeplerFile(omm .. "Terra.txt", "OMM") - TerraTrail.Renderable.Period = t[0].Period / (60 * 60 * 24) + TerraTrail.Renderable.Period = t[1].Period / (60 * 60 * 24) openspace.addSceneGraphNode(Terra) openspace.addSceneGraphNode(TerraTrail) From 80e2aaf564c55e10152c6e1379442416a18c847f Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Wed, 5 Apr 2023 16:58:45 +0200 Subject: [PATCH 18/31] Remove whitespaces at the end of files, ' and - characters --- CREDITS.md | 2 +- Jenkinsfile | 18 +- .../actions/planets/planet_lighting.asset | 2 +- .../trails/on_off_all_minor_moons.asset | 14 +- .../trails/toggle_all_minor_moon_trails.asset | 6 +- data/assets/customization/globebrowsing.asset | 2 +- data/assets/events/toggle_sun.asset | 2 +- .../scene/digitaluniverse/starorbits.asset | 2 +- data/assets/scene/milkyway/milkyway/eso.asset | 2 +- .../objects/orionnebula/cluster.asset | 20 +- .../milkyway/objects/orionnebula/nebula.asset | 22 +- .../bastille_day/magnetogram_textures.asset | 2 +- .../missions/apollo/11/actions.asset | 14 +- .../missions/apollo/17/actions.asset | 20 +- .../missions/apollo/8/actions.asset | 10 +- .../solarsystem/missions/apollo/actions.asset | 10 +- .../apollo/apollo_globebrowsing.asset | 12 +- .../missions/insight/shortcuts.asset | 4 +- .../solarsystem/missions/juice/kernels.asset | 2 +- .../solarsystem/missions/juice/plane.asset | 4 +- .../solarsystem/missions/juno/juno.asset | 4 +- .../solarsystem/missions/jwst/actions.asset | 52 ++-- .../missions/newhorizons/actions.asset | 18 +- .../missions/osirisrex/actions.asset | 14 +- .../missions/perseverance/actions.asset | 4 +- .../solarsystem/missions/rosetta/67p.asset | 4 +- .../missions/rosetta/actions.asset | 6 +- .../missions/rosetta/rosetta.asset | 4 +- .../missions/voyager/actions.asset | 6 +- .../voyager1_2__pioneer10_11.asset | 2 +- .../solarsystem/planets/earth/earth.asset | 10 +- .../layers/colorlayers/clemuvvis_utah.asset | 2 +- .../colorlayers/lola_clr_shade_utah.asset | 2 +- .../solarsystem/planets/earth/moon/moon.asset | 4 +- .../ColorHillshade.wms | 2 +- .../Colorized_Confidence.wms | 2 +- .../Apollo_15_Metric_Cam_DEM/Grayscale.wms | 2 +- .../Apollo_15_Metric_Cam_DEM/Hillshade.wms | 2 +- .../Aristarchus_Plateau_1.wms | 2 +- .../Aristarchus_Plateau_2.wms | 2 +- .../Tsiolkovskiy_Crater.wms | 2 +- .../Aristarchus_Plateau_1.wms | 2 +- .../Aristarchus_Plateau_2.wms | 2 +- .../Tsiolkovskiy_Crater.wms | 2 +- .../Colorized_Confidence.wms | 2 +- .../Apollo_16_Metric_Cam_DEM/Grayscale.wms | 2 +- .../Apollo_16_Metric_Cam_DEM/Hillshade.wms | 2 +- .../ColorHillshade.wms | 2 +- .../Apollo_17_Metric_Cam_DEM/Grayscale.wms | 2 +- .../Apollo_Zone_Metric_Cam/Hillshade.wms | 2 +- .../ColorHillshade.wms | 2 +- .../Apollo_15_Metric_Cam_Image_Mosaic.wms | 2 +- .../Apollo_17_Metric_Cam_Image_Mosaic.wms | 2 +- .../Apollo_Zone_Metric_Cam_Image_Mosaic.wms | 2 +- .../Clementine_UVVIS_FeO_Weight_Percent.wms | 2 +- .../Clementine_UVVIS_Optical_Maturity.wms | 2 +- .../Clementine_UVVIS_TiO2_Weight_Percent.wms | 2 +- .../Clementine_UVVIS_Warped_Color_Ratio.wms | 2 +- .../Global/Kaguya_TC_Ortho_Mosaic.wms | 2 +- ...nently_Shadowed_Regions_Northpole_240m.wms | 2 +- ...nently_Shadowed_Regions_Southpole_240m.wms | 2 +- .../nasa-treks/Global/LP_NS_H_Abundance.wms | 2 +- ...aic_of_Mare_Unit_in_Schrodinger_Crater.wms | 2 +- ...Mosaic_of_Massif_in_Schrodinger_Crater.wms | 2 +- .../Global/LRO_Diviner_CF_Mosaic.wms | 2 +- ...A_and_Kaguya_TC_Color_Hillshade_512ppd.wms | 2 +- ...RO_LOLA_and_Kaguya_TC_Hillshade_512ppd.wms | 2 +- .../Global/LRO_LROC_WAC_Image_Mosaic.wms | 2 +- .../LRO_Mini-RF_First_Stokes_Parameter.wms | 2 +- .../nasa-treks/Global/LRO_WAC_Mosaic_v2.wms | 2 +- .../Colorized.wms | 2 +- .../Greyscale.wms | 2 +- .../Colorized.wms | 2 +- .../Greyscale.wms | 2 +- .../LOLA_Roughness_16ppd/Colorized.wms | 2 +- .../nasa-treks/LOLA_Slope_16ppd/Colorized.wms | 2 +- .../LOLA_Slope_Northpole_120m/Colorized.wms | 2 +- .../LOLA_Slope_Southpole_120m/Colorized.wms | 2 +- .../Shade.wms | 2 +- .../50cmpx.wms | 2 +- .../10mpx.wms | 2 +- .../LRO_Diviner_CF_Mosaic/Filled.wms | 2 +- .../Colorized.wms | 2 +- .../LRO_Diviner_Surface_Temp_Avg/Color.wms | 2 +- .../Color.wms | 2 +- .../Colorized.wms | 2 +- .../LRO_LOLA_DEM/ColorHillshade.wms | 2 +- .../LRO_LOLA_DEM/ColorHillshade_v6.wms | 2 +- .../moon/nasa-treks/LRO_LOLA_DEM/Coverage.wms | 2 +- .../nasa-treks/LRO_LOLA_DEM/Hillshade.wms | 2 +- .../moon/nasa-treks/LRO_LOLA_DEM/N_Pole.wms | 2 +- .../nasa-treks/LRO_LOLA_DEM/No_Data_Mask.wms | 2 +- .../moon/nasa-treks/LRO_LOLA_DEM/S_Pole.wms | 2 +- .../Aitken_Crater.wms | 2 +- .../Alphonsus_Crater.wms | 2 +- .../Anaxagoras_Crater.wms | 2 +- .../LRO_LROC_Crater_Abundance/Apollo_15.wms | 2 +- .../LRO_LROC_Crater_Abundance/Apollo_16.wms | 2 +- .../Apollo_Basin.wms | 2 +- .../Aristarchus_1.wms | 2 +- .../Aristarchus_2.wms | 2 +- .../Balmer_Basin.wms | 2 +- .../Bullialdus_Crater.wms | 2 +- .../Gruithuisen_Domes.wms | 2 +- .../LRO_LROC_Crater_Abundance/Hertzsprung.wms | 2 +- .../Hortensius_Domes.wms | 2 +- .../LRO_LROC_Crater_Abundance/King_Crater.wms | 2 +- .../Lichtenberg_Crater.wms | 2 +- .../Mare_Crisium.wms | 2 +- .../Montes_Pyrenaeus.wms | 2 +- .../LRO_LROC_Crater_Abundance/Orientale_1.wms | 2 +- .../Plato_Ejecta.wms | 2 +- .../South_Pole-Aitken_Basin_Interior.wms | 2 +- .../Stratton_Dewar_High_Fe_Anomaly.wms | 2 +- .../Sulpicius_Gallus.wms | 2 +- .../Tycho_Crater.wms | 2 +- .../Aitken_Crater.wms | 2 +- .../Alphonsus_Crater.wms | 2 +- .../Anaxagoras_Crater.wms | 2 +- .../Apollo_15.wms | 2 +- .../Apollo_16.wms | 2 +- .../Apollo_Basin.wms | 2 +- .../Aristarchus_1.wms | 2 +- .../Aristarchus_2.wms | 2 +- .../Balmer_Basin.wms | 2 +- .../Bullialdus_Crater.wms | 2 +- .../Gruithuisen_Domes.wms | 2 +- .../Hertzsprung.wms | 2 +- .../Hortensius_Domes.wms | 2 +- .../King_Crater.wms | 2 +- .../Lichtenberg_Crater.wms | 2 +- .../Mare_Crisium.wms | 2 +- .../Montes_Pyrenaeus.wms | 2 +- .../Orientale_1.wms | 2 +- .../Plato_Ejecta.wms | 2 +- .../South_Pole-Aitken_Basin_Interior.wms | 2 +- .../Stratton_Dewar_High_Fe_Anomaly.wms | 2 +- .../Sulpicius_Gallus.wms | 2 +- .../Tycho_Crater.wms | 2 +- .../LRO_LROC_Crater_Density/Aitken_Crater.wms | 2 +- .../Alphonsus_Crater.wms | 2 +- .../Anaxagoras_Crater.wms | 2 +- .../LRO_LROC_Crater_Density/Apollo_15.wms | 2 +- .../LRO_LROC_Crater_Density/Apollo_16.wms | 2 +- .../LRO_LROC_Crater_Density/Apollo_Basin.wms | 2 +- .../LRO_LROC_Crater_Density/Aristarchus_1.wms | 2 +- .../LRO_LROC_Crater_Density/Aristarchus_2.wms | 2 +- .../LRO_LROC_Crater_Density/Balmer_Basin.wms | 2 +- .../Bullialdus_Crater.wms | 2 +- .../Gruithuisen_Domes.wms | 2 +- .../LRO_LROC_Crater_Density/Hertzsprung.wms | 2 +- .../Hortensius_Domes.wms | 2 +- .../LRO_LROC_Crater_Density/King_Crater.wms | 2 +- .../Lichtenberg_Crater.wms | 2 +- .../LRO_LROC_Crater_Density/Mare_Crisium.wms | 2 +- .../Montes_Pyrenaeus.wms | 2 +- .../LRO_LROC_Crater_Density/Orientale_1.wms | 2 +- .../LRO_LROC_Crater_Density/Plato_Ejecta.wms | 2 +- .../South_Pole-Aitken_Basin_Interior.wms | 2 +- .../Stratton_Dewar_High_Fe_Anomaly.wms | 2 +- .../Sulpicius_Gallus.wms | 2 +- .../LRO_LROC_Crater_Density/Tycho_Crater.wms | 2 +- .../Aitken_Crater.wms | 2 +- .../Alphonsus_Crater.wms | 2 +- .../Anaxagoras_Crater.wms | 2 +- .../Apollo_15.wms | 2 +- .../Apollo_16.wms | 2 +- .../Apollo_Basin.wms | 2 +- .../Aristarchus_1.wms | 2 +- .../Aristarchus_2.wms | 2 +- .../Balmer_Basin.wms | 2 +- .../Bullialdus_Crater.wms | 2 +- .../Gruithuisen_Domes.wms | 2 +- .../Hertzsprung.wms | 2 +- .../Hortensius_Domes.wms | 2 +- .../King_Crater.wms | 2 +- .../Lichtenberg_Crater.wms | 2 +- .../Mare_Crisium.wms | 2 +- .../Montes_Pyrenaeus.wms | 2 +- .../Orientale_1.wms | 2 +- .../Plato_Ejecta.wms | 2 +- .../South_Pole-Aitken_Basin_Interior.wms | 2 +- .../Stratton_Dewar_High_Fe_Anomaly.wms | 2 +- .../Sulpicius_Gallus.wms | 2 +- .../Tycho_Crater.wms | 2 +- .../nasa-treks/LRO_LROC_DEM/Aitken_Crater.wms | 2 +- .../nasa-treks/LRO_LROC_DEM/Alphonsus.wms | 2 +- .../LRO_LROC_DEM/Alphonsus_Crater.wms | 2 +- .../LRO_LROC_DEM/Anaxagoras_Crater.wms | 2 +- .../nasa-treks/LRO_LROC_DEM/Apollo_15.wms | 2 +- .../nasa-treks/LRO_LROC_DEM/Apollo_16.wms | 2 +- .../nasa-treks/LRO_LROC_DEM/Apollo_Basin.wms | 2 +- .../nasa-treks/LRO_LROC_DEM/Aristarchus_1.wms | 2 +- .../nasa-treks/LRO_LROC_DEM/Aristarchus_2.wms | 2 +- .../nasa-treks/LRO_LROC_DEM/Balmer_Basin.wms | 2 +- .../LRO_LROC_DEM/Bullialdus_Crater.wms | 2 +- .../Compton_Belkovich_Th_Anomaly.wms | 2 +- .../nasa-treks/LRO_LROC_DEM/Dante_Crater.wms | 2 +- .../LRO_LROC_DEM/Flamsteed_Crater.wms | 2 +- .../Fresh_Crater_East_of_Lents.wms | 2 +- .../LRO_LROC_DEM/Gruithuisen_Domes.wms | 2 +- .../nasa-treks/LRO_LROC_DEM/Hertzsprung.wms | 2 +- .../LRO_LROC_DEM/Hortensius_Domes.wms | 2 +- .../LRO_LROC_DEM/Humboldtianum_Basin.wms | 2 +- .../nasa-treks/LRO_LROC_DEM/Ina_D-Caldera.wms | 2 +- .../nasa-treks/LRO_LROC_DEM/King_Crater.wms | 2 +- .../LRO_LROC_DEM/Lichtenberg_Crater.wms | 2 +- .../nasa-treks/LRO_LROC_DEM/Mare_Crisium.wms | 2 +- .../nasa-treks/LRO_LROC_DEM/Mare_Ingenii.wms | 2 +- .../LRO_LROC_DEM/Mare_Moscoviense.wms | 2 +- .../nasa-treks/LRO_LROC_DEM/Mare_Smythii.wms | 2 +- .../LRO_LROC_DEM/Mare_Tranquillitatis.wms | 2 +- .../nasa-treks/LRO_LROC_DEM/Marius_Hills.wms | 2 +- .../LRO_LROC_DEM/Montes_Pyrenaeus.wms | 2 +- .../LRO_LROC_DEM/Murchison_Crater.wms | 2 +- .../nasa-treks/LRO_LROC_DEM/Orientale_1.wms | 2 +- .../nasa-treks/LRO_LROC_DEM/Plato_Ejecta.wms | 2 +- .../nasa-treks/LRO_LROC_DEM/Reiner_Gamma.wms | 2 +- .../LRO_LROC_DEM/Riccioli_Crater.wms | 2 +- .../nasa-treks/LRO_LROC_DEM/Rima_Bode.wms | 2 +- .../nasa-treks/LRO_LROC_DEM/Rimae_Prinz.wms | 2 +- .../South_Pole-Aitken_Basin_Interior.wms | 2 +- .../LRO_LROC_DEM/South_Pole-Aitken_Rim.wms | 2 +- .../LRO_LROC_DEM/Stratton_Dewar.wms | 2 +- .../Stratton_Dewar_High_Fe_Anomaly.wms | 2 +- .../LRO_LROC_DEM/Sulpicius_Gallus.wms | 2 +- .../LRO_LROC_DEM/Tsiolkovskiy_Crater.wms | 2 +- .../nasa-treks/LRO_LROC_DEM/Tycho_Crater.wms | 2 +- .../LRO_LROC_Image_Mosaic/Aitken_Crater.wms | 2 +- .../LRO_LROC_Image_Mosaic/Alphonsus.wms | 2 +- .../LRO_LROC_Image_Mosaic/Apollo_15.wms | 2 +- .../LRO_LROC_Image_Mosaic/Apollo_16.wms | 2 +- .../LRO_LROC_Image_Mosaic/Aristarchus_1.wms | 2 +- .../LRO_LROC_Image_Mosaic/Aristarchus_2.wms | 2 +- .../LRO_LROC_Image_Mosaic/Balmer_Basin.wms | 2 +- .../Compton_Belkovich_Th_Anomaly.wms | 2 +- .../Flamsteed_Crater.wms | 2 +- .../Gruithuisen_Domes.wms | 2 +- .../LRO_LROC_Image_Mosaic/Hertzsprung.wms | 2 +- .../Hortensius_Domes.wms | 2 +- .../Humboldtianum_Basin.wms | 2 +- .../LRO_LROC_Image_Mosaic/Ina_D-Caldera.wms | 2 +- .../LRO_LROC_Image_Mosaic/King_Crater.wms | 2 +- .../Lichtenberg_Crater.wms | 2 +- .../LRO_LROC_Image_Mosaic/Mare_Ingenii.wms | 2 +- .../Mare_Moscoviense.wms | 2 +- .../LRO_LROC_Image_Mosaic/Mare_Smythii.wms | 2 +- .../Mare_Tranquillitatis.wms | 2 +- .../LRO_LROC_Image_Mosaic/Marius_Hills.wms | 2 +- .../Montes_Pyrenaeus.wms | 2 +- .../Murchison_Crater.wms | 2 +- .../LRO_LROC_Image_Mosaic/Orientale_1.wms | 2 +- .../LRO_LROC_Image_Mosaic/Reiner_Gamma.wms | 2 +- .../LRO_LROC_Image_Mosaic/Riccioli_Crater.wms | 2 +- .../LRO_LROC_Image_Mosaic/Rima_Bode.wms | 2 +- .../LRO_LROC_Image_Mosaic/Rimae_Prinz.wms | 2 +- .../South_Pole-Aitken_Basin_Interior.wms | 2 +- .../South_Pole-Aitken_Rim.wms | 2 +- .../LRO_LROC_Image_Mosaic/Stratton_Dewar.wms | 2 +- .../Sulpicius_Gallus.wms | 2 +- .../Tsiolkovskiy_Crater.wms | 2 +- .../LRO_LROC_Image_Mosaic/Tycho_Crater.wms | 2 +- .../LRO_LROC_Image_Mosaic_26cm/Apollo_11.wms | 2 +- .../LRO_LROC_Image_Mosaic_28cm/Apollo_14.wms | 2 +- .../Fresh_Crater_East_of_Lents.wms | 2 +- .../LRO_LROC_NAC_Image_Mosaic/N_Pole.wms | 2 +- .../LRO_LROC_NAC_Image_Mosaic/S_Pole.wms | 2 +- .../LRO_LROC_Rock_Abundance/Aitken_Crater.wms | 2 +- .../Alphonsus_Crater.wms | 2 +- .../Anaxagoras_Crater.wms | 2 +- .../LRO_LROC_Rock_Abundance/Apollo_15.wms | 2 +- .../LRO_LROC_Rock_Abundance/Apollo_16.wms | 2 +- .../LRO_LROC_Rock_Abundance/Apollo_Basin.wms | 2 +- .../LRO_LROC_Rock_Abundance/Aristarchus_1.wms | 2 +- .../LRO_LROC_Rock_Abundance/Aristarchus_2.wms | 2 +- .../LRO_LROC_Rock_Abundance/Balmer_Basin.wms | 2 +- .../Bullialdus_Crater.wms | 2 +- .../Gruithuisen_Domes.wms | 2 +- .../LRO_LROC_Rock_Abundance/Hertzsprung.wms | 2 +- .../Hortensius_Domes.wms | 2 +- .../LRO_LROC_Rock_Abundance/King_Crater.wms | 2 +- .../Lichtenberg_Crater.wms | 2 +- .../LRO_LROC_Rock_Abundance/Mare_Crisium.wms | 2 +- .../Montes_Pyrenaeus.wms | 2 +- .../LRO_LROC_Rock_Abundance/Orientale_1.wms | 2 +- .../LRO_LROC_Rock_Abundance/Plato_Ejecta.wms | 2 +- .../South_Pole-Aitken_Basin_Interior.wms | 2 +- .../Stratton_Dewar_High_Fe_Anomaly.wms | 2 +- .../Sulpicius_Gallus.wms | 2 +- .../LRO_LROC_Rock_Abundance/Tycho_Crater.wms | 2 +- .../Aitken_Crater.wms | 2 +- .../Alphonsus_Crater.wms | 2 +- .../Anaxagoras_Crater.wms | 2 +- .../Apollo_15.wms | 2 +- .../Apollo_16.wms | 2 +- .../Apollo_Basin.wms | 2 +- .../Aristarchus_1.wms | 2 +- .../Aristarchus_2.wms | 2 +- .../Balmer_Basin.wms | 2 +- .../Bullialdus_Crater.wms | 2 +- .../Gruithuisen_Domes.wms | 2 +- .../Hertzsprung.wms | 2 +- .../Hortensius_Domes.wms | 2 +- .../King_Crater.wms | 2 +- .../Lichtenberg_Crater.wms | 2 +- .../Mare_Crisium.wms | 2 +- .../Montes_Pyrenaeus.wms | 2 +- .../Orientale_1.wms | 2 +- .../Plato_Ejecta.wms | 2 +- .../South_Pole-Aitken_Basin_Interior.wms | 2 +- .../Stratton_Dewar_High_Fe_Anomaly.wms | 2 +- .../Sulpicius_Gallus.wms | 2 +- .../Tycho_Crater.wms | 2 +- .../LRO_LROC_Rock_Density/Aitken_Crater.wms | 2 +- .../Alphonsus_Crater.wms | 2 +- .../Anaxagoras_Crater.wms | 2 +- .../LRO_LROC_Rock_Density/Apollo_15.wms | 2 +- .../LRO_LROC_Rock_Density/Apollo_16.wms | 2 +- .../LRO_LROC_Rock_Density/Apollo_Basin.wms | 2 +- .../LRO_LROC_Rock_Density/Aristarchus_1.wms | 2 +- .../LRO_LROC_Rock_Density/Aristarchus_2.wms | 2 +- .../LRO_LROC_Rock_Density/Balmer_Basin.wms | 2 +- .../Bullialdus_Crater.wms | 2 +- .../Gruithuisen_Domes.wms | 2 +- .../Hazard_Aitken_Crater.wms | 2 +- .../LRO_LROC_Rock_Density/Hertzsprung.wms | 2 +- .../Hortensius_Domes.wms | 2 +- .../LRO_LROC_Rock_Density/King_Crater.wms | 2 +- .../Lichtenberg_Crater.wms | 2 +- .../LRO_LROC_Rock_Density/Mare_Crisium.wms | 2 +- .../Montes_Pyrenaeus.wms | 2 +- .../LRO_LROC_Rock_Density/Orientale_1.wms | 2 +- .../LRO_LROC_Rock_Density/Plato_Ejecta.wms | 2 +- .../South_Pole-Aitken_Basin_Interior.wms | 2 +- .../Stratton_Dewar_High_Fe_Anomaly.wms | 2 +- .../Sulpicius_Gallus.wms | 2 +- .../LRO_LROC_Rock_Density/Tycho_Crater.wms | 2 +- .../Alphonsus_Crater.wms | 2 +- .../Anaxagoras_Crater.wms | 2 +- .../Apollo_15.wms | 2 +- .../Apollo_16.wms | 2 +- .../Apollo_Basin.wms | 2 +- .../Aristarchus_1.wms | 2 +- .../Aristarchus_2.wms | 2 +- .../Balmer_Basin.wms | 2 +- .../Bullialdus_Crater.wms | 2 +- .../Gruithuisen_Domes.wms | 2 +- .../Hertzsprung.wms | 2 +- .../Hortensius_Domes.wms | 2 +- .../King_Crater.wms | 2 +- .../Lichtenberg_Crater.wms | 2 +- .../Mare_Crisium.wms | 2 +- .../Montes_Pyrenaeus.wms | 2 +- .../Orientale_1.wms | 2 +- .../Plato_Ejecta.wms | 2 +- .../South_Pole-Aitken_Basin_Interior.wms | 2 +- .../Stratton_Dewar_High_Fe_Anomaly.wms | 2 +- .../Sulpicius_Gallus.wms | 2 +- .../Tycho_Crater.wms | 2 +- .../LRO_Laser_Altimeter/Albedo_Global.wms | 2 +- .../Grayscale.wms | 2 +- .../LRO_NAC_ColorHillshade/Lacus_Mortis.wms | 2 +- .../LRO_NAC_Mosaic/Lacus_Mortis.wms | 2 +- .../nasa-treks/LRO_NAC_Mosaic_0.5mpp.asset | 2 +- .../LRO_NAC_Mosaic_0.5mpp/Von_Karman.wms | 2 +- .../LRO_NAC_Mosaic_1mpp/Von_Karman.wms | 2 +- .../LRO_NAC_PSR_Mosaic_20mpp/N_Pole.wms | 2 +- .../LRO_NAC_PSR_Mosaic_20mpp/S_Pole.wms | 2 +- .../Von_Karman.wms | 2 +- .../nasa-treks/LRO_Narrow_Angle_Camera.asset | 36 +-- .../Apollo_11_Landing_Site.wms | 2 +- .../Apollo_12_Landing_Site.wms | 2 +- .../Apollo_14_Landing_Site.wms | 2 +- .../Apollo_15_Landing_Site.wms | 2 +- .../Apollo_16_Landing_Site.wms | 2 +- .../ColorHillShade_Apollo_17.wms | 2 +- .../HillShade_Apollo_17.wms | 2 +- .../Mosaic_Apollo_11.wms | 2 +- .../Mosaic_Apollo_12.wms | 2 +- .../Mosaic_Apollo_14.wms | 2 +- .../Mosaic_Apollo_15.wms | 2 +- .../Mosaic_Apollo_16.wms | 2 +- .../Mosaic_Apollo_17.wms | 2 +- .../Mosaic_Apollo_17_Landing_Site.wms | 2 +- .../Mosaic_Ingenii.wms | 2 +- .../LRO_Narrow_Angle_Camera/Mosaic_Marius.wms | 2 +- .../Mosaic_Schrodinger.wms | 2 +- .../Mosaic_Schrodinger_Extra.wms | 2 +- .../Mosaic_Schrodinger_Landing_Site.wms | 2 +- .../Mosaic_Schrodinger_NorthEast.wms | 2 +- .../Mosaic_Schrodinger_SouthCenter.wms | 2 +- .../Mosaic_Schrodinger_SouthEast.wms | 2 +- .../Mosaic_Small_Tranquilltatis_1.wms | 2 +- .../Mosaic_Small_Tranquilltatis_2.wms | 2 +- .../Slope_Apollo_17.wms | 2 +- .../LRO_WAC-GLD100_DEM/Grayscale.wms | 2 +- .../LRO_WAC_GLD100_DEM/ColorHillShade.wms | 2 +- .../LRO_WAC_GLD100_DEM/Hillshade.wms | 2 +- .../3He_Dig_Here.wms | 2 +- .../3He_Likely.wms | 2 +- .../3He_More_Likely.wms | 2 +- .../3He_Most_Likely.wms | 2 +- .../3He_Very_Likely.wms | 2 +- .../atmosphere/2000_carbon_monoxide.asset | 8 +- .../communications/geostationary.asset | 2 +- .../earth/satellites/debris/debris_asat.asset | 2 +- .../earth/satellites/misc/brightest.asset | 2 +- .../earth/satellites/misc/spacestations.asset | 4 +- .../earth/satellites/weather/sarsat.asset | 2 +- .../earth/satellites/weather/spire.asset | 2 +- .../earth/satellites/weather/tdrss.asset | 2 +- .../planets/jupiter/minor/carpo_group.asset | 4 +- .../planets/jupiter/minor/inner_group.asset | 2 +- .../planets/jupiter/minor_moons.asset | 14 +- .../Martian_Path_Eastern_Section_DEM.wms | 2 +- .../MEX_HRSC/Martian_Path_MC11_Quad_DEM.wms | 2 +- .../MGS_MOC_Atlas/Global_Color_Mosaic.wms | 2 +- .../mars/layers/nasa-treks/MGS_MOLA.asset | 6 +- .../MGS_MOLA/Global_Color_Hillshade.wms | 2 +- .../layers/nasa-treks/MGS_MOLA/Global_DEM.wms | 2 +- .../MGS_MOLA/Global_Surface_Roughness.wms | 2 +- .../MGS_MOLA_and_Mars_Express_HRSC.asset | 8 +- .../Color_Hillshade_Blend.wms | 2 +- .../Hillshade_Blend.wms | 2 +- .../layers/nasa-treks/MGS_TES/Global_Dust.wms | 2 +- .../nasa-treks/MGS_TES/Global_Dust_Index.wms | 2 +- .../Global_High-Ca_Pyroxene_Abundance.wms | 2 +- .../MGS_TES/Global_Plagioclase_Abundance.wms | 2 +- .../Global_Sheet_SilicatesHigh-Si_Glass.wms | 2 +- .../MGS_TES/Global_Thermal_Inertia.wms | 2 +- .../MO_THEMIS-IR_Day/Global_Mosaic.wms | 2 +- .../MO_THEMIS-IR_Night/Global_Mosaic.wms | 2 +- .../mars/layers/nasa-treks/MRO_CTX.asset | 4 +- .../nasa-treks/MRO_CTX/22n048w_Mosaic.wms | 2 +- .../MRO_CTX/Acheron_Fossae_Mosaic.wms | 2 +- .../MRO_CTX/Acidalia_Plantia_Mosaic.wms | 2 +- .../MRO_CTX/Arabia_Terra_Mosaic.wms | 2 +- .../nasa-treks/MRO_CTX/Aram_Chaos_Mosaic.wms | 2 +- .../nasa-treks/MRO_CTX/Arcadia_Mosaic.wms | 2 +- .../MRO_CTX/Arcadia_Planitia_Mosaic.wms | 2 +- .../nasa-treks/MRO_CTX/Ausonia_Mosaic.wms | 2 +- .../nasa-treks/MRO_CTX/Cerberus_Mosaic.wms | 2 +- .../nasa-treks/MRO_CTX/Columbia_Hills_DEM.wms | 2 +- .../MRO_CTX/Columbus_Crater_Mosaic.wms | 2 +- .../MRO_CTX/Copernicus_Crater_Mosaic.wms | 2 +- .../MRO_CTX/Coprates_EMelas_Chasm_Mosaic.wms | 2 +- .../MRO_CTX/Curiosity_Roving_Site_Mosaic.wms | 2 +- .../MRO_CTX/Deuteronilus_Mensae_Mosaic.wms | 2 +- .../nasa-treks/MRO_CTX/East_Melas_DEM.wms | 2 +- .../MRO_CTX/East_Melas_Hillshade.wms | 2 +- .../Eastern_Valles_Marineris_Mosaic.wms | 2 +- .../Equatorial_Valles_Marineries_Mosaic.wms | 2 +- .../MRO_CTX/Erebus_Montes_Mosaic.wms | 2 +- .../nasa-treks/MRO_CTX/Gale_Crater_Mosaic.wms | 2 +- .../MRO_CTX/Gusev_Crater_Mosaic.wms | 2 +- .../nasa-treks/MRO_CTX/Hadriacus_Mosaic.wms | 2 +- .../nasa-treks/MRO_CTX/Hale_Crater_Mosaic.wms | 2 +- .../MRO_CTX/Hebrus_Valles_Mosaic.wms | 2 +- .../MRO_CTX/Hellas_Eastern_Rim_Mosaic.wms | 2 +- .../MRO_CTX/Hellas_Mesopotamia_Mosaic.wms | 2 +- .../MRO_CTX/Huygens_Crater_Mosaic.wms | 2 +- .../MRO_CTX/Hypanis_Delta_Mosaic.wms | 2 +- .../MRO_CTX/Ismenius_Cavus_Mosaic.wms | 2 +- .../nasa-treks/MRO_CTX/Jezero_Mosaic.wms | 2 +- .../MRO_CTX/Kasei_Valles_Mosaic.wms | 2 +- .../MRO_CTX/Mawrth_Vallis_Mosaic.wms | 2 +- .../MRO_CTX/McLaughlin_Crater_Mosaic.wms | 2 +- ...idiani_Planum_-_Sinus_Meridiani_Mosaic.wms | 2 +- .../Mosaic_Global_Uncontrolled_Caltech.wms | 2 +- .../nasa-treks/MRO_CTX/Mosaic_InSight.wms | 2 +- .../MRO_CTX/Mosaic_Olympus_Mons.wms | 2 +- .../MRO_CTX/Newton_Crater_Mosaic.wms | 2 +- .../MRO_CTX/Noctis_Landing_Mosaic.wms | 2 +- .../MRO_CTX/Protonilus_Mensae_Mosaic.wms | 2 +- .../Southern_Nectaris_Fossae_Mosaic.wms | 2 +- .../MRO_CTX/Victoria_Crater_DEM.wms | 2 +- .../MRO_CTX/Viking_1_Landing_Site_Mosaic.wms | 2 +- .../MRO_CTX/Viking_2_Landing_Site_Mosaic.wms | 2 +- .../MRO_CTX/West_Candor_Chasma_Mosaic.wms | 2 +- .../nasa-treks/MRO_CTX/West_Candor_DEM.wms | 2 +- .../MRO_CTX/Western_Noachis_Terra_Mosaic.wms | 2 +- .../MRO_CTX/Zephyria_Planum_Mosaic.wms | 2 +- .../mars/layers/nasa-treks/MRO_HiRISE.asset | 20 +- .../001918_1735_001984_1735_DEM.wms | 2 +- .../042014_1760_042647_1760_DEM.wms | 2 +- .../042753_1930_042252_1930_DEM.wms | 2 +- .../nasa-treks/MRO_HiRISE/1183_0000_DEM.wms | 2 +- .../MRO_HiRISE/Columbia_Hills_Mosaic.wms | 2 +- .../Curiosity_Roving_Site_Mosaic.wms | 2 +- .../nasa-treks/MRO_HiRISE/Gale_Crater_DEM.wms | 2 +- .../Marth_Crater_West_Rim_Mosaic.wms | 2 +- .../Martian_Ares_3_Landing_Site_Mosaic.wms | 2 +- .../Martian_Ares_4_Landing_Site_Mosaic.wms | 2 +- .../MRO_HiRISE/Mosaic_Columbia_Hills.wms | 2 +- .../Mosaic_Insight_Landing_Site.wms | 2 +- .../Mosaic_Jezero_NE_Syrtis_Midway.wms | 2 +- .../MRO_HiRISE/Mosaic_Opportunity.wms | 2 +- .../Opportunity_Roving_Site_Mosaic.wms | 2 +- .../Phoenix_Landing_Site_Mosaic.wms | 2 +- .../Sojourner_Roving_Site_Mosaic.wms | 2 +- .../Southwest_Candor_Chasma_Mosaic.wms | 2 +- .../MRO_HiRISE/Spirit_Roving_Site_Mosaic.wms | 2 +- .../Viking_1_Landing_Site_Mosaic.wms | 2 +- .../Viking_2_Landing_Site_Mosaic.wms | 2 +- .../layers/nasa-treks/MSL/Pahrump_Hills.wms | 2 +- ...tian_Path_Eastern_Section_Color_Mosaic.wms | 2 +- .../Martian_Path_MC11_Quad_Color_Mosaic.wms | 2 +- .../Martian_Path_MC11_Quad_Mosaic.wms | 2 +- .../Mawrth_Vallis_Color_Mosaic.wms | 2 +- .../Mawrth_Vallis_Mosaic.wms | 2 +- .../Viking_1_Landing_Site_Mosaic.wms | 2 +- .../Viking_2_Landing_Site_Mosaic.wms | 2 +- .../Mars_Reconnaissance_Orbiter_CTX.asset | 252 +++++++++--------- .../Color_Slope_Apollinaris_12S182E.wms | 2 +- .../Color_Slope_Apollinaris_13S182E.wms | 2 +- .../Color_Slope_Apollinaris_14S184E.wms | 2 +- .../Color_Slope_Coprates_10S291E.wms | 2 +- .../Color_Slope_Coprates_11S293E.wms | 2 +- .../Color_Slope_Coprates_13S293E.wms | 2 +- .../Color_Slope_Deuteronius_37N024E.wms | 2 +- .../Color_Slope_Deuteronius_38N024E.wms | 2 +- .../Color_Slope_Deuteronius_39N024E.wms | 2 +- .../Color_Slope_Deuteronius_40N024E.wms | 2 +- .../Color_Slope_East_Melas_11S289E.wms | 2 +- .../Color_Slope_East_Melas_11S291E.wms | 2 +- .../Color_Slope_East_Melas_12S289E_D01.wms | 2 +- .../Color_Slope_East_Melas_12S289E_F18.wms | 2 +- .../Color_Slope_East_Melas_12S290E.wms | 2 +- .../Color_Slope_East_Melas_12S291E_F14.wms | 2 +- .../Color_Slope_East_Melas_12S291E_F21.wms | 2 +- .../Color_Slope_East_Melas_12S291E_J01.wms | 2 +- .../Color_Slope_East_Melas_13S289E.wms | 2 +- .../Color_Slope_East_Melas_16S291E_D22.wms | 2 +- .../HillShade_Apollinaris_12S182E.wms | 2 +- .../HillShade_Apollinaris_13S182E.wms | 2 +- .../HillShade_Apollinaris_14S184E.wms | 2 +- .../HillShade_Coprates_10S291E.wms | 2 +- .../HillShade_Coprates_11S293E.wms | 2 +- .../HillShade_Coprates_13S293E.wms | 2 +- .../HillShade_Deuteronius_37N024E.wms | 2 +- .../HillShade_Deuteronius_38N024E.wms | 2 +- .../HillShade_Deuteronius_39N024E.wms | 2 +- .../HillShade_Deuteronius_40N024E.wms | 2 +- .../HillShade_East_Melas_11S289E.wms | 2 +- .../HillShade_East_Melas_11S291E.wms | 2 +- .../HillShade_East_Melas_12S289E_D01.wms | 2 +- .../HillShade_East_Melas_12S289E_F18.wms | 2 +- .../HillShade_East_Melas_12S290E.wms | 2 +- .../HillShade_East_Melas_12S291E_F14.wms | 2 +- .../HillShade_East_Melas_12S291E_F21.wms | 2 +- .../HillShade_East_Melas_12S291E_J01.wms | 2 +- .../HillShade_East_Melas_13S289E_D10.wms | 2 +- .../HillShade_East_Melas_16S291E_D22.wms | 2 +- .../Hilllshade_Deuteronilus.wms | 2 +- .../Mosaic_Apollinaris_12S182E.wms | 2 +- .../Mosaic_Apollinaris_13S182E.wms | 2 +- .../Mosaic_Apollinaris_14S184E.wms | 2 +- .../Mosaic_Coprates_10S291E.wms | 2 +- .../Mosaic_Coprates_11S293E.wms | 2 +- .../Mosaic_Coprates_13S293E.wms | 2 +- .../Mosaic_Deuteronius_38N024E.wms | 2 +- .../Mosaic_Deuteronius_39N024E.wms | 2 +- .../Mosaic_Deuteronius_40N024E.wms | 2 +- .../Mosaic_East_Melas_11S289E.wms | 2 +- .../Mosaic_East_Melas_11S291E.wms | 2 +- .../Mosaic_East_Melas_12S289E_D01.wms | 2 +- .../Mosaic_East_Melas_12S289E_F18.wms | 2 +- .../Mosaic_East_Melas_12S290E.wms | 2 +- .../Mosaic_East_Melas_12S291E_F14.wms | 2 +- .../Mosaic_East_Melas_12S291E_F21.wms | 2 +- .../Mosaic_East_Melas_12S291E_J01.wms | 2 +- .../Mosaic_East_Melas_13S289E_D10.wms | 2 +- .../Mosaic_East_Melas_16S291E.wms | 2 +- .../Slope_Apollinaris_12S182E.wms | 2 +- .../Slope_Apollinaris_13S182E.wms | 2 +- .../Slope_Apollinaris_14S184E.wms | 2 +- .../colorlayers/messenger_bdr_sweden.asset | 2 +- .../colorlayers/messenger_bdr_utah.asset | 2 +- .../mercury/layers/nasa-treks/MSGR_MDIS.asset | 6 +- .../MSGR_MDIS/ColorHillshade_Global.wms | 2 +- .../nasa-treks/MSGR_MDIS/Hillshade_Global.wms | 2 +- .../MSGR_MDIS/Slope_Colorized_Global.wms | 2 +- .../layers/nasa-treks/MSGR_MDIS_Mosaic.asset | 20 +- .../Aksakov_Crater_Peak_Ring.wms | 2 +- .../Crater_near_Dali_Crater.wms | 2 +- .../Crater_near_Geddes_Crater.wms | 2 +- .../MSGR_MDIS_Mosaic/Degas_Crater.wms | 2 +- .../MSGR_MDIS_Mosaic/Kertesz_Crater.wms | 2 +- .../North-West_of_Degas_Crater.wms | 2 +- .../MSGR_MDIS_Mosaic/Praxiteles_Peak_Ring.wms | 2 +- .../MSGR_MDIS_Mosaic/Raditladi_Crater.wms | 2 +- .../MSGR_MDIS_Mosaic/Sander_Crater.wms | 2 +- .../Sholem_Aleichem_Crater_Wall.wms | 2 +- .../layers/nasa-treks/MSGR_MDIS_Slope.asset | 20 +- .../Aksakov_Crater_Peak_Ring.wms | 2 +- .../Crater_near_Dali_Crater.wms | 2 +- .../Crater_near_Geddes_Crater.wms | 2 +- .../MSGR_MDIS_Slope/Degas_Crater.wms | 2 +- .../MSGR_MDIS_Slope/Kertesz_Crater.wms | 2 +- .../North-West_of_Degas_Crater.wms | 2 +- .../MSGR_MDIS_Slope/Praxiteles_Peak_Ring.wms | 2 +- .../MSGR_MDIS_Slope/Raditladi_Crater.wms | 2 +- .../MSGR_MDIS_Slope/Sander_Crater.wms | 2 +- .../Sholem_Aleichem_Crater_Wall.wms | 2 +- .../planets/neptune/minor_moons.asset | 14 +- .../planets/saturn/minor_moons.asset | 14 +- .../planets/uranus/minor_moons.asset | 14 +- .../solarsystem/sssb/centaur_asteroid.asset | 2 +- .../solarsystem/sssb/encke-type_comet.asset | 2 +- .../scene/solarsystem/sun/EUV_layer.asset | 3 +- .../scene/solarsystem/sun/habitablezone.asset | 2 +- .../util/lua_state_machine_helper.asset | 2 +- data/profiles/messenger.profile | 2 +- modules/CMakeLists.txt | 6 +- modules/atmosphere/CMakeLists.txt | 2 +- .../atmosphere/shaders/atmosphere_common.glsl | 16 +- .../shaders/atmosphere_deferred_fs.glsl | 92 +++---- .../atmosphere/shaders/calculation_gs.glsl | 2 +- .../atmosphere/shaders/deltaE_calc_fs.glsl | 2 +- .../atmosphere/shaders/deltaJ_calc_fs.glsl | 18 +- .../atmosphere/shaders/deltaS_calc_fs.glsl | 6 +- .../shaders/deltaS_sup_calc_fs.glsl | 2 +- .../shaders/inScattering_calc_fs.glsl | 10 +- .../shaders/inScattering_sup_calc_fs.glsl | 6 +- .../shaders/irradiance_final_fs.glsl | 4 +- .../shaders/irradiance_sup_calc_fs.glsl | 4 +- .../shaders/transmittance_calc_fs.glsl | 14 +- .../rendering/renderabletrailtrajectory.cpp | 14 +- .../rendering/renderabletrailtrajectory.h | 4 +- modules/base/shaders/model_fs.glsl | 2 +- modules/base/shaders/model_vs.glsl | 2 +- .../shaders/renderabletrail_apple_fs.glsl | 4 +- .../shaders/renderabletrail_apple_vs.glsl | 6 +- modules/base/shaders/renderabletrail_fs.glsl | 8 +- modules/base/shaders/renderabletrail_vs.glsl | 6 +- .../digitaluniverse/shaders/billboard_fs.glsl | 2 +- .../shaders/billboardpolygon_gs.glsl | 2 +- .../digitaluniverse/shaders/dumesh_fs.glsl | 2 +- modules/fieldlines/shaders/fieldline_fs.glsl | 2 +- .../renderablefieldlinessequence.cpp | 4 +- .../rendering/renderablefieldlinessequence.h | 2 +- modules/gaia/scripts/filtering.lua | 2 +- modules/gaia/shaders/gaia_billboard_fs.glsl | 2 +- modules/gaia/shaders/gaia_billboard_ge.glsl | 20 +- .../gaia/shaders/gaia_billboard_nofbo_fs.glsl | 6 +- modules/gaia/shaders/gaia_point_fs.glsl | 2 +- modules/gaia/shaders/gaia_ssbo_vs.glsl | 48 ++-- .../gaia_tonemapping_billboard_fs.glsl | 6 +- .../shaders/gaia_tonemapping_point_fs.glsl | 30 +-- modules/gaia/shaders/gaia_vbo_vs.glsl | 34 +-- .../globebrowsing/ext/gdal/include/cpl_conv.h | 4 +- .../globebrowsing/ext/gdal/include/cpl_http.h | 2 +- .../globebrowsing/globebrowsingmodule_lua.inl | 2 +- .../shaders/texturetilemapping.glsl | 2 +- modules/iswa/shaders/dataplane_fs.glsl | 2 +- modules/iswa/shaders/dataplane_vs.glsl | 2 +- modules/iswa/shaders/datasphere_fs.glsl | 4 +- modules/iswa/shaders/datasphere_vs.glsl | 2 +- modules/iswa/shaders/textureplane_vs.glsl | 2 +- modules/kameleonvolume/CMakeLists.txt | 2 +- modules/multiresvolume/shaders/bounds_vs.glsl | 4 +- modules/multiresvolume/shaders/raycast.glsl | 4 +- modules/skybrowser/shaders/target_vs.glsl | 2 +- modules/skybrowser/skybrowsermodule_lua.inl | 2 +- modules/skybrowser/src/browser.cpp | 2 +- modules/skybrowser/src/targetbrowserpair.cpp | 4 +- modules/skybrowser/src/wwtcommunicator.cpp | 6 +- modules/skybrowser/src/wwtdatahandler.cpp | 2 +- modules/space/shaders/convolution_fs.glsl | 2 +- modules/space/shaders/debrisViz_fs.glsl | 6 +- modules/space/shaders/debrisViz_vs.glsl | 2 +- modules/space/shaders/psfToTexture_fs.glsl | 6 +- modules/space/shaders/rings_fs.glsl | 2 +- modules/space/shaders/star_fs.glsl | 8 +- modules/space/shaders/star_ge.glsl | 28 +- modules/space/shaders/travelspeed_fs.glsl | 2 +- .../crawl_rosetta_images.js | 6 +- .../spacecraftinstruments/shaders/fov_vs.glsl | 2 +- .../shaders/renderableModelProjection_fs.glsl | 2 +- .../shaders/renderableModelProjection_vs.glsl | 2 +- .../shaders/renderableModel_fs.glsl | 6 +- .../shaders/renderableModel_vs.glsl | 2 +- .../renderablePlanetProjection_fs.glsl | 8 +- .../shaders/renderablePlanet_vs.glsl | 6 +- .../shaders/terminatorshadow_vs.glsl | 2 +- modules/toyvolume/shaders/bounds_vs.glsl | 4 +- modules/toyvolume/shaders/raycast.glsl | 2 +- modules/volume/shaders/bounds_vs.glsl | 4 +- .../cmake/patch/cmake/cef_variables.cmake | 2 +- .../webbrowser/cmake/webbrowser_helpers.cmake | 2 +- shaders/PowerScaling/powerScalingMath.hglsl | 4 +- shaders/PowerScaling/powerScaling_vs.hglsl | 10 +- shaders/floatoperations.glsl | 2 +- shaders/framebuffer/fxaa.frag | 26 +- shaders/framebuffer/hdrAndFiltering.frag | 4 +- shaders/framebuffer/raycastframebuffer.frag | 8 +- shaders/framebuffer/renderframebuffer.frag | 10 +- src/documentation/documentation.cpp | 1 - src/interaction/touchbar.mm | 8 +- src/navigation/path.cpp | 2 +- support/coding/check_style_guide.py | 4 +- support/coding/codegen | 2 +- tests/test_documentation.cpp | 4 +- tests/test_lrucache.cpp | 2 +- tests/test_profile.cpp | 4 +- tests/test_scriptscheduler.cpp | 2 +- tests/test_spicemanager.cpp | 14 +- tests/test_timequantizer.cpp | 4 +- 708 files changed, 1265 insertions(+), 1269 deletions(-) diff --git a/CREDITS.md b/CREDITS.md index 453225ea81..c8c08729da 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -12,7 +12,7 @@ Jonas Strandstedt Michal Marcinkowski Joakim Kilby Lovisa Hassler -Mikael Petterson +Mikael Petterson Erik Sundén Stefan Lindblad Corrie Roe diff --git a/Jenkinsfile b/Jenkinsfile index 7405ada9a9..69935d0b96 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -16,7 +16,7 @@ if (env.CHANGE_BRANCH) { def readDir() { def dirsl = []; new File("${workspace}").eachDir() { - dirs -> println dirs.getName() + dirs -> println dirs.getName() if (!dirs.getName().startsWith('.')) { dirsl.add(dirs.getName()); } @@ -27,7 +27,7 @@ def readDir() { def moduleCMakeFlags() { def modules = []; // using new File doesn't work as it is not allowed in the sandbox - + if (isUnix()) { modules = sh(returnStdout: true, script: 'ls -d modules/*').trim().split('\n'); }; @@ -61,8 +61,8 @@ parallel tools: { recordIssues( id: 'tools-cppcheck', tool: cppCheck(pattern: 'build/cppcheck.xml') - ) - } + ) + } cleanWs() } // node('tools') }, @@ -101,7 +101,7 @@ linux_gcc_make: { testHelper.runUnitTests('bin/GhoulTest'); } } - + stage('linux-gcc-make/test-openspace') { timeout(time: 2, unit: 'MINUTES') { testHelper.runUnitTests('bin/OpenSpaceTest'); @@ -264,7 +264,7 @@ windows_msvc: { testHelper.runUnitTests('bin\\Debug\\codegentest'); } } - + stage('windows-msvc/test-sgct') { timeout(time: 2, unit: 'MINUTES') { testHelper.runUnitTests('bin\\Debug\\SGCTTest'); @@ -282,7 +282,7 @@ windows_msvc: { testHelper.runUnitTests('bin\\Debug\\OpenSpaceTest'); } } - } + } cleanWs() } // node('windows') } @@ -343,7 +343,7 @@ macos_make: { testHelper.runUnitTests('bin/Debug/OpenSpaceTest'); } } - } + } cleanWs() } // node('macos') } @@ -384,7 +384,7 @@ macos_xcode: { testHelper.runUnitTests('bin/Debug/OpenSpaceTest'); } } - } + } cleanWs() } // node('macos') } diff --git a/data/assets/actions/planets/planet_lighting.asset b/data/assets/actions/planets/planet_lighting.asset index 509988774d..b3b2463181 100644 --- a/data/assets/actions/planets/planet_lighting.asset +++ b/data/assets/actions/planets/planet_lighting.asset @@ -28,7 +28,7 @@ local list = openspace.getProperty("Scene." .. node .. ".Renderable.Layers.Night if (#list > 0) then openspace.setPropertyValue(list[1], true) else - openspace.setPropertyValueSingle("Scene." .. node .. ".Renderable.PerformShading", true) + openspace.setPropertyValueSingle("Scene." .. node .. ".Renderable.PerformShading", true) end if openspace.hasSceneGraphNode(node .. "Atmosphere") then openspace.setPropertyValueSingle("Scene." .. node .. "Atmosphere.Renderable.SunFollowingCamera", false) diff --git a/data/assets/actions/trails/on_off_all_minor_moons.asset b/data/assets/actions/trails/on_off_all_minor_moons.asset index b9d74ac2aa..08bdccaa7d 100644 --- a/data/assets/actions/trails/on_off_all_minor_moons.asset +++ b/data/assets/actions/trails/on_off_all_minor_moons.asset @@ -8,14 +8,14 @@ local minormoons_on = { local moons = openspace.getProperty('{moon_minor}.Renderable.Enabled'); local moons_fade = openspace.getProperty('{moon_minor}.Renderable.Fade'); - for i, v in pairs(trails_fade) do + for i, v in pairs(trails_fade) do openspace.setPropertyValueSingle(trails[i], true) - openspace.setPropertyValueSingle(v, 1, 2, 'Linear') + openspace.setPropertyValueSingle(v, 1, 2, 'Linear') end - for i, v in pairs(moons_fade) do + for i, v in pairs(moons_fade) do openspace.setPropertyValueSingle(moons[i], true) - openspace.setPropertyValueSingle(v, 1, 2, 'Linear') + openspace.setPropertyValueSingle(v, 1, 2, 'Linear') end ]], Documentation = "Turn ON minor moons and their trails for all planets in the solar system", @@ -33,12 +33,12 @@ local minormoons_off = { local moons = openspace.getProperty('{moon_minor}.Renderable.Enabled'); local moons_fade = openspace.getProperty('{moon_minor}.Renderable.Fade'); - for i, v in pairs(trails_fade) do - openspace.setPropertyValueSingle(v, 0, 2, 'Linear', "openspace.setPropertyValueSingle('" .. trails[i] .. "', false)" ) + for i, v in pairs(trails_fade) do + openspace.setPropertyValueSingle(v, 0, 2, 'Linear', "openspace.setPropertyValueSingle('" .. trails[i] .. "', false)" ) end for i, v in pairs(moons_fade) do - openspace.setPropertyValueSingle(v, 0, 2, 'Linear', "openspace.setPropertyValueSingle('" .. moons[i] .. "', false)" ) + openspace.setPropertyValueSingle(v, 0, 2, 'Linear', "openspace.setPropertyValueSingle('" .. moons[i] .. "', false)" ) end ]], Documentation = "Turn OFF minor moons and their trails for all planets in the solar system", diff --git a/data/assets/actions/trails/toggle_all_minor_moon_trails.asset b/data/assets/actions/trails/toggle_all_minor_moon_trails.asset index 369f3365cf..0de865f09e 100644 --- a/data/assets/actions/trails/toggle_all_minor_moon_trails.asset +++ b/data/assets/actions/trails/toggle_all_minor_moon_trails.asset @@ -2,9 +2,9 @@ local toggle_minormoon_trails = { Identifier = "os_default.toggle_minormoon_trails", Name = "Toggle Minor Moon Trails", Command = [[ - local list = openspace.getProperty('{moonTrail_minor}.Renderable.Enabled'); - for _,v in pairs(list) do - openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) + local list = openspace.getProperty('{moonTrail_minor}.Renderable.Enabled'); + for _,v in pairs(list) do + openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) end ]], Documentation = "Toggle on/off minor moon trails for all planets in the solar system", diff --git a/data/assets/customization/globebrowsing.asset b/data/assets/customization/globebrowsing.asset index 1e74a9cb64..7aecfac6bb 100644 --- a/data/assets/customization/globebrowsing.asset +++ b/data/assets/customization/globebrowsing.asset @@ -23,7 +23,7 @@ local vrt_folders = { -- if areas overlap (for example CTX and HiRISE) and CTX is specified *after* HiRISE, -- CTX will stomp over the HiRISE. - -- tl;dr: Specify CTX folders first, then HiRISE + -- tl;dr: Specify CTX folders first, then HiRISE -- example: "C:/OpenSpace/GlobeBrowsingData/Mars/CTX" -- We recommend using this folder for CTX diff --git a/data/assets/events/toggle_sun.asset b/data/assets/events/toggle_sun.asset index 8d727273ec..1af8f1eaff 100644 --- a/data/assets/events/toggle_sun.asset +++ b/data/assets/events/toggle_sun.asset @@ -19,7 +19,7 @@ local toggle_sun = { openspace.setPropertyValueSingle("Scene.Sun.Renderable.Fade", 0.0, 1.0) end ]], - Documentation = [[Toggles the visibility of the Sun glare and the Sun globe when the + Documentation = [[Toggles the visibility of the Sun glare and the Sun globe when the camera is approaching either so that from far away the Sun Glare is rendered and when close up, the globe is rendered instead]], GuiPath = "/Solar System/Sun", diff --git a/data/assets/scene/digitaluniverse/starorbits.asset b/data/assets/scene/digitaluniverse/starorbits.asset index d23aa45a40..e5d1cbcfe7 100644 --- a/data/assets/scene/digitaluniverse/starorbits.asset +++ b/data/assets/scene/digitaluniverse/starorbits.asset @@ -191,7 +191,7 @@ asset.meta = { Version = "1.1", Description = [[Select Star Orbital paths that delineate their trajectory around the Milky Way over 1 billion years into the future. Included: Sun, Barnards, Kapteyns, - Lacaille 9352, LSR1826+3014, LSRJ0822+1700, PM_J13420-3415.

Data + Lacaille 9352, LSR1826+3014, LSRJ0822+1700, PM_J13420-3415.

Data Reference: Sebastien Lepine (AMNH)]], Author = "Brian Abbott (AMNH)", URL = "https://www.amnh.org/research/hayden-planetarium/digital-universe", diff --git a/data/assets/scene/milkyway/milkyway/eso.asset b/data/assets/scene/milkyway/milkyway/eso.asset index 190fa46693..37f64415bc 100644 --- a/data/assets/scene/milkyway/milkyway/eso.asset +++ b/data/assets/scene/milkyway/milkyway/eso.asset @@ -48,7 +48,7 @@ asset.export(object) asset.meta = { Name = "MilkyWay Galaxy (ESO)", Version = "1.0", - Description = [[This asset contains an alternate to the Digital Universe image for the + Description = [[This asset contains an alternate to the Digital Universe image for the Milky Way from ESO]], Author = "ESO/S. Brunier", URL = "https://www.eso.org/public/usa/images/eso0932a/", diff --git a/data/assets/scene/milkyway/objects/orionnebula/cluster.asset b/data/assets/scene/milkyway/objects/orionnebula/cluster.asset index e507f89499..f5e2c760c4 100644 --- a/data/assets/scene/milkyway/objects/orionnebula/cluster.asset +++ b/data/assets/scene/milkyway/objects/orionnebula/cluster.asset @@ -36,16 +36,16 @@ local OrionClusterStars = { Path = "/Milky Way/Orion", Description = [[In order to have an accurate depiction of the Orion nebula, we need to include the star cluster that was birthed from it. We turned to a study of the - cluster's stellar population by Lynne Hillenbrand, who was working at the University of - California, Berkeley at the time. The catalog from her paper contains more than 1500 - stars, about half the stars in the actual cluster. The cluster is very crowded, with a - peak density of 10000 stars per cubic parsec over a wide range of masses from a tenth the - sun's mass up to 50 times its mass. We were presented with one problem: there are no - distances. For the stellar distances, we needed to deduce them by statistical methods. - Knowing the size of the cluster and approximating the shape to be roughly spherical, we - placed each star along a line of sight through this imaginary sphere centered on the - cluster. In this sense, these data are observed data and the view from Earth is accurate. - But the distance of each star has been derived from this educated-guess approach for the + cluster's stellar population by Lynne Hillenbrand, who was working at the University of + California, Berkeley at the time. The catalog from her paper contains more than 1500 + stars, about half the stars in the actual cluster. The cluster is very crowded, with a + peak density of 10000 stars per cubic parsec over a wide range of masses from a tenth the + sun's mass up to 50 times its mass. We were presented with one problem: there are no + distances. For the stellar distances, we needed to deduce them by statistical methods. + Knowing the size of the cluster and approximating the shape to be roughly spherical, we + placed each star along a line of sight through this imaginary sphere centered on the + cluster. In this sense, these data are observed data and the view from Earth is accurate. + But the distance of each star has been derived from this educated-guess approach for the cluster distribution]] } } diff --git a/data/assets/scene/milkyway/objects/orionnebula/nebula.asset b/data/assets/scene/milkyway/objects/orionnebula/nebula.asset index 74f785af05..e2dc3d5551 100644 --- a/data/assets/scene/milkyway/objects/orionnebula/nebula.asset +++ b/data/assets/scene/milkyway/objects/orionnebula/nebula.asset @@ -28,18 +28,18 @@ local NebulaHolder = { GUI = { Name = "Orion Nebula", Path = "/Milky Way/Orion", - Description = [[In the Digital Universe model of the Orion Nebula, we depict the - ionization front effectively as a terrain, with a flat Hubble image of the nebula mapped + Description = [[In the Digital Universe model of the Orion Nebula, we depict the + ionization front effectively as a terrain, with a flat Hubble image of the nebula mapped on the undulating surface. In reality, the ionization front has a slight thickness to - it - about a third of a light year - but is quite thin compared to the overall size of - the nebula, which stretches about ten light years from side to side.

Close into - the center, we see small teardrop-shaped structures with their narrow ends pointing away - from the bright star: these are protoplanetary disks, or proplyds, of dense gas and dust - surrounding young stars. The larger formations that one sees farther away from the center - of the nebula take on a cup-like shape, with the narrow end pointing away from the - nebulas center. These enormous structures are bow shocks that delineate the region where - highspeed winds from the central star slow from supersonic to subsonic speeds. You can - think of an HII region as a sort of tremendous explosion, taking place over millennia, + it - about a third of a light year - but is quite thin compared to the overall size of + the nebula, which stretches about ten light years from side to side.

Close into + the center, we see small teardrop-shaped structures with their narrow ends pointing away + from the bright star: these are protoplanetary disks, or proplyds, of dense gas and dust + surrounding young stars. The larger formations that one sees farther away from the center + of the nebula take on a cup-like shape, with the narrow end pointing away from the + nebulas center. These enormous structures are bow shocks that delineate the region where + highspeed winds from the central star slow from supersonic to subsonic speeds. You can + think of an HII region as a sort of tremendous explosion, taking place over millennia, and the bow shocks are part of the outward rush of material]] } } diff --git a/data/assets/scene/solarsystem/heliosphere/bastille_day/magnetogram_textures.asset b/data/assets/scene/solarsystem/heliosphere/bastille_day/magnetogram_textures.asset index 20ee5a17a8..a86ea5eccd 100644 --- a/data/assets/scene/solarsystem/heliosphere/bastille_day/magnetogram_textures.asset +++ b/data/assets/scene/solarsystem/heliosphere/bastille_day/magnetogram_textures.asset @@ -61,7 +61,7 @@ asset.meta = { Name = "Bastille Day magnetogram textures", Version = "1.1", Description = [[This asset adds multiple magnetogram textures to the Sun. In addition - it provides an action to cycle through the textures. See magnetogram.asset for details + it provides an action to cycle through the textures. See magnetogram.asset for details of the textures]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", diff --git a/data/assets/scene/solarsystem/missions/apollo/11/actions.asset b/data/assets/scene/solarsystem/missions/apollo/11/actions.asset index e8c5fd8ef9..cbdff22025 100644 --- a/data/assets/scene/solarsystem/missions/apollo/11/actions.asset +++ b/data/assets/scene/solarsystem/missions/apollo/11/actions.asset @@ -4,13 +4,13 @@ local apollo11_setup_landingsite = { Identifier = "os.missions.apollo11.setup.landingsite", Name = "Setup Apollo 11 landing site", Command = [[ - openspace.time.setTime('1969 JUL 20 20:17:40'); - openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.HeightLayers.LRO_NAC_Apollo_11.Enabled', true); - openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A11_M177481212_p_longlat.Enabled', true); - openspace.setPropertyValueSingle('Scene.Moon.Renderable.TargetLodScaleFactor', 20.11); - openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'Apollo11LemPosition'); - openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil); - openspace.setPropertyValueSingle('Scene.Apollo11MoonTrail.Renderable.Enabled', true); + openspace.time.setTime('1969 JUL 20 20:17:40'); + openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.HeightLayers.LRO_NAC_Apollo_11.Enabled', true); + openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A11_M177481212_p_longlat.Enabled', true); + openspace.setPropertyValueSingle('Scene.Moon.Renderable.TargetLodScaleFactor', 20.11); + openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'Apollo11LemPosition'); + openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil); + openspace.setPropertyValueSingle('Scene.Apollo11MoonTrail.Renderable.Enabled', true); openspace.setPropertyValueSingle('Scene.Apollo11LemTrail.Renderable.Enabled', true); ]], Documentation = "Setup for Apollo 11 landing site", diff --git a/data/assets/scene/solarsystem/missions/apollo/17/actions.asset b/data/assets/scene/solarsystem/missions/apollo/17/actions.asset index 40fcfc2ae9..591364b1b2 100644 --- a/data/assets/scene/solarsystem/missions/apollo/17/actions.asset +++ b/data/assets/scene/solarsystem/missions/apollo/17/actions.asset @@ -4,17 +4,17 @@ local apollo17_setup_landingsite = { Identifier = "os.missions.apollo17.setup.landingsite", Name = "Setup for Apollo 17 landing site", Command = [[ - openspace.time.setTime('1972 DEC 12 19:47:11'); - openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_travmap.BlendMode', 0.000000); - openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_travmap.Enabled', true); - openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.HeightLayers.LRO_NAC_Apollo_17.Enabled', true); - openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_LEM.Enabled', true); - openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_LEM.BlendMode', 0.000000); - openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_NAC_Alt_p.Enabled', true); + openspace.time.setTime('1972 DEC 12 19:47:11'); + openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_travmap.BlendMode', 0.000000); + openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_travmap.Enabled', true); + openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.HeightLayers.LRO_NAC_Apollo_17.Enabled', true); + openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_LEM.Enabled', true); + openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_LEM.BlendMode', 0.000000); + openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_NAC_Alt_p.Enabled', true); openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_NAC_Alt_p.BlendMode', 0.000000); - openspace.setPropertyValueSingle('Scene.Moon.Renderable.TargetLodScaleFactor', 20.17); - openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'Apollo17LemModel'); - openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil); + openspace.setPropertyValueSingle('Scene.Moon.Renderable.TargetLodScaleFactor', 20.17); + openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'Apollo17LemModel'); + openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil); openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A17_station7.BlendMode', 0.000000); ]], Documentation = "Setup for Apollo 17 landing site", diff --git a/data/assets/scene/solarsystem/missions/apollo/8/actions.asset b/data/assets/scene/solarsystem/missions/apollo/8/actions.asset index cd66969245..49c5458da8 100644 --- a/data/assets/scene/solarsystem/missions/apollo/8/actions.asset +++ b/data/assets/scene/solarsystem/missions/apollo/8/actions.asset @@ -2,10 +2,10 @@ local apollo8_setup_earthrise = { Identifier = "os.missions.apollo8.setup.earthrise", Name = "Set Earthrise time", Command = [[ - openspace.time.setPause(true); - openspace.time.setDeltaTime(1); - openspace.time.setTime('1968 DEC 24 16:37:31'); - openspace.navigation.setNavigationState({Anchor = 'Apollo8', Position = { 1.494592E1, 3.236777E1, -4.171296E1 }, ReferenceFrame = 'Root', Up = { 0.960608E0, -0.212013E0, 0.179675E0 }}); + openspace.time.setPause(true); + openspace.time.setDeltaTime(1); + openspace.time.setTime('1968 DEC 24 16:37:31'); + openspace.navigation.setNavigationState({Anchor = 'Apollo8', Position = { 1.494592E1, 3.236777E1, -4.171296E1 }, ReferenceFrame = 'Root', Up = { 0.960608E0, -0.212013E0, 0.179675E0 }}); openspace.setPropertyValue('*Trail.Renderable.Enabled', false); ]], Documentation = "Jump to right before the earthrise photo", @@ -17,7 +17,7 @@ local apollo8_setup_launch = { Identifier = "os.missions.apollo8.setup.launch", Name = "Set Apollo 8 launch time", Command = [[ - openspace.time.setTime('1968-12-21T12:51:37.00'); + openspace.time.setTime('1968-12-21T12:51:37.00'); openspace.setPropertyValueSingle('Scene.Apollo8LaunchTrail.Renderable.Enabled', true); ]], Documentation = "Jump to time right before Apollo 8 liftoff, with its trail enabled", diff --git a/data/assets/scene/solarsystem/missions/apollo/actions.asset b/data/assets/scene/solarsystem/missions/apollo/actions.asset index 6bd483a6c1..2b2c1d9c7f 100644 --- a/data/assets/scene/solarsystem/missions/apollo/actions.asset +++ b/data/assets/scene/solarsystem/missions/apollo/actions.asset @@ -13,8 +13,8 @@ local focus_moon = { Identifier = "os.missions.apollo.moon.focus", Name = "Focus on Moon", Command = [[ - openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Aim', ''); - openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Anchor', 'Moon'); + openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Aim', ''); + openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Anchor', 'Moon'); openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil); ]], Documentation = "Set camera focus on the Moon", @@ -26,8 +26,8 @@ local focus_earth = { Identifier = "os.missions.apollo.earth.focus", Name = "Focus on Earth", Command = [[ - openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Aim', ''); - openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Anchor', 'Earth'); + openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Aim', ''); + openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Anchor', 'Earth'); openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil); ]], Documentation = "Set camera focus on the Earth", @@ -38,7 +38,7 @@ local focus_earth = { asset.onInitialize(function() openspace.action.registerAction(toggle_moon_shading) openspace.action.registerAction(focus_moon) - openspace.action.registerAction(focus_earth) + openspace.action.registerAction(focus_earth) end) asset.onDeinitialize(function() diff --git a/data/assets/scene/solarsystem/missions/apollo/apollo_globebrowsing.asset b/data/assets/scene/solarsystem/missions/apollo/apollo_globebrowsing.asset index 682462e3b1..e7a765c55a 100644 --- a/data/assets/scene/solarsystem/missions/apollo/apollo_globebrowsing.asset +++ b/data/assets/scene/solarsystem/missions/apollo/apollo_globebrowsing.asset @@ -44,17 +44,17 @@ local apollo_moon_disableapollosites= { Identifier = "os.missions.apollo.moon.disableapollosites", Name = "Disable Apollo sites", Command = [[ - openspace.setPropertyValue('Scene.Moon.Renderable.Layers.ColorLayers.A17_*.Enabled', false); - openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.HeightLayers.LRO_NAC_Apollo_11.Enabled', false); - openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A11_M177481212_p_longlat.Enabled', false); - openspace.setPropertyValueSingle('Scene.Apollo11MoonTrail.Renderable.Enabled', false); - openspace.setPropertyValueSingle('Scene.Apollo11LemTrail.Renderable.Enabled', false); + openspace.setPropertyValue('Scene.Moon.Renderable.Layers.ColorLayers.A17_*.Enabled', false); + openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.HeightLayers.LRO_NAC_Apollo_11.Enabled', false); + openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.ColorLayers.A11_M177481212_p_longlat.Enabled', false); + openspace.setPropertyValueSingle('Scene.Apollo11MoonTrail.Renderable.Enabled', false); + openspace.setPropertyValueSingle('Scene.Apollo11LemTrail.Renderable.Enabled', false); openspace.setPropertyValueSingle('Scene.Moon.Renderable.Layers.HeightLayers.LRO_NAC_Apollo_17.Enabled', false); ]], Documentation = "Disable apollo site on moon when leaving", GuiPath = "/Missions/Apollo", IsLocal = false -} +} asset.onInitialize(function () openspace.globebrowsing.addBlendingLayersFromDirectory(heightmaps, moon_transforms.Moon.Identifier) diff --git a/data/assets/scene/solarsystem/missions/insight/shortcuts.asset b/data/assets/scene/solarsystem/missions/insight/shortcuts.asset index a310541b24..19faef8f1b 100644 --- a/data/assets/scene/solarsystem/missions/insight/shortcuts.asset +++ b/data/assets/scene/solarsystem/missions/insight/shortcuts.asset @@ -16,7 +16,7 @@ local insightNavigationState = [[ local Shortcuts = { { Command = [[ - openspace.setPropertyValueSingle("Scene.Mars.Renderable.Layers.HeightLayers.Mola_Utah.Settings.Offset", -469.300000); + openspace.setPropertyValueSingle("Scene.Mars.Renderable.Layers.HeightLayers.Mola_Utah.Settings.Offset", -469.300000); openspace.setPropertyValueSingle("Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Settings.Offset", -470.800006); ]], Documentation = "Enable Insight landing height layer offset", @@ -26,7 +26,7 @@ local Shortcuts = { }, { Command = [[ - openspace.setPropertyValueSingle("Scene.Mars.Renderable.Layers.HeightLayers.Mola_Utah.Settings.Offset", 0); + openspace.setPropertyValueSingle("Scene.Mars.Renderable.Layers.HeightLayers.Mola_Utah.Settings.Offset", 0); openspace.setPropertyValueSingle("Scene.Mars.Renderable.Layers.HeightLayers.OnMarsHiRISELS.Settings.Offset", 0); ]], Documentation = "Disable Insight landing height layer offset", diff --git a/data/assets/scene/solarsystem/missions/juice/kernels.asset b/data/assets/scene/solarsystem/missions/juice/kernels.asset index 7a12b5f7fe..92f7dec8a2 100644 --- a/data/assets/scene/solarsystem/missions/juice/kernels.asset +++ b/data/assets/scene/solarsystem/missions/juice/kernels.asset @@ -76,7 +76,7 @@ asset.meta = { Version = "1.0", Description = [[ Kernels were acquired from the official Juice mailing list and extended with the - GPHIO kernel provided by Ronan Modolo for the fieldline and plane data visualization + GPHIO kernel provided by Ronan Modolo for the fieldline and plane data visualization ]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", diff --git a/data/assets/scene/solarsystem/missions/juice/plane.asset b/data/assets/scene/solarsystem/missions/juice/plane.asset index 019a3835b3..4aa731e5f0 100644 --- a/data/assets/scene/solarsystem/missions/juice/plane.asset +++ b/data/assets/scene/solarsystem/missions/juice/plane.asset @@ -58,7 +58,7 @@ local xy_u = { GUI = { Name = "Ganymede XY Plane U", Path = "/Solar System/Missions/Juice/Plane", - Description = [[A cut plane in Ganymede's XY plane showing the strength of the + Description = [[A cut plane in Ganymede's XY plane showing the strength of the magnetic field]] } } @@ -193,7 +193,7 @@ local xz_u = { GUI = { Name = "Ganymede XZ Plane U", Path = "/Solar System/Missions/Juice/Plane", - Description = [[A cut plane in Ganymede's XZ plane showing the strength of the + Description = [[A cut plane in Ganymede's XZ plane showing the strength of the magnetic field]] } } diff --git a/data/assets/scene/solarsystem/missions/juno/juno.asset b/data/assets/scene/solarsystem/missions/juno/juno.asset index 70f8360658..77319d3580 100644 --- a/data/assets/scene/solarsystem/missions/juno/juno.asset +++ b/data/assets/scene/solarsystem/missions/juno/juno.asset @@ -198,11 +198,11 @@ asset.onInitialize(function() openspace.addSceneGraphNode(Juno) openspace.addSceneGraphNode(JunoTrail) end) - + asset.onDeinitialize(function() openspace.removeSceneGraphNode(JunoTrail) openspace.removeSceneGraphNode(Juno) end) - + asset.export(Juno) asset.export(JunoTrail) diff --git a/data/assets/scene/solarsystem/missions/jwst/actions.asset b/data/assets/scene/solarsystem/missions/jwst/actions.asset index e7b967a07e..648a47343e 100644 --- a/data/assets/scene/solarsystem/missions/jwst/actions.asset +++ b/data/assets/scene/solarsystem/missions/jwst/actions.asset @@ -2,9 +2,9 @@ local toggle_lagrangian_points = { Identifier = "os.missions.jwst.togglelagrangianpoints", Name = "Toggle Lagrangian points", Command = [[ - local list = openspace.getProperty('{lagrange_points_earth}.Renderable.Enabled'); - for _,v in pairs(list) do - openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) + local list = openspace.getProperty('{lagrange_points_earth}.Renderable.Enabled'); + for _,v in pairs(list) do + openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) end ]], Documentation = "Toggle points and labels for the Lagrangian points for Earth Sun system", @@ -16,9 +16,9 @@ local toggle_hudf = { Identifier = "os.missions.jwst.togglehudf", Name = "Toggle Hubble Ultra Deep Field", Command = [[ - local list = openspace.getProperty('{mission_jwst_hudf}.*.Enabled'); - for _,v in pairs(list) do - openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) + local list = openspace.getProperty('{mission_jwst_hudf}.*.Enabled'); + for _,v in pairs(list) do + openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) end ]], Documentation = "Toggle Hubble Ultra Deep Field image and line towards its coordinate", @@ -30,9 +30,9 @@ local toggle_l2 = { Identifier = "os.missions.jwst.togglel2", Name = "Toggle L2 line and small L2 label", Command = [[ - local list = openspace.getProperty('{lagrange_points_earth_l2_small}.*.Enabled'); - for _,v in pairs(list) do - openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) + local list = openspace.getProperty('{lagrange_points_earth_l2_small}.*.Enabled'); + for _,v in pairs(list) do + openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) end ]], Documentation = "Toggle L2 label, point and line", @@ -44,9 +44,9 @@ local toggle_fov = { Identifier = "os.missions.jwst.togglefov", Name = "Toggle JWST field of view and view band", Command = [[ - local list = openspace.getProperty('{mission_jwst_fov}.*.Enabled'); - for _,v in pairs(list) do - openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) + local list = openspace.getProperty('{mission_jwst_fov}.*.Enabled'); + for _,v in pairs(list) do + openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) end ]], Documentation = "Toggle James Webb Space Telecope field of view and view band", @@ -58,7 +58,7 @@ local setup_launch = { Identifier = "os.missoins.jwst.setup.launch", Name = "Set to JWST launch time", Command = [[ - openspace.time.setDeltaTime(1); + openspace.time.setDeltaTime(1); openspace.time.setTime('2021-12-25T12:20:01'); ]], Documentation = "Set the time to the launch time of JWST", @@ -70,7 +70,7 @@ local setup_detach = { Identifier = "os.missions.jwst.setup.detach", Name = "Set to JWST detach time", Command = [[ - openspace.time.setDeltaTime(1); + openspace.time.setDeltaTime(1); openspace.time.setTime('2021-12-25T12:50:00'); ]], Documentation = "Set the time to the detach time of JWST", @@ -82,7 +82,7 @@ local toggle_sun_trail = { Identifier = "os.missions.jwst.togglesuntrail", Name = "Toggle JWST Sun trail", Command = [[ - local value = openspace.getPropertyValue('Scene.JWSTSunTrail.Renderable.Enabled'); + local value = openspace.getPropertyValue('Scene.JWSTSunTrail.Renderable.Enabled'); openspace.setPropertyValueSingle('Scene.JWSTSunTrail.Renderable.Enabled', not value); ]], Documentation = "Toggle JWST trail relative to the Sun", @@ -94,14 +94,14 @@ local toggle_trails_except_moon = { Identifier = "os.missions.jwst.toggletrialsexceptmoon", Name = "Toggle trails (except Moon)", Command = [[ - local list = openspace.getProperty('{planetTrail_solarSystem}.Renderable.Enabled'); - for _,v in pairs(list) do - openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) - end - local moonlist = openspace.getProperty('{moonTrail_solarSystem}.Renderable.Enabled') - for _,v in pairs(moonlist) do - openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) - end + local list = openspace.getProperty('{planetTrail_solarSystem}.Renderable.Enabled'); + for _,v in pairs(list) do + openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) + end + local moonlist = openspace.getProperty('{moonTrail_solarSystem}.Renderable.Enabled') + for _,v in pairs(moonlist) do + openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) + end openspace.setPropertyValueSingle('Scene.MoonTrail.Renderable.Enabled', true) ]], Documentation = "Toggle all planet and moon trails, except the Moon", @@ -113,9 +113,9 @@ local toggle_jwst_trail = { Identifier = "os.missions.jwst.togglejwsttrails", Name = "Toggle JWST trail", Command = [[ - local list = {'Scene.JWSTTrailLaunch.Renderable.Enabled', 'Scene.JWSTTrailCruise.Renderable.Enabled', 'Scene.JWSTTrailCoRevOrbit.Renderable.Enabled'}; - for _,v in pairs(list) do - openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)); + local list = {'Scene.JWSTTrailLaunch.Renderable.Enabled', 'Scene.JWSTTrailCruise.Renderable.Enabled', 'Scene.JWSTTrailCoRevOrbit.Renderable.Enabled'}; + for _,v in pairs(list) do + openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)); end ]], Documentation = "Toggle JWST launch, cruise and L2 co-revolving orbit trails, not the Sun trail", diff --git a/data/assets/scene/solarsystem/missions/newhorizons/actions.asset b/data/assets/scene/solarsystem/missions/newhorizons/actions.asset index b93946cd0d..4b24ca4420 100644 --- a/data/assets/scene/solarsystem/missions/newhorizons/actions.asset +++ b/data/assets/scene/solarsystem/missions/newhorizons/actions.asset @@ -29,7 +29,7 @@ local focus_pluto = { Name = "Focus on Pluto", Command = [[ openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'PlutoProjection'); - openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', ''); + openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', ''); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil); ]], Documentation = "Sets the focus of the camera on 'Pluto'", @@ -147,9 +147,9 @@ local toggle_pluto_labels = { Identifier = "os.missions.newhorizons.pluto.togglelabels", Name = "Toggle Pluto Labels", Command = [[ - local list = {"Scene.PlutoText.Renderable.Enabled", "Scene.CharonText.Renderable.Enabled", "Scene.HydraText.Renderable.Enabled", "Scene.NixText.Renderable.Enabled", "Scene.KerberosText.Renderable.Enabled", "Scene.StyxText.Renderable.Enabled"}; - for _,v in pairs(list) do - openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) + local list = {"Scene.PlutoText.Renderable.Enabled", "Scene.CharonText.Renderable.Enabled", "Scene.HydraText.Renderable.Enabled", "Scene.NixText.Renderable.Enabled", "Scene.KerberosText.Renderable.Enabled", "Scene.StyxText.Renderable.Enabled"}; + for _,v in pairs(list) do + openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) end ]], Documentation = "Toggles the visibility of the text labels of Pluto, Charon, Hydra, Nix, Kerberos, and Styx", @@ -161,11 +161,11 @@ local toggle_nh_labels = { Identifier = "os.missions.newhorizons.togglelabels", Name = "Toggle New Horizons Labels", Command = [[ - local v = openspace.getPropertyValue("Scene.Labels.Renderable.Opacity"); - if v <= 0.5 then - openspace.setPropertyValueSingle("Scene.Labels.Renderable.Opacity",1.0,2.0) - else - openspace.setPropertyValueSingle("Scene.Labels.Renderable.Opacity",0.0,2.0) + local v = openspace.getPropertyValue("Scene.Labels.Renderable.Opacity"); + if v <= 0.5 then + openspace.setPropertyValueSingle("Scene.Labels.Renderable.Opacity",1.0,2.0) + else + openspace.setPropertyValueSingle("Scene.Labels.Renderable.Opacity",0.0,2.0) end ]], Documentation = "Toggles the visibility of the labels for the New Horizons instruments", diff --git a/data/assets/scene/solarsystem/missions/osirisrex/actions.asset b/data/assets/scene/solarsystem/missions/osirisrex/actions.asset index 91161f838d..daa57fdefd 100644 --- a/data/assets/scene/solarsystem/missions/osirisrex/actions.asset +++ b/data/assets/scene/solarsystem/missions/osirisrex/actions.asset @@ -2,8 +2,8 @@ local focus_osirisrex = { Identifier = "os.missions.osirisrex.focus", Name = "Focus on OsirisRex", Command = [[ - openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'OsirisRex'); - openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', ''); + openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'OsirisRex'); + openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', ''); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil); ]], Documentation = "Sets the focus of the camera on 'OsirisRex'", @@ -15,8 +15,8 @@ local focus_bennu = { Identifier = "os.missions.osirisrex.bennu.focus", Name = "Focus on Bennu", Command = [[ - openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'BennuBarycenter'); - openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', ''); + openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'BennuBarycenter'); + openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', ''); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil); ]], Documentation = "Sets the focus of the camera on 'Bennu'", @@ -40,7 +40,7 @@ local bennu_survey_time = { Identifier = "os.missions.osirisrex.setup.bennusurvey", Name = "Set Bennu survey time", Command = [[ - openspace.printInfo('Set time: Preliminary Survey'); + openspace.printInfo('Set time: Preliminary Survey'); openspace.time.setTime('2018-NOV-20 01:13:12.183'); ]], Documentation = "Sets the time to the preliminary survey of Bennu", @@ -52,7 +52,7 @@ local bennu_event_b = { Identifier = "os.missions.osirisrex.setup.bennueventb", Name = "Set orbital B event time", Command = [[ - openspace.printInfo('Set time: Orbital B'); + openspace.printInfo('Set time: Orbital B'); openspace.time.setTime('2019-APR-08 10:35:27.186'); ]], Documentation = "Sets the time to the orbital B event", @@ -64,7 +64,7 @@ local bennu_recon_event = { Identifier = "os.missions.osirisrex.setup.bennureconevent", Name = "Set recon event time", Command = [[ - openspace.printInfo('Set time: Recon'); + openspace.printInfo('Set time: Recon'); openspace.time.setTime('2019-MAY-25 03:50:31.195'); ]], Documentation = "Sets the time to the recon event", diff --git a/data/assets/scene/solarsystem/missions/perseverance/actions.asset b/data/assets/scene/solarsystem/missions/perseverance/actions.asset index 534f8d8dfd..a2fb85abc1 100644 --- a/data/assets/scene/solarsystem/missions/perseverance/actions.asset +++ b/data/assets/scene/solarsystem/missions/perseverance/actions.asset @@ -21,7 +21,7 @@ asset.onInitialize(function() end) asset.onDeinitialize(function() - openspace.action.removeAction(setup_perseverance) + openspace.action.removeAction(setup_perseverance) end) asset.meta = { @@ -31,4 +31,4 @@ asset.meta = { Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license" -} \ No newline at end of file +} diff --git a/data/assets/scene/solarsystem/missions/rosetta/67p.asset b/data/assets/scene/solarsystem/missions/rosetta/67p.asset index 2c694b7059..e93f1971a8 100644 --- a/data/assets/scene/solarsystem/missions/rosetta/67p.asset +++ b/data/assets/scene/solarsystem/missions/rosetta/67p.asset @@ -136,8 +136,8 @@ local focus_67p = { Identifier = "os.missions.rosetta.67p.focus", Name = "Focus on 67P", Command = [[ - openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', '67P'); - openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', ''); + openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', '67P'); + openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', ''); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil); ]], Documentation = "Sets the focus of the camera on 67P", diff --git a/data/assets/scene/solarsystem/missions/rosetta/actions.asset b/data/assets/scene/solarsystem/missions/rosetta/actions.asset index f8fda4a8f2..1037ae73e4 100644 --- a/data/assets/scene/solarsystem/missions/rosetta/actions.asset +++ b/data/assets/scene/solarsystem/missions/rosetta/actions.asset @@ -2,9 +2,9 @@ local toggle_outer_planetary_trails = { Identifier = "os.missions.rosetta.toggleouterplanetarytrails", Name = "Toggle outer planetary trails", Command = [[ - local list = openspace.getProperty('{planetTrail_giants}.Renderable.Enabled'); - for _,v in pairs(list) do - openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) + local list = openspace.getProperty('{planetTrail_giants}.Renderable.Enabled'); + for _,v in pairs(list) do + openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) end ]], Documentation = "Toggles the visibility of all trails further from the Sun than 67P", diff --git a/data/assets/scene/solarsystem/missions/rosetta/rosetta.asset b/data/assets/scene/solarsystem/missions/rosetta/rosetta.asset index e0fa4248cf..69c258e62b 100644 --- a/data/assets/scene/solarsystem/missions/rosetta/rosetta.asset +++ b/data/assets/scene/solarsystem/missions/rosetta/rosetta.asset @@ -560,8 +560,8 @@ local focus_rosetta = { Identifier = "os.missions.rosetta.focus", Name = "Focus on Rosetta", Command = [[ - openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'Rosetta'); - openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', ''); + openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'Rosetta'); + openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', ''); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil); ]], Documentation = "Sets the focus of the camera on Rosetta", diff --git a/data/assets/scene/solarsystem/missions/voyager/actions.asset b/data/assets/scene/solarsystem/missions/voyager/actions.asset index 2a061362b7..a3c34764f0 100644 --- a/data/assets/scene/solarsystem/missions/voyager/actions.asset +++ b/data/assets/scene/solarsystem/missions/voyager/actions.asset @@ -50,9 +50,9 @@ local toggle_minormoon_trails = { Identifier = "os.missions.voyager.toggleminormoontrails", Name = "Toggle minor trails", Command = [[ - local list = openspace.getProperty('{moonTrail_minor}.Renderable.Enabled'); - for _,v in pairs(list) do - openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) + local list = openspace.getProperty('{moonTrail_minor}.Renderable.Enabled'); + for _,v in pairs(list) do + openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) end ]], Documentation = "Toggles the trails of the minor moons", diff --git a/data/assets/scene/solarsystem/missions/voyagerpioneer/voyager1_2__pioneer10_11.asset b/data/assets/scene/solarsystem/missions/voyagerpioneer/voyager1_2__pioneer10_11.asset index ee21045e91..a474b485c4 100644 --- a/data/assets/scene/solarsystem/missions/voyagerpioneer/voyager1_2__pioneer10_11.asset +++ b/data/assets/scene/solarsystem/missions/voyagerpioneer/voyager1_2__pioneer10_11.asset @@ -159,7 +159,7 @@ asset.meta = { Name = "Pioneer and Voyager Trails", Version = "1.1", Description = [[Pioneer 10, Pioneer 11, Voyager 1 and Voyager 2 trails. Driven by JPL - Horizons data for better performance then spice but lower resolution. Data is from + Horizons data for better performance then spice but lower resolution. Data is from shortly after mission launches until January 1st, 2030]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", diff --git a/data/assets/scene/solarsystem/planets/earth/earth.asset b/data/assets/scene/solarsystem/planets/earth/earth.asset index 70cf21bfd3..47711364c7 100644 --- a/data/assets/scene/solarsystem/planets/earth/earth.asset +++ b/data/assets/scene/solarsystem/planets/earth/earth.asset @@ -77,8 +77,8 @@ local focus_earth = { Identifier = "os.solarsystem.earth.focus", Name = "Focus on Earth", Command = [[ - openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Aim', ''); - openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Anchor', 'Earth'); + openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Aim', ''); + openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Anchor', 'Earth'); openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil); ]], Documentation = "Set camera focus on the Earth", @@ -90,9 +90,9 @@ local toggle_earth_satellitetrails = { Identifier = "os.solarsystem.earth.togglesatellitetrails", Name = "Toggle satellite trails", Command = [[ - local list = openspace.getProperty('{earth_satellites}.Renderable.Enabled'); - for _,v in pairs(list) do - openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) + local list = openspace.getProperty('{earth_satellites}.Renderable.Enabled'); + for _,v in pairs(list) do + openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) end ]], Documentation = "Toggle trails on or off for satellites around Earth", diff --git a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/clemuvvis_utah.asset b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/clemuvvis_utah.asset index 3821b0d9cf..b50ce2d086 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/clemuvvis_utah.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/clemuvvis_utah.asset @@ -31,7 +31,7 @@ asset.export("layer", layer) asset.meta = { Name = "Clem Uvvis [Utah]", Version = "1.1", - Description = [[Moon Clementine UVVIS Global Mosaic 118m v2 map of the Moon. This map + Description = [[Moon Clementine UVVIS Global Mosaic 118m v2 map of the Moon. This map is hosted on the OpenSpace server in Utah]], Author = "USGS", URL = "https://astrogeology.usgs.gov/search/map/Moon/Clementine/UVVIS/Lunar_Clementine_UVVIS_750nm_Global_Mosaic_118m_v2", diff --git a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/lola_clr_shade_utah.asset b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/lola_clr_shade_utah.asset index 0c6c6281eb..9a003caeac 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/lola_clr_shade_utah.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/layers/colorlayers/lola_clr_shade_utah.asset @@ -30,7 +30,7 @@ asset.export("layer", layer) asset.meta = { Name = "Lola Color Shade [Utah]", Version = "1.1", - Description = [[Moon LRO LOLA Color Shaded Relief 388m v4 layer for Moon globe. This + Description = [[Moon LRO LOLA Color Shaded Relief 388m v4 layer for Moon globe. This map is hosted on the OpenSpace server in Utah]], Author = "USGS", URL = "https://astrogeology.usgs.gov/search/map/Moon/LMMP/LOLA-derived/Lunar_LRO_LOLA_ClrShade_Global_128ppd_v04", diff --git a/data/assets/scene/solarsystem/planets/earth/moon/moon.asset b/data/assets/scene/solarsystem/planets/earth/moon/moon.asset index 3a6c45e3c6..a5c7a7ca36 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/moon.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/moon.asset @@ -85,8 +85,8 @@ local focus_moon = { Identifier = "os.solarsystem.earth.moon.focus", Name = "Focus on Moon", Command = [[ - openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Aim', ''); - openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Anchor', 'Moon'); + openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Aim', ''); + openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.Anchor', 'Moon'); openspace.setPropertyValueSingle('NavigationHandler.OrbitalNavigator.RetargetAnchor', nil); ]], Documentation = "Set camera focus on the Moon", diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Metric_Cam_DEM/ColorHillshade.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Metric_Cam_DEM/ColorHillshade.wms index 8a3d650cec..4cc2dcff22 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Metric_Cam_DEM/ColorHillshade.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Metric_Cam_DEM/ColorHillshade.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Metric_Cam_DEM/Colorized_Confidence.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Metric_Cam_DEM/Colorized_Confidence.wms index 7140cdc16f..6ffd8591c4 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Metric_Cam_DEM/Colorized_Confidence.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Metric_Cam_DEM/Colorized_Confidence.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Metric_Cam_DEM/Grayscale.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Metric_Cam_DEM/Grayscale.wms index b4c3f51024..73b7018321 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Metric_Cam_DEM/Grayscale.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Metric_Cam_DEM/Grayscale.wms @@ -20,5 +20,5 @@ 1 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Metric_Cam_DEM/Hillshade.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Metric_Cam_DEM/Hillshade.wms index 528693c7fd..b9ade746bc 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Metric_Cam_DEM/Hillshade.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Metric_Cam_DEM/Hillshade.wms @@ -20,5 +20,5 @@ 1 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Pan_Cam_DEM/Aristarchus_Plateau_1.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Pan_Cam_DEM/Aristarchus_Plateau_1.wms index 48bc9ffc12..8171540bf0 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Pan_Cam_DEM/Aristarchus_Plateau_1.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Pan_Cam_DEM/Aristarchus_Plateau_1.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Pan_Cam_DEM/Aristarchus_Plateau_2.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Pan_Cam_DEM/Aristarchus_Plateau_2.wms index ffa7e96b9e..225256e788 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Pan_Cam_DEM/Aristarchus_Plateau_2.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Pan_Cam_DEM/Aristarchus_Plateau_2.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Pan_Cam_DEM/Tsiolkovskiy_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Pan_Cam_DEM/Tsiolkovskiy_Crater.wms index b486f683ab..a9d92ebc6f 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Pan_Cam_DEM/Tsiolkovskiy_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Pan_Cam_DEM/Tsiolkovskiy_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Pan_Cam_Image_Mosaic/Aristarchus_Plateau_1.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Pan_Cam_Image_Mosaic/Aristarchus_Plateau_1.wms index 633607e1e4..01708fe109 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Pan_Cam_Image_Mosaic/Aristarchus_Plateau_1.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Pan_Cam_Image_Mosaic/Aristarchus_Plateau_1.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Pan_Cam_Image_Mosaic/Aristarchus_Plateau_2.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Pan_Cam_Image_Mosaic/Aristarchus_Plateau_2.wms index fe1b2bb55e..6ed96e23b6 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Pan_Cam_Image_Mosaic/Aristarchus_Plateau_2.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Pan_Cam_Image_Mosaic/Aristarchus_Plateau_2.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Pan_Cam_Image_Mosaic/Tsiolkovskiy_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Pan_Cam_Image_Mosaic/Tsiolkovskiy_Crater.wms index 010370d670..fdaf69e3d9 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Pan_Cam_Image_Mosaic/Tsiolkovskiy_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_15_Pan_Cam_Image_Mosaic/Tsiolkovskiy_Crater.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_16_Metric_Cam_DEM/Colorized_Confidence.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_16_Metric_Cam_DEM/Colorized_Confidence.wms index 969cfd53c0..6d1b223116 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_16_Metric_Cam_DEM/Colorized_Confidence.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_16_Metric_Cam_DEM/Colorized_Confidence.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_16_Metric_Cam_DEM/Grayscale.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_16_Metric_Cam_DEM/Grayscale.wms index 6324a309b4..8884fa823e 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_16_Metric_Cam_DEM/Grayscale.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_16_Metric_Cam_DEM/Grayscale.wms @@ -20,5 +20,5 @@ 1 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_16_Metric_Cam_DEM/Hillshade.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_16_Metric_Cam_DEM/Hillshade.wms index 2e5b009a48..0b6929ea0b 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_16_Metric_Cam_DEM/Hillshade.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_16_Metric_Cam_DEM/Hillshade.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_17_Metric_Cam_DEM/ColorHillshade.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_17_Metric_Cam_DEM/ColorHillshade.wms index 4346d468e8..f7ce2eb666 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_17_Metric_Cam_DEM/ColorHillshade.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_17_Metric_Cam_DEM/ColorHillshade.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_17_Metric_Cam_DEM/Grayscale.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_17_Metric_Cam_DEM/Grayscale.wms index fe50009c25..e9af95c4bd 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_17_Metric_Cam_DEM/Grayscale.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_17_Metric_Cam_DEM/Grayscale.wms @@ -20,5 +20,5 @@ 1 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_Zone_Metric_Cam/Hillshade.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_Zone_Metric_Cam/Hillshade.wms index 9e31144ec6..0758ec558f 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_Zone_Metric_Cam/Hillshade.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_Zone_Metric_Cam/Hillshade.wms @@ -20,5 +20,5 @@ 1 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_Zone_Metric_Cam_DEM/ColorHillshade.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_Zone_Metric_Cam_DEM/ColorHillshade.wms index 526ffb4b30..a8a2b640ca 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_Zone_Metric_Cam_DEM/ColorHillshade.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Apollo_Zone_Metric_Cam_DEM/ColorHillshade.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Apollo_15_Metric_Cam_Image_Mosaic.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Apollo_15_Metric_Cam_Image_Mosaic.wms index 3e0115d47f..a7504abb13 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Apollo_15_Metric_Cam_Image_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Apollo_15_Metric_Cam_Image_Mosaic.wms @@ -20,5 +20,5 @@ 1 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Apollo_17_Metric_Cam_Image_Mosaic.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Apollo_17_Metric_Cam_Image_Mosaic.wms index 92d333cd7c..1f062adde4 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Apollo_17_Metric_Cam_Image_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Apollo_17_Metric_Cam_Image_Mosaic.wms @@ -20,5 +20,5 @@ 1 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Apollo_Zone_Metric_Cam_Image_Mosaic.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Apollo_Zone_Metric_Cam_Image_Mosaic.wms index 3aa5790f40..522901fb1c 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Apollo_Zone_Metric_Cam_Image_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Apollo_Zone_Metric_Cam_Image_Mosaic.wms @@ -20,5 +20,5 @@ 1 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Clementine_UVVIS_FeO_Weight_Percent.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Clementine_UVVIS_FeO_Weight_Percent.wms index a7ab0ec427..2de80748eb 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Clementine_UVVIS_FeO_Weight_Percent.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Clementine_UVVIS_FeO_Weight_Percent.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Clementine_UVVIS_Optical_Maturity.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Clementine_UVVIS_Optical_Maturity.wms index 6eda6e34e8..e2f6d9a6d2 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Clementine_UVVIS_Optical_Maturity.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Clementine_UVVIS_Optical_Maturity.wms @@ -20,5 +20,5 @@ 1 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Clementine_UVVIS_TiO2_Weight_Percent.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Clementine_UVVIS_TiO2_Weight_Percent.wms index fcd533e447..ece18b5cbe 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Clementine_UVVIS_TiO2_Weight_Percent.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Clementine_UVVIS_TiO2_Weight_Percent.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Clementine_UVVIS_Warped_Color_Ratio.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Clementine_UVVIS_Warped_Color_Ratio.wms index 244cb46b5c..778d107bad 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Clementine_UVVIS_Warped_Color_Ratio.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Clementine_UVVIS_Warped_Color_Ratio.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Kaguya_TC_Ortho_Mosaic.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Kaguya_TC_Ortho_Mosaic.wms index 299bbe254c..e6883ec699 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Kaguya_TC_Ortho_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/Kaguya_TC_Ortho_Mosaic.wms @@ -20,5 +20,5 @@ 1 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LOLA_Permanently_Shadowed_Regions_Northpole_240m.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LOLA_Permanently_Shadowed_Regions_Northpole_240m.wms index 2676c75e8b..98968afce7 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LOLA_Permanently_Shadowed_Regions_Northpole_240m.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LOLA_Permanently_Shadowed_Regions_Northpole_240m.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LOLA_Permanently_Shadowed_Regions_Southpole_240m.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LOLA_Permanently_Shadowed_Regions_Southpole_240m.wms index 934d17540b..e61a3681ef 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LOLA_Permanently_Shadowed_Regions_Southpole_240m.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LOLA_Permanently_Shadowed_Regions_Southpole_240m.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LP_NS_H_Abundance.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LP_NS_H_Abundance.wms index 007f37915f..471b67a916 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LP_NS_H_Abundance.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LP_NS_H_Abundance.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LROC_NAC_Uncontrolled_Mosaic_of_Mare_Unit_in_Schrodinger_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LROC_NAC_Uncontrolled_Mosaic_of_Mare_Unit_in_Schrodinger_Crater.wms index 6966c9744f..e40f86da44 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LROC_NAC_Uncontrolled_Mosaic_of_Mare_Unit_in_Schrodinger_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LROC_NAC_Uncontrolled_Mosaic_of_Mare_Unit_in_Schrodinger_Crater.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LROC_NAC_Uncontrolled_Mosaic_of_Massif_in_Schrodinger_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LROC_NAC_Uncontrolled_Mosaic_of_Massif_in_Schrodinger_Crater.wms index 70176373e6..1a44645e6c 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LROC_NAC_Uncontrolled_Mosaic_of_Massif_in_Schrodinger_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LROC_NAC_Uncontrolled_Mosaic_of_Massif_in_Schrodinger_Crater.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LRO_Diviner_CF_Mosaic.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LRO_Diviner_CF_Mosaic.wms index 2bf8a980b4..97e714c005 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LRO_Diviner_CF_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LRO_Diviner_CF_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LRO_LOLA_and_Kaguya_TC_Color_Hillshade_512ppd.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LRO_LOLA_and_Kaguya_TC_Color_Hillshade_512ppd.wms index cbcdf83801..069a49453a 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LRO_LOLA_and_Kaguya_TC_Color_Hillshade_512ppd.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LRO_LOLA_and_Kaguya_TC_Color_Hillshade_512ppd.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LRO_LOLA_and_Kaguya_TC_Hillshade_512ppd.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LRO_LOLA_and_Kaguya_TC_Hillshade_512ppd.wms index 413a4ab1e3..7995783565 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LRO_LOLA_and_Kaguya_TC_Hillshade_512ppd.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LRO_LOLA_and_Kaguya_TC_Hillshade_512ppd.wms @@ -20,5 +20,5 @@ 1 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LRO_LROC_WAC_Image_Mosaic.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LRO_LROC_WAC_Image_Mosaic.wms index 10119ac39f..202e2ecfb7 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LRO_LROC_WAC_Image_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LRO_LROC_WAC_Image_Mosaic.wms @@ -20,5 +20,5 @@ 1 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LRO_Mini-RF_First_Stokes_Parameter.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LRO_Mini-RF_First_Stokes_Parameter.wms index bc639337d6..b76f3e39d1 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LRO_Mini-RF_First_Stokes_Parameter.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LRO_Mini-RF_First_Stokes_Parameter.wms @@ -20,5 +20,5 @@ 1 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LRO_WAC_Mosaic_v2.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LRO_WAC_Mosaic_v2.wms index aa91c98790..10b6c5cc6b 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LRO_WAC_Mosaic_v2.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Global/LRO_WAC_Mosaic_v2.wms @@ -20,5 +20,5 @@ 1 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Kaguya_LGM2011_Freeair_Gravity/Colorized.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Kaguya_LGM2011_Freeair_Gravity/Colorized.wms index 3048a2ea20..0e14aaca18 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Kaguya_LGM2011_Freeair_Gravity/Colorized.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Kaguya_LGM2011_Freeair_Gravity/Colorized.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Kaguya_LGM2011_Freeair_Gravity/Greyscale.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Kaguya_LGM2011_Freeair_Gravity/Greyscale.wms index af70205ac2..0ee50bc201 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Kaguya_LGM2011_Freeair_Gravity/Greyscale.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Kaguya_LGM2011_Freeair_Gravity/Greyscale.wms @@ -20,5 +20,5 @@ 1 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Kaguya_LGM2011_Surface_Gravity/Colorized.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Kaguya_LGM2011_Surface_Gravity/Colorized.wms index ad4bc35e02..c911fbd6df 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Kaguya_LGM2011_Surface_Gravity/Colorized.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Kaguya_LGM2011_Surface_Gravity/Colorized.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Kaguya_LGM2011_Surface_Gravity/Greyscale.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Kaguya_LGM2011_Surface_Gravity/Greyscale.wms index 2d129665fe..c44f38e8af 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Kaguya_LGM2011_Surface_Gravity/Greyscale.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/Kaguya_LGM2011_Surface_Gravity/Greyscale.wms @@ -20,5 +20,5 @@ 1 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LOLA_Roughness_16ppd/Colorized.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LOLA_Roughness_16ppd/Colorized.wms index 3694d730f4..2afd8554ed 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LOLA_Roughness_16ppd/Colorized.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LOLA_Roughness_16ppd/Colorized.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LOLA_Slope_16ppd/Colorized.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LOLA_Slope_16ppd/Colorized.wms index 93ae2003f9..15e58561d0 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LOLA_Slope_16ppd/Colorized.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LOLA_Slope_16ppd/Colorized.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LOLA_Slope_Northpole_120m/Colorized.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LOLA_Slope_Northpole_120m/Colorized.wms index 1979921452..7357f0c848 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LOLA_Slope_Northpole_120m/Colorized.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LOLA_Slope_Northpole_120m/Colorized.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LOLA_Slope_Southpole_120m/Colorized.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LOLA_Slope_Southpole_120m/Colorized.wms index 088aed1767..1d51f6710c 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LOLA_Slope_Southpole_120m/Colorized.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LOLA_Slope_Southpole_120m/Colorized.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LOLA_and_TC_Stereo_DEM_Merge_512ppd/Shade.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LOLA_and_TC_Stereo_DEM_Merge_512ppd/Shade.wms index 53757508ec..20d35b2a2b 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LOLA_and_TC_Stereo_DEM_Merge_512ppd/Shade.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LOLA_and_TC_Stereo_DEM_Merge_512ppd/Shade.wms @@ -20,5 +20,5 @@ 1 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LROC_NAC_Uncontrolled_Mosaic_of_Region_Inside_Schrodinger_Crater/50cmpx.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LROC_NAC_Uncontrolled_Mosaic_of_Region_Inside_Schrodinger_Crater/50cmpx.wms index 73c0e80f82..5ded080023 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LROC_NAC_Uncontrolled_Mosaic_of_Region_Inside_Schrodinger_Crater/50cmpx.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LROC_NAC_Uncontrolled_Mosaic_of_Region_Inside_Schrodinger_Crater/50cmpx.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LROC_NAC_Uncontrolled_Mosaic_of_Schrodinger_Crater/10mpx.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LROC_NAC_Uncontrolled_Mosaic_of_Schrodinger_Crater/10mpx.wms index 4e56b81768..7cab4383f7 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LROC_NAC_Uncontrolled_Mosaic_of_Schrodinger_Crater/10mpx.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LROC_NAC_Uncontrolled_Mosaic_of_Schrodinger_Crater/10mpx.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Diviner_CF_Mosaic/Filled.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Diviner_CF_Mosaic/Filled.wms index 2660d258e5..9be506ba21 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Diviner_CF_Mosaic/Filled.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Diviner_CF_Mosaic/Filled.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Diviner_CF_Mosaic_128ppd/Colorized.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Diviner_CF_Mosaic_128ppd/Colorized.wms index 6b81390923..5c2494a544 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Diviner_CF_Mosaic_128ppd/Colorized.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Diviner_CF_Mosaic_128ppd/Colorized.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Diviner_Surface_Temp_Avg/Color.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Diviner_Surface_Temp_Avg/Color.wms index c26bde256a..cc9a943c50 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Diviner_Surface_Temp_Avg/Color.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Diviner_Surface_Temp_Avg/Color.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Diviner_Surface_Temp_Normal_Avg/Color.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Diviner_Surface_Temp_Normal_Avg/Color.wms index 3ead585c4e..3cbd3df4cf 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Diviner_Surface_Temp_Normal_Avg/Color.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Diviner_Surface_Temp_Normal_Avg/Color.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Diviner_Surface_Temperature_Mosaic_128ppd/Colorized.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Diviner_Surface_Temperature_Mosaic_128ppd/Colorized.wms index 05d4fc8b87..00f9e4b95b 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Diviner_Surface_Temperature_Mosaic_128ppd/Colorized.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Diviner_Surface_Temperature_Mosaic_128ppd/Colorized.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/ColorHillshade.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/ColorHillshade.wms index 5126740a5e..738e988a99 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/ColorHillshade.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/ColorHillshade.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/ColorHillshade_v6.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/ColorHillshade_v6.wms index 7688230505..493e33d491 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/ColorHillshade_v6.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/ColorHillshade_v6.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/Coverage.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/Coverage.wms index 29b9ecaf88..466628b5f4 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/Coverage.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/Coverage.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/Hillshade.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/Hillshade.wms index 64418c18e4..65e740e2ab 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/Hillshade.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/Hillshade.wms @@ -20,5 +20,5 @@ 1 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/N_Pole.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/N_Pole.wms index af86bc744b..916654ebb0 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/N_Pole.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/N_Pole.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/No_Data_Mask.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/No_Data_Mask.wms index f15a0c429d..d42e2b41ac 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/No_Data_Mask.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/No_Data_Mask.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/S_Pole.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/S_Pole.wms index 288074d3d6..79b845ddd3 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/S_Pole.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LOLA_DEM/S_Pole.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Aitken_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Aitken_Crater.wms index 085220ce2a..26ac1889da 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Aitken_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Aitken_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Alphonsus_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Alphonsus_Crater.wms index 05453af3a3..b115eeed8c 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Alphonsus_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Alphonsus_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Anaxagoras_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Anaxagoras_Crater.wms index 77cef2ec17..d619be4f19 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Anaxagoras_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Anaxagoras_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Apollo_15.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Apollo_15.wms index 7e04a636ae..768884e46d 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Apollo_15.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Apollo_15.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Apollo_16.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Apollo_16.wms index 7995e784a6..fced56d911 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Apollo_16.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Apollo_16.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Apollo_Basin.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Apollo_Basin.wms index 9995edd792..f88a4e5726 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Apollo_Basin.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Apollo_Basin.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Aristarchus_1.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Aristarchus_1.wms index e3253f3b57..90dea302c6 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Aristarchus_1.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Aristarchus_1.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Aristarchus_2.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Aristarchus_2.wms index c848984a04..bea781d6c0 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Aristarchus_2.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Aristarchus_2.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Balmer_Basin.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Balmer_Basin.wms index 83b0925059..c549043482 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Balmer_Basin.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Balmer_Basin.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Bullialdus_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Bullialdus_Crater.wms index 94f9d1712a..137503d54d 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Bullialdus_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Bullialdus_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Gruithuisen_Domes.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Gruithuisen_Domes.wms index 9e4674604e..b13981486b 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Gruithuisen_Domes.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Gruithuisen_Domes.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Hertzsprung.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Hertzsprung.wms index 1096292bfb..7984e9a8d6 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Hertzsprung.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Hertzsprung.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Hortensius_Domes.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Hortensius_Domes.wms index 2def787865..2e582a7206 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Hortensius_Domes.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Hortensius_Domes.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/King_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/King_Crater.wms index ccb651939b..c97aaf0308 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/King_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/King_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Lichtenberg_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Lichtenberg_Crater.wms index 67bd9f84de..aaeee23a5d 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Lichtenberg_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Lichtenberg_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Mare_Crisium.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Mare_Crisium.wms index 73738f3847..5f13af5801 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Mare_Crisium.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Mare_Crisium.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Montes_Pyrenaeus.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Montes_Pyrenaeus.wms index 61524c29b5..4d3b75ed23 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Montes_Pyrenaeus.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Montes_Pyrenaeus.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Orientale_1.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Orientale_1.wms index a907893d03..4d152de9ce 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Orientale_1.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Orientale_1.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Plato_Ejecta.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Plato_Ejecta.wms index d800ddea65..fe6e8a0061 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Plato_Ejecta.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Plato_Ejecta.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/South_Pole-Aitken_Basin_Interior.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/South_Pole-Aitken_Basin_Interior.wms index 48e4047da3..6238fca4cf 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/South_Pole-Aitken_Basin_Interior.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/South_Pole-Aitken_Basin_Interior.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Stratton_Dewar_High_Fe_Anomaly.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Stratton_Dewar_High_Fe_Anomaly.wms index dcd8c1a71b..abf9b74af9 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Stratton_Dewar_High_Fe_Anomaly.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Stratton_Dewar_High_Fe_Anomaly.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Sulpicius_Gallus.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Sulpicius_Gallus.wms index 1dc11eac81..1215b2587e 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Sulpicius_Gallus.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Sulpicius_Gallus.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Tycho_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Tycho_Crater.wms index 8e30cddbd8..971eb84d9e 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Tycho_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance/Tycho_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Aitken_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Aitken_Crater.wms index 0a507b29bf..e5715fcb95 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Aitken_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Aitken_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Alphonsus_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Alphonsus_Crater.wms index ce136392e3..c0bb8eec2e 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Alphonsus_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Alphonsus_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Anaxagoras_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Anaxagoras_Crater.wms index c60a3810d1..5acd2fbe09 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Anaxagoras_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Anaxagoras_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Apollo_15.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Apollo_15.wms index 8eacc3b897..1f1b386d10 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Apollo_15.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Apollo_15.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Apollo_16.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Apollo_16.wms index e3858be89b..0fa3d86506 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Apollo_16.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Apollo_16.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Apollo_Basin.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Apollo_Basin.wms index 945a6d4d74..bf2378b3fa 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Apollo_Basin.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Apollo_Basin.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Aristarchus_1.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Aristarchus_1.wms index e72c54a53c..da8f30f09d 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Aristarchus_1.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Aristarchus_1.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Aristarchus_2.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Aristarchus_2.wms index dd8b8de60e..4d2bc5d479 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Aristarchus_2.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Aristarchus_2.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Balmer_Basin.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Balmer_Basin.wms index 62b56de18a..e67565c7db 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Balmer_Basin.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Balmer_Basin.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Bullialdus_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Bullialdus_Crater.wms index 9fc6982056..ce55609f8a 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Bullialdus_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Bullialdus_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Gruithuisen_Domes.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Gruithuisen_Domes.wms index 288254c917..a95bd18501 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Gruithuisen_Domes.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Gruithuisen_Domes.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Hertzsprung.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Hertzsprung.wms index 1762b2c210..726013f61a 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Hertzsprung.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Hertzsprung.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Hortensius_Domes.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Hortensius_Domes.wms index ee1f640b12..b2754d37ac 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Hortensius_Domes.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Hortensius_Domes.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/King_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/King_Crater.wms index 8693df93ec..5fa9ef7495 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/King_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/King_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Lichtenberg_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Lichtenberg_Crater.wms index dbcf300b8c..c55bbe878e 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Lichtenberg_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Lichtenberg_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Mare_Crisium.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Mare_Crisium.wms index f752a06757..1ec7904487 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Mare_Crisium.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Mare_Crisium.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Montes_Pyrenaeus.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Montes_Pyrenaeus.wms index 337707db59..46fa3c3f9d 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Montes_Pyrenaeus.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Montes_Pyrenaeus.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Orientale_1.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Orientale_1.wms index 65976eea00..8283cd54ec 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Orientale_1.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Orientale_1.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Plato_Ejecta.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Plato_Ejecta.wms index ba3edecbb2..ccdeb35a49 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Plato_Ejecta.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Plato_Ejecta.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/South_Pole-Aitken_Basin_Interior.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/South_Pole-Aitken_Basin_Interior.wms index cfdeb0eef7..5a4632fdff 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/South_Pole-Aitken_Basin_Interior.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/South_Pole-Aitken_Basin_Interior.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Stratton_Dewar_High_Fe_Anomaly.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Stratton_Dewar_High_Fe_Anomaly.wms index 4ae99a0270..515693e4c5 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Stratton_Dewar_High_Fe_Anomaly.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Stratton_Dewar_High_Fe_Anomaly.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Sulpicius_Gallus.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Sulpicius_Gallus.wms index 8fd96c3755..57e4d6adb7 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Sulpicius_Gallus.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Sulpicius_Gallus.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Tycho_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Tycho_Crater.wms index 43c88a176f..9113c7abf4 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Tycho_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Abundance_Hazard/Tycho_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Aitken_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Aitken_Crater.wms index 08a638db59..c97deb97b9 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Aitken_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Aitken_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Alphonsus_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Alphonsus_Crater.wms index 9baec57c04..e51690d3f4 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Alphonsus_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Alphonsus_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Anaxagoras_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Anaxagoras_Crater.wms index a6f69afb68..b17c95e2f3 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Anaxagoras_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Anaxagoras_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Apollo_15.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Apollo_15.wms index 2ecc73ec7c..fe7d8da33e 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Apollo_15.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Apollo_15.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Apollo_16.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Apollo_16.wms index 4a438278ce..8c4c9d17e9 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Apollo_16.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Apollo_16.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Apollo_Basin.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Apollo_Basin.wms index 726f629c16..958a4b37d2 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Apollo_Basin.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Apollo_Basin.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Aristarchus_1.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Aristarchus_1.wms index db392d5410..b736cde6d1 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Aristarchus_1.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Aristarchus_1.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Aristarchus_2.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Aristarchus_2.wms index c8cef6a2ac..e4adf0e4de 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Aristarchus_2.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Aristarchus_2.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Balmer_Basin.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Balmer_Basin.wms index facc879b7c..274f43be34 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Balmer_Basin.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Balmer_Basin.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Bullialdus_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Bullialdus_Crater.wms index 74325aeaf6..8c92b0fc5c 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Bullialdus_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Bullialdus_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Gruithuisen_Domes.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Gruithuisen_Domes.wms index 0d1270e9e7..61e6dcaaa3 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Gruithuisen_Domes.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Gruithuisen_Domes.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Hertzsprung.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Hertzsprung.wms index 2c82fd83fa..75ee143fc7 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Hertzsprung.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Hertzsprung.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Hortensius_Domes.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Hortensius_Domes.wms index e6b3caa9d2..f89ed7ce4c 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Hortensius_Domes.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Hortensius_Domes.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/King_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/King_Crater.wms index 04edf3014f..a518a8d5f6 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/King_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/King_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Lichtenberg_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Lichtenberg_Crater.wms index 3fad207909..052908916a 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Lichtenberg_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Lichtenberg_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Mare_Crisium.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Mare_Crisium.wms index 8dabc72a51..52f9f71b3c 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Mare_Crisium.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Mare_Crisium.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Montes_Pyrenaeus.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Montes_Pyrenaeus.wms index a51cb3373f..bd7ca53acc 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Montes_Pyrenaeus.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Montes_Pyrenaeus.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Orientale_1.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Orientale_1.wms index 7ae74d8a94..3ef55c0caf 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Orientale_1.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Orientale_1.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Plato_Ejecta.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Plato_Ejecta.wms index d176ddb789..5b6f9198b7 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Plato_Ejecta.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Plato_Ejecta.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/South_Pole-Aitken_Basin_Interior.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/South_Pole-Aitken_Basin_Interior.wms index 1209b3f91d..c8ded83d04 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/South_Pole-Aitken_Basin_Interior.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/South_Pole-Aitken_Basin_Interior.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Stratton_Dewar_High_Fe_Anomaly.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Stratton_Dewar_High_Fe_Anomaly.wms index a364a61a4b..dfe125dcf6 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Stratton_Dewar_High_Fe_Anomaly.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Stratton_Dewar_High_Fe_Anomaly.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Sulpicius_Gallus.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Sulpicius_Gallus.wms index 8d9c85a482..e153a379bc 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Sulpicius_Gallus.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Sulpicius_Gallus.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Tycho_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Tycho_Crater.wms index 75876e5695..81f61d9bf8 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Tycho_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density/Tycho_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Aitken_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Aitken_Crater.wms index dc443c3f81..d0f0545315 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Aitken_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Aitken_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Alphonsus_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Alphonsus_Crater.wms index 198dd55a8a..bb750768b6 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Alphonsus_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Alphonsus_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Anaxagoras_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Anaxagoras_Crater.wms index ba62161ca4..0aebae190a 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Anaxagoras_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Anaxagoras_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Apollo_15.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Apollo_15.wms index b6574337ff..536a1e9d14 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Apollo_15.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Apollo_15.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Apollo_16.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Apollo_16.wms index fddb1436fb..242dfef60a 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Apollo_16.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Apollo_16.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Apollo_Basin.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Apollo_Basin.wms index f9229c11cb..8079bcab2d 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Apollo_Basin.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Apollo_Basin.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Aristarchus_1.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Aristarchus_1.wms index a07060caf1..d4c510ab56 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Aristarchus_1.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Aristarchus_1.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Aristarchus_2.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Aristarchus_2.wms index 3806c2fb46..2a2754bb77 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Aristarchus_2.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Aristarchus_2.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Balmer_Basin.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Balmer_Basin.wms index 4b986365a5..693fa53ec1 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Balmer_Basin.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Balmer_Basin.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Bullialdus_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Bullialdus_Crater.wms index 0c67fe8810..b4a91324f5 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Bullialdus_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Bullialdus_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Gruithuisen_Domes.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Gruithuisen_Domes.wms index 129f0da091..7f68e46eb7 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Gruithuisen_Domes.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Gruithuisen_Domes.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Hertzsprung.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Hertzsprung.wms index 0a8906dadf..af2ed9fb36 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Hertzsprung.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Hertzsprung.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Hortensius_Domes.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Hortensius_Domes.wms index 0fa7c2878a..d37fc2db30 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Hortensius_Domes.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Hortensius_Domes.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/King_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/King_Crater.wms index bb921b435d..886a9bdb9e 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/King_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/King_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Lichtenberg_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Lichtenberg_Crater.wms index 5a97d0b2fc..b2d1bee826 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Lichtenberg_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Lichtenberg_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Mare_Crisium.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Mare_Crisium.wms index 6f362c8a24..91c35ca275 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Mare_Crisium.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Mare_Crisium.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Montes_Pyrenaeus.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Montes_Pyrenaeus.wms index f6dc08dfc9..faed92e00b 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Montes_Pyrenaeus.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Montes_Pyrenaeus.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Orientale_1.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Orientale_1.wms index 06f7d69a0d..5fea4ffa1f 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Orientale_1.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Orientale_1.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Plato_Ejecta.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Plato_Ejecta.wms index f4873a982e..e2ce9a15fd 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Plato_Ejecta.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Plato_Ejecta.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/South_Pole-Aitken_Basin_Interior.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/South_Pole-Aitken_Basin_Interior.wms index d873486cc1..0b9e1e8cb3 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/South_Pole-Aitken_Basin_Interior.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/South_Pole-Aitken_Basin_Interior.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Stratton_Dewar_High_Fe_Anomaly.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Stratton_Dewar_High_Fe_Anomaly.wms index 771af89c84..33bd686344 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Stratton_Dewar_High_Fe_Anomaly.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Stratton_Dewar_High_Fe_Anomaly.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Sulpicius_Gallus.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Sulpicius_Gallus.wms index 66db241841..da8fb8c75f 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Sulpicius_Gallus.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Sulpicius_Gallus.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Tycho_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Tycho_Crater.wms index 6df134a9ad..5421053b3a 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Tycho_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Crater_Density_Hazard/Tycho_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Aitken_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Aitken_Crater.wms index 04f3cca2df..aca7f03ab0 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Aitken_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Aitken_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Alphonsus.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Alphonsus.wms index 3d00fdd5f8..ab0a2279c8 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Alphonsus.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Alphonsus.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Alphonsus_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Alphonsus_Crater.wms index 8dc1ebf2ea..d2600e1124 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Alphonsus_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Alphonsus_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Anaxagoras_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Anaxagoras_Crater.wms index 68e6379d52..7e280abfd0 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Anaxagoras_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Anaxagoras_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Apollo_15.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Apollo_15.wms index 0ef2b5b06a..c0307d6f43 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Apollo_15.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Apollo_15.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Apollo_16.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Apollo_16.wms index 33dcacc18b..9a8cdef8a4 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Apollo_16.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Apollo_16.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Apollo_Basin.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Apollo_Basin.wms index c1e590bdac..e3b7266216 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Apollo_Basin.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Apollo_Basin.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Aristarchus_1.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Aristarchus_1.wms index dccc56dfb8..94f56f30de 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Aristarchus_1.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Aristarchus_1.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Aristarchus_2.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Aristarchus_2.wms index 3d035f72b8..171c8d4439 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Aristarchus_2.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Aristarchus_2.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Balmer_Basin.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Balmer_Basin.wms index 7e5798c850..e591b89ea6 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Balmer_Basin.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Balmer_Basin.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Bullialdus_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Bullialdus_Crater.wms index b185bd7bdb..e93a58bb57 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Bullialdus_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Bullialdus_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Compton_Belkovich_Th_Anomaly.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Compton_Belkovich_Th_Anomaly.wms index 02d5e07c4a..daccd7fb09 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Compton_Belkovich_Th_Anomaly.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Compton_Belkovich_Th_Anomaly.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Dante_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Dante_Crater.wms index 24901e5bab..387379394b 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Dante_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Dante_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Flamsteed_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Flamsteed_Crater.wms index c259fb86d6..b6c8f53935 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Flamsteed_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Flamsteed_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Fresh_Crater_East_of_Lents.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Fresh_Crater_East_of_Lents.wms index d9e4d1aece..1c3385363c 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Fresh_Crater_East_of_Lents.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Fresh_Crater_East_of_Lents.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Gruithuisen_Domes.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Gruithuisen_Domes.wms index 781cd16f6e..4ee3583077 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Gruithuisen_Domes.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Gruithuisen_Domes.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Hertzsprung.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Hertzsprung.wms index 19f69f0c4f..c1ff1fafdd 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Hertzsprung.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Hertzsprung.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Hortensius_Domes.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Hortensius_Domes.wms index 8aae4a35ce..ac16c45de1 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Hortensius_Domes.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Hortensius_Domes.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Humboldtianum_Basin.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Humboldtianum_Basin.wms index f34e17280d..589dd0da0d 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Humboldtianum_Basin.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Humboldtianum_Basin.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Ina_D-Caldera.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Ina_D-Caldera.wms index c478495c2a..0a459cb978 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Ina_D-Caldera.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Ina_D-Caldera.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/King_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/King_Crater.wms index e2feffcc7b..02fd3d31a0 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/King_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/King_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Lichtenberg_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Lichtenberg_Crater.wms index b0dcb70681..4ccd08b349 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Lichtenberg_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Lichtenberg_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Mare_Crisium.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Mare_Crisium.wms index d52230d726..48f0356a75 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Mare_Crisium.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Mare_Crisium.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Mare_Ingenii.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Mare_Ingenii.wms index df5f83be55..86e0c23c82 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Mare_Ingenii.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Mare_Ingenii.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Mare_Moscoviense.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Mare_Moscoviense.wms index c0f94951bc..37b38ae4bf 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Mare_Moscoviense.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Mare_Moscoviense.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Mare_Smythii.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Mare_Smythii.wms index 736310bd5e..7d187a3ad4 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Mare_Smythii.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Mare_Smythii.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Mare_Tranquillitatis.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Mare_Tranquillitatis.wms index 2764dcea78..2d08dddb1d 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Mare_Tranquillitatis.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Mare_Tranquillitatis.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Marius_Hills.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Marius_Hills.wms index 1bb7b46b3d..f29114b5da 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Marius_Hills.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Marius_Hills.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Montes_Pyrenaeus.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Montes_Pyrenaeus.wms index e6bdecdb49..73b064154b 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Montes_Pyrenaeus.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Montes_Pyrenaeus.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Murchison_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Murchison_Crater.wms index dd3daed8c2..af9b25d02c 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Murchison_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Murchison_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Orientale_1.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Orientale_1.wms index ea70b465fb..a2fda9dc79 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Orientale_1.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Orientale_1.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Plato_Ejecta.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Plato_Ejecta.wms index 39f252014f..dc28989354 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Plato_Ejecta.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Plato_Ejecta.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Reiner_Gamma.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Reiner_Gamma.wms index f01f73c91a..36373d4d84 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Reiner_Gamma.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Reiner_Gamma.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Riccioli_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Riccioli_Crater.wms index a9f9f1d890..bf0617e86e 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Riccioli_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Riccioli_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Rima_Bode.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Rima_Bode.wms index ef3d53c2f3..77af458332 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Rima_Bode.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Rima_Bode.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Rimae_Prinz.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Rimae_Prinz.wms index 2550fee475..a88992ea94 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Rimae_Prinz.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Rimae_Prinz.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/South_Pole-Aitken_Basin_Interior.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/South_Pole-Aitken_Basin_Interior.wms index 122e7da236..7cab8a4e15 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/South_Pole-Aitken_Basin_Interior.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/South_Pole-Aitken_Basin_Interior.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/South_Pole-Aitken_Rim.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/South_Pole-Aitken_Rim.wms index 5b7e91202d..62fa7eec46 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/South_Pole-Aitken_Rim.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/South_Pole-Aitken_Rim.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Stratton_Dewar.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Stratton_Dewar.wms index 6f262ddc7b..25fd1a5cdb 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Stratton_Dewar.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Stratton_Dewar.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Stratton_Dewar_High_Fe_Anomaly.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Stratton_Dewar_High_Fe_Anomaly.wms index afea4cb7ac..5cddc06246 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Stratton_Dewar_High_Fe_Anomaly.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Stratton_Dewar_High_Fe_Anomaly.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Sulpicius_Gallus.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Sulpicius_Gallus.wms index b44c08fe82..08e5ee8223 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Sulpicius_Gallus.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Sulpicius_Gallus.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Tsiolkovskiy_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Tsiolkovskiy_Crater.wms index c0d083664b..34edf9552e 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Tsiolkovskiy_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Tsiolkovskiy_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Tycho_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Tycho_Crater.wms index 2ff1fe2b73..9405976ab7 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Tycho_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_DEM/Tycho_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Aitken_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Aitken_Crater.wms index 7ef9c136ce..ac2013f577 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Aitken_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Aitken_Crater.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Alphonsus.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Alphonsus.wms index 933648935e..ed580a2568 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Alphonsus.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Alphonsus.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Apollo_15.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Apollo_15.wms index 5281ae0071..56233be4cb 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Apollo_15.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Apollo_15.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Apollo_16.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Apollo_16.wms index 94b6624e18..8f99b800f3 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Apollo_16.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Apollo_16.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Aristarchus_1.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Aristarchus_1.wms index a8fd4c387d..3389d8e530 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Aristarchus_1.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Aristarchus_1.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Aristarchus_2.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Aristarchus_2.wms index 64e03e4777..410be02f9c 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Aristarchus_2.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Aristarchus_2.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Balmer_Basin.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Balmer_Basin.wms index 4820cf827d..b0bca01131 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Balmer_Basin.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Balmer_Basin.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Compton_Belkovich_Th_Anomaly.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Compton_Belkovich_Th_Anomaly.wms index f731f0cc6e..84e71f1f0e 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Compton_Belkovich_Th_Anomaly.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Compton_Belkovich_Th_Anomaly.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Flamsteed_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Flamsteed_Crater.wms index 78f433d25f..cad3e78ae3 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Flamsteed_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Flamsteed_Crater.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Gruithuisen_Domes.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Gruithuisen_Domes.wms index 5f771b564e..98b90f3166 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Gruithuisen_Domes.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Gruithuisen_Domes.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Hertzsprung.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Hertzsprung.wms index 1a646b71e6..4f6cab74a4 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Hertzsprung.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Hertzsprung.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Hortensius_Domes.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Hortensius_Domes.wms index 3ca85c164f..02a0edbeef 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Hortensius_Domes.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Hortensius_Domes.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Humboldtianum_Basin.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Humboldtianum_Basin.wms index f2469ff4dc..0be9a295d0 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Humboldtianum_Basin.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Humboldtianum_Basin.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Ina_D-Caldera.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Ina_D-Caldera.wms index 260d041b8d..3775d84d58 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Ina_D-Caldera.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Ina_D-Caldera.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/King_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/King_Crater.wms index 2e692c927c..7782a3e014 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/King_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/King_Crater.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Lichtenberg_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Lichtenberg_Crater.wms index b65ad57875..dea3d73604 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Lichtenberg_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Lichtenberg_Crater.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Mare_Ingenii.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Mare_Ingenii.wms index 7a991bc708..334362793f 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Mare_Ingenii.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Mare_Ingenii.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Mare_Moscoviense.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Mare_Moscoviense.wms index 102d73fc3f..a38009ebdf 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Mare_Moscoviense.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Mare_Moscoviense.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Mare_Smythii.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Mare_Smythii.wms index 9079578bdf..56b9310509 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Mare_Smythii.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Mare_Smythii.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Mare_Tranquillitatis.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Mare_Tranquillitatis.wms index 65cd2d9a2f..cb60e32414 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Mare_Tranquillitatis.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Mare_Tranquillitatis.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Marius_Hills.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Marius_Hills.wms index d8e7897c88..e8d6cb4772 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Marius_Hills.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Marius_Hills.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Montes_Pyrenaeus.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Montes_Pyrenaeus.wms index 66967e42f9..72e5866554 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Montes_Pyrenaeus.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Montes_Pyrenaeus.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Murchison_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Murchison_Crater.wms index 9a488a5d3a..e5a2b79281 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Murchison_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Murchison_Crater.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Orientale_1.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Orientale_1.wms index cb1dbc15de..2f32c000c9 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Orientale_1.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Orientale_1.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Reiner_Gamma.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Reiner_Gamma.wms index 06e95ff07d..17e8ddfb37 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Reiner_Gamma.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Reiner_Gamma.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Riccioli_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Riccioli_Crater.wms index 937434458d..a4bb5796ce 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Riccioli_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Riccioli_Crater.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Rima_Bode.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Rima_Bode.wms index ca4b70c74c..477cc2c42f 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Rima_Bode.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Rima_Bode.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Rimae_Prinz.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Rimae_Prinz.wms index dc312869fe..4caca65240 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Rimae_Prinz.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Rimae_Prinz.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/South_Pole-Aitken_Basin_Interior.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/South_Pole-Aitken_Basin_Interior.wms index 7771026811..751ffe7f44 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/South_Pole-Aitken_Basin_Interior.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/South_Pole-Aitken_Basin_Interior.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/South_Pole-Aitken_Rim.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/South_Pole-Aitken_Rim.wms index dd69661346..e0f4c5ddb7 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/South_Pole-Aitken_Rim.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/South_Pole-Aitken_Rim.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Stratton_Dewar.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Stratton_Dewar.wms index 239dbfc69b..516bf11698 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Stratton_Dewar.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Stratton_Dewar.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Sulpicius_Gallus.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Sulpicius_Gallus.wms index 4b2fccac70..efec2eeca5 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Sulpicius_Gallus.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Sulpicius_Gallus.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Tsiolkovskiy_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Tsiolkovskiy_Crater.wms index e73e528d6d..38783de118 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Tsiolkovskiy_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Tsiolkovskiy_Crater.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Tycho_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Tycho_Crater.wms index 6c93162104..bbdab23c01 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Tycho_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic/Tycho_Crater.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic_26cm/Apollo_11.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic_26cm/Apollo_11.wms index d2adeec182..08312c8b37 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic_26cm/Apollo_11.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic_26cm/Apollo_11.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic_28cm/Apollo_14.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic_28cm/Apollo_14.wms index a976ea983f..d072b05b10 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic_28cm/Apollo_14.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Image_Mosaic_28cm/Apollo_14.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Mosaic/Fresh_Crater_East_of_Lents.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Mosaic/Fresh_Crater_East_of_Lents.wms index af0c218dec..b3651b8e25 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Mosaic/Fresh_Crater_East_of_Lents.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Mosaic/Fresh_Crater_East_of_Lents.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_NAC_Image_Mosaic/N_Pole.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_NAC_Image_Mosaic/N_Pole.wms index 21344fcf95..caf54ed327 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_NAC_Image_Mosaic/N_Pole.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_NAC_Image_Mosaic/N_Pole.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_NAC_Image_Mosaic/S_Pole.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_NAC_Image_Mosaic/S_Pole.wms index 6d564a1554..1f77713c6d 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_NAC_Image_Mosaic/S_Pole.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_NAC_Image_Mosaic/S_Pole.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Aitken_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Aitken_Crater.wms index 918a77486e..4b8ec390b7 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Aitken_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Aitken_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Alphonsus_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Alphonsus_Crater.wms index b9566e71f8..7c5024cb8c 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Alphonsus_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Alphonsus_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Anaxagoras_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Anaxagoras_Crater.wms index 32621aa2aa..020dc11180 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Anaxagoras_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Anaxagoras_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Apollo_15.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Apollo_15.wms index 55904b56f1..0eb7b15386 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Apollo_15.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Apollo_15.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Apollo_16.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Apollo_16.wms index 58ff2185ac..fb78d8fde4 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Apollo_16.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Apollo_16.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Apollo_Basin.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Apollo_Basin.wms index 0a60aa3cda..97681c7c9e 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Apollo_Basin.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Apollo_Basin.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Aristarchus_1.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Aristarchus_1.wms index c3dc2a04cf..d4a3e5605b 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Aristarchus_1.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Aristarchus_1.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Aristarchus_2.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Aristarchus_2.wms index 4872d7b781..730064fb76 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Aristarchus_2.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Aristarchus_2.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Balmer_Basin.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Balmer_Basin.wms index 72e08e50ca..a72f2323b0 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Balmer_Basin.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Balmer_Basin.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Bullialdus_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Bullialdus_Crater.wms index 13e2f91ee0..06cbf40ecc 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Bullialdus_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Bullialdus_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Gruithuisen_Domes.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Gruithuisen_Domes.wms index da4c048108..04b4fa6f20 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Gruithuisen_Domes.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Gruithuisen_Domes.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Hertzsprung.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Hertzsprung.wms index 4349a86b26..c15e039b14 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Hertzsprung.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Hertzsprung.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Hortensius_Domes.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Hortensius_Domes.wms index 8dd5fce1bd..46c85c3550 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Hortensius_Domes.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Hortensius_Domes.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/King_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/King_Crater.wms index cd4a913b0b..9b4cd14f79 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/King_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/King_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Lichtenberg_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Lichtenberg_Crater.wms index ef19feba4f..32c729fc40 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Lichtenberg_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Lichtenberg_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Mare_Crisium.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Mare_Crisium.wms index 4807257b4b..e0c16b4678 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Mare_Crisium.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Mare_Crisium.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Montes_Pyrenaeus.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Montes_Pyrenaeus.wms index 0f59c509ea..4e4ecc3660 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Montes_Pyrenaeus.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Montes_Pyrenaeus.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Orientale_1.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Orientale_1.wms index 41b0245041..375e2a462c 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Orientale_1.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Orientale_1.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Plato_Ejecta.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Plato_Ejecta.wms index 8b60333c4c..7dae248709 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Plato_Ejecta.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Plato_Ejecta.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/South_Pole-Aitken_Basin_Interior.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/South_Pole-Aitken_Basin_Interior.wms index 71d90c3ed5..883ee882a5 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/South_Pole-Aitken_Basin_Interior.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/South_Pole-Aitken_Basin_Interior.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Stratton_Dewar_High_Fe_Anomaly.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Stratton_Dewar_High_Fe_Anomaly.wms index e96083e90a..b18b75770f 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Stratton_Dewar_High_Fe_Anomaly.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Stratton_Dewar_High_Fe_Anomaly.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Sulpicius_Gallus.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Sulpicius_Gallus.wms index 4c91ae2e2d..cb7dede11a 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Sulpicius_Gallus.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Sulpicius_Gallus.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Tycho_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Tycho_Crater.wms index 33603cfd13..dfa89aabac 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Tycho_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance/Tycho_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Aitken_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Aitken_Crater.wms index 6d1bcc0d41..e013cbaccb 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Aitken_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Aitken_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Alphonsus_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Alphonsus_Crater.wms index 41f7e07190..f2123fefd9 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Alphonsus_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Alphonsus_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Anaxagoras_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Anaxagoras_Crater.wms index e7242b48aa..e395ba326e 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Anaxagoras_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Anaxagoras_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Apollo_15.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Apollo_15.wms index 4a9ba480e8..2e73105cfb 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Apollo_15.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Apollo_15.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Apollo_16.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Apollo_16.wms index a849d61b1c..24ca65b1ee 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Apollo_16.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Apollo_16.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Apollo_Basin.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Apollo_Basin.wms index 8b9ce92c08..880588fc63 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Apollo_Basin.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Apollo_Basin.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Aristarchus_1.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Aristarchus_1.wms index 9e0d97a9f4..48318fe7c5 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Aristarchus_1.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Aristarchus_1.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Aristarchus_2.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Aristarchus_2.wms index 5c40ce6257..77d2f8cffb 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Aristarchus_2.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Aristarchus_2.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Balmer_Basin.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Balmer_Basin.wms index ba66691691..0dd3a04cd6 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Balmer_Basin.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Balmer_Basin.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Bullialdus_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Bullialdus_Crater.wms index 25296c77c8..7090b967ea 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Bullialdus_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Bullialdus_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Gruithuisen_Domes.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Gruithuisen_Domes.wms index 7e912d2527..0fc7f271c6 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Gruithuisen_Domes.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Gruithuisen_Domes.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Hertzsprung.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Hertzsprung.wms index b2c41fe895..2360031a89 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Hertzsprung.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Hertzsprung.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Hortensius_Domes.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Hortensius_Domes.wms index 6b3b6b0cf0..be1e742b9a 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Hortensius_Domes.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Hortensius_Domes.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/King_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/King_Crater.wms index c83fb2d9f2..e3b85613d7 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/King_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/King_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Lichtenberg_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Lichtenberg_Crater.wms index 6f7d22d91d..87a3c721e4 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Lichtenberg_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Lichtenberg_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Mare_Crisium.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Mare_Crisium.wms index 26d41e6764..ceb6e3a6ab 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Mare_Crisium.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Mare_Crisium.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Montes_Pyrenaeus.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Montes_Pyrenaeus.wms index 314c5f8edf..e7841a0a3d 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Montes_Pyrenaeus.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Montes_Pyrenaeus.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Orientale_1.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Orientale_1.wms index 2f5de17bdf..be2f21db0b 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Orientale_1.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Orientale_1.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Plato_Ejecta.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Plato_Ejecta.wms index 3c1525df0b..bef460442b 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Plato_Ejecta.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Plato_Ejecta.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/South_Pole-Aitken_Basin_Interior.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/South_Pole-Aitken_Basin_Interior.wms index 720bd3bea1..407babefcf 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/South_Pole-Aitken_Basin_Interior.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/South_Pole-Aitken_Basin_Interior.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Stratton_Dewar_High_Fe_Anomaly.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Stratton_Dewar_High_Fe_Anomaly.wms index 3f775efda0..67f31a12ab 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Stratton_Dewar_High_Fe_Anomaly.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Stratton_Dewar_High_Fe_Anomaly.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Sulpicius_Gallus.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Sulpicius_Gallus.wms index 605031e319..74c6cbef61 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Sulpicius_Gallus.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Sulpicius_Gallus.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Tycho_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Tycho_Crater.wms index 8faee58692..0d3cb4e0d3 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Tycho_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Abundance_Hazard/Tycho_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Aitken_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Aitken_Crater.wms index c0e01953eb..3900a95f8e 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Aitken_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Aitken_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Alphonsus_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Alphonsus_Crater.wms index 7f0ea0a4d7..fa628b4456 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Alphonsus_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Alphonsus_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Anaxagoras_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Anaxagoras_Crater.wms index 581118452d..df4f23ee20 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Anaxagoras_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Anaxagoras_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Apollo_15.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Apollo_15.wms index b26454a642..ccdd201095 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Apollo_15.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Apollo_15.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Apollo_16.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Apollo_16.wms index d6dcd172a7..603a20c470 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Apollo_16.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Apollo_16.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Apollo_Basin.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Apollo_Basin.wms index d2b8ba9d47..a7bc56854f 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Apollo_Basin.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Apollo_Basin.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Aristarchus_1.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Aristarchus_1.wms index 70961a1989..0dfdd60e9a 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Aristarchus_1.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Aristarchus_1.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Aristarchus_2.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Aristarchus_2.wms index 7aafb91823..cb153dde86 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Aristarchus_2.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Aristarchus_2.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Balmer_Basin.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Balmer_Basin.wms index f98c5993ad..dbb6c3fb1a 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Balmer_Basin.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Balmer_Basin.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Bullialdus_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Bullialdus_Crater.wms index 6d2bd2a09f..35d101053c 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Bullialdus_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Bullialdus_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Gruithuisen_Domes.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Gruithuisen_Domes.wms index c38f389fea..cb19dd4c8b 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Gruithuisen_Domes.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Gruithuisen_Domes.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Hazard_Aitken_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Hazard_Aitken_Crater.wms index 09b76b6e1d..df70a396db 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Hazard_Aitken_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Hazard_Aitken_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Hertzsprung.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Hertzsprung.wms index 10a4400c14..1f3e0fe1e6 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Hertzsprung.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Hertzsprung.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Hortensius_Domes.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Hortensius_Domes.wms index 907706a4d4..e5d8378df3 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Hortensius_Domes.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Hortensius_Domes.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/King_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/King_Crater.wms index 252d19dd49..d96c98ef0a 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/King_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/King_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Lichtenberg_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Lichtenberg_Crater.wms index d8e3be0f08..83fa4d7464 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Lichtenberg_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Lichtenberg_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Mare_Crisium.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Mare_Crisium.wms index 379253c7b7..6635f02a34 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Mare_Crisium.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Mare_Crisium.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Montes_Pyrenaeus.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Montes_Pyrenaeus.wms index f1dbdcf948..8b36cd4518 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Montes_Pyrenaeus.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Montes_Pyrenaeus.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Orientale_1.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Orientale_1.wms index ff1866da95..8186fff880 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Orientale_1.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Orientale_1.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Plato_Ejecta.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Plato_Ejecta.wms index 76836059c1..b6d1fd49e7 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Plato_Ejecta.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Plato_Ejecta.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/South_Pole-Aitken_Basin_Interior.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/South_Pole-Aitken_Basin_Interior.wms index bdc2f18087..67b2b9c812 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/South_Pole-Aitken_Basin_Interior.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/South_Pole-Aitken_Basin_Interior.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Stratton_Dewar_High_Fe_Anomaly.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Stratton_Dewar_High_Fe_Anomaly.wms index 8fa2605104..45d1d2fa1d 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Stratton_Dewar_High_Fe_Anomaly.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Stratton_Dewar_High_Fe_Anomaly.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Sulpicius_Gallus.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Sulpicius_Gallus.wms index e11b71e0c2..b13cf5c141 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Sulpicius_Gallus.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Sulpicius_Gallus.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Tycho_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Tycho_Crater.wms index 2567df6b0a..6a9f270ceb 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Tycho_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density/Tycho_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Alphonsus_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Alphonsus_Crater.wms index c7a3f6688b..9d44c762ca 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Alphonsus_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Alphonsus_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Anaxagoras_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Anaxagoras_Crater.wms index a0e507a2d2..1d186da20d 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Anaxagoras_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Anaxagoras_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Apollo_15.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Apollo_15.wms index 1a6fee66f0..84293c004e 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Apollo_15.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Apollo_15.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Apollo_16.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Apollo_16.wms index 5a979b4754..cc3423871e 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Apollo_16.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Apollo_16.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Apollo_Basin.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Apollo_Basin.wms index 92b58d0814..8eebabcc72 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Apollo_Basin.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Apollo_Basin.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Aristarchus_1.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Aristarchus_1.wms index 88fce9c4b2..c84e0289a5 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Aristarchus_1.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Aristarchus_1.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Aristarchus_2.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Aristarchus_2.wms index 8d8e3adaec..a10374ffbc 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Aristarchus_2.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Aristarchus_2.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Balmer_Basin.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Balmer_Basin.wms index 516f769b69..b342f09292 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Balmer_Basin.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Balmer_Basin.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Bullialdus_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Bullialdus_Crater.wms index 31d1e27f92..aeb6ba1ee9 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Bullialdus_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Bullialdus_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Gruithuisen_Domes.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Gruithuisen_Domes.wms index cba09a0f03..cdee459e0a 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Gruithuisen_Domes.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Gruithuisen_Domes.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Hertzsprung.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Hertzsprung.wms index a477946b9c..38ac793091 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Hertzsprung.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Hertzsprung.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Hortensius_Domes.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Hortensius_Domes.wms index 21f6a298a7..c0c8bf66e1 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Hortensius_Domes.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Hortensius_Domes.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/King_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/King_Crater.wms index 246167ab39..7278d51fb8 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/King_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/King_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Lichtenberg_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Lichtenberg_Crater.wms index 716d86c90a..b91fdc80e4 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Lichtenberg_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Lichtenberg_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Mare_Crisium.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Mare_Crisium.wms index e067624235..540eff6f52 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Mare_Crisium.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Mare_Crisium.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Montes_Pyrenaeus.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Montes_Pyrenaeus.wms index 99ede46b0c..cd178e6fdb 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Montes_Pyrenaeus.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Montes_Pyrenaeus.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Orientale_1.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Orientale_1.wms index ae96822335..1f4737fb3e 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Orientale_1.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Orientale_1.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Plato_Ejecta.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Plato_Ejecta.wms index 2e64e98d46..da44665696 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Plato_Ejecta.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Plato_Ejecta.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/South_Pole-Aitken_Basin_Interior.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/South_Pole-Aitken_Basin_Interior.wms index a01e7b488c..ea762a0ac9 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/South_Pole-Aitken_Basin_Interior.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/South_Pole-Aitken_Basin_Interior.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Stratton_Dewar_High_Fe_Anomaly.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Stratton_Dewar_High_Fe_Anomaly.wms index 5edef14caa..fefcad102b 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Stratton_Dewar_High_Fe_Anomaly.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Stratton_Dewar_High_Fe_Anomaly.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Sulpicius_Gallus.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Sulpicius_Gallus.wms index 908a0060a1..db46fdcaf6 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Sulpicius_Gallus.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Sulpicius_Gallus.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Tycho_Crater.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Tycho_Crater.wms index 6577a62408..4c81b99c1a 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Tycho_Crater.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_LROC_Rock_Density_Hazard/Tycho_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Laser_Altimeter/Albedo_Global.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Laser_Altimeter/Albedo_Global.wms index 40e2f8dcf6..57a1c0fc20 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Laser_Altimeter/Albedo_Global.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Laser_Altimeter/Albedo_Global.wms @@ -20,5 +20,5 @@ 1 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Mini-RF_Circular_Polarization_Ratio/Grayscale.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Mini-RF_Circular_Polarization_Ratio/Grayscale.wms index e856a90d3c..641f0ffb60 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Mini-RF_Circular_Polarization_Ratio/Grayscale.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Mini-RF_Circular_Polarization_Ratio/Grayscale.wms @@ -20,5 +20,5 @@ 1 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_ColorHillshade/Lacus_Mortis.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_ColorHillshade/Lacus_Mortis.wms index 353709ee78..c9d3401ec9 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_ColorHillshade/Lacus_Mortis.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_ColorHillshade/Lacus_Mortis.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_Mosaic/Lacus_Mortis.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_Mosaic/Lacus_Mortis.wms index 96aaaa5bcd..aa588f38df 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_Mosaic/Lacus_Mortis.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_Mosaic/Lacus_Mortis.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_Mosaic_0.5mpp.asset b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_Mosaic_0.5mpp.asset index e23be56778..a60559a59f 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_Mosaic_0.5mpp.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_Mosaic_0.5mpp.asset @@ -10,7 +10,7 @@ local treks_LRO_NAC_Mosaic_50cmpp_VonKarman_v2 = { Identifier = "LRO_NAC_Mosaic_50cmpp_VonKarman_v2", Name = [[LRO NAC Mosaic 0.5mpp, Von Karman]], FilePath = asset.localResource("LRO_NAC_Mosaic_0.5mpp/Von_Karman.vrt"), - Description = [[This is an orthorectified NAC mosaic of the Von Karman Crater region for the south pole of the Moon. This mosaic includes a total of 370 orthorectified NAC images: 252 sampled at 0.5 m/px and 118 sampled at 1 m/px. NAC orthoimages have been constructed from EDRs downloaded from the Planetary Data System (PDS) and subsequent USGS-ISIS processing. This mosaic has been coaligned to Chang'e-2 20 m/px DEM which has been coaligned to the USGS 59 m/px LOLA-SELENE DEM using ENVI (v5.6.2) patented auto-coreg. Most of the area used stereo-photogrammetrically processing of LROC-NAC stereo-pairs with the UCL CASPGO 3D mapping system, CASP-GO is described in Tao, Y., Muller, J.-P. et al. (2018) Massive Stereo-based DTM Production for Mars on Cloud Computers. Planetary Space Science 154, 30–58 (2018). doi: 10.1016/j.pss.2018.02.012 and CASP-GO is now integrated into ASP (https://stereopipeline.readthedocs.io/en/latest/experimental.html?highlight=casp-go#the-casp-go-stereo-processing-system) as part of the NASA PDART program. Individual NAC orthoimages mosaicked together using ArcGIS Pro (v2.9.2). A color balancing algorithm has been applied to roughly correct for color differences at the seams of NAC images. This data has been made available by and should be credited to: Yu Tao and Jan-Peter Muller, Imaging Group, Mullard Space Science Laboratory, University College London.]] + Description = [[This is an orthorectified NAC mosaic of the Von Karman Crater region for the south pole of the Moon. This mosaic includes a total of 370 orthorectified NAC images: 252 sampled at 0.5 m/px and 118 sampled at 1 m/px. NAC orthoimages have been constructed from EDRs downloaded from the Planetary Data System (PDS) and subsequent USGS-ISIS processing. This mosaic has been coaligned to Chang'e-2 20 m/px DEM which has been coaligned to the USGS 59 m/px LOLA-SELENE DEM using ENVI (v5.6.2) patented auto-coreg. Most of the area used stereo-photogrammetrically processing of LROC-NAC stereo-pairs with the UCL CASPGO 3D mapping system, CASP-GO is described in Tao, Y., Muller, J.-P. et al. (2018) Massive Stereo-based DTM Production for Mars on Cloud Computers. Planetary Space Science 154, 30-58 (2018). doi: 10.1016/j.pss.2018.02.012 and CASP-GO is now integrated into ASP (https://stereopipeline.readthedocs.io/en/latest/experimental.html?highlight=casp-go#the-casp-go-stereo-processing-system) as part of the NASA PDART program. Individual NAC orthoimages mosaicked together using ArcGIS Pro (v2.9.2). A color balancing algorithm has been applied to roughly correct for color differences at the seams of NAC images. This data has been made available by and should be credited to: Yu Tao and Jan-Peter Muller, Imaging Group, Mullard Space Science Laboratory, University College London.]] } asset.onInitialize(function() diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_Mosaic_0.5mpp/Von_Karman.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_Mosaic_0.5mpp/Von_Karman.wms index c026405a86..829029064e 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_Mosaic_0.5mpp/Von_Karman.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_Mosaic_0.5mpp/Von_Karman.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_Mosaic_1mpp/Von_Karman.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_Mosaic_1mpp/Von_Karman.wms index 105340c856..b4ae1f79e3 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_Mosaic_1mpp/Von_Karman.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_Mosaic_1mpp/Von_Karman.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_PSR_Mosaic_20mpp/N_Pole.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_PSR_Mosaic_20mpp/N_Pole.wms index a2945c11cb..e25c293008 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_PSR_Mosaic_20mpp/N_Pole.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_PSR_Mosaic_20mpp/N_Pole.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_PSR_Mosaic_20mpp/S_Pole.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_PSR_Mosaic_20mpp/S_Pole.wms index 3a92ee6faa..c4ee4fa4ba 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_PSR_Mosaic_20mpp/S_Pole.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_PSR_Mosaic_20mpp/S_Pole.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_and_CE-2_CCD_Mosaic_1mpp/Von_Karman.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_and_CE-2_CCD_Mosaic_1mpp/Von_Karman.wms index 8641fa7703..4bb346978c 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_and_CE-2_CCD_Mosaic_1mpp/Von_Karman.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_NAC_and_CE-2_CCD_Mosaic_1mpp/Von_Karman.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera.asset b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera.asset index 3bff1d29b1..6cce87ea53 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera.asset +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera.asset @@ -11,9 +11,9 @@ local treks_LRO_NAC_Apollo11_Mosaic_p = { Name = [[LRO Narrow Angle Camera, Apollo 11 Landing Site]], FilePath = asset.localResource("LRO_Narrow_Angle_Camera/Apollo_11_Landing_Site.vrt"), Description = [[This is the site where American astronauts Neil Armstrong and Edwin “Buzz” Aldrin made the first human landing on the Moon on July 20, 1969. Armstrong and Aldrin landed here aboard the lunar module Eagle, while Michael Collins remained in orbit around the Moon in the command module Columbia. Armstrong and Aldrin conducted one EVA on the lunar surface lasting 2 hours, 31 minutes 40 seconds, remaining within 60 meters of the lunar module. They collected 21.55 kg of lunar sample material for return to the Earth. - -In this LRO NAC view of the landing site, the descent stage of the Eagle is the largest man-made object visible. The dark tracks of the astronauts’ footprints extend out from it clustered primarily in 3 directions. To the northwest, the tracks extend to the location where the astronauts set up a TV camera. To the south, tracks extend to where a Lunar Ranging Retroreflector and the Passive Seismic Experiment Package were deployed. To the east, the tracks extend to the rim of Little West Crater. - + +In this LRO NAC view of the landing site, the descent stage of the Eagle is the largest man-made object visible. The dark tracks of the astronauts' footprints extend out from it clustered primarily in 3 directions. To the northwest, the tracks extend to the location where the astronauts set up a TV camera. To the south, tracks extend to where a Lunar Ranging Retroreflector and the Passive Seismic Experiment Package were deployed. To the east, the tracks extend to the rim of Little West Crater. + The landing site, located at 0.67416 N, 23.47314 E, is in the southwest part of Mare Tranquilitatis, an area characterized by extensive deposits of mare basalt. ]] } @@ -23,9 +23,9 @@ local treks_LRO_NAC_Apollo12_Mosaic_p = { Name = [[LRO Narrow Angle Camera, Apollo 12 Landing Site]], FilePath = asset.localResource("LRO_Narrow_Angle_Camera/Apollo_12_Landing_Site.vrt"), Description = [[This is the site where American astronauts Charles “Pete” Conrad and Alan Bean made the second human landing on the Moon on November 19, 1969. Conrad and Bean landed here aboard the lunar module Intrepid, while Richard Gordon remained in orbit around the Moon in the command module Yankee Clipper. Apollo 12 demonstrated the key capability of a precision landing, with Intrepid touching down less than 200 meters from the site where the Surveyor 3 probe had landed on April 20, 1967. Conrad and Bean conducted 2 EVAs on the lunar surface. The first, lasting 3 hours, 56 minutes, extended to the northwest for deployment of the ALSEP instrument package, and the continued to the rim of a 350-meter diameter crater dubbed Middle Crescent. The second EVA, lasting 3 hours, 49 minutes, was a loop trip of 1.5 km around several craters to the south, including retrieval of a camera from Surveyor 3. They collected 34.35 kilograms of lunar sample material for return to the Earth. - -In this LRO NAC view of the landing site, the descent stage of the Intrepid is the largest man-made object visible. The dark tracks of the astronauts’ footprints extend out from it. To the northwest, the tracks extend about 130 meters to were components of the ALSEP can be seen. About 160 meters to the southeast of Intrepid, Surveyor 3 is visible with a dense cluster of footprints around it. - + +In this LRO NAC view of the landing site, the descent stage of the Intrepid is the largest man-made object visible. The dark tracks of the astronauts' footprints extend out from it. To the northwest, the tracks extend about 130 meters to were components of the ALSEP can be seen. About 160 meters to the southeast of Intrepid, Surveyor 3 is visible with a dense cluster of footprints around it. + The landing site, located at 3.0138 S N, 23.4219 W, is in the southern part of Oceanus Procellarum, an area characterized by extensive deposits of basalt significantly younger than that at the Apollo 11 site. The site also provided the first samples of KREEP, material rich in potassium, phosphorus, and rare earth elements. The potential for sampling ejecta from one of the rays extending from the crater Copernicus added to the attractiveness of the site. ]] } @@ -35,9 +35,9 @@ local treks_LRO_NAC_Apollo14_Mosaic_p = { Name = [[LRO Narrow Angle Camera, Apollo 14 Landing Site]], FilePath = asset.localResource("LRO_Narrow_Angle_Camera/Apollo_14_Landing_Site.vrt"), Description = [[This is the site where American astronauts Alan Shepard and Edgar Mitchell made the third human landing on the Moon on February 5, 1971. Shepard and Mitchell landed here aboard the lunar module Antares, while Stuart Roosa remained in orbit around the Moon in the command module Kitty Hawk. Shephard and Mitchell conducted 2 EVAs on the lunar surface. The first, lasting 4 hours, 47 minutes, 50 seconds, extended to the west for deployment of the ALSEP instrument package, included collection of a contingency sample, and covered a total distance of about 550 meters. The second EVA, lasting 4 hours, 34 minutes, 41 seconds, was intended to visit Cone Crater, 370 meters in diameter and located approximately 1.2 kilometers to the northeast. To help transport the load of equipment and retrieved samples on this EVA, the astronauts were equipped with a hand-pulled cart, the Modular Equipment Transporter (MET). The rough, hummocky terrain made navigation difficult during the second EVA, and the astronauts were not able to identify the rim of Cone Crater, though later imagery showed that they reached a point about 20 meters south of the crater rim. Shepard and Mitchell collected 42.80 kilograms of lunar sample material for return to the Earth. - -In this LRO NAC view of the landing site, the descent stage of the Antares is the largest man-made object visible. The dark tracks of the astronauts’ footprints from the first EVA extend to the west, where components of the ALSEP are visible. Extending to the northeast of Antares’ landing site, the track of the astronauts’ footprints and the tracks of the MET’s wheels can be traced toward Cone Crater. - + +In this LRO NAC view of the landing site, the descent stage of the Antares is the largest man-made object visible. The dark tracks of the astronauts' footprints from the first EVA extend to the west, where components of the ALSEP are visible. Extending to the northeast of Antares' landing site, the track of the astronauts' footprints and the tracks of the MET's wheels can be traced toward Cone Crater. + The landing site, located at 3.64589 S, 17.47194 W, was selected largely with the goal of sampling material from the Imbrium Basin impact, whose ejecta covers much of this area, known as the Fra Mauro formation.]] } @@ -46,9 +46,9 @@ local treks_LRO_NAC_Apollo15_Mosaic_p = { Name = [[LRO Narrow Angle Camera, Apollo 15 Landing Site]], FilePath = asset.localResource("LRO_Narrow_Angle_Camera/Apollo_15_Landing_Site.vrt"), Description = [[This is the site where American astronauts David Scott and James Irwin made the fourth human landing on the Moon on July 30, 1971. Scott and Irwin landed here aboard the lunar module Falcon, while Alfred Worden remained in orbit around the Moon in the command module Endeavour. This was the first of the Apollo J missions. These featured a greater emphasis on conducting science on the Moon along with longer stays on the lunar surface. The J missions also included a lunar rover which allowed the astronauts to drive across the lunar surface, covering far greater areas, and carrying back more sample material. Scott first conducted a 33-minute stand-up EVA, surveying and imaging the local terrain through the upper hatch of the lunar module. Scott and Irwin then conducted 3 surface EVAs. The first, lasting 6 hours, 32 minutes, 42 seconds, involved deploying the Lunar Rover, and driving in it on a 10.3-km geological traverse. They drove southwest to the edge of Hadley Rille and then continued south along the edge of the rille. At the end of the first surface EVA, they deployed the Apollo Lunar Surface Experiments Package (ALSEP) approximately 110 meters north-northwest of the lunar module. The second surface EVA, lasting 7 hours, 12 minutes, 14 seconds, featured a 12.5-kilometer lunar rover traverse southeast across the mare and along the base of the Apennine Mountains. The third surface EVA, lasting 4 hours, 49 minutes, 50 seconds, had the astronauts making a 5.1-kilometer traverse west to Hadley Rille northwest along the edge of the rille, and east across the mare back to the lunar module. Scott and Irwin collected 77 kilograms of lunar sample material for return to the Earth. - -In this LRO NAC view of the landing site, the descent stage of the Falcon is the largest man-made object visible. The dark markings of the astronauts’ footprints and rover tire tracks are visible around the landing site, especially extending to the north-northwest, where components of the ALSEP are visible. - + +In this LRO NAC view of the landing site, the descent stage of the Falcon is the largest man-made object visible. The dark markings of the astronauts' footprints and rover tire tracks are visible around the landing site, especially extending to the north-northwest, where components of the ALSEP are visible. + The landing site, located at 26.13239 N, 3.63330 E, was selected to provide access to the basalt of Mare Imbrium, the stratigraphy revealed in the deep channel of Hadley Rille carved by flowing lava, and mountain material from the front of the Apennine Range. ]] } @@ -58,9 +58,9 @@ local treks_LRO_NAC_Apollo16_Mosaic_p = { Name = [[LRO Narrow Angle Camera, Apollo 16 Landing Site]], FilePath = asset.localResource("LRO_Narrow_Angle_Camera/Apollo_16_Landing_Site.vrt"), Description = [[This is the site where American astronauts John Young and Charles Duke made the fifth human landing on the Moon on April 21, 1972. Young and Duke landed here aboard the lunar module Orion, while Ken Mattingly remained in orbit around the Moon in the command module Casper. Young and Duke conducted 3 surface EVAs. The first, lasting 7 hours, 11 minutes, 2 seconds, included deploying the Apollo Lunar Surface Experiments Package (ALSEP) approximately 95 meters southwest of the lunar module, and conducting a geologic traverse using the lunar rover to a couple of small craters within about 1,400 meters to the west of the landing site. The second surface EVA, lasting 7 hours, 23 minutes, 9 seconds, featured an 11.1-kilometer lunar rover drive south to the Cinco Crater area of Stone Mountain, making stops at 6 stations along the way. across the mare and along the base of the Apennine Mountains. The third surface EVA, lasting 5 hours, 40 minutes, 3 seconds, had the astronauts making a 11.4-kilometer traverse north to North Ray Crater. Young and Duke collected 95.71 kilograms of lunar sample material for return to the Earth. - -In this LRO NAC view of the landing site, the descent stage of the Orion is the largest man-made object visible, within a dark halo on the western rim of a ~30-meter crater. The dark markings of the astronauts’ footprints and rover tire tracks are visible around the landing site, especially extending to the southwest, where components of the ALSEP are visible. - + +In this LRO NAC view of the landing site, the descent stage of the Orion is the largest man-made object visible, within a dark halo on the western rim of a ~30-meter crater. The dark markings of the astronauts' footprints and rover tire tracks are visible around the landing site, especially extending to the southwest, where components of the ALSEP are visible. + With the previous Apollo landings having focused on the low, flat, basaltic terrain of the lunar maria or seas, Apollo 16 was the first crewed mission to visit the lunar highlands. The landing site, located at 8.9734 S, 15.5011 E, was located on the boundary of two highland geologic units, the Descartes Formation and the Cayley Formation. Both units were thought to be volcanic in nature, but composed of lavas with higher silica content than the basaltic rocks of the maria; the Descartes Formation was widely thought to be rhyolite. However, the astronauts quickly discovered on their traverses that the rocks around them were overwhelmingly breccias. The great surprise of Apollo 16 was the discovery that the highland terrain was not silicic lava, but fluidized ejecta from a great basin-forming impact, an that the rocks were crustal material, largely anorthosite and gabbro. ]] } @@ -125,11 +125,11 @@ local treks_M129086118ndgcs = { Identifier = "M129086118ndgcs", Name = [[LRO Narrow Angle Camera, Mosaic Apollo 17 Landing Site]], FilePath = asset.localResource("LRO_Narrow_Angle_Camera/Mosaic_Apollo_17_Landing_Site.vrt"), - Description = [[This is the site where American astronauts Eugene Cernan and Harrison Schmitt made the sixth and final human landing on the Moon of the Apollo program on December 11, 1972. Cernan and Schmitt landed here aboard the lunar module Challenger, while Ronald Evans remained in orbit around the Moon in the command module America. With a PhD in geology, Schmitt was the first and only professional scientist to have visited the Moon. Cernan and Schmitt conducted 3 surface EVAs. The first, lasting 7 hours, 11 minutes, 53 seconds, included deploying the Apollo Lunar Surface Experiments Package (ALSEP) approximately 185 meters west-northwest of the lunar module, and conducting a 3.5-kilometer geologic traverse using the lunar rover to the rim of Steno, a small impact crater south of the landing site. The second surface EVA, lasting 7 hours, 36 minutes, 56 seconds, featured a 20.4-kilometer geologic traverse south and west. Stops included a location at the base of South Massif where a landslide had brought ancient highland rocks from high on the mountain into reach, and at Shorty Crater, which was found to be impact rather than volcanic in origin, but which excavated an older volcanic deposit which yielded the famous “orange soil”, beads of volcanic glass erupted in a lunar fire fountain. The third surface EVA, lasting 7 hours, 15 minutes, 8 seconds, had the astronauts making a 20.4-kilometer geologic traverse north and east to North Massif. Stops on this traverse included taking samples of early lunar crust material from large boulders near the base of the massif that had rolled down from high up on the mountain. Cernan and Schmitt collected 110.52 kilograms of lunar sample material for return to the Earth. + Description = [[This is the site where American astronauts Eugene Cernan and Harrison Schmitt made the sixth and final human landing on the Moon of the Apollo program on December 11, 1972. Cernan and Schmitt landed here aboard the lunar module Challenger, while Ronald Evans remained in orbit around the Moon in the command module America. With a PhD in geology, Schmitt was the first and only professional scientist to have visited the Moon. Cernan and Schmitt conducted 3 surface EVAs. The first, lasting 7 hours, 11 minutes, 53 seconds, included deploying the Apollo Lunar Surface Experiments Package (ALSEP) approximately 185 meters west-northwest of the lunar module, and conducting a 3.5-kilometer geologic traverse using the lunar rover to the rim of Steno, a small impact crater south of the landing site. The second surface EVA, lasting 7 hours, 36 minutes, 56 seconds, featured a 20.4-kilometer geologic traverse south and west. Stops included a location at the base of South Massif where a landslide had brought ancient highland rocks from high on the mountain into reach, and at Shorty Crater, which was found to be impact rather than volcanic in origin, but which excavated an older volcanic deposit which yielded the famous , beads of volcanic glass erupted in a lunar fire fountain. The third surface EVA, lasting 7 hours, 15 minutes, 8 seconds, had the astronauts making a 20.4-kilometer geologic traverse north and east to North Massif. Stops on this traverse included taking samples of early lunar crust material from large boulders near the base of the massif that had rolled down from high up on the mountain. Cernan and Schmitt collected 110.52 kilograms of lunar sample material for return to the Earth. -In this LRO NAC view of the landing site, the descent stage of the Challenger is the largest man-made object visible. The dark markings of the astronauts’ footprints and rover tire tracks are visible around the landing site, especially extending to the west-northwest, where components of the ALSEP are visible. +In this LRO NAC view of the landing site, the descent stage of the Challenger is the largest man-made object visible. The dark markings of the astronauts' footprints and rover tire tracks are visible around the landing site, especially extending to the west-northwest, where components of the ALSEP are visible. -The landing site, located at 20.1911 N, 30.7723 E, is in a narrow valley in the Taurus Mountains near the crater Littrow. The Taurus Mountains form part of the Serenitatis impact basin, and sampling some of the ancient highland terrain into which the basin was excavated could help determine the date of the basin’s formation. Mare basalt subsequently flooded the floor of the valley, and after that parts of the area were blanketed by pyroclastic ash deposits erupting from dark-haloed volcanic craters. The site could therefore provide access to a diverse range of sample material.]] +The landing site, located at 20.1911 N, 30.7723 E, is in a narrow valley in the Taurus Mountains near the crater Littrow. The Taurus Mountains form part of the Serenitatis impact basin, and sampling some of the ancient highland terrain into which the basin was excavated could help determine the date of the basin's formation. Mare basalt subsequently flooded the floor of the valley, and after that parts of the area were blanketed by pyroclastic ash deposits erupting from dark-haloed volcanic craters. The site could therefore provide access to a diverse range of sample material.]] } local treks_ingenii_skylight = { diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Apollo_11_Landing_Site.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Apollo_11_Landing_Site.wms index 58be1ebbd7..ad66cda11c 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Apollo_11_Landing_Site.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Apollo_11_Landing_Site.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Apollo_12_Landing_Site.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Apollo_12_Landing_Site.wms index 81e7b55915..f37c3d39af 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Apollo_12_Landing_Site.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Apollo_12_Landing_Site.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Apollo_14_Landing_Site.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Apollo_14_Landing_Site.wms index ca514dcf1b..d892cf7dd9 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Apollo_14_Landing_Site.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Apollo_14_Landing_Site.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Apollo_15_Landing_Site.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Apollo_15_Landing_Site.wms index b5a9e504ff..4a5f5f0a5a 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Apollo_15_Landing_Site.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Apollo_15_Landing_Site.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Apollo_16_Landing_Site.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Apollo_16_Landing_Site.wms index faf05d84f2..1a1266f88c 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Apollo_16_Landing_Site.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Apollo_16_Landing_Site.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/ColorHillShade_Apollo_17.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/ColorHillShade_Apollo_17.wms index 79433bfff7..4b9a2fa4bf 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/ColorHillShade_Apollo_17.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/ColorHillShade_Apollo_17.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/HillShade_Apollo_17.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/HillShade_Apollo_17.wms index 29c65d0643..c170acecac 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/HillShade_Apollo_17.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/HillShade_Apollo_17.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_11.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_11.wms index bd02a91d0a..9c21e95e36 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_11.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_11.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_12.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_12.wms index 103e9070e9..ba09ed46f9 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_12.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_12.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_14.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_14.wms index 272fc7ad5b..72b941a211 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_14.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_14.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_15.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_15.wms index a35afc11c5..9615b1b547 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_15.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_15.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_16.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_16.wms index ee93ef1e20..5f699c56a1 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_16.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_16.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_17.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_17.wms index 5c28de00cf..21aabb02dc 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_17.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_17.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_17_Landing_Site.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_17_Landing_Site.wms index 04553831b1..2e261caebb 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_17_Landing_Site.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Apollo_17_Landing_Site.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Ingenii.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Ingenii.wms index cf0c00e1ad..b7cea9b823 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Ingenii.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Ingenii.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Marius.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Marius.wms index c970d381a1..89ec954ad7 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Marius.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Marius.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Schrodinger.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Schrodinger.wms index d46667c0bb..ed94914c35 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Schrodinger.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Schrodinger.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Schrodinger_Extra.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Schrodinger_Extra.wms index 131b6991f7..a417f9ac0c 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Schrodinger_Extra.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Schrodinger_Extra.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Schrodinger_Landing_Site.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Schrodinger_Landing_Site.wms index 1ba88b6e41..c111c9edd6 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Schrodinger_Landing_Site.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Schrodinger_Landing_Site.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Schrodinger_NorthEast.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Schrodinger_NorthEast.wms index e7a0138ad2..60ca0c7eb6 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Schrodinger_NorthEast.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Schrodinger_NorthEast.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Schrodinger_SouthCenter.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Schrodinger_SouthCenter.wms index 71f9458d49..1ba2071284 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Schrodinger_SouthCenter.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Schrodinger_SouthCenter.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Schrodinger_SouthEast.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Schrodinger_SouthEast.wms index 95de4b23e3..36eb930205 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Schrodinger_SouthEast.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Schrodinger_SouthEast.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Small_Tranquilltatis_1.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Small_Tranquilltatis_1.wms index 558e197553..63f0894cbd 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Small_Tranquilltatis_1.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Small_Tranquilltatis_1.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Small_Tranquilltatis_2.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Small_Tranquilltatis_2.wms index 4b117a763f..20fa566ade 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Small_Tranquilltatis_2.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Mosaic_Small_Tranquilltatis_2.wms @@ -20,5 +20,5 @@ 1 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Slope_Apollo_17.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Slope_Apollo_17.wms index 2a09ab1b9c..b56b868be6 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Slope_Apollo_17.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_Narrow_Angle_Camera/Slope_Apollo_17.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_WAC-GLD100_DEM/Grayscale.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_WAC-GLD100_DEM/Grayscale.wms index 32b7b06e95..723488728e 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_WAC-GLD100_DEM/Grayscale.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_WAC-GLD100_DEM/Grayscale.wms @@ -20,5 +20,5 @@ 1 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_WAC_GLD100_DEM/ColorHillShade.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_WAC_GLD100_DEM/ColorHillShade.wms index 1304aad8d1..59ee33e51a 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_WAC_GLD100_DEM/ColorHillShade.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_WAC_GLD100_DEM/ColorHillShade.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_WAC_GLD100_DEM/Hillshade.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_WAC_GLD100_DEM/Hillshade.wms index 53b7e880af..dbd44f5de2 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_WAC_GLD100_DEM/Hillshade.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_WAC_GLD100_DEM/Hillshade.wms @@ -20,5 +20,5 @@ 1 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_and_Kaguya_Multi_Instruments_1895.21mpp/3He_Dig_Here.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_and_Kaguya_Multi_Instruments_1895.21mpp/3He_Dig_Here.wms index 4d409556f3..7a4f37f94f 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_and_Kaguya_Multi_Instruments_1895.21mpp/3He_Dig_Here.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_and_Kaguya_Multi_Instruments_1895.21mpp/3He_Dig_Here.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_and_Kaguya_Multi_Instruments_1895.21mpp/3He_Likely.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_and_Kaguya_Multi_Instruments_1895.21mpp/3He_Likely.wms index 5a9cdcd2bd..9499059622 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_and_Kaguya_Multi_Instruments_1895.21mpp/3He_Likely.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_and_Kaguya_Multi_Instruments_1895.21mpp/3He_Likely.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_and_Kaguya_Multi_Instruments_1895.21mpp/3He_More_Likely.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_and_Kaguya_Multi_Instruments_1895.21mpp/3He_More_Likely.wms index 7a114f7a5a..aeebf22927 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_and_Kaguya_Multi_Instruments_1895.21mpp/3He_More_Likely.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_and_Kaguya_Multi_Instruments_1895.21mpp/3He_More_Likely.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_and_Kaguya_Multi_Instruments_1895.21mpp/3He_Most_Likely.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_and_Kaguya_Multi_Instruments_1895.21mpp/3He_Most_Likely.wms index 751fba8a15..bf068eabee 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_and_Kaguya_Multi_Instruments_1895.21mpp/3He_Most_Likely.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_and_Kaguya_Multi_Instruments_1895.21mpp/3He_Most_Likely.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_and_Kaguya_Multi_Instruments_1895.21mpp/3He_Very_Likely.wms b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_and_Kaguya_Multi_Instruments_1895.21mpp/3He_Very_Likely.wms index 8aaff45131..a0feead845 100644 --- a/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_and_Kaguya_Multi_Instruments_1895.21mpp/3He_Very_Likely.wms +++ b/data/assets/scene/solarsystem/planets/earth/moon/nasa-treks/LRO_and_Kaguya_Multi_Instruments_1895.21mpp/3He_Very_Likely.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/2000_carbon_monoxide.asset b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/2000_carbon_monoxide.asset index bb2b4858f3..7ff6894a6d 100644 --- a/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/2000_carbon_monoxide.asset +++ b/data/assets/scene/solarsystem/planets/earth/noaa-sos/atmosphere/2000_carbon_monoxide.asset @@ -7,11 +7,11 @@ local Description = [[Carbon monoxide is known as "The Silent Killer" because it colorless, odorless, tasteless gas that is poisonous to humans and other oxygen breathing organisms. It is also naturally occurring in the atmosphere. Only in high concentrations is carbon monoxide deadly. At the Earth's surface the concentration of carbon monoxide is -100 ppb (parts per billion), however, in urban areas it can get up to 10 ppm (parts per +100 ppb (parts per billion), however, in urban areas it can get up to 10 ppm (parts per million) or 100 times higher. One of the main anthropogenic sources of carbon monoxide in -the atmosphere is emissions from automobiles. In areas with heavy traffic the carbon -monoxide can be measured at 50 ppm. The natural sources of carbon monoxide include -volcanoes and brush burning. Between the anthropogenic and natural sources, scientists +the atmosphere is emissions from automobiles. In areas with heavy traffic the carbon +monoxide can be measured at 50 ppm. The natural sources of carbon monoxide include +volcanoes and brush burning. Between the anthropogenic and natural sources, scientists estimate that the annual production of carbon monoxide is 2-5 gigatons]] local URL = "https://sos.noaa.gov/catalog/datasets/carbon-monoxide-2000/" diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/communications/geostationary.asset b/data/assets/scene/solarsystem/planets/earth/satellites/communications/geostationary.asset index 51dd695a2c..a8c1f7d703 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/communications/geostationary.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/communications/geostationary.asset @@ -45,7 +45,7 @@ asset.export(satellites) asset.meta = { Name = "Satellites Communications - Geostationary", Version = "1.0", - Description = [[Satellites asset for Communications - Geostationary. Data from + Description = [[Satellites asset for Communications - Geostationary. Data from Celestrak]], Author = "OpenSpace Team", URL = "https://celestrak.com/NORAD/elements/", diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/debris/debris_asat.asset b/data/assets/scene/solarsystem/planets/earth/satellites/debris/debris_asat.asset index 2b4b2cf976..ad69351616 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/debris/debris_asat.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/debris/debris_asat.asset @@ -43,7 +43,7 @@ asset.export(satellites) asset.meta = { Name = "Satellites Debris - Indian ASAT test Debris", Version = "1.0", - Description = [[Satellites asset for Debris - Indian ASAT test Debris. Data from + Description = [[Satellites asset for Debris - Indian ASAT test Debris. Data from Celestrak]], Author = "OpenSpace Team", URL = "https://celestrak.com/NORAD/elements/", diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/misc/brightest.asset b/data/assets/scene/solarsystem/planets/earth/satellites/misc/brightest.asset index 1d2ab326be..209ca2cd4f 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/misc/brightest.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/misc/brightest.asset @@ -25,7 +25,7 @@ local satellites = { GUI = { Name = "100 Brightest", Path = "/Solar System/Planets/Earth/Satellites", - Description = [[The 100 (or so) satellites that will appear brightest when viewed + Description = [[The 100 (or so) satellites that will appear brightest when viewed from Earth.]] } } diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/misc/spacestations.asset b/data/assets/scene/solarsystem/planets/earth/satellites/misc/spacestations.asset index ab30c6340d..144148e880 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/misc/spacestations.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/misc/spacestations.asset @@ -25,8 +25,8 @@ local satellites = { GUI = { Name = "SpaceStations", Path = "/Solar System/Planets/Earth/Satellites", - Description = [[A collection of space stations (including the ISS and China's - Tiangong), along with certain cubesats and satellite constellations from space + Description = [[A collection of space stations (including the ISS and China's + Tiangong), along with certain cubesats and satellite constellations from space agencies.]] } } diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/weather/sarsat.asset b/data/assets/scene/solarsystem/planets/earth/satellites/weather/sarsat.asset index d2ad0e7056..a458127638 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/weather/sarsat.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/weather/sarsat.asset @@ -43,7 +43,7 @@ asset.export(satellites) asset.meta = { Name = "Satellites Weather - Search & Rescue (SARSAT)", Version = "1.0", - Description = [[Satellites asset for Weather - Search & Rescue (SARSAT). Data from + Description = [[Satellites asset for Weather - Search & Rescue (SARSAT). Data from Celestrak]], Author = "OpenSpace Team", URL = "https://celestrak.com/NORAD/elements/", diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/weather/spire.asset b/data/assets/scene/solarsystem/planets/earth/satellites/weather/spire.asset index d2a89c12d8..caa9076b59 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/weather/spire.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/weather/spire.asset @@ -43,7 +43,7 @@ asset.export(satellites) asset.meta = { Name = "Satellites Weather - Spire", Version = "1.0", - Description = [[Satellites asset for Weather - Search & Rescue (SARSAT). Data from + Description = [[Satellites asset for Weather - Search & Rescue (SARSAT). Data from Celestrak]], Author = "OpenSpace Team", URL = "https://celestrak.com/NORAD/elements/", diff --git a/data/assets/scene/solarsystem/planets/earth/satellites/weather/tdrss.asset b/data/assets/scene/solarsystem/planets/earth/satellites/weather/tdrss.asset index cc39b62f47..caa189309e 100644 --- a/data/assets/scene/solarsystem/planets/earth/satellites/weather/tdrss.asset +++ b/data/assets/scene/solarsystem/planets/earth/satellites/weather/tdrss.asset @@ -43,7 +43,7 @@ asset.export(satellites) asset.meta = { Name = "Satellites Weather - Tracking and Data Relay Satellite System (TDRSS)", Version = "1.0", - Description = [[Satellites asset for Weather - Tracking and Data Relay Satellite + Description = [[Satellites asset for Weather - Tracking and Data Relay Satellite System (TDRSS). Data from Celestrak]], Author = "OpenSpace Team", URL = "https://celestrak.com/NORAD/elements/", diff --git a/data/assets/scene/solarsystem/planets/jupiter/minor/carpo_group.asset b/data/assets/scene/solarsystem/planets/jupiter/minor/carpo_group.asset index 24834899a0..64e658658e 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/minor/carpo_group.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/minor/carpo_group.asset @@ -67,7 +67,7 @@ for i, moon in ipairs(carpoGroup) do } -- 'Hacky' solution to case where the main label gets culled on approach due to its onscreen size. - -- We need the size of the original label to be big as it needs to be legible from long distances when focusing on Jupiter. + -- We need the size of the original label to be big as it needs to be legible from long distances when focusing on Jupiter. moon_labels[i+1] = { Identifier = moon.Identifier .. "LabelNear", Parent = moon.Identifier, @@ -96,7 +96,7 @@ end local nodes = proceduralGlobes.createGlobes(carpoGroup) -asset.onInitialize(function() +asset.onInitialize(function() for _, node in ipairs(nodes) do openspace.addSceneGraphNode(node) end diff --git a/data/assets/scene/solarsystem/planets/jupiter/minor/inner_group.asset b/data/assets/scene/solarsystem/planets/jupiter/minor/inner_group.asset index b1bb9b4749..49e438f9af 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/minor/inner_group.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/minor/inner_group.asset @@ -137,7 +137,7 @@ asset.onDeinitialize(function() for i = #moon_labels, 1, -1 do openspace.removeSceneGraphNode(moon_labels[i]) end - + for i = #nodes, 1, -1 do openspace.removeSceneGraphNode(nodes[i]) end diff --git a/data/assets/scene/solarsystem/planets/jupiter/minor_moons.asset b/data/assets/scene/solarsystem/planets/jupiter/minor_moons.asset index 8bcf2aa6ee..99b5e07a60 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/minor_moons.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/minor_moons.asset @@ -17,14 +17,14 @@ local minormoons_on = { local moons = openspace.getProperty('{moon_minor_jupiter}.Renderable.Enabled'); local moons_fade = openspace.getProperty('{moon_minor_jupiter}.Renderable.Fade'); - for i, v in pairs(trails_fade) do + for i, v in pairs(trails_fade) do openspace.setPropertyValueSingle(trails[i], true) - openspace.setPropertyValueSingle(v, 1, 2, 'Linear') + openspace.setPropertyValueSingle(v, 1, 2, 'Linear') end - for i, v in pairs(moons_fade) do + for i, v in pairs(moons_fade) do openspace.setPropertyValueSingle(moons[i], true) - openspace.setPropertyValueSingle(v, 1, 2, 'Linear') + openspace.setPropertyValueSingle(v, 1, 2, 'Linear') end ]], Documentation = "Turn ON Jupiter's minor moons and their trails", @@ -42,12 +42,12 @@ local minormoons_off = { local moons = openspace.getProperty('{moon_minor_jupiter}.Renderable.Enabled'); local moons_fade = openspace.getProperty('{moon_minor_jupiter}.Renderable.Fade'); - for i, v in pairs(trails_fade) do - openspace.setPropertyValueSingle(v, 0, 2, 'Linear', "openspace.setPropertyValueSingle('" .. trails[i] .. "', false)" ) + for i, v in pairs(trails_fade) do + openspace.setPropertyValueSingle(v, 0, 2, 'Linear', "openspace.setPropertyValueSingle('" .. trails[i] .. "', false)" ) end for i, v in pairs(moons_fade) do - openspace.setPropertyValueSingle(v, 0, 2, 'Linear', "openspace.setPropertyValueSingle('" .. moons[i] .. "', false)" ) + openspace.setPropertyValueSingle(v, 0, 2, 'Linear', "openspace.setPropertyValueSingle('" .. moons[i] .. "', false)" ) end ]], Documentation = "Turn OFF Jupiter's minor moons and their trails", diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MEX_HRSC/Martian_Path_Eastern_Section_DEM.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MEX_HRSC/Martian_Path_Eastern_Section_DEM.wms index 5f3a91666d..8750677b2d 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MEX_HRSC/Martian_Path_Eastern_Section_DEM.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MEX_HRSC/Martian_Path_Eastern_Section_DEM.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MEX_HRSC/Martian_Path_MC11_Quad_DEM.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MEX_HRSC/Martian_Path_MC11_Quad_DEM.wms index 04482affb1..9e5c6a19dd 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MEX_HRSC/Martian_Path_MC11_Quad_DEM.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MEX_HRSC/Martian_Path_MC11_Quad_DEM.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOC_Atlas/Global_Color_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOC_Atlas/Global_Color_Mosaic.wms index ba4a1ddfef..1b1af4506a 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOC_Atlas/Global_Color_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOC_Atlas/Global_Color_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA.asset b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA.asset index 896f7a26d2..1c052b65d4 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA.asset @@ -19,11 +19,11 @@ local treks_mola128_mola64_merge_90Nto90S_SimpleC_clon0 = { Identifier = "mola128_mola64_merge_90Nto90S_SimpleC_clon0", Name = [[MGS MOLA, Global DEM]], FilePath = asset.localResource("MGS_MOLA/Global_DEM.vrt"), - Description = [[This data was acquired using the Mars Orbiter Laser Altimeter instrument aboard NASA’s Mars Global Surveyor spacecraft (MGS). MGS was launched on November 7, 1996 and arrived at Mars on September 11, 1997. It maintained a circular polar orbit, completing an orbital revolution every 117.65 minutes at an average altitude of 378 km (235 mi). Until November 2, 2006, MGS characterized and mapped Mars’ surface features, properties, topography, composition, and processes, as well as studied Mars’ weather and atmospheric structure. + Description = [[This data was acquired using the Mars Orbiter Laser Altimeter instrument aboard NASA's Mars Global Surveyor spacecraft (MGS). MGS was launched on November 7, 1996 and arrived at Mars on September 11, 1997. It maintained a circular polar orbit, completing an orbital revolution every 117.65 minutes at an average altitude of 378 km (235 mi). Until November 2, 2006, MGS characterized and mapped Mars' surface features, properties, topography, composition, and processes, as well as studied Mars' weather and atmospheric structure. -The DEM represents more than 600 million measurements gathered between 1999 and 2001, adjusted for consistency and converted to planetary radii. These have been converted to elevations above the areoid as determined from a Martian gravity field solution GMM-2B, truncated to degree and order 50, and oriented according to current standards. The average accuracy of each point is originally ~100 meters in horizontal position and ~1 meter in radius. However, the total elevation uncertainty is at least ±3 m due to the global error in the areoid (±1.8 meters) and regional uncertainties in its shape. This DEM is a blend of data obtained with a resolution of 128 pixels per degree and 64 pixels per degree. The majority of the surface is covered at the higher resolution 128 pixels per degree. In projection, these pixels are 463 meters in size at the equator. However, these higher resolution data are very sparse near the two poles (above 87° north and below 87° south latitude) because these areas were sampled by only a few off-nadir altimetry tracks. Gaps between tracks of 1–2 km are common, and some gaps of up to 12 km occur near the equator.This data was acquired using the Mars Orbiter Laser Altimeter instrument aboard NASA’s Mars Global Surveyor spacecraft (MGS). MGS was launched on November 7, 1996 and arrived at Mars on September 11, 1997. It maintained a circular polar orbit, completing an orbital revolution every 117.65 minutes at an average altitude of 378 km (235 mi). Until November 2, 2006, MGS characterized and mapped Mars’ surface features, properties, topography, composition, and processes, as well as studied Mars’ weather and atmospheric structure. +The DEM represents more than 600 million measurements gathered between 1999 and 2001, adjusted for consistency and converted to planetary radii. These have been converted to elevations above the areoid as determined from a Martian gravity field solution GMM-2B, truncated to degree and order 50, and oriented according to current standards. The average accuracy of each point is originally ~100 meters in horizontal position and ~1 meter in radius. However, the total elevation uncertainty is at least ±3 m due to the global error in the areoid (±1.8 meters) and regional uncertainties in its shape. This DEM is a blend of data obtained with a resolution of 128 pixels per degree and 64 pixels per degree. The majority of the surface is covered at the higher resolution 128 pixels per degree. In projection, these pixels are 463 meters in size at the equator. However, these higher resolution data are very sparse near the two poles (above 87° north and below 87° south latitude) because these areas were sampled by only a few off-nadir altimetry tracks. Gaps between tracks of 1-2 km are common, and some gaps of up to 12 km occur near the equator.This data was acquired using the Mars Orbiter Laser Altimeter instrument aboard NASA's Mars Global Surveyor spacecraft (MGS). MGS was launched on November 7, 1996 and arrived at Mars on September 11, 1997. It maintained a circular polar orbit, completing an orbital revolution every 117.65 minutes at an average altitude of 378 km (235 mi). Until November 2, 2006, MGS characterized and mapped Mars' surface features, properties, topography, composition, and processes, as well as studied Mars' weather and atmospheric structure. -The DEM represents more than 600 million measurements gathered between 1999 and 2001, adjusted for consistency and converted to planetary radii. These have been converted to elevations above the areoid as determined from a Martian gravity field solution GMM-2B, truncated to degree and order 50, and oriented according to current standards. The average accuracy of each point is originally ~100 meters in horizontal position and ~1 meter in radius. However, the total elevation uncertainty is at least ±3 m due to the global error in the areoid (±1.8 meters) and regional uncertainties in its shape. This DEM is a blend of data obtained with a resolution of 128 pixels per degree and 64 pixels per degree. The majority of the surface is covered at the higher resolution 128 pixels per degree. In projection, these pixels are 463 meters in size at the equator. However, these higher resolution data are very sparse near the two poles (above 87° north and below 87° south latitude) because these areas were sampled by only a few off-nadir altimetry tracks. Gaps between tracks of 1–2 km are common, and some gaps of up to 12 km occur near the equator.]] +The DEM represents more than 600 million measurements gathered between 1999 and 2001, adjusted for consistency and converted to planetary radii. These have been converted to elevations above the areoid as determined from a Martian gravity field solution GMM-2B, truncated to degree and order 50, and oriented according to current standards. The average accuracy of each point is originally ~100 meters in horizontal position and ~1 meter in radius. However, the total elevation uncertainty is at least ±3 m due to the global error in the areoid (±1.8 meters) and regional uncertainties in its shape. This DEM is a blend of data obtained with a resolution of 128 pixels per degree and 64 pixels per degree. The majority of the surface is covered at the higher resolution 128 pixels per degree. In projection, these pixels are 463 meters in size at the equator. However, these higher resolution data are very sparse near the two poles (above 87° north and below 87° south latitude) because these areas were sampled by only a few off-nadir altimetry tracks. Gaps between tracks of 1-2 km are common, and some gaps of up to 12 km occur near the equator.]] } local treks_mola_roughness = { diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA/Global_Color_Hillshade.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA/Global_Color_Hillshade.wms index 964a6a5a11..8ed3d0542c 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA/Global_Color_Hillshade.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA/Global_Color_Hillshade.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA/Global_DEM.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA/Global_DEM.wms index 7caaba49f0..95ed3b5e55 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA/Global_DEM.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA/Global_DEM.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA/Global_Surface_Roughness.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA/Global_Surface_Roughness.wms index 6e09fdb7e0..809e423b91 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA/Global_Surface_Roughness.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA/Global_Surface_Roughness.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA_and_Mars_Express_HRSC.asset b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA_and_Mars_Express_HRSC.asset index 64e7eec5c4..e68e1850b3 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA_and_Mars_Express_HRSC.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA_and_Mars_Express_HRSC.asset @@ -10,26 +10,26 @@ local treks_Mars_MOLA_blend200ppx_HRSC_ClrShade_clon0dd_200mpp_lzw = { Identifier = "Mars_MOLA_blend200ppx_HRSC_ClrShade_clon0dd_200mpp_lzw", Name = [[MGS MOLA and Mars Express HRSC, Color Hillshade Blend]], FilePath = asset.localResource("MGS_MOLA_and_Mars_Express_HRSC/Color_Hillshade_Blend.vrt"), - Description = [[This data product is a blend of digital terrain model (DTM) data derived from the Mars Orbiter Laser Altimeter (MOLA) instrument aboard NASA’s Mars Global Surveyor spacecraft (MGS), and the High-Resolution Stereo Camera (HRSC) aboard the European Space Agency’s Mars Express spacecraft. + Description = [[This data product is a blend of digital terrain model (DTM) data derived from the Mars Orbiter Laser Altimeter (MOLA) instrument aboard NASA's Mars Global Surveyor spacecraft (MGS), and the High-Resolution Stereo Camera (HRSC) aboard the European Space Agency's Mars Express spacecraft. MOLA fired infrared laser pulses downward 10 times per second, and measured the time it took for the reflected pulses to return from the surface. The image used for the MOLA base of this map represents more than 600 million measurements gathered between 1999 and 2001. The average accuracy of each point is originally ~100 meters in horizontal position and the total elevation uncertainty is at least ±3 m. MOLA produced global topographic coverage with a spatial resolution of about 300 x 1000 m at the equator, and better near the poles. HRSC, the only dedicated stereo camera orbiting Mars, is a multi-sensor push broom instrument comprising 9 CCD line sensors mounted in parallel for simultaneous high-resolution stereo, multicolor and multi-phase imaging by delivering 9 superimposed image swaths. The HRSC design permits stereo imaging with triple to quintuple panchromatic along-track stereo including a nadir-directed, forward and aft-looking (+/-18.91), and 2 inner (+/-12.81) stereo line sensors. The along-track acquisition of stereo imagery avoids changes in atmospheric and illumination conditions. The sub-pixel accuracy of the three-dimensional point determination allows the derivation of digital terrain models DTMs with a grid size of up to 50 m and a height accuracy of a single pixel with up to 10 m. -R. Jaumann, et al. (2007), The high-resolution stereo camera (HRSC) experiment on Mars Express: instrument aspects and experiment conduct from interplanetary cruise through the nominal mission, Planet. Space Sci., 55 (7–8) (2007), pp. 928-952]] +R. Jaumann, et al. (2007), The high-resolution stereo camera (HRSC) experiment on Mars Express: instrument aspects and experiment conduct from interplanetary cruise through the nominal mission, Planet. Space Sci., 55 (7-8) (2007), pp. 928-952]] } local treks_Mars_MOLA_blend200ppx_HRSC_Shade_clon0dd_200mpp_lzw = { Identifier = "Mars_MOLA_blend200ppx_HRSC_Shade_clon0dd_200mpp_lzw", Name = [[MGS MOLA and Mars Express HRSC, Hillshade Blend]], FilePath = asset.localResource("MGS_MOLA_and_Mars_Express_HRSC/Hillshade_Blend.vrt"), - Description = [[This data product is a blend of digital terrain model (DTM) data derived from the Mars Orbiter Laser Altimeter (MOLA) instrument aboard NASA’s Mars Global Surveyor spacecraft (MGS), and the High-Resolution Stereo Camera (HRSC) aboard the European Space Agency’s Mars Express spacecraft. + Description = [[This data product is a blend of digital terrain model (DTM) data derived from the Mars Orbiter Laser Altimeter (MOLA) instrument aboard NASA's Mars Global Surveyor spacecraft (MGS), and the High-Resolution Stereo Camera (HRSC) aboard the European Space Agency's Mars Express spacecraft. MOLA fired infrared laser pulses downward 10 times per second, and measured the time it took for the reflected pulses to return from the surface. The image used for the MOLA base of this map represents more than 600 million measurements gathered between 1999 and 2001. The average accuracy of each point is originally ~100 meters in horizontal position and the total elevation uncertainty is at least ±3 m. MOLA produced global topographic coverage with a spatial resolution of about 300 x 1000 m at the equator, and better near the poles. HRSC, the only dedicated stereo camera orbiting Mars, is a multi-sensor push broom instrument comprising 9 CCD line sensors mounted in parallel for simultaneous high-resolution stereo, multicolor and multi-phase imaging by delivering 9 superimposed image swaths. The HRSC design permits stereo imaging with triple to quintuple panchromatic along-track stereo including a nadir-directed, forward and aft-looking (+/-18.91), and 2 inner (+/-12.81) stereo line sensors. The along-track acquisition of stereo imagery avoids changes in atmospheric and illumination conditions. The sub-pixel accuracy of the three-dimensional point determination allows the derivation of digital terrain models DTMs with a grid size of up to 50 m and a height accuracy of a single pixel with up to 10 m. -R. Jaumann, et al. (2007), The high-resolution stereo camera (HRSC) experiment on Mars Express: instrument aspects and experiment conduct from interplanetary cruise through the nominal mission, Planet. Space Sci., 55 (7–8) (2007), pp. 928-952]] +R. Jaumann, et al. (2007), The high-resolution stereo camera (HRSC) experiment on Mars Express: instrument aspects and experiment conduct from interplanetary cruise through the nominal mission, Planet. Space Sci., 55 (7-8) (2007), pp. 928-952]] } asset.onInitialize(function() diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA_and_Mars_Express_HRSC/Color_Hillshade_Blend.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA_and_Mars_Express_HRSC/Color_Hillshade_Blend.wms index e68f776897..0072ffd76f 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA_and_Mars_Express_HRSC/Color_Hillshade_Blend.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA_and_Mars_Express_HRSC/Color_Hillshade_Blend.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA_and_Mars_Express_HRSC/Hillshade_Blend.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA_and_Mars_Express_HRSC/Hillshade_Blend.wms index 3eb3e23210..1d82f32b89 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA_and_Mars_Express_HRSC/Hillshade_Blend.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_MOLA_and_Mars_Express_HRSC/Hillshade_Blend.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_TES/Global_Dust.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_TES/Global_Dust.wms index 88245fcb8d..bb998676b5 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_TES/Global_Dust.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_TES/Global_Dust.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_TES/Global_Dust_Index.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_TES/Global_Dust_Index.wms index 39870e58fd..354787c93b 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_TES/Global_Dust_Index.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_TES/Global_Dust_Index.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_TES/Global_High-Ca_Pyroxene_Abundance.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_TES/Global_High-Ca_Pyroxene_Abundance.wms index 2c65d42995..97eb22fc51 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_TES/Global_High-Ca_Pyroxene_Abundance.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_TES/Global_High-Ca_Pyroxene_Abundance.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_TES/Global_Plagioclase_Abundance.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_TES/Global_Plagioclase_Abundance.wms index 0dc77e38ab..ab286cffe0 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_TES/Global_Plagioclase_Abundance.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_TES/Global_Plagioclase_Abundance.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_TES/Global_Sheet_SilicatesHigh-Si_Glass.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_TES/Global_Sheet_SilicatesHigh-Si_Glass.wms index a28f1e64ef..88026d2be1 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_TES/Global_Sheet_SilicatesHigh-Si_Glass.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_TES/Global_Sheet_SilicatesHigh-Si_Glass.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_TES/Global_Thermal_Inertia.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_TES/Global_Thermal_Inertia.wms index 4dab1db222..07148e3fc7 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_TES/Global_Thermal_Inertia.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MGS_TES/Global_Thermal_Inertia.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MO_THEMIS-IR_Day/Global_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MO_THEMIS-IR_Day/Global_Mosaic.wms index bc271bbcac..2f119065fe 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MO_THEMIS-IR_Day/Global_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MO_THEMIS-IR_Day/Global_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MO_THEMIS-IR_Night/Global_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MO_THEMIS-IR_Night/Global_Mosaic.wms index 3c5bb428e2..924ac76f36 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MO_THEMIS-IR_Night/Global_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MO_THEMIS-IR_Night/Global_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX.asset b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX.asset index 270d2cdcc5..66362550a2 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX.asset @@ -321,7 +321,7 @@ local treks_CTX_beta01_uncontrolled_5m_Caltech = { Identifier = "CTX_beta01_uncontrolled_5m_Caltech", Name = [[MRO CTX, Mosaic Global Uncontrolled (Caltech)]], FilePath = asset.localResource("MRO_CTX/Mosaic_Global_Uncontrolled_Caltech.vrt"), - Description = [[This is a preliminary uncontrolled Context Camera (CTX) mosaic, called beta01, that the Murray Lab at Caltech has created to (1) generate a list of orbits that will be included in the final mosaic, (2) decipher challenges involved with generating a product of this unprecedented scale, and (3) solicit feedback from the Mars science community for how best to generate the mosaic in a way that helps as diverse a group of scientists as possible. The CTX camera, as managed by Malin Space Science Systems (MSSS), has attained near global coverage of Mars at the scale of ~5 m/pixel. All data used in the construction of this CTX global mosaic have been publicly released and are freely available via the NASA Planetary Data System. The Murray Lab/Caltech grants free use of the beta01 version of the mosaic for all purposes. When used, data credit should be: NASA/JPL/MSSS/The Caltech Murray Lab/Esri. This tiled web service, as hosted by Esri, is made available using lossy Jpeg compression at an 8 bit data range. + Description = [[This is a preliminary uncontrolled Context Camera (CTX) mosaic, called beta01, that the Murray Lab at Caltech has created to (1) generate a list of orbits that will be included in the final mosaic, (2) decipher challenges involved with generating a product of this unprecedented scale, and (3) solicit feedback from the Mars science community for how best to generate the mosaic in a way that helps as diverse a group of scientists as possible. The CTX camera, as managed by Malin Space Science Systems (MSSS), has attained near global coverage of Mars at the scale of ~5 m/pixel. All data used in the construction of this CTX global mosaic have been publicly released and are freely available via the NASA Planetary Data System. The Murray Lab/Caltech grants free use of the beta01 version of the mosaic for all purposes. When used, data credit should be: NASA/JPL/MSSS/The Caltech Murray Lab/Esri. This tiled web service, as hosted by Esri, is made available using lossy Jpeg compression at an 8 bit data range. To access Esri's Tiled Web Service for this mosaic, go to https://usgs.maps.arcgis.com/home/item.html?id=b164957a19544f55a8d6a001c952a590. To download the data, go to http://murray-lab.caltech.edu/CTX/. @@ -342,7 +342,7 @@ local treks_olympus_monseq = { FilePath = asset.localResource("MRO_CTX/Mosaic_Olympus_Mons.vrt"), Description = [[This is a beta section of a CTX global mosaic produced by Jay Dickson. It was created by map projecting CT X images with ISIS3, and color balancing/stitching the images with Adobe Photoshop. A footprint layer shows the seams - of image boundaries. + of image boundaries. reference: Dickson et al. 2018 LPSC programs with abstracts https://www.hou.usra.edu/meetings/lpsc2018/pdf/2480.pdf]] } diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/22n048w_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/22n048w_Mosaic.wms index 15d7e8c17e..0a4d0c9249 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/22n048w_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/22n048w_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Acheron_Fossae_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Acheron_Fossae_Mosaic.wms index 483ad0ea48..d53e1109d5 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Acheron_Fossae_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Acheron_Fossae_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Acidalia_Plantia_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Acidalia_Plantia_Mosaic.wms index 0abf0a932f..d2239eea0f 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Acidalia_Plantia_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Acidalia_Plantia_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Arabia_Terra_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Arabia_Terra_Mosaic.wms index 55d1dbc403..c01fa29123 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Arabia_Terra_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Arabia_Terra_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Aram_Chaos_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Aram_Chaos_Mosaic.wms index 0b7286609a..9908d851d4 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Aram_Chaos_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Aram_Chaos_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Arcadia_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Arcadia_Mosaic.wms index c52b78e25f..8a6390f9ae 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Arcadia_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Arcadia_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Arcadia_Planitia_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Arcadia_Planitia_Mosaic.wms index 1ec1560188..3e0504c866 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Arcadia_Planitia_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Arcadia_Planitia_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Ausonia_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Ausonia_Mosaic.wms index 12fe8b9aa5..145aef441f 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Ausonia_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Ausonia_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Cerberus_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Cerberus_Mosaic.wms index 113c83d3a9..be42ae952c 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Cerberus_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Cerberus_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Columbia_Hills_DEM.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Columbia_Hills_DEM.wms index 1392c26833..6018eb74ce 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Columbia_Hills_DEM.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Columbia_Hills_DEM.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Columbus_Crater_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Columbus_Crater_Mosaic.wms index 7a5814a26c..83478b1f2e 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Columbus_Crater_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Columbus_Crater_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Copernicus_Crater_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Copernicus_Crater_Mosaic.wms index f9be291532..2bfebe65cd 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Copernicus_Crater_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Copernicus_Crater_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Coprates_EMelas_Chasm_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Coprates_EMelas_Chasm_Mosaic.wms index aa8c27189a..9e9329b3d2 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Coprates_EMelas_Chasm_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Coprates_EMelas_Chasm_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Curiosity_Roving_Site_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Curiosity_Roving_Site_Mosaic.wms index 5df9b61dfe..321eeaa976 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Curiosity_Roving_Site_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Curiosity_Roving_Site_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Deuteronilus_Mensae_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Deuteronilus_Mensae_Mosaic.wms index 50daead5d2..4daf0fd215 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Deuteronilus_Mensae_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Deuteronilus_Mensae_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/East_Melas_DEM.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/East_Melas_DEM.wms index 5077517cfd..effefc2ca0 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/East_Melas_DEM.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/East_Melas_DEM.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/East_Melas_Hillshade.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/East_Melas_Hillshade.wms index 94232e1ffe..468cb07d01 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/East_Melas_Hillshade.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/East_Melas_Hillshade.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Eastern_Valles_Marineris_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Eastern_Valles_Marineris_Mosaic.wms index c82de2e267..d22e6745c6 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Eastern_Valles_Marineris_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Eastern_Valles_Marineris_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Equatorial_Valles_Marineries_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Equatorial_Valles_Marineries_Mosaic.wms index 38bdfe1e92..0851536c01 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Equatorial_Valles_Marineries_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Equatorial_Valles_Marineries_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Erebus_Montes_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Erebus_Montes_Mosaic.wms index 41cc106983..0bd2377888 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Erebus_Montes_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Erebus_Montes_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Gale_Crater_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Gale_Crater_Mosaic.wms index dcfd94bdfa..73e1e2a967 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Gale_Crater_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Gale_Crater_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Gusev_Crater_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Gusev_Crater_Mosaic.wms index d236a4ad8b..a2a205e365 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Gusev_Crater_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Gusev_Crater_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Hadriacus_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Hadriacus_Mosaic.wms index 63bb6bcad6..d13494d7f5 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Hadriacus_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Hadriacus_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Hale_Crater_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Hale_Crater_Mosaic.wms index 986e44b1ef..0494367d2c 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Hale_Crater_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Hale_Crater_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Hebrus_Valles_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Hebrus_Valles_Mosaic.wms index ae59f39592..a66992593a 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Hebrus_Valles_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Hebrus_Valles_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Hellas_Eastern_Rim_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Hellas_Eastern_Rim_Mosaic.wms index 55055c87ed..17d241d42d 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Hellas_Eastern_Rim_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Hellas_Eastern_Rim_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Hellas_Mesopotamia_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Hellas_Mesopotamia_Mosaic.wms index 55da0469b9..96086258ed 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Hellas_Mesopotamia_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Hellas_Mesopotamia_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Huygens_Crater_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Huygens_Crater_Mosaic.wms index a244d9a51f..c60937f793 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Huygens_Crater_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Huygens_Crater_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Hypanis_Delta_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Hypanis_Delta_Mosaic.wms index 16555e1176..196faae383 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Hypanis_Delta_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Hypanis_Delta_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Ismenius_Cavus_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Ismenius_Cavus_Mosaic.wms index c93bfb8585..0ffe545a47 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Ismenius_Cavus_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Ismenius_Cavus_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Jezero_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Jezero_Mosaic.wms index ebe35d4904..25d404990e 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Jezero_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Jezero_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Kasei_Valles_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Kasei_Valles_Mosaic.wms index 5a468d7303..1b32604999 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Kasei_Valles_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Kasei_Valles_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Mawrth_Vallis_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Mawrth_Vallis_Mosaic.wms index 5027627379..69c99d04c1 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Mawrth_Vallis_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Mawrth_Vallis_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/McLaughlin_Crater_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/McLaughlin_Crater_Mosaic.wms index d0dbcd14cc..cb8736881d 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/McLaughlin_Crater_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/McLaughlin_Crater_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Meridiani_Planum_-_Sinus_Meridiani_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Meridiani_Planum_-_Sinus_Meridiani_Mosaic.wms index 8f7f27133d..e3c9500414 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Meridiani_Planum_-_Sinus_Meridiani_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Meridiani_Planum_-_Sinus_Meridiani_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Mosaic_Global_Uncontrolled_Caltech.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Mosaic_Global_Uncontrolled_Caltech.wms index eecc74f939..b7d430f194 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Mosaic_Global_Uncontrolled_Caltech.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Mosaic_Global_Uncontrolled_Caltech.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Mosaic_InSight.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Mosaic_InSight.wms index 4c9d0570ff..d1eaae4966 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Mosaic_InSight.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Mosaic_InSight.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Mosaic_Olympus_Mons.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Mosaic_Olympus_Mons.wms index e523ebfb27..3596b51f3e 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Mosaic_Olympus_Mons.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Mosaic_Olympus_Mons.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Newton_Crater_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Newton_Crater_Mosaic.wms index 263aabc95a..93490c747d 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Newton_Crater_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Newton_Crater_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Noctis_Landing_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Noctis_Landing_Mosaic.wms index f2e978554b..0a1d81a5b8 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Noctis_Landing_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Noctis_Landing_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Protonilus_Mensae_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Protonilus_Mensae_Mosaic.wms index 99d25c03ef..c581f1e852 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Protonilus_Mensae_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Protonilus_Mensae_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Southern_Nectaris_Fossae_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Southern_Nectaris_Fossae_Mosaic.wms index b73dc83e33..00a3e483b3 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Southern_Nectaris_Fossae_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Southern_Nectaris_Fossae_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Victoria_Crater_DEM.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Victoria_Crater_DEM.wms index ad2e294fc9..14160bd43d 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Victoria_Crater_DEM.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Victoria_Crater_DEM.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Viking_1_Landing_Site_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Viking_1_Landing_Site_Mosaic.wms index c74c755ea3..6ef2a38f78 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Viking_1_Landing_Site_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Viking_1_Landing_Site_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Viking_2_Landing_Site_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Viking_2_Landing_Site_Mosaic.wms index 715021f563..edb6ad2251 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Viking_2_Landing_Site_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Viking_2_Landing_Site_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/West_Candor_Chasma_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/West_Candor_Chasma_Mosaic.wms index 16b50ca5ba..10a9ee8fa4 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/West_Candor_Chasma_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/West_Candor_Chasma_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/West_Candor_DEM.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/West_Candor_DEM.wms index 30208245bb..0b7f3f0e4c 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/West_Candor_DEM.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/West_Candor_DEM.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Western_Noachis_Terra_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Western_Noachis_Terra_Mosaic.wms index a1a439feef..51cf42f769 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Western_Noachis_Terra_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Western_Noachis_Terra_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Zephyria_Planum_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Zephyria_Planum_Mosaic.wms index 88ad399ea6..7e1cb9d0cd 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Zephyria_Planum_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_CTX/Zephyria_Planum_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE.asset b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE.asset index 1a153032de..cbb6529f34 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE.asset @@ -102,11 +102,11 @@ local treks_CLH_Visible_Mosaic_HiRISE_CTX_HRSC_GCS_MARS_07102018 = { FilePath = asset.localResource("MRO_HiRISE/Mosaic_Columbia_Hills.vrt"), Description = [[Preliminary visible orthoimage mosaic for Columbia Hills candidate landing site for the Mars 2020 rover. HRSC orthoimages and DEMs were downloaded from the Planetary Data System archives. HiRISE and CTX orthoimages and DEMs were created by the USGS Astrogeology and HiRISE teams, -and compiled and georeferenced at JPL/Caltech by the Advanced Laboratory for Landing Site Terrain Analysis and Reconnaissance (ALLSTAR) group including Nathan Williams, -Heather Lethcoe-Wilson, Lauren Berger, Marshall Trautman, and Matt Golombek for the M2020 Council of Terrains. These files are for discussion and planning purposes +and compiled and georeferenced at JPL/Caltech by the Advanced Laboratory for Landing Site Terrain Analysis and Reconnaissance (ALLSTAR) group including Nathan Williams, +Heather Lethcoe-Wilson, Lauren Berger, Marshall Trautman, and Matt Golombek for the M2020 Council of Terrains. These files are for discussion and planning purposes only. Processing Notes: -Georeferencing: +Georeferencing: HRSC orthos are well-coregistered to the community-standard MOLA global topography products, and CTX orthos are well-coregistered to the HRSC orthos. Tie points were recorded at small craters visible in both HiRISE and CTX images, and a first-order transformation was used to rectify the HiRISE. @@ -115,15 +115,14 @@ Former mosaic basemaps for M2020 used a Mars equirectangular projection with a s but this caused a ~5% latitude vs longitude distortion at the remaining 3 candidate landing sites such that true circles would appear elliptical. In this new version of basemaps, we use a Mars equirectangular projection with customized standard parallels for each site to reduce distortion to <1%. Specifically, Columbia Hills uses a standard parallel of -14.5 degrees, while Jezero and NE Syrtis both have a standard parallel of +18 degrees. Projection (.prj) files are included with this delivery. -When analyzing images, please ensure that the correct projection system is being used. For example, there is a known issue with Matlab where reading images in as a geotiff may automatically assign an -incorrect projection without the specified standard parallel, which then produces distorted linear (in meters) x/y values.]] +When analyzing images, please ensure that the correct projection system is being used. For example, there is a known issue with Matlab where reading images in as a geotiff may automatically assign an incorrect projection without the specified standard parallel, which then produces distorted linear (in meters) x/y values.]] } local treks_ESP_058005_1845_RED_spline_rect = { Identifier = "ESP_058005_1845_RED_spline_rect", Name = [[MRO HiRISE, Mosaic Insight Landing Site]], FilePath = asset.localResource("MRO_HiRISE/Mosaic_Insight_Landing_Site.vrt"), - Description = [[This image (ESP_058005_1845) was acquired with the Mars HiRISE Camera aboard NASA’s Mars Reconnaissance Orbiter. It shows the Mars InSight lander (4.5024°, 135.62345°), heat shield (4.50834°, 135.63481°), and backshell with parachute (4.49415°, 135.62778°). The image was acquired on December 11, 2018 at 14:02 local Mars time. The image is centered at 4.495° lat and 135.623° lon. The spacecraft altitude was 271.5 km. Original image scale range is 27.9 cm/pixel (with 1 x 1 binning) so objects about 84 cm across are resolved. The emission angle was 13.7°, phase angle was 51.0°, and solar incidence angle was 39°, with the Sun about 51° above the horizon. Solar longitude was 304.3°, Northern Winter.]] + Description = [[This image (ESP_058005_1845) was acquired with the Mars HiRISE Camera aboard NASA's Mars Reconnaissance Orbiter. It shows the Mars InSight lander (4.5024°, 135.62345°), heat shield (4.50834°, 135.63481°), and backshell with parachute (4.49415°, 135.62778°). The image was acquired on December 11, 2018 at 14:02 local Mars time. The image is centered at 4.495° lat and 135.623° lon. The spacecraft altitude was 271.5 km. Original image scale range is 27.9 cm/pixel (with 1 x 1 binning) so objects about 84 cm across are resolved. The emission angle was 13.7°, phase angle was 51.0°, and solar incidence angle was 39°, with the Sun about 51° above the horizon. Solar longitude was 304.3°, Northern Winter.]] } local treks_NES_JEZ_MID_Visible_Mosaic_HiRISE_CTX_HRSC_GCS_MARS_07102018 = { @@ -132,11 +131,11 @@ local treks_NES_JEZ_MID_Visible_Mosaic_HiRISE_CTX_HRSC_GCS_MARS_07102018 = { FilePath = asset.localResource("MRO_HiRISE/Mosaic_Jezero_NE_Syrtis_Midway.vrt"), Description = [[Preliminary visible orthoimage mosaic for Jezero Crater, NE Syrtis, and Midway candidate landing sites for the Mars 2020 rover. HRSC orthoimages and DEMs were downloaded from the Planetary Data System archives. HiRISE and CTX orthoimages and DEMs were created by the USGS Astrogeology and HiRISE teams, -and compiled and georeferenced at JPL/Caltech by the Advanced Laboratory for Landing Site Terrain Analysis and Reconnaissance (ALLSTAR) group including Nathan Williams, -Heather Lethcoe-Wilson, Lauren Berger, Marshall Trautman, and Matt Golombek for the M2020 Council of Terrains. These files are for discussion and planning purposes +and compiled and georeferenced at JPL/Caltech by the Advanced Laboratory for Landing Site Terrain Analysis and Reconnaissance (ALLSTAR) group including Nathan Williams, +Heather Lethcoe-Wilson, Lauren Berger, Marshall Trautman, and Matt Golombek for the M2020 Council of Terrains. These files are for discussion and planning purposes only. Processing Notes: -Georeferencing: +Georeferencing: HRSC orthos are well-coregistered to the community-standard MOLA global topography products, and CTX orthos are well-coregistered to the HRSC orthos. Tie points were recorded at small craters visible in both HiRISE and CTX images, and a first-order transformation was used to rectify the HiRISE. @@ -145,8 +144,7 @@ Former mosaic basemaps for M2020 used a Mars equirectangular projection with a s but this caused a ~5% latitude vs longitude distortion at the remaining 3 candidate landing sites such that true circles would appear elliptical. In this new version of basemaps, we use a Mars equirectangular projection with customized standard parallels for each site to reduce distortion to <1%. Specifically, Columbia Hills uses a standard parallel of -14.5 degrees, while Jezero and NE Syrtis both have a standard parallel of +18 degrees. Projection (.prj) files are included with this delivery. -When analyzing images, please ensure that the correct projection system is being used. For example, there is a known issue with Matlab where reading images in as a geotiff may automatically assign an -incorrect projection without the specified standard parallel, which then produces distorted linear (in meters) x/y values.]] +When analyzing images, please ensure that the correct projection system is being used. For example, there is a known issue with Matlab where reading images in as a geotiff may automatically assign an incorrect projection without the specified standard parallel, which then produces distorted linear (in meters) x/y values.]] } local treks_HiRISE_Opportunity = { diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/001918_1735_001984_1735_DEM.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/001918_1735_001984_1735_DEM.wms index 6cdee67aa2..2add732695 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/001918_1735_001984_1735_DEM.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/001918_1735_001984_1735_DEM.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/042014_1760_042647_1760_DEM.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/042014_1760_042647_1760_DEM.wms index b54c237ddc..2394688b66 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/042014_1760_042647_1760_DEM.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/042014_1760_042647_1760_DEM.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/042753_1930_042252_1930_DEM.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/042753_1930_042252_1930_DEM.wms index fb48df1b71..63ff63b7da 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/042753_1930_042252_1930_DEM.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/042753_1930_042252_1930_DEM.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/1183_0000_DEM.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/1183_0000_DEM.wms index d1f83a20c8..f3218069a7 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/1183_0000_DEM.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/1183_0000_DEM.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Columbia_Hills_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Columbia_Hills_Mosaic.wms index fb71791943..7c14ad5df6 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Columbia_Hills_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Columbia_Hills_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Curiosity_Roving_Site_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Curiosity_Roving_Site_Mosaic.wms index 629994cc7c..66660b7eb2 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Curiosity_Roving_Site_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Curiosity_Roving_Site_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Gale_Crater_DEM.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Gale_Crater_DEM.wms index 7d39dd8d0e..922e4f0e39 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Gale_Crater_DEM.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Gale_Crater_DEM.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Marth_Crater_West_Rim_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Marth_Crater_West_Rim_Mosaic.wms index a40a067b92..b042603b95 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Marth_Crater_West_Rim_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Marth_Crater_West_Rim_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Martian_Ares_3_Landing_Site_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Martian_Ares_3_Landing_Site_Mosaic.wms index f4de8e916a..98f4ee8bc9 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Martian_Ares_3_Landing_Site_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Martian_Ares_3_Landing_Site_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Martian_Ares_4_Landing_Site_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Martian_Ares_4_Landing_Site_Mosaic.wms index 3afe953569..2f704c0ab7 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Martian_Ares_4_Landing_Site_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Martian_Ares_4_Landing_Site_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Mosaic_Columbia_Hills.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Mosaic_Columbia_Hills.wms index f847140b68..0f39d0e2ae 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Mosaic_Columbia_Hills.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Mosaic_Columbia_Hills.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Mosaic_Insight_Landing_Site.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Mosaic_Insight_Landing_Site.wms index 8c9218b70d..fecb488232 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Mosaic_Insight_Landing_Site.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Mosaic_Insight_Landing_Site.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Mosaic_Jezero_NE_Syrtis_Midway.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Mosaic_Jezero_NE_Syrtis_Midway.wms index 50e05abc65..74f0a2e413 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Mosaic_Jezero_NE_Syrtis_Midway.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Mosaic_Jezero_NE_Syrtis_Midway.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Mosaic_Opportunity.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Mosaic_Opportunity.wms index 3c6fe5eac4..b4e00a13fd 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Mosaic_Opportunity.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Mosaic_Opportunity.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Opportunity_Roving_Site_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Opportunity_Roving_Site_Mosaic.wms index c5f740993b..f500f262d1 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Opportunity_Roving_Site_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Opportunity_Roving_Site_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Phoenix_Landing_Site_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Phoenix_Landing_Site_Mosaic.wms index 74f9f76cf5..e303b7d9dd 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Phoenix_Landing_Site_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Phoenix_Landing_Site_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Sojourner_Roving_Site_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Sojourner_Roving_Site_Mosaic.wms index 117f56fbfb..2289649a7b 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Sojourner_Roving_Site_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Sojourner_Roving_Site_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Southwest_Candor_Chasma_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Southwest_Candor_Chasma_Mosaic.wms index 1c70b7103c..6eb5f638f8 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Southwest_Candor_Chasma_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Southwest_Candor_Chasma_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Spirit_Roving_Site_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Spirit_Roving_Site_Mosaic.wms index d786da36d7..6d2c10debb 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Spirit_Roving_Site_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Spirit_Roving_Site_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Viking_1_Landing_Site_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Viking_1_Landing_Site_Mosaic.wms index 3b0fd9f494..b0ae05e4d8 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Viking_1_Landing_Site_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Viking_1_Landing_Site_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Viking_2_Landing_Site_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Viking_2_Landing_Site_Mosaic.wms index b6d343ff15..39f0bd1d2e 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Viking_2_Landing_Site_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MRO_HiRISE/Viking_2_Landing_Site_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MSL/Pahrump_Hills.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MSL/Pahrump_Hills.wms index 6ec7a4f497..d8c5652ae7 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MSL/Pahrump_Hills.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/MSL/Pahrump_Hills.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Martian_Path_Eastern_Section_Color_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Martian_Path_Eastern_Section_Color_Mosaic.wms index 3fbf9f63ff..2a40021fd6 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Martian_Path_Eastern_Section_Color_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Martian_Path_Eastern_Section_Color_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Martian_Path_MC11_Quad_Color_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Martian_Path_MC11_Quad_Color_Mosaic.wms index bd8efc8ee4..855ad6ff92 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Martian_Path_MC11_Quad_Color_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Martian_Path_MC11_Quad_Color_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Martian_Path_MC11_Quad_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Martian_Path_MC11_Quad_Mosaic.wms index a032504d7a..bfa1c296db 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Martian_Path_MC11_Quad_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Martian_Path_MC11_Quad_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Mawrth_Vallis_Color_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Mawrth_Vallis_Color_Mosaic.wms index 5101daebe1..e5f8b14572 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Mawrth_Vallis_Color_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Mawrth_Vallis_Color_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Mawrth_Vallis_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Mawrth_Vallis_Mosaic.wms index 14705bb879..d03d32be17 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Mawrth_Vallis_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Mawrth_Vallis_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Viking_1_Landing_Site_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Viking_1_Landing_Site_Mosaic.wms index 1215c0ca7c..1698a833ba 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Viking_1_Landing_Site_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Viking_1_Landing_Site_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Viking_2_Landing_Site_Mosaic.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Viking_2_Landing_Site_Mosaic.wms index 956e3f5d09..01819ffee5 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Viking_2_Landing_Site_Mosaic.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Express_HRSC/Viking_2_Landing_Site_Mosaic.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX.asset b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX.asset index 56fdc9e4c1..8a13ebcd68 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX.asset @@ -10,9 +10,9 @@ local treks_CTX_ClrSlope_8bit_12S182E_24mp_P22_009609_1674_B02_010453_1675 = { Identifier = "CTX_ClrSlope_8bit_12S182E_24mp_P22_009609_1674_B02_010453_1675", Name = [[Mars Reconnaissance Orbiter CTX, Color Slope Apollinaris 12S182E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Apollinaris_12S182E.vrt"), - Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261. @@ -24,9 +24,9 @@ local treks_CTX_ClrSlope_8bit_13S182E_24mp_G15_024127_1673_G16_024483_1673 = { Identifier = "CTX_ClrSlope_8bit_13S182E_24mp_G15_024127_1673_G16_024483_1673", Name = [[Mars Reconnaissance Orbiter CTX, Color Slope Apollinaris 13S182E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Apollinaris_13S182E.vrt"), - Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261. @@ -38,9 +38,9 @@ local treks_CTX_ClrSlope_8bit_14S184E_24mp_B01_009886_1658_P21_009385_1658 = { Identifier = "CTX_ClrSlope_8bit_14S184E_24mp_B01_009886_1658_P21_009385_1658", Name = [[Mars Reconnaissance Orbiter CTX, Color Slope Apollinaris 14S184E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Apollinaris_14S184E.vrt"), - Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261. @@ -52,9 +52,9 @@ local treks_CTX_ClrSlope_8bit_10S291E_24mp_P22_009684_1699_B02_010396_1699 = { Identifier = "CTX_ClrSlope_8bit_10S291E_24mp_P22_009684_1699_B02_010396_1699", Name = [[Mars Reconnaissance Orbiter CTX, Color Slope Coprates 10S291E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Coprates_10S291E.vrt"), - Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261. @@ -66,9 +66,9 @@ local treks_CTX_ClrSlope_8bit_11S293E_24mp_B09_013231_1696_B11_013732_1690 = { Identifier = "CTX_ClrSlope_8bit_11S293E_24mp_B09_013231_1696_B11_013732_1690", Name = [[Mars Reconnaissance Orbiter CTX, Color Slope Coprates 11S293E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Coprates_11S293E.vrt"), - Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261. @@ -80,9 +80,9 @@ local treks_CTX_ClrSlope_8bit_13S293E_24mp_G07_020879_1669_G09_021657_1665 = { Identifier = "CTX_ClrSlope_8bit_13S293E_24mp_G07_020879_1669_G09_021657_1665", Name = [[Mars Reconnaissance Orbiter CTX, Color Slope Coprates 13S293E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Coprates_13S293E.vrt"), - Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261. @@ -94,9 +94,9 @@ local treks_CTX_ClrSlope_8bit_37N024E_24mp_G05_020203_2178_G22_026994_2170 = { Identifier = "CTX_ClrSlope_8bit_37N024E_24mp_G05_020203_2178_G22_026994_2170", Name = [[Mars Reconnaissance Orbiter CTX, Color Slope Deuteronius 37N024E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Deuteronius_37N024E.vrt"), - Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261. @@ -108,9 +108,9 @@ local treks_CTX_ClrSlope_8bit_38N024E_24mp_B17_016168_2181_G16_024594_2181 = { Identifier = "CTX_ClrSlope_8bit_38N024E_24mp_B17_016168_2181_G16_024594_2181", Name = [[Mars Reconnaissance Orbiter CTX, Color Slope Deuteronius 38N024E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Deuteronius_38N024E.vrt"), - Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261. @@ -122,9 +122,9 @@ local treks_CTX_ClrSlope_8bit_39N024E_24mp_D15_032875_2196_D15_033165_2196 = { Identifier = "CTX_ClrSlope_8bit_39N024E_24mp_D15_032875_2196_D15_033165_2196", Name = [[Mars Reconnaissance Orbiter CTX, Color Slope Deuteronius 39N024E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Deuteronius_39N024E.vrt"), - Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261. @@ -136,9 +136,9 @@ local treks_CTX_ClrSlope_8bit_40N022E_24mp_B18_016656_2206_B18_016801_2206 = { Identifier = "CTX_ClrSlope_8bit_40N022E_24mp_B18_016656_2206_B18_016801_2206", Name = [[Mars Reconnaissance Orbiter CTX, Color Slope Deuteronius 40N024E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Deuteronius_40N024E.vrt"), - Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261. @@ -150,9 +150,9 @@ local treks_CTX_ClrSlope_8bit_11S289E_24mp_F23_044971_1685_F21_043995_1685 = { Identifier = "CTX_ClrSlope_8bit_11S289E_24mp_F23_044971_1685_F21_043995_1685", Name = [[Mars Reconnaissance Orbiter CTX, Color Slope East Melas 11S289E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_11S289E.vrt"), - Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261. @@ -164,9 +164,9 @@ local treks_CTX_ClrSlope_8bit_11S291E_24mp_B19_017187_1685_B19_016976_1685 = { Identifier = "CTX_ClrSlope_8bit_11S291E_24mp_B19_017187_1685_B19_016976_1685", Name = [[Mars Reconnaissance Orbiter CTX, Color Slope East Melas 11S291E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_11S291E.vrt"), - Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261. @@ -178,9 +178,9 @@ local treks_CTX_ClrSlope_8bit_12S289E_24mp_D01_027446_1678_D01_027723_1677 = { Identifier = "CTX_ClrSlope_8bit_12S289E_24mp_D01_027446_1678_D01_027723_1677", Name = [[Mars Reconnaissance Orbiter CTX, Color Slope East Melas 12S289E_D01]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S289E_D01.vrt"), - Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261. @@ -192,9 +192,9 @@ local treks_CTX_ClrSlope_8bit_12S289E_24mp_F18_042927_1681_J02_045749_1694 = { Identifier = "CTX_ClrSlope_8bit_12S289E_24mp_F18_042927_1681_J02_045749_1694", Name = [[Mars Reconnaissance Orbiter CTX, Color Slope East Melas 12S289E_F18]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S289E_F18.vrt"), - Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261. @@ -206,9 +206,9 @@ local treks_CTX_ClrSlope_8bit_12S290E_24mp_D18_034250_1676_D21_035450_1674 = { Identifier = "CTX_ClrSlope_8bit_12S290E_24mp_D18_034250_1676_D21_035450_1674", Name = [[Mars Reconnaissance Orbiter CTX, Color Slope East Melas 12S290E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S290E.vrt"), - Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261. @@ -220,9 +220,9 @@ local treks_CTX_ClrSlope_8bit_12S291E_24mp_F14_041292_1682_F16_041938_1682 = { Identifier = "CTX_ClrSlope_8bit_12S291E_24mp_F14_041292_1682_F16_041938_1682", Name = [[Mars Reconnaissance Orbiter CTX, Color Slope East Melas 12S291E_F14]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S291E_F14.vrt"), - Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261. @@ -234,9 +234,9 @@ local treks_CTX_ClrSlope_8bit_12S291E_24mp_F21_043850_1684_F21_043916_1685 = { Identifier = "CTX_ClrSlope_8bit_12S291E_24mp_F21_043850_1684_F21_043916_1685", Name = [[Mars Reconnaissance Orbiter CTX, Color Slope East Melas 12S291E_F21]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S291E_F21.vrt"), - Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261. @@ -248,9 +248,9 @@ local treks_CTX_ClrSlope_8bit_12S291E_24mp_J01_045116_1677_J03_046039_1676 = { Identifier = "CTX_ClrSlope_8bit_12S291E_24mp_J01_045116_1677_J03_046039_1676", Name = [[Mars Reconnaissance Orbiter CTX, Color Slope East Melas 12S291E_J01]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S291E_J01.vrt"), - Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261. @@ -262,9 +262,9 @@ local treks_CTX_ClrSlope_8bit_13S289E_24mp_D10_031125_1673_D12_031903_1669 = { Identifier = "CTX_ClrSlope_8bit_13S289E_24mp_D10_031125_1673_D12_031903_1669", Name = [[Mars Reconnaissance Orbiter CTX, Color Slope East Melas 13S289E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_13S289E.vrt"), - Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261. @@ -276,9 +276,9 @@ local treks_CTX_ClrSlope_8bit_16S291E_24mp_D22_035951_1644_F01_036307_1644 = { Identifier = "CTX_ClrSlope_8bit_16S291E_24mp_D22_035951_1644_F01_036307_1644", Name = [[Mars Reconnaissance Orbiter CTX, Color Slope East Melas 16S291E_D22]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_16S291E_D22.vrt"), - Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261. @@ -290,9 +290,9 @@ local treks_CTX_Shade_12S182E_24mp_P22_009609_1674_B02_010453_1675 = { Identifier = "CTX_Shade_12S182E_24mp_P22_009609_1674_B02_010453_1675", Name = [[Mars Reconnaissance Orbiter CTX, HillShade Apollinaris 12S182E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/HillShade_Apollinaris_12S182E.vrt"), - Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -302,9 +302,9 @@ local treks_CTX_Shade_13S182E_24mp_G15_024127_1673_G16_024483_1673 = { Identifier = "CTX_Shade_13S182E_24mp_G15_024127_1673_G16_024483_1673", Name = [[Mars Reconnaissance Orbiter CTX, HillShade Apollinaris 13S182E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/HillShade_Apollinaris_13S182E.vrt"), - Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -314,9 +314,9 @@ local treks_CTX_Shade_14S184E_24mp_B01_009886_1658_P21_009385_1658 = { Identifier = "CTX_Shade_14S184E_24mp_B01_009886_1658_P21_009385_1658", Name = [[Mars Reconnaissance Orbiter CTX, HillShade Apollinaris 14S184E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/HillShade_Apollinaris_14S184E.vrt"), - Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -326,9 +326,9 @@ local treks_CTX_Shade_10S291E_24mp_P22_009684_1699_B02_010396_1699 = { Identifier = "CTX_Shade_10S291E_24mp_P22_009684_1699_B02_010396_1699", Name = [[Mars Reconnaissance Orbiter CTX, HillShade Coprates 10S291E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/HillShade_Coprates_10S291E.vrt"), - Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -338,9 +338,9 @@ local treks_CTX_Shade_11S293E_24mp_B09_013231_1696_B11_013732_1690 = { Identifier = "CTX_Shade_11S293E_24mp_B09_013231_1696_B11_013732_1690", Name = [[Mars Reconnaissance Orbiter CTX, HillShade Coprates 11S293E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/HillShade_Coprates_11S293E.vrt"), - Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -350,9 +350,9 @@ local treks_CTX_Shade_13S293E_24mp_G07_020879_1669_G09_021657_1665 = { Identifier = "CTX_Shade_13S293E_24mp_G07_020879_1669_G09_021657_1665", Name = [[Mars Reconnaissance Orbiter CTX, HillShade Coprates 13S293E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/HillShade_Coprates_13S293E.vrt"), - Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -362,9 +362,9 @@ local treks_CTX_Shade_37N024E_24mp_G05_020203_2178_G22_026994_2170 = { Identifier = "CTX_Shade_37N024E_24mp_G05_020203_2178_G22_026994_2170", Name = [[Mars Reconnaissance Orbiter CTX, HillShade Deuteronius 37N024E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/HillShade_Deuteronius_37N024E.vrt"), - Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -374,9 +374,9 @@ local treks_CTX_Shade_38N024E_24mp_B17_016168_2181_G16_024594_2181 = { Identifier = "CTX_Shade_38N024E_24mp_B17_016168_2181_G16_024594_2181", Name = [[Mars Reconnaissance Orbiter CTX, HillShade Deuteronius 38N024E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/HillShade_Deuteronius_38N024E.vrt"), - Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -386,9 +386,9 @@ local treks_CTX_Shade_39N024E_24mp_D15_032875_2196_D15_033165_2196 = { Identifier = "CTX_Shade_39N024E_24mp_D15_032875_2196_D15_033165_2196", Name = [[Mars Reconnaissance Orbiter CTX, HillShade Deuteronius 39N024E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/HillShade_Deuteronius_39N024E.vrt"), - Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -398,9 +398,9 @@ local treks_CTX_Shade_40N022E_24mp_B18_016656_2206_B18_016801_2206 = { Identifier = "CTX_Shade_40N022E_24mp_B18_016656_2206_B18_016801_2206", Name = [[Mars Reconnaissance Orbiter CTX, HillShade Deuteronius 40N024E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/HillShade_Deuteronius_40N024E.vrt"), - Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -410,9 +410,9 @@ local treks_CTX_Shade_11S289E_24mp_F23_044971_1685_F21_043995_1685 = { Identifier = "CTX_Shade_11S289E_24mp_F23_044971_1685_F21_043995_1685", Name = [[Mars Reconnaissance Orbiter CTX, HillShade East Melas 11S289E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_11S289E.vrt"), - Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -422,9 +422,9 @@ local treks_CTX_Shade_11S291E_24mp_B19_017187_1685_B19_016976_1685 = { Identifier = "CTX_Shade_11S291E_24mp_B19_017187_1685_B19_016976_1685", Name = [[Mars Reconnaissance Orbiter CTX, HillShade East Melas 11S291E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_11S291E.vrt"), - Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -434,9 +434,9 @@ local treks_CTX_Shade_12S289E_24mp_D01_027446_1678_D01_027723_1677 = { Identifier = "CTX_Shade_12S289E_24mp_D01_027446_1678_D01_027723_1677", Name = [[Mars Reconnaissance Orbiter CTX, HillShade East Melas 12S289E_D01]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S289E_D01.vrt"), - Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -446,9 +446,9 @@ local treks_CTX_Shade_12S289E_24mp_F18_042927_1681_J02_045749_1694 = { Identifier = "CTX_Shade_12S289E_24mp_F18_042927_1681_J02_045749_1694", Name = [[Mars Reconnaissance Orbiter CTX, HillShade East Melas 12S289E_F18]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S289E_F18.vrt"), - Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -458,9 +458,9 @@ local treks_CTX_Shade_12S290E_24mp_D18_034250_1676_D21_035450_1674 = { Identifier = "CTX_Shade_12S290E_24mp_D18_034250_1676_D21_035450_1674", Name = [[Mars Reconnaissance Orbiter CTX, HillShade East Melas 12S290E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S290E.vrt"), - Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -470,9 +470,9 @@ local treks_CTX_Shade_12S291E_24mp_F14_041292_1682_F16_041938_1682 = { Identifier = "CTX_Shade_12S291E_24mp_F14_041292_1682_F16_041938_1682", Name = [[Mars Reconnaissance Orbiter CTX, HillShade East Melas 12S291E_F14]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S291E_F14.vrt"), - Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -482,9 +482,9 @@ local treks_CTX_Shade_12S291E_24mp_F21_043850_1684_F21_043916_1685 = { Identifier = "CTX_Shade_12S291E_24mp_F21_043850_1684_F21_043916_1685", Name = [[Mars Reconnaissance Orbiter CTX, HillShade East Melas 12S291E_F21]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S291E_F21.vrt"), - Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -494,9 +494,9 @@ local treks_CTX_Shade_12S291E_24mp_J01_045116_1677_J03_046039_1676 = { Identifier = "CTX_Shade_12S291E_24mp_J01_045116_1677_J03_046039_1676", Name = [[Mars Reconnaissance Orbiter CTX, HillShade East Melas 12S291E_J01]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S291E_J01.vrt"), - Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -506,9 +506,9 @@ local treks_CTX_Shade_13S289E_24mp_D10_031125_1673_D12_031903_1669 = { Identifier = "CTX_Shade_13S289E_24mp_D10_031125_1673_D12_031903_1669", Name = [[Mars Reconnaissance Orbiter CTX, HillShade East Melas 13S289E_D10]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_13S289E_D10.vrt"), - Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -518,9 +518,9 @@ local treks_CTX_Shade_16S291E_24mp_D22_035951_1644_F01_036307_1644 = { Identifier = "CTX_Shade_16S291E_24mp_D22_035951_1644_F01_036307_1644", Name = [[Mars Reconnaissance Orbiter CTX, HillShade East Melas 16S291E_D22]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_16S291E_D22.vrt"), - Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -530,9 +530,9 @@ local treks_Deuteronilus_CTX_Shade_v0_20171112 = { Identifier = "Deuteronilus_CTX_Shade_v0_20171112", Name = [[Mars Reconnaissance Orbiter CTX, Hilllshade Deuteronilus]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Hilllshade_Deuteronilus.vrt"), - Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a grayscale shaded relief (hillshade) for the original digital elevation model (DEM/DTM) as produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -542,9 +542,9 @@ local treks_CTX_Ortho_12S182E_24mp_P22_009609_1674 = { Identifier = "CTX_Ortho_12S182E_24mp_P22_009609_1674", Name = [[Mars Reconnaissance Orbiter CTX, Mosaic Apollinaris 12S182E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Mosaic_Apollinaris_12S182E.vrt"), - Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -554,9 +554,9 @@ local treks_CTX_Ortho_13S182E_24mp_G15_024127_1673 = { Identifier = "CTX_Ortho_13S182E_24mp_G15_024127_1673", Name = [[Mars Reconnaissance Orbiter CTX, Mosaic Apollinaris 13S182E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Mosaic_Apollinaris_13S182E.vrt"), - Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -566,9 +566,9 @@ local treks_CTX_Ortho_14S184E_24mp_B01_009886_1658 = { Identifier = "CTX_Ortho_14S184E_24mp_B01_009886_1658", Name = [[Mars Reconnaissance Orbiter CTX, Mosaic Apollinaris 14S184E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Mosaic_Apollinaris_14S184E.vrt"), - Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -578,9 +578,9 @@ local treks_CTX_Ortho_10S291E_24mp_P22_009684_1699 = { Identifier = "CTX_Ortho_10S291E_24mp_P22_009684_1699", Name = [[Mars Reconnaissance Orbiter CTX, Mosaic Coprates 10S291E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Mosaic_Coprates_10S291E.vrt"), - Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -590,9 +590,9 @@ local treks_CTX_Ortho_11S293E_24mp_B09_013231_1696 = { Identifier = "CTX_Ortho_11S293E_24mp_B09_013231_1696", Name = [[Mars Reconnaissance Orbiter CTX, Mosaic Coprates 11S293E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Mosaic_Coprates_11S293E.vrt"), - Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -602,9 +602,9 @@ local treks_CTX_Ortho_13S293E_24mp_G07_020879_1669 = { Identifier = "CTX_Ortho_13S293E_24mp_G07_020879_1669", Name = [[Mars Reconnaissance Orbiter CTX, Mosaic Coprates 13S293E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Mosaic_Coprates_13S293E.vrt"), - Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -614,9 +614,9 @@ local treks_CTX_Ortho_38N024E_6mp_B17_016168_2181 = { Identifier = "CTX_Ortho_38N024E_6mp_B17_016168_2181", Name = [[Mars Reconnaissance Orbiter CTX, Mosaic Deuteronius 38N024E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Mosaic_Deuteronius_38N024E.vrt"), - Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -626,9 +626,9 @@ local treks_CTX_Ortho_39N024E_6mp_D15_032875_2196 = { Identifier = "CTX_Ortho_39N024E_6mp_D15_032875_2196", Name = [[Mars Reconnaissance Orbiter CTX, Mosaic Deuteronius 39N024E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Mosaic_Deuteronius_39N024E.vrt"), - Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -638,9 +638,9 @@ local treks_CTX_Ortho_40N022E_6mp_B18_016656_2206 = { Identifier = "CTX_Ortho_40N022E_6mp_B18_016656_2206", Name = [[Mars Reconnaissance Orbiter CTX, Mosaic Deuteronius 40N024E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Mosaic_Deuteronius_40N024E.vrt"), - Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -650,9 +650,9 @@ local treks_CTX_Ortho_11S289E_6mp_F23_044971_1685 = { Identifier = "CTX_Ortho_11S289E_6mp_F23_044971_1685", Name = [[Mars Reconnaissance Orbiter CTX, Mosaic East Melas 11S289E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_11S289E.vrt"), - Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -662,9 +662,9 @@ local treks_CTX_Ortho_11S291E_6mp_B19_017187_1685 = { Identifier = "CTX_Ortho_11S291E_6mp_B19_017187_1685", Name = [[Mars Reconnaissance Orbiter CTX, Mosaic East Melas 11S291E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_11S291E.vrt"), - Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -674,9 +674,9 @@ local treks_CTX_Ortho_12S289E_6mp_D01_027446_1678 = { Identifier = "CTX_Ortho_12S289E_6mp_D01_027446_1678", Name = [[Mars Reconnaissance Orbiter CTX, Mosaic East Melas 12S289E_D01]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S289E_D01.vrt"), - Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -686,9 +686,9 @@ local treks_CTX_Ortho_12S289E_6mp_F18_042927_1681 = { Identifier = "CTX_Ortho_12S289E_6mp_F18_042927_1681", Name = [[Mars Reconnaissance Orbiter CTX, Mosaic East Melas 12S289E_F18]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S289E_F18.vrt"), - Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -698,9 +698,9 @@ local treks_CTX_Ortho_12S290E_6mp_D18_034250_1676 = { Identifier = "CTX_Ortho_12S290E_6mp_D18_034250_1676", Name = [[Mars Reconnaissance Orbiter CTX, Mosaic East Melas 12S290E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S290E.vrt"), - Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -710,9 +710,9 @@ local treks_F14_041292_1682_map_ba_align_6_fill500DRG = { Identifier = "F14_041292_1682_map_ba_align_6_fill500DRG", Name = [[Mars Reconnaissance Orbiter CTX, Mosaic East Melas 12S291E_F14]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S291E_F14.vrt"), - Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -722,9 +722,9 @@ local treks_CTX_Ortho_12S291E_6mp_F21_043850_1684 = { Identifier = "CTX_Ortho_12S291E_6mp_F21_043850_1684", Name = [[Mars Reconnaissance Orbiter CTX, Mosaic East Melas 12S291E_F21]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S291E_F21.vrt"), - Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -734,9 +734,9 @@ local treks_CTX_Ortho_12S291E_6mp_J01_045116_1677 = { Identifier = "CTX_Ortho_12S291E_6mp_J01_045116_1677", Name = [[Mars Reconnaissance Orbiter CTX, Mosaic East Melas 12S291E_J01]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S291E_J01.vrt"), - Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -746,9 +746,9 @@ local treks_CTX_Ortho_13S289E_6mp_D10_031125_1673 = { Identifier = "CTX_Ortho_13S289E_6mp_D10_031125_1673", Name = [[Mars Reconnaissance Orbiter CTX, Mosaic East Melas 13S289E_D10]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_13S289E_D10.vrt"), - Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -758,9 +758,9 @@ local treks_CTX_Ortho_16S291E_6mp_D22_035951_1644 = { Identifier = "CTX_Ortho_16S291E_6mp_D22_035951_1644", Name = [[Mars Reconnaissance Orbiter CTX, Mosaic East Melas 16S291E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_16S291E.vrt"), - Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a CTX orthorectified image, geometrically corrected using its own source digital elevation model (DEM/DTM), as produced as part of an effort to characterize candidate Human Exploration Zones for Mars. The original DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). The DEM, and thus orthoimage, has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261.]] @@ -770,9 +770,9 @@ local treks_CTX_Slope_12S182E_24mp_P22_009609_1674_B02_010453_1675 = { Identifier = "CTX_Slope_12S182E_24mp_P22_009609_1674_B02_010453_1675", Name = [[Mars Reconnaissance Orbiter CTX, Slope Apollinaris 12S182E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Slope_Apollinaris_12S182E.vrt"), - Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261. @@ -784,9 +784,9 @@ local treks_CTX_Slope_13S182E_24mp_G15_024127_1673_G16_024483_1673 = { Identifier = "CTX_Slope_13S182E_24mp_G15_024127_1673_G16_024483_1673", Name = [[Mars Reconnaissance Orbiter CTX, Slope Apollinaris 13S182E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Slope_Apollinaris_13S182E.vrt"), - Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261. @@ -798,9 +798,9 @@ local treks_CTX_Slope_14S184E_24mp_B01_009886_1658_P21_009385_1658 = { Identifier = "CTX_Slope_14S184E_24mp_B01_009886_1658_P21_009385_1658", Name = [[Mars Reconnaissance Orbiter CTX, Slope Apollinaris 14S184E]], FilePath = asset.localResource("Mars_Reconnaissance_Orbiter_CTX/Slope_Apollinaris_14S184E.vrt"), - Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. + Description = [[This is a colorized version of the original 2x2 pixel slope in degrees (also called a 1 baseline slope). This was produced as part of an effort to characterize topography within candidate Human Exploration Zones for Mars. The DEM was constructed from a pair of CTX images using the stereo photogrammetry software AMES Stereo Pipeline (ASP). THe DEM has been tied to MOLA and can be considered resarch- and visualization-ready. Because it has not been manually edited using a full 3D editing environment, ASP DEMs cannot currently be considered true engineering-ready for performing landings. -References: +References: Shean, D. E., O. Alexandrov, Z. Moratto, B. E. Smith, I. R. Joughin, C. C. Porter, P. J., Morin, 2016, An automated, open-source pipeline for mass production of digital elevation models (DEMs) from very high-resolution commercial stereo satellite imagery, ISPRS Journal of Photogrammetry and Remote Sensing, 116. Mayer, D. P., E. S. Kite, 2016, An Integrated Workflow for Producing Digital Terrain Models Of Mars from CTX And HiRISE Stereo Data Using the NASA Ames Stereo Pipeline, 47th Lunar and Planetary Science Conference, Abstract 1261. diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Apollinaris_12S182E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Apollinaris_12S182E.wms index fbcf130e29..1bfeb492bc 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Apollinaris_12S182E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Apollinaris_12S182E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Apollinaris_13S182E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Apollinaris_13S182E.wms index d1eff04192..b82bff0163 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Apollinaris_13S182E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Apollinaris_13S182E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Apollinaris_14S184E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Apollinaris_14S184E.wms index aceaf1b5d0..6844f87531 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Apollinaris_14S184E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Apollinaris_14S184E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Coprates_10S291E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Coprates_10S291E.wms index b338ae20f3..123de8aa32 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Coprates_10S291E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Coprates_10S291E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Coprates_11S293E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Coprates_11S293E.wms index bfedd22f5c..fa0f46bb44 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Coprates_11S293E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Coprates_11S293E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Coprates_13S293E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Coprates_13S293E.wms index 5bc6ddd4b2..f1051d55e4 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Coprates_13S293E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Coprates_13S293E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Deuteronius_37N024E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Deuteronius_37N024E.wms index 2a09c2be18..7e0cc2485b 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Deuteronius_37N024E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Deuteronius_37N024E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Deuteronius_38N024E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Deuteronius_38N024E.wms index e37c6dc7fe..35c74c0250 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Deuteronius_38N024E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Deuteronius_38N024E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Deuteronius_39N024E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Deuteronius_39N024E.wms index d058b1453c..b3aec48c5d 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Deuteronius_39N024E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Deuteronius_39N024E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Deuteronius_40N024E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Deuteronius_40N024E.wms index 9e7b8fc58b..1c5bad2013 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Deuteronius_40N024E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_Deuteronius_40N024E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_11S289E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_11S289E.wms index bb05888291..7aeec77cfa 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_11S289E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_11S289E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_11S291E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_11S291E.wms index 30d8ea939c..3eb0dbe6c1 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_11S291E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_11S291E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S289E_D01.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S289E_D01.wms index a5df0155b8..a5ee9d1629 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S289E_D01.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S289E_D01.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S289E_F18.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S289E_F18.wms index 9c9fc8d626..e599dfbb24 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S289E_F18.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S289E_F18.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S290E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S290E.wms index c82395cdb2..28fd660b24 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S290E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S290E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S291E_F14.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S291E_F14.wms index e4799ddeed..f2288dddf4 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S291E_F14.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S291E_F14.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S291E_F21.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S291E_F21.wms index b227a15859..4a91f0335b 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S291E_F21.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S291E_F21.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S291E_J01.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S291E_J01.wms index d64b4fd9f8..1b407e8149 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S291E_J01.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_12S291E_J01.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_13S289E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_13S289E.wms index 21a7a2e227..726deac724 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_13S289E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_13S289E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_16S291E_D22.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_16S291E_D22.wms index c9400c5d57..a374058afa 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_16S291E_D22.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Color_Slope_East_Melas_16S291E_D22.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Apollinaris_12S182E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Apollinaris_12S182E.wms index b3db834052..aca9d85312 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Apollinaris_12S182E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Apollinaris_12S182E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Apollinaris_13S182E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Apollinaris_13S182E.wms index 93cc7b0f8a..a0300a68fc 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Apollinaris_13S182E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Apollinaris_13S182E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Apollinaris_14S184E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Apollinaris_14S184E.wms index 094842bb50..ef5c4de1d6 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Apollinaris_14S184E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Apollinaris_14S184E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Coprates_10S291E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Coprates_10S291E.wms index 81a831fe5c..82e99e14aa 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Coprates_10S291E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Coprates_10S291E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Coprates_11S293E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Coprates_11S293E.wms index c2da8d4cf7..1769afe651 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Coprates_11S293E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Coprates_11S293E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Coprates_13S293E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Coprates_13S293E.wms index 5c51277f71..5af313df5a 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Coprates_13S293E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Coprates_13S293E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Deuteronius_37N024E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Deuteronius_37N024E.wms index 9a774731a4..141448a056 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Deuteronius_37N024E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Deuteronius_37N024E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Deuteronius_38N024E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Deuteronius_38N024E.wms index dd5ad16226..5fb1fa1ec2 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Deuteronius_38N024E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Deuteronius_38N024E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Deuteronius_39N024E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Deuteronius_39N024E.wms index 8dc2f24e23..a846678276 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Deuteronius_39N024E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Deuteronius_39N024E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Deuteronius_40N024E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Deuteronius_40N024E.wms index 135320d3b4..40c7091609 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Deuteronius_40N024E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_Deuteronius_40N024E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_11S289E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_11S289E.wms index 0a967e4019..c5e20c7866 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_11S289E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_11S289E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_11S291E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_11S291E.wms index 32325d7b46..44fe2a9adc 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_11S291E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_11S291E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S289E_D01.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S289E_D01.wms index 9d5946bbe5..1cf3d008cb 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S289E_D01.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S289E_D01.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S289E_F18.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S289E_F18.wms index 7c0f9a479e..d70dc5775f 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S289E_F18.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S289E_F18.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S290E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S290E.wms index 9ecfd0a471..47405a7a32 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S290E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S290E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S291E_F14.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S291E_F14.wms index a2ca3a6c40..d1064e4ab8 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S291E_F14.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S291E_F14.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S291E_F21.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S291E_F21.wms index e6e992b846..156635ef95 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S291E_F21.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S291E_F21.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S291E_J01.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S291E_J01.wms index 2eab73a7cc..9d18b2989b 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S291E_J01.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_12S291E_J01.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_13S289E_D10.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_13S289E_D10.wms index 66d6f986b7..19f2375cb2 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_13S289E_D10.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_13S289E_D10.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_16S291E_D22.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_16S291E_D22.wms index 98f60e0be0..a33c03b744 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_16S291E_D22.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/HillShade_East_Melas_16S291E_D22.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Hilllshade_Deuteronilus.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Hilllshade_Deuteronilus.wms index b062a7fdd2..a15646e9d9 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Hilllshade_Deuteronilus.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Hilllshade_Deuteronilus.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Apollinaris_12S182E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Apollinaris_12S182E.wms index 9995dbf72e..af7a2107e3 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Apollinaris_12S182E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Apollinaris_12S182E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Apollinaris_13S182E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Apollinaris_13S182E.wms index 7e3b9f58ab..ef174ecf37 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Apollinaris_13S182E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Apollinaris_13S182E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Apollinaris_14S184E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Apollinaris_14S184E.wms index 419b188389..cd050e70f2 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Apollinaris_14S184E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Apollinaris_14S184E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Coprates_10S291E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Coprates_10S291E.wms index 4bedc165e1..ee41eb7541 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Coprates_10S291E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Coprates_10S291E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Coprates_11S293E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Coprates_11S293E.wms index 9a7a115476..a3fa4166f4 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Coprates_11S293E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Coprates_11S293E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Coprates_13S293E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Coprates_13S293E.wms index aaf8a4cb33..cac9b68fff 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Coprates_13S293E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Coprates_13S293E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Deuteronius_38N024E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Deuteronius_38N024E.wms index f16b62a6b2..d407ade553 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Deuteronius_38N024E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Deuteronius_38N024E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Deuteronius_39N024E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Deuteronius_39N024E.wms index 8cb337d882..f2a9ba2417 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Deuteronius_39N024E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Deuteronius_39N024E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Deuteronius_40N024E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Deuteronius_40N024E.wms index b0d9fd5e9c..978ec53771 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Deuteronius_40N024E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_Deuteronius_40N024E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_11S289E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_11S289E.wms index d3c1da61b7..293e28d0e8 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_11S289E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_11S289E.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_11S291E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_11S291E.wms index 6f12b8cf80..0efb4b514b 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_11S291E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_11S291E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S289E_D01.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S289E_D01.wms index 767d84ea24..e47d5c3537 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S289E_D01.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S289E_D01.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S289E_F18.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S289E_F18.wms index 0588a12a4b..1260007b57 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S289E_F18.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S289E_F18.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S290E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S290E.wms index c7f9b32aae..eb02b7adf0 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S290E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S290E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S291E_F14.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S291E_F14.wms index 68110ac4e4..5461d9eab2 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S291E_F14.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S291E_F14.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S291E_F21.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S291E_F21.wms index 826b5f1cf2..4ecbafaed5 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S291E_F21.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S291E_F21.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S291E_J01.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S291E_J01.wms index 8757cfef21..5d335c7272 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S291E_J01.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_12S291E_J01.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_13S289E_D10.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_13S289E_D10.wms index 61d51750c1..c7e76d658f 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_13S289E_D10.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_13S289E_D10.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_16S291E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_16S291E.wms index 8dc1fe9110..c5f092fd09 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_16S291E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Mosaic_East_Melas_16S291E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Slope_Apollinaris_12S182E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Slope_Apollinaris_12S182E.wms index b98d895d7b..5063219f53 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Slope_Apollinaris_12S182E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Slope_Apollinaris_12S182E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Slope_Apollinaris_13S182E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Slope_Apollinaris_13S182E.wms index 6054db86ce..c105889948 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Slope_Apollinaris_13S182E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Slope_Apollinaris_13S182E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Slope_Apollinaris_14S184E.wms b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Slope_Apollinaris_14S184E.wms index 45eaaf42da..9b90e9f34f 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Slope_Apollinaris_14S184E.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/nasa-treks/Mars_Reconnaissance_Orbiter_CTX/Slope_Apollinaris_14S184E.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_bdr_sweden.asset b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_bdr_sweden.asset index b8e573261f..af77f07a94 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_bdr_sweden.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_bdr_sweden.asset @@ -31,7 +31,7 @@ asset.export("layer", layer) asset.meta = { Name = "Messenger BDR [Sweden]", Version = "1.0", - Description = [[Mercury MESSENGER MDIS Global Basemap BDR 166m layer for Mercury globe. + Description = [[Mercury MESSENGER MDIS Global Basemap BDR 166m layer for Mercury globe. This map is hosted on the OpenSpace server in Sweden]], Author = "USGS", URL = "https://astrogeology.usgs.gov/search/map/Mercury/Messenger/Global/Mercury_MESSENGER_MDIS_Basemap_BDR_Mosaic_Global_166m", diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_bdr_utah.asset b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_bdr_utah.asset index f4e66b1193..240619bfef 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_bdr_utah.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/colorlayers/messenger_bdr_utah.asset @@ -31,7 +31,7 @@ asset.export("layer", layer) asset.meta = { Name = "Messenger BDR [Utah]", Version = "1.0", - Description = [[Mercury MESSENGER MDIS Global Basemap BDR 166m layer for Mercury globe. + Description = [[Mercury MESSENGER MDIS Global Basemap BDR 166m layer for Mercury globe. This map is hosted on the OpenSpace server in Utah]], Author = "USGS", URL = "https://astrogeology.usgs.gov/search/map/Mercury/Messenger/Global/Mercury_MESSENGER_MDIS_Basemap_BDR_Mosaic_Global_166m", diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS.asset b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS.asset index f294501cbc..b45e33a0cc 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS.asset @@ -10,21 +10,21 @@ local treks_Mercury_Messenger_USGS_DEM_665m_v2_HillshadeColor = { Identifier = "Mercury_Messenger_USGS_DEM_665m_v2_HillshadeColor", Name = [[MSGR MDIS, ColorHillshade Global]], FilePath = asset.localResource("MSGR_MDIS/ColorHillshade_Global.vrt"), - Description = [[This is a colorized shaded-relief generated from the USGS Astrogeology Science Center’s Mercury MESSENGER Global DEM 665m v2 data product providing global coverage of Mercury. This color hillshade was generated in ArcPro with the shaded-relief raster function. The resolution of the original DEM used to create this product is 64 pixels/degree (665 m/pixel). The control network used for registration contains tie points that are sample/line coordinates with geometric locations (derived from SPICE) that are automatically measured across the overlapping image areas. Elevation values are in meters and referred to a radius of 2439400m. The legend conveys the mapping colors to elevation values (meters).]] + Description = [[This is a colorized shaded-relief generated from the USGS Astrogeology Science Center's Mercury MESSENGER Global DEM 665m v2 data product providing global coverage of Mercury. This color hillshade was generated in ArcPro with the shaded-relief raster function. The resolution of the original DEM used to create this product is 64 pixels/degree (665 m/pixel). The control network used for registration contains tie points that are sample/line coordinates with geometric locations (derived from SPICE) that are automatically measured across the overlapping image areas. Elevation values are in meters and referred to a radius of 2439400m. The legend conveys the mapping colors to elevation values (meters).]] } local treks_Mercury_Messenger_USGS_DEM_665m_v2_Hillshade = { Identifier = "Mercury_Messenger_USGS_DEM_665m_v2_Hillshade", Name = [[MSGR MDIS, Hillshade Global]], FilePath = asset.localResource("MSGR_MDIS/Hillshade_Global.vrt"), - Description = [[This is a shaded-relief generated from the USGS Astrogeology Science Center’s Mercury MESSENGER Global DEM 665m v2 data product providing global coverage of Mercury. This shaded-relief data product was generated in ArcPro with the hillshade raster function. The resolution of the original DEM used to create this product is 64 pixels/degree (665 m/pixel). The control network used for registration contains tie points that are sample/line coordinates with geometric locations (derived from SPICE) that are automatically measured across the overlapping image areas. Elevation values are in meters and referred to a radius of 2439400m.]] + Description = [[This is a shaded-relief generated from the USGS Astrogeology Science Center's Mercury MESSENGER Global DEM 665m v2 data product providing global coverage of Mercury. This shaded-relief data product was generated in ArcPro with the hillshade raster function. The resolution of the original DEM used to create this product is 64 pixels/degree (665 m/pixel). The control network used for registration contains tie points that are sample/line coordinates with geometric locations (derived from SPICE) that are automatically measured across the overlapping image areas. Elevation values are in meters and referred to a radius of 2439400m.]] } local treks_Mercury_Messenger_USGS_DEM_665m_v2_SlopeColor = { Identifier = "Mercury_Messenger_USGS_DEM_665m_v2_SlopeColor", Name = [[MSGR MDIS, Slope Colorized Global]], FilePath = asset.localResource("MSGR_MDIS/Slope_Colorized_Global.vrt"), - Description = [[This is a colorized slope data product of the USGS Astrogeology Science Center’s Mercury MESSENGER Global DEM 665m v2 data product providing global coverage of Mercury. This slope data product was generated in ArcMap with the slope spatial analysis tool. The resolution of this product is 64 pixels/degree (665 m/pixel). The control network used for registration contains tie points that are sample/line coordinates with geometric locations (derived from SPICE) that are automatically measured across the overlapping image areas. Slope values are in degrees and referred to a radius of 2439400m. Slope values range from a minimum value of 0 to a maximum value of 71.0409. The legend conveys the mapping colors to slope values (degrees).]] + Description = [[This is a colorized slope data product of the USGS Astrogeology Science Center's Mercury MESSENGER Global DEM 665m v2 data product providing global coverage of Mercury. This slope data product was generated in ArcMap with the slope spatial analysis tool. The resolution of this product is 64 pixels/degree (665 m/pixel). The control network used for registration contains tie points that are sample/line coordinates with geometric locations (derived from SPICE) that are automatically measured across the overlapping image areas. Slope values are in degrees and referred to a radius of 2439400m. Slope values range from a minimum value of 0 to a maximum value of 71.0409. The legend conveys the mapping colors to slope values (degrees).]] } asset.onInitialize(function() diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS/ColorHillshade_Global.wms b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS/ColorHillshade_Global.wms index 2fdf4aee4b..c65121455c 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS/ColorHillshade_Global.wms +++ b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS/ColorHillshade_Global.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS/Hillshade_Global.wms b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS/Hillshade_Global.wms index 6ab604bd5f..7d4bffbf52 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS/Hillshade_Global.wms +++ b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS/Hillshade_Global.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS/Slope_Colorized_Global.wms b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS/Slope_Colorized_Global.wms index 1129459fed..350dba5c81 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS/Slope_Colorized_Global.wms +++ b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS/Slope_Colorized_Global.wms @@ -20,5 +20,5 @@ 3 10 - 400 + 400 diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic.asset b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic.asset index 57f026c548..36c95e6edb 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic.asset @@ -10,70 +10,70 @@ local treks_MSGR_Aksakov_Crater_Peak_Ring_Ortho_29m = { Identifier = "MSGR_Aksakov_Crater_Peak_Ring_Ortho_29m", Name = [[MSGR MDIS Mosaic, Aksakov Crater Peak Ring]], FilePath = asset.localResource("MSGR_MDIS_Mosaic/Aksakov_Crater_Peak_Ring.vrt"), - Description = [[This is a visible orthoimage for the Aksakov Crater Peak Ring region on Mercury. This data product class of this data is observational and has been constructed to examine the visible and topographic settings of landforms around Mercury’s hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. The visible image has been orthorectified using a digital elevation model (DEM) created from Mercury Dual Imaging System (MDIS) stereo pair images. The DEM used to generate the orthoimage has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. The orthoimage was then projected onto the DEM and exported. This ortho image has been generated at a resolution of 29m/pixel.]] + Description = [[This is a visible orthoimage for the Aksakov Crater Peak Ring region on Mercury. This data product class of this data is observational and has been constructed to examine the visible and topographic settings of landforms around Mercury's hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. The visible image has been orthorectified using a digital elevation model (DEM) created from Mercury Dual Imaging System (MDIS) stereo pair images. The DEM used to generate the orthoimage has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. The orthoimage was then projected onto the DEM and exported. This ortho image has been generated at a resolution of 29m/pixel.]] } local treks_MSGR_near_Dali_Crater_Ortho_20m = { Identifier = "MSGR_near_Dali_Crater_Ortho_20m", Name = [[MSGR MDIS Mosaic, Crater near Dali Crater]], FilePath = asset.localResource("MSGR_MDIS_Mosaic/Crater_near_Dali_Crater.vrt"), - Description = [[This is a visible orthoimage for the Crater Near Dali Crater region on Mercury. This data product class of this data is observational and has been constructed to examine the visible and topographic settings of landforms around Mercury’s hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. The visible image has been orthorectified using a digital elevation model (DEM) created from Mercury Dual Imaging System (MDIS) stereo pair images. The DEM used to generate the orthoimage has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. The orthoimage was then projected onto the DEM and exported. This ortho image has been generated at a resolution of 20m/pixel.]] + Description = [[This is a visible orthoimage for the Crater Near Dali Crater region on Mercury. This data product class of this data is observational and has been constructed to examine the visible and topographic settings of landforms around Mercury's hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. The visible image has been orthorectified using a digital elevation model (DEM) created from Mercury Dual Imaging System (MDIS) stereo pair images. The DEM used to generate the orthoimage has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. The orthoimage was then projected onto the DEM and exported. This ortho image has been generated at a resolution of 20m/pixel.]] } local treks_MSGR_near_Geddes_Crater_Ortho_33m = { Identifier = "MSGR_near_Geddes_Crater_Ortho_33m", Name = [[MSGR MDIS Mosaic, Crater near Geddes Crater]], FilePath = asset.localResource("MSGR_MDIS_Mosaic/Crater_near_Geddes_Crater.vrt"), - Description = [[This is a visible orthoimage for the Crater Near Geddes Crater region on Mercury. This data product class of this data is observational and has been constructed to examine the visible and topographic settings of landforms around Mercury’s hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. The visible image has been orthorectified using a digital elevation model (DEM) created from Mercury Dual Imaging System (MDIS) stereo pair images. The DEM used to generate the orthoimage has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. The orthoimage was then projected onto the DEM and exported. This ortho image has been generated at a resolution of 33m/pixel.]] + Description = [[This is a visible orthoimage for the Crater Near Geddes Crater region on Mercury. This data product class of this data is observational and has been constructed to examine the visible and topographic settings of landforms around Mercury's hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. The visible image has been orthorectified using a digital elevation model (DEM) created from Mercury Dual Imaging System (MDIS) stereo pair images. The DEM used to generate the orthoimage has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. The orthoimage was then projected onto the DEM and exported. This ortho image has been generated at a resolution of 33m/pixel.]] } local treks_MSGR_Degas_Crater_Ortho_30m = { Identifier = "MSGR_Degas_Crater_Ortho_30m", Name = [[MSGR MDIS Mosaic, Degas Crater]], FilePath = asset.localResource("MSGR_MDIS_Mosaic/Degas_Crater.vrt"), - Description = [[This is a visible orthoimage for the Degas Crater region on Mercury. This data product class of this data is observational and has been constructed to examine the visible and topographic settings of landforms around Mercury’s hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. The visible image has been orthorectified using a digital elevation model (DEM) created from Mercury Dual Imaging System (MDIS) stereo pair images. The DEM used to generate the orthoimage has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. The orthoimage was then projected onto the DEM and exported. This ortho image has been generated at a resolution of 30m/pixel.]] + Description = [[This is a visible orthoimage for the Degas Crater region on Mercury. This data product class of this data is observational and has been constructed to examine the visible and topographic settings of landforms around Mercury's hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. The visible image has been orthorectified using a digital elevation model (DEM) created from Mercury Dual Imaging System (MDIS) stereo pair images. The DEM used to generate the orthoimage has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. The orthoimage was then projected onto the DEM and exported. This ortho image has been generated at a resolution of 30m/pixel.]] } local treks_MSGR_Kertesz_Crater_Ortho_30m = { Identifier = "MSGR_Kertesz_Crater_Ortho_30m", Name = [[MSGR MDIS Mosaic, Kertesz Crater]], FilePath = asset.localResource("MSGR_MDIS_Mosaic/Kertesz_Crater.vrt"), - Description = [[This is a visible orthoimage for the KerteszCrater region on Mercury. This data product class of this data is observational and has been constructed to examine the visible and topographic settings of landforms around Mercury’s hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. The visible image has been orthorectified using a digital elevation model (DEM) created from Mercury Dual Imaging System (MDIS) stereo pair images. The DEM used to generate the orthoimage has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. The orthoimage was then projected onto the DEM and exported. This ortho image has been generated at a resolution of 30m/pixel.]] + Description = [[This is a visible orthoimage for the KerteszCrater region on Mercury. This data product class of this data is observational and has been constructed to examine the visible and topographic settings of landforms around Mercury's hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. The visible image has been orthorectified using a digital elevation model (DEM) created from Mercury Dual Imaging System (MDIS) stereo pair images. The DEM used to generate the orthoimage has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. The orthoimage was then projected onto the DEM and exported. This ortho image has been generated at a resolution of 30m/pixel.]] } local treks_MSGR_nw_Degas_Crater_Ortho_26m = { Identifier = "MSGR_nw_Degas_Crater_Ortho_26m", Name = [[MSGR MDIS Mosaic, North-West of Degas Crater]], FilePath = asset.localResource("MSGR_MDIS_Mosaic/North-West_of_Degas_Crater.vrt"), - Description = [[This is a visible orthoimage for the region northwest of Degas Crater on Mercury. This data product class of this data is observational and has been constructed to examine the visible and topographic settings of landforms around Mercury’s hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. The visible image has been orthorectified using a digital elevation model (DEM) created from Mercury Dual Imaging System (MDIS) stereo pair images. The DEM used to generate the orthoimage has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. The orthoimage was then projected onto the DEM and exported. This ortho image has been generated at a resolution of 26m/pixel.]] + Description = [[This is a visible orthoimage for the region northwest of Degas Crater on Mercury. This data product class of this data is observational and has been constructed to examine the visible and topographic settings of landforms around Mercury's hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. The visible image has been orthorectified using a digital elevation model (DEM) created from Mercury Dual Imaging System (MDIS) stereo pair images. The DEM used to generate the orthoimage has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. The orthoimage was then projected onto the DEM and exported. This ortho image has been generated at a resolution of 26m/pixel.]] } local treks_MSGR_Praxiteles_Peak_Ring_Ortho_20m = { Identifier = "MSGR_Praxiteles_Peak_Ring_Ortho_20m", Name = [[MSGR MDIS Mosaic, Praxiteles Peak Ring]], FilePath = asset.localResource("MSGR_MDIS_Mosaic/Praxiteles_Peak_Ring.vrt"), - Description = [[This is a visible orthoimage for the Praxiteles Peak Ring region on Mercury. This data product class of this data is observational and has been constructed to examine the visible and topographic settings of landforms around Mercury’s hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. The visible image has been orthorectified using a digital elevation model (DEM) created from Mercury Dual Imaging System (MDIS) stereo pair images. The DEM used to generate the orthoimage has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. The orthoimage was then projected onto the DEM and exported. This ortho image has been generated at a resolution of 20m/pixel.]] + Description = [[This is a visible orthoimage for the Praxiteles Peak Ring region on Mercury. This data product class of this data is observational and has been constructed to examine the visible and topographic settings of landforms around Mercury's hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. The visible image has been orthorectified using a digital elevation model (DEM) created from Mercury Dual Imaging System (MDIS) stereo pair images. The DEM used to generate the orthoimage has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. The orthoimage was then projected onto the DEM and exported. This ortho image has been generated at a resolution of 20m/pixel.]] } local treks_MSGR_Raditladi_Crater_Ortho_40m = { Identifier = "MSGR_Raditladi_Crater_Ortho_40m", Name = [[MSGR MDIS Mosaic, Raditladi Crater]], FilePath = asset.localResource("MSGR_MDIS_Mosaic/Raditladi_Crater.vrt"), - Description = [[This is a visible orthoimage for the Raditladi Crater region on Mercury. This data product class of this data is observational and has been constructed to examine the visible and topographic settings of landforms around Mercury’s hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. The visible image has been orthorectified using a digital elevation model (DEM) created from Mercury Dual Imaging System (MDIS) stereo pair images. The DEM used to generate the orthoimage has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. The orthoimage was then projected onto the DEM and exported. This ortho image has been generated at a resolution of 40m/pixel.]] + Description = [[This is a visible orthoimage for the Raditladi Crater region on Mercury. This data product class of this data is observational and has been constructed to examine the visible and topographic settings of landforms around Mercury's hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. The visible image has been orthorectified using a digital elevation model (DEM) created from Mercury Dual Imaging System (MDIS) stereo pair images. The DEM used to generate the orthoimage has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. The orthoimage was then projected onto the DEM and exported. This ortho image has been generated at a resolution of 40m/pixel.]] } local treks_MSGR_Sander_Crater_Ortho_22m = { Identifier = "MSGR_Sander_Crater_Ortho_22m", Name = [[MSGR MDIS Mosaic, Sander Crater]], FilePath = asset.localResource("MSGR_MDIS_Mosaic/Sander_Crater.vrt"), - Description = [[This is a visible orthoimage for the Sander Crater region on Mercury. This data product class of this data is observational and has been constructed to examine the visible and topographic settings of landforms around Mercury’s hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. The visible image has been orthorectified using a digital elevation model (DEM) created from Mercury Dual Imaging System (MDIS) stereo pair images. The DEM used to generate the orthoimage has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. The orthoimage was then projected onto the DEM and exported. This ortho image has been generated at a resolution of 22m/pixel.]] + Description = [[This is a visible orthoimage for the Sander Crater region on Mercury. This data product class of this data is observational and has been constructed to examine the visible and topographic settings of landforms around Mercury's hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. The visible image has been orthorectified using a digital elevation model (DEM) created from Mercury Dual Imaging System (MDIS) stereo pair images. The DEM used to generate the orthoimage has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. The orthoimage was then projected onto the DEM and exported. This ortho image has been generated at a resolution of 22m/pixel.]] } local treks_MSGR_Sholem_Aleichem_Crater_Wall_Ortho_8m = { Identifier = "MSGR_Sholem_Aleichem_Crater_Wall_Ortho_8m", Name = [[MSGR MDIS Mosaic, Sholem Aleichem Crater Wall]], FilePath = asset.localResource("MSGR_MDIS_Mosaic/Sholem_Aleichem_Crater_Wall.vrt"), - Description = [[This is a visible orthoimage for the Sholem Aleichem Crater Wall region on Mercury. This data product class of this data is observational and has been constructed to examine the visible and topographic settings of landforms around Mercury’s hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. The visible image has been orthorectified using a digital elevation model (DEM) created from Mercury Dual Imaging System (MDIS) stereo pair images. The DEM used to generate the orthoimage has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. The orthoimage was then projected onto the DEM and exported. This ortho image has been generated at a resolution of 8m/pixel.]] + Description = [[This is a visible orthoimage for the Sholem Aleichem Crater Wall region on Mercury. This data product class of this data is observational and has been constructed to examine the visible and topographic settings of landforms around Mercury's hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. The visible image has been orthorectified using a digital elevation model (DEM) created from Mercury Dual Imaging System (MDIS) stereo pair images. The DEM used to generate the orthoimage has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. The orthoimage was then projected onto the DEM and exported. This ortho image has been generated at a resolution of 8m/pixel.]] } asset.onInitialize(function() diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Aksakov_Crater_Peak_Ring.wms b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Aksakov_Crater_Peak_Ring.wms index 90658f5d8f..1a61665ac1 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Aksakov_Crater_Peak_Ring.wms +++ b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Aksakov_Crater_Peak_Ring.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Crater_near_Dali_Crater.wms b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Crater_near_Dali_Crater.wms index c805ba2a32..e817dedd66 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Crater_near_Dali_Crater.wms +++ b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Crater_near_Dali_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Crater_near_Geddes_Crater.wms b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Crater_near_Geddes_Crater.wms index 39ac6ed11e..6ca256886e 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Crater_near_Geddes_Crater.wms +++ b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Crater_near_Geddes_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Degas_Crater.wms b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Degas_Crater.wms index 92a23811cb..29cfbf5cb6 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Degas_Crater.wms +++ b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Degas_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Kertesz_Crater.wms b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Kertesz_Crater.wms index f96e47c51e..917bd1ba21 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Kertesz_Crater.wms +++ b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Kertesz_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/North-West_of_Degas_Crater.wms b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/North-West_of_Degas_Crater.wms index 908c7d078b..b26a81e92b 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/North-West_of_Degas_Crater.wms +++ b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/North-West_of_Degas_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Praxiteles_Peak_Ring.wms b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Praxiteles_Peak_Ring.wms index 92d3f5f2ef..fdd7c8803c 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Praxiteles_Peak_Ring.wms +++ b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Praxiteles_Peak_Ring.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Raditladi_Crater.wms b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Raditladi_Crater.wms index ceadecf8c4..d7b2d6b63c 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Raditladi_Crater.wms +++ b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Raditladi_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Sander_Crater.wms b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Sander_Crater.wms index 9c1778f011..a705bab0fe 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Sander_Crater.wms +++ b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Sander_Crater.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Sholem_Aleichem_Crater_Wall.wms b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Sholem_Aleichem_Crater_Wall.wms index 4444ac2b52..d1917abe06 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Sholem_Aleichem_Crater_Wall.wms +++ b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Mosaic/Sholem_Aleichem_Crater_Wall.wms @@ -20,5 +20,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope.asset b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope.asset index d8c1e77abe..a86bf3230a 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope.asset +++ b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope.asset @@ -10,70 +10,70 @@ local treks_MSGR_Aksakov_Crater_Peak_Ring_Slope_100m = { Identifier = "MSGR_Aksakov_Crater_Peak_Ring_Slope_100m", Name = [[MSGR MDIS Slope, Aksakov Crater Peak Ring]], FilePath = asset.localResource("MSGR_MDIS_Slope/Aksakov_Crater_Peak_Ring.vrt"), - Description = [[This is a slope product of the digital elevation model (DEM) for the Aksakov Crater Peak Ring region on Mercury. This data product class of this data is observational and has been constructed to examine the topographic settings of landforms around Mercury’s hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. This DEM has been derived from Mercury Dual Imaging System (MDIS) data and has been generated at a resolution of 100m/pixel. The DEM has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. Vertical offsets in this DEM have been roughly corrected relative to the USGS’s 665m Global DEM of Mercury. DEM elevation values are in meters and referred to a radius of 2440000m. Slope values are in degrees with a minimum value of 0 and a maximum value of 41.818.]] + Description = [[This is a slope product of the digital elevation model (DEM) for the Aksakov Crater Peak Ring region on Mercury. This data product class of this data is observational and has been constructed to examine the topographic settings of landforms around Mercury's hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. This DEM has been derived from Mercury Dual Imaging System (MDIS) data and has been generated at a resolution of 100m/pixel. The DEM has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. Vertical offsets in this DEM have been roughly corrected relative to the USGS's 665m Global DEM of Mercury. DEM elevation values are in meters and referred to a radius of 2440000m. Slope values are in degrees with a minimum value of 0 and a maximum value of 41.818.]] } local treks_MSGR_near_Dali_Crater_Slope_60m = { Identifier = "MSGR_near_Dali_Crater_Slope_60m", Name = [[MSGR MDIS Slope, Crater near Dali Crater]], FilePath = asset.localResource("MSGR_MDIS_Slope/Crater_near_Dali_Crater.vrt"), - Description = [[This is a slope product of the digital elevation model (DEM) for the Crater Near Dali Crater region on Mercury. This data product class of this data is observational and has been constructed to examine the topographic settings of landforms around Mercury’s hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. This DEM has been derived from Mercury Dual Imaging System (MDIS) data and has been generated at a resolution of 60m/pixel. The DEM has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. Vertical offsets in this DEM have been roughly corrected relative to the USGS’s 665m Global DEM of Mercury. DEM elevation values are in meters and referred to a radius of 2440000m. Slope values are in degrees with a minimum value of 0 and a maximum value of 50.112.]] + Description = [[This is a slope product of the digital elevation model (DEM) for the Crater Near Dali Crater region on Mercury. This data product class of this data is observational and has been constructed to examine the topographic settings of landforms around Mercury's hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. This DEM has been derived from Mercury Dual Imaging System (MDIS) data and has been generated at a resolution of 60m/pixel. The DEM has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. Vertical offsets in this DEM have been roughly corrected relative to the USGS's 665m Global DEM of Mercury. DEM elevation values are in meters and referred to a radius of 2440000m. Slope values are in degrees with a minimum value of 0 and a maximum value of 50.112.]] } local treks_MSGR_near_Geddes_Crater_Slope_100m = { Identifier = "MSGR_near_Geddes_Crater_Slope_100m", Name = [[MSGR MDIS Slope, Crater near Geddes Crater]], FilePath = asset.localResource("MSGR_MDIS_Slope/Crater_near_Geddes_Crater.vrt"), - Description = [[This is a slope product of the digital elevation model (DEM) for the Crater Near Geddes Crater region on Mercury. This data product class of this data is observational and has been constructed to examine the topographic settings of landforms around Mercury’s hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. This DEM has been derived from Mercury Dual Imaging System (MDIS) data and has been generated at a resolution of 100m/pixel. The DEM has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. Vertical offsets in this DEM have been roughly corrected relative to the USGS’s 665m Global DEM of Mercury. DEM elevation values are in meters and referred to a radius of 2440000m. Slope values are in degrees with a minimum value of 0 and a maximum value of 42.451.]] + Description = [[This is a slope product of the digital elevation model (DEM) for the Crater Near Geddes Crater region on Mercury. This data product class of this data is observational and has been constructed to examine the topographic settings of landforms around Mercury's hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. This DEM has been derived from Mercury Dual Imaging System (MDIS) data and has been generated at a resolution of 100m/pixel. The DEM has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. Vertical offsets in this DEM have been roughly corrected relative to the USGS's 665m Global DEM of Mercury. DEM elevation values are in meters and referred to a radius of 2440000m. Slope values are in degrees with a minimum value of 0 and a maximum value of 42.451.]] } local treks_MSGR_Degas_Crater_Slope_90m = { Identifier = "MSGR_Degas_Crater_Slope_90m", Name = [[MSGR MDIS Slope, Degas Crater]], FilePath = asset.localResource("MSGR_MDIS_Slope/Degas_Crater.vrt"), - Description = [[This is a slope product of the digital elevation model (DEM) for the Degas Crater region on Mercury. This data product class of this data is observational and has been constructed to examine the topographic settings of landforms around Mercury’s hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. This DEM has been derived from Mercury Dual Imaging System (MDIS) data and has been generated at a resolution of 90m/pixel. The DEM has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. Vertical offsets in this DEM have been roughly corrected relative to the USGS’s 665m Global DEM of Mercury. DEM elevation values are in meters and referred to a radius of 2440000m. Slope values are in degrees with a minimum value of 0 and a maximum value of 53.812.]] + Description = [[This is a slope product of the digital elevation model (DEM) for the Degas Crater region on Mercury. This data product class of this data is observational and has been constructed to examine the topographic settings of landforms around Mercury's hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. This DEM has been derived from Mercury Dual Imaging System (MDIS) data and has been generated at a resolution of 90m/pixel. The DEM has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. Vertical offsets in this DEM have been roughly corrected relative to the USGS's 665m Global DEM of Mercury. DEM elevation values are in meters and referred to a radius of 2440000m. Slope values are in degrees with a minimum value of 0 and a maximum value of 53.812.]] } local treks_MSGR_Kertesz_Crater_Slope_100m = { Identifier = "MSGR_Kertesz_Crater_Slope_100m", Name = [[MSGR MDIS Slope, Kertesz Crater]], FilePath = asset.localResource("MSGR_MDIS_Slope/Kertesz_Crater.vrt"), - Description = [[This is a slope product of the digital elevation model (DEM) for the Kertesz Crater region on Mercury. This data product class of this data is observational and has been constructed to examine the topographic settings of landforms around Mercury’s hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. This DEM has been derived from Mercury Dual Imaging System (MDIS) data and has been generated at a resolution of 100m/pixel. The DEM has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. Vertical offsets in this DEM have been roughly corrected relative to the USGS’s 665m Global DEM of Mercury. DEM elevation values are in meters and referred to a radius of 2440000m. Slope values are in degrees with a minimum value of 0 and a maximum value of 51.033.]] + Description = [[This is a slope product of the digital elevation model (DEM) for the Kertesz Crater region on Mercury. This data product class of this data is observational and has been constructed to examine the topographic settings of landforms around Mercury's hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. This DEM has been derived from Mercury Dual Imaging System (MDIS) data and has been generated at a resolution of 100m/pixel. The DEM has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. Vertical offsets in this DEM have been roughly corrected relative to the USGS's 665m Global DEM of Mercury. DEM elevation values are in meters and referred to a radius of 2440000m. Slope values are in degrees with a minimum value of 0 and a maximum value of 51.033.]] } local treks_MSGR_nw_Degas_Crater_Slope_80m = { Identifier = "MSGR_nw_Degas_Crater_Slope_80m", Name = [[MSGR MDIS Slope, North-West of Degas Crater]], FilePath = asset.localResource("MSGR_MDIS_Slope/North-West_of_Degas_Crater.vrt"), - Description = [[This is a slope product of the digital elevation model (DEM) for the northwest region of Degas Crater on Mercury. This data product class of this data is observational and has been constructed to examine the topographic settings of landforms around Mercury’s hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. This DEM has been derived from Mercury Dual Imaging System (MDIS) data and has been generated at a resolution of 80m/pixel. The DEM has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. Vertical offsets in this DEM have been roughly corrected relative to the USGS’s 665m Global DEM of Mercury. DEM elevation values are in meters and referred to a radius of 2440000m. Slope values are in degrees with a minimum value of 0 and a maximum value of 42.616.]] + Description = [[This is a slope product of the digital elevation model (DEM) for the northwest region of Degas Crater on Mercury. This data product class of this data is observational and has been constructed to examine the topographic settings of landforms around Mercury's hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. This DEM has been derived from Mercury Dual Imaging System (MDIS) data and has been generated at a resolution of 80m/pixel. The DEM has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. Vertical offsets in this DEM have been roughly corrected relative to the USGS's 665m Global DEM of Mercury. DEM elevation values are in meters and referred to a radius of 2440000m. Slope values are in degrees with a minimum value of 0 and a maximum value of 42.616.]] } local treks_MSGR_Praxiteles_Peak_Ring_Slope_60m = { Identifier = "MSGR_Praxiteles_Peak_Ring_Slope_60m", Name = [[MSGR MDIS Slope, Praxiteles Peak Ring]], FilePath = asset.localResource("MSGR_MDIS_Slope/Praxiteles_Peak_Ring.vrt"), - Description = [[This is a colorized slope product of the digital elevation model (DEM) for the Praxiteles Peak Ring region on Mercury. This data product class of this data is observational and has been constructed to examine the topographic settings of landforms around Mercury’s hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. This DEM has been derived from Mercury Dual Imaging System (MDIS) data and has been generated at a resolution of 60m/pixel. The DEM has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. Vertical offsets in this DEM have been roughly corrected relative to the USGS’s 665m Global DEM of Mercury. DEM elevation values are in meters and referred to a radius of 2440000m. Slope values are in degrees with a minimum value of 0 and a maximum value of 46.484.]] + Description = [[This is a colorized slope product of the digital elevation model (DEM) for the Praxiteles Peak Ring region on Mercury. This data product class of this data is observational and has been constructed to examine the topographic settings of landforms around Mercury's hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. This DEM has been derived from Mercury Dual Imaging System (MDIS) data and has been generated at a resolution of 60m/pixel. The DEM has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. Vertical offsets in this DEM have been roughly corrected relative to the USGS's 665m Global DEM of Mercury. DEM elevation values are in meters and referred to a radius of 2440000m. Slope values are in degrees with a minimum value of 0 and a maximum value of 46.484.]] } local treks_MSGR_Raditladi_Crater_Slope_120m = { Identifier = "MSGR_Raditladi_Crater_Slope_120m", Name = [[MSGR MDIS Slope, Raditladi Crater]], FilePath = asset.localResource("MSGR_MDIS_Slope/Raditladi_Crater.vrt"), - Description = [[This is a slope product of the digital elevation model (DEM) for the Raditladi Crater region on Mercury. This data product class of this data is observational and has been constructed to examine the topographic settings of landforms around Mercury’s hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. This DEM has been derived from Mercury Dual Imaging System (MDIS) data and has been generated at a resolution of 120m/pixel. The DEM has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. Vertical offsets in this DEM have been roughly corrected relative to the USGS’s 665m Global DEM of Mercury. DEM elevation values are in meters and referred to a radius of 2440000m. Slope values are in degrees with a minimum value of 0 and a maximum value of 39.538.]] + Description = [[This is a slope product of the digital elevation model (DEM) for the Raditladi Crater region on Mercury. This data product class of this data is observational and has been constructed to examine the topographic settings of landforms around Mercury's hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. This DEM has been derived from Mercury Dual Imaging System (MDIS) data and has been generated at a resolution of 120m/pixel. The DEM has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. Vertical offsets in this DEM have been roughly corrected relative to the USGS's 665m Global DEM of Mercury. DEM elevation values are in meters and referred to a radius of 2440000m. Slope values are in degrees with a minimum value of 0 and a maximum value of 39.538.]] } local treks_MSGR_Sander_Crater_Slope_80m = { Identifier = "MSGR_Sander_Crater_Slope_80m", Name = [[MSGR MDIS Slope, Sander Crater]], FilePath = asset.localResource("MSGR_MDIS_Slope/Sander_Crater.vrt"), - Description = [[This is a slope product of the digital elevation model (DEM) for the Sander Crater region on Mercury. This data product class of this data is observational and has been constructed to examine the topographic settings of landforms around Mercury’s hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. This DEM has been derived from Mercury Dual Imaging System (MDIS) data and has been generated at a resolution of 80m/pixel. The DEM has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. Vertical offsets in this DEM have been roughly corrected relative to the USGS’s 665m Global DEM of Mercury. DEM elevation values are in meters and referred to a radius of 2440000m. Slope values are in degrees with a minimum value of 0 and a maximum value of 41.517.]] + Description = [[This is a slope product of the digital elevation model (DEM) for the Sander Crater region on Mercury. This data product class of this data is observational and has been constructed to examine the topographic settings of landforms around Mercury's hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. This DEM has been derived from Mercury Dual Imaging System (MDIS) data and has been generated at a resolution of 80m/pixel. The DEM has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. Vertical offsets in this DEM have been roughly corrected relative to the USGS's 665m Global DEM of Mercury. DEM elevation values are in meters and referred to a radius of 2440000m. Slope values are in degrees with a minimum value of 0 and a maximum value of 41.517.]] } local treks_MSGR_Sholem_Aleichem_Crater_Wall_Slope_25m = { Identifier = "MSGR_Sholem_Aleichem_Crater_Wall_Slope_25m", Name = [[MSGR MDIS Slope, Sholem Aleichem Crater Wall]], FilePath = asset.localResource("MSGR_MDIS_Slope/Sholem_Aleichem_Crater_Wall.vrt"), - Description = [[This is a colorized slope product of the digital elevation model (DEM) for the Sholem Aleichem Crater Wall region on Mercury. This data product class of this data is observational and has been constructed to examine the topographic settings of landforms around Mercury’s hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. This DEM has been derived from Mercury Dual Imaging System (MDIS) data and has been generated at a resolution of 25m/pixel. The DEM has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. Vertical offsets in this DEM have been roughly corrected relative to the USGS’s 665m Global DEM of Mercury. DEM elevation values are in meters and referred to a radius of 2440000m. Slope values are in degrees with a minimum value of 0 and a maximum value of 40.746.]] + Description = [[This is a colorized slope product of the digital elevation model (DEM) for the Sholem Aleichem Crater Wall region on Mercury. This data product class of this data is observational and has been constructed to examine the topographic settings of landforms around Mercury's hollows. Observations of topography, specifically the relationships of hollows to their surroundings, can be used to investigate hollow formation. This DEM has been derived from Mercury Dual Imaging System (MDIS) data and has been generated at a resolution of 25m/pixel. The DEM has been aligned and controlled to Mercury Laser Altimeter (MLA) individual elevation points. Vertical offsets in this DEM have been roughly corrected relative to the USGS's 665m Global DEM of Mercury. DEM elevation values are in meters and referred to a radius of 2440000m. Slope values are in degrees with a minimum value of 0 and a maximum value of 40.746.]] } asset.onInitialize(function() diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Aksakov_Crater_Peak_Ring.wms b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Aksakov_Crater_Peak_Ring.wms index 893397fc3d..bf5393cd30 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Aksakov_Crater_Peak_Ring.wms +++ b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Aksakov_Crater_Peak_Ring.wms @@ -27,5 +27,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Crater_near_Dali_Crater.wms b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Crater_near_Dali_Crater.wms index 81ccecf687..fe0fe49bf3 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Crater_near_Dali_Crater.wms +++ b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Crater_near_Dali_Crater.wms @@ -27,5 +27,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Crater_near_Geddes_Crater.wms b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Crater_near_Geddes_Crater.wms index e9bc75ac5b..6d59f7d2ca 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Crater_near_Geddes_Crater.wms +++ b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Crater_near_Geddes_Crater.wms @@ -27,5 +27,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Degas_Crater.wms b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Degas_Crater.wms index fddbacc2fb..d58baf98bf 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Degas_Crater.wms +++ b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Degas_Crater.wms @@ -27,5 +27,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Kertesz_Crater.wms b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Kertesz_Crater.wms index e9e3ee1101..8b9b65646a 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Kertesz_Crater.wms +++ b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Kertesz_Crater.wms @@ -27,5 +27,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/North-West_of_Degas_Crater.wms b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/North-West_of_Degas_Crater.wms index 8791152c14..fb60f86d3a 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/North-West_of_Degas_Crater.wms +++ b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/North-West_of_Degas_Crater.wms @@ -27,5 +27,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Praxiteles_Peak_Ring.wms b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Praxiteles_Peak_Ring.wms index a247bad651..8d4491ff73 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Praxiteles_Peak_Ring.wms +++ b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Praxiteles_Peak_Ring.wms @@ -27,5 +27,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Raditladi_Crater.wms b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Raditladi_Crater.wms index 79e6f9290b..7069afd52c 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Raditladi_Crater.wms +++ b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Raditladi_Crater.wms @@ -27,5 +27,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Sander_Crater.wms b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Sander_Crater.wms index bc51c5f56e..4a47ed2366 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Sander_Crater.wms +++ b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Sander_Crater.wms @@ -27,5 +27,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Sholem_Aleichem_Crater_Wall.wms b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Sholem_Aleichem_Crater_Wall.wms index 43dabcabe8..644b1970be 100644 --- a/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Sholem_Aleichem_Crater_Wall.wms +++ b/data/assets/scene/solarsystem/planets/mercury/layers/nasa-treks/MSGR_MDIS_Slope/Sholem_Aleichem_Crater_Wall.wms @@ -27,5 +27,5 @@ 3 10 - 404,400 + 404,400 diff --git a/data/assets/scene/solarsystem/planets/neptune/minor_moons.asset b/data/assets/scene/solarsystem/planets/neptune/minor_moons.asset index 9bc23449ea..27b19fce35 100644 --- a/data/assets/scene/solarsystem/planets/neptune/minor_moons.asset +++ b/data/assets/scene/solarsystem/planets/neptune/minor_moons.asset @@ -12,14 +12,14 @@ local minormoons_on = { local moons = openspace.getProperty('{moon_minor_neptune}.Renderable.Enabled'); local moons_fade = openspace.getProperty('{moon_minor_neptune}.Renderable.Fade'); - for i, v in pairs(trails_fade) do + for i, v in pairs(trails_fade) do openspace.setPropertyValueSingle(trails[i], true) - openspace.setPropertyValueSingle(v, 1, 2, 'Linear') + openspace.setPropertyValueSingle(v, 1, 2, 'Linear') end - for i, v in pairs(moons_fade) do + for i, v in pairs(moons_fade) do openspace.setPropertyValueSingle(moons[i], true) - openspace.setPropertyValueSingle(v, 1, 2, 'Linear') + openspace.setPropertyValueSingle(v, 1, 2, 'Linear') end ]], Documentation = "Turn ON Neptune's minor moons and their trails", @@ -37,12 +37,12 @@ local minormoons_off = { local moons = openspace.getProperty('{moon_minor_neptune}.Renderable.Enabled'); local moons_fade = openspace.getProperty('{moon_minor_neptune}.Renderable.Fade'); - for i, v in pairs(trails_fade) do - openspace.setPropertyValueSingle(v, 0, 2, 'Linear', "openspace.setPropertyValueSingle('" .. trails[i] .. "', false)" ) + for i, v in pairs(trails_fade) do + openspace.setPropertyValueSingle(v, 0, 2, 'Linear', "openspace.setPropertyValueSingle('" .. trails[i] .. "', false)" ) end for i, v in pairs(moons_fade) do - openspace.setPropertyValueSingle(v, 0, 2, 'Linear', "openspace.setPropertyValueSingle('" .. moons[i] .. "', false)" ) + openspace.setPropertyValueSingle(v, 0, 2, 'Linear', "openspace.setPropertyValueSingle('" .. moons[i] .. "', false)" ) end ]], Documentation = "Turn OFF Neptune's minor moons and their trails", diff --git a/data/assets/scene/solarsystem/planets/saturn/minor_moons.asset b/data/assets/scene/solarsystem/planets/saturn/minor_moons.asset index cf98ce0f4f..27b8f39e57 100644 --- a/data/assets/scene/solarsystem/planets/saturn/minor_moons.asset +++ b/data/assets/scene/solarsystem/planets/saturn/minor_moons.asset @@ -14,14 +14,14 @@ local minormoons_on = { local moons = openspace.getProperty('{moon_minor_saturn}.Renderable.Enabled'); local moons_fade = openspace.getProperty('{moon_minor_saturn}.Renderable.Fade'); - for i, v in pairs(trails_fade) do + for i, v in pairs(trails_fade) do openspace.setPropertyValueSingle(trails[i], true) - openspace.setPropertyValueSingle(v, 1, 2, 'Linear') + openspace.setPropertyValueSingle(v, 1, 2, 'Linear') end - for i, v in pairs(moons_fade) do + for i, v in pairs(moons_fade) do openspace.setPropertyValueSingle(moons[i], true) - openspace.setPropertyValueSingle(v, 1, 2, 'Linear') + openspace.setPropertyValueSingle(v, 1, 2, 'Linear') end ]], Documentation = "Turn ON Saturn's minor moons and their trails", @@ -39,12 +39,12 @@ local minormoons_off = { local moons = openspace.getProperty('{moon_minor_saturn}.Renderable.Enabled'); local moons_fade = openspace.getProperty('{moon_minor_saturn}.Renderable.Fade'); - for i, v in pairs(trails_fade) do - openspace.setPropertyValueSingle(v, 0, 2, 'Linear', "openspace.setPropertyValueSingle('" .. trails[i] .. "', false)" ) + for i, v in pairs(trails_fade) do + openspace.setPropertyValueSingle(v, 0, 2, 'Linear', "openspace.setPropertyValueSingle('" .. trails[i] .. "', false)" ) end for i, v in pairs(moons_fade) do - openspace.setPropertyValueSingle(v, 0, 2, 'Linear', "openspace.setPropertyValueSingle('" .. moons[i] .. "', false)" ) + openspace.setPropertyValueSingle(v, 0, 2, 'Linear', "openspace.setPropertyValueSingle('" .. moons[i] .. "', false)" ) end ]], Documentation = "Turn OFF Saturn's minor moons and their trails", diff --git a/data/assets/scene/solarsystem/planets/uranus/minor_moons.asset b/data/assets/scene/solarsystem/planets/uranus/minor_moons.asset index 3dda4bd61d..620f301d18 100644 --- a/data/assets/scene/solarsystem/planets/uranus/minor_moons.asset +++ b/data/assets/scene/solarsystem/planets/uranus/minor_moons.asset @@ -12,14 +12,14 @@ local minormoons_on = { local moons = openspace.getProperty('{moon_minor_uranus}.Renderable.Enabled'); local moons_fade = openspace.getProperty('{moon_minor_uranus}.Renderable.Fade'); - for i, v in pairs(trails_fade) do + for i, v in pairs(trails_fade) do openspace.setPropertyValueSingle(trails[i], true) - openspace.setPropertyValueSingle(v, 1, 2, 'Linear') + openspace.setPropertyValueSingle(v, 1, 2, 'Linear') end - for i, v in pairs(moons_fade) do + for i, v in pairs(moons_fade) do openspace.setPropertyValueSingle(moons[i], true) - openspace.setPropertyValueSingle(v, 1, 2, 'Linear') + openspace.setPropertyValueSingle(v, 1, 2, 'Linear') end ]], Documentation = "Turn ON Uranus's minor moons and their trails", @@ -37,12 +37,12 @@ local minormoons_off = { local moons = openspace.getProperty('{moon_minor_uranus}.Renderable.Enabled'); local moons_fade = openspace.getProperty('{moon_minor_uranus}.Renderable.Fade'); - for i, v in pairs(trails_fade) do - openspace.setPropertyValueSingle(v, 0, 2, 'Linear', "openspace.setPropertyValueSingle('" .. trails[i] .. "', false)" ) + for i, v in pairs(trails_fade) do + openspace.setPropertyValueSingle(v, 0, 2, 'Linear', "openspace.setPropertyValueSingle('" .. trails[i] .. "', false)" ) end for i, v in pairs(moons_fade) do - openspace.setPropertyValueSingle(v, 0, 2, 'Linear', "openspace.setPropertyValueSingle('" .. moons[i] .. "', false)" ) + openspace.setPropertyValueSingle(v, 0, 2, 'Linear', "openspace.setPropertyValueSingle('" .. moons[i] .. "', false)" ) end ]], Documentation = "Turn OFF Uranus's minor moons and their trails", diff --git a/data/assets/scene/solarsystem/sssb/centaur_asteroid.asset b/data/assets/scene/solarsystem/sssb/centaur_asteroid.asset index 4720ade3cf..59e9fbb6b4 100644 --- a/data/assets/scene/solarsystem/sssb/centaur_asteroid.asset +++ b/data/assets/scene/solarsystem/sssb/centaur_asteroid.asset @@ -47,6 +47,6 @@ asset.meta = { Author = "JPL Small-Body Database hosted by California Institute of Technology", URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", License = [[JPL-authored documents are sponsored by NASA under Contract NAS7-030010. - All documents available from this server may be protected under the U.S. and + All documents available from this server may be protected under the U.S. and Foreign Copyright Laws]] } diff --git a/data/assets/scene/solarsystem/sssb/encke-type_comet.asset b/data/assets/scene/solarsystem/sssb/encke-type_comet.asset index 494ff0f797..33e924ef3e 100644 --- a/data/assets/scene/solarsystem/sssb/encke-type_comet.asset +++ b/data/assets/scene/solarsystem/sssb/encke-type_comet.asset @@ -47,6 +47,6 @@ asset.meta = { Author = "JPL Small-Body Database hosted by California Institute of Technology", URL = "https://ssd.jpl.nasa.gov/sbdb_query.cgi", License = [[JPL-authored documents are sponsored by NASA under Contract NAS7-030010. - All documents available from this server may be protected under the U.S. and + All documents available from this server may be protected under the U.S. and Foreign Copyright Laws]] } diff --git a/data/assets/scene/solarsystem/sun/EUV_layer.asset b/data/assets/scene/solarsystem/sun/EUV_layer.asset index 6ec99ebad3..123d5ac025 100644 --- a/data/assets/scene/solarsystem/sun/EUV_layer.asset +++ b/data/assets/scene/solarsystem/sun/EUV_layer.asset @@ -55,8 +55,7 @@ asset.export(EUVLayer) asset.meta = { Name = "Predictive Science Inc. EUV texture sequence Bastille Days", Version = "1.2", - Description = [[Texture sequence of an extreme ultraviolet (EUV) simulation during, - the CME]], + Description = [[Texture sequence of an extreme ultraviolet (EUV) simulation during the CME]], Author = "CCMC, OpenSpace team", URL = "https://dx.doi.org/10.3847/1538-4357/aab36d", License = "CC-BY" diff --git a/data/assets/scene/solarsystem/sun/habitablezone.asset b/data/assets/scene/solarsystem/sun/habitablezone.asset index b6852e07d7..e62aed1a72 100644 --- a/data/assets/scene/solarsystem/sun/habitablezone.asset +++ b/data/assets/scene/solarsystem/sun/habitablezone.asset @@ -34,7 +34,7 @@ asset.export(HabitableZone) asset.meta = { Name = "Sun Habitable Zone", Version = "1.1", - Description = [[The habitable zone around our sun, computed using formula and + Description = [[The habitable zone around our sun, computed using formula and coefficients by Kopparapu et al. (2015) https://arxiv.org/abs/1404.5292]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", diff --git a/data/assets/util/lua_state_machine_helper.asset b/data/assets/util/lua_state_machine_helper.asset index eeca3748c5..863db0b0b7 100644 --- a/data/assets/util/lua_state_machine_helper.asset +++ b/data/assets/util/lua_state_machine_helper.asset @@ -1,4 +1,4 @@ --- Contains the required functions to create a simple Lua state machine, that can step +-- Contains the required functions to create a simple Lua state machine, that can step -- forwards and backwards through a list of states. -- -- A state is given as a table with a Title string, and two functions: Play and Rewind diff --git a/data/profiles/messenger.profile b/data/profiles/messenger.profile index e41816ea00..df4a1bb323 100644 --- a/data/profiles/messenger.profile +++ b/data/profiles/messenger.profile @@ -42,7 +42,7 @@ ], "meta": { "author": "OpenSpace Team", - "description": "This scene contains model and trajectory of the NASA MESSENGER spacecraft with craft pointing data from 2011-03 to 2011-06. In addition, a rendering of Mercury’s magnetosphere based on data recorded by MESSENGER can be enabled and viewed around the planet. Along with the mission data, additional maps were added to Mercury showing mineral abundances on the surface and a multi-color mosaic from the MDIS instrument", + "description": "This scene contains model and trajectory of the NASA MESSENGER spacecraft with craft pointing data from 2011-03 to 2011-06. In addition, a rendering of Mercury's magnetosphere based on data recorded by MESSENGER can be enabled and viewed around the planet. Along with the mission data, additional maps were added to Mercury showing mineral abundances on the surface and a multi-color mosaic from the MDIS instrument", "license": "MIT License", "name": "Messenger", "url": "https://www.openspaceproject.com", diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt index 4473f38255..14f425a5d0 100644 --- a/modules/CMakeLists.txt +++ b/modules/CMakeLists.txt @@ -91,7 +91,7 @@ function (get_module_attribute_supported path result) endfunction() -# Returns the path for the 'module_name'. If the module has not been seen before by +# Returns the path for the 'module_name'. If the module has not been seen before by # get_individual_modules, an empty string is returned function (find_path_for_module module_name module_names module_paths result) list(FIND module_names ${module_name} i) @@ -121,7 +121,7 @@ function (get_recursive_dependencies module_name module_path module_names module "${module_names}" "${module_paths}" res ) - # 1. We add "base" to the list of dependencies as we always want it + # 1. We add "base" to the list of dependencies as we always want it # 2. We add dependencies in this order such that when we later traverse # this list, we automatically get them in the correct order (meaning # that we include a dependency first) @@ -241,7 +241,7 @@ foreach (val RANGE ${enabled_module_count}) set(dependencies ${dependencies} ${deps}) endforeach() -# We can remove the duplicates here. We constructed the list such that nested +# We can remove the duplicates here. We constructed the list such that nested # dependencies are order left to right. REMOVE_DUPLICATES will keep the left most # value in the case of duplicates, so that will still work list(REMOVE_DUPLICATES dependencies) diff --git a/modules/atmosphere/CMakeLists.txt b/modules/atmosphere/CMakeLists.txt index abc62c3d4c..b49ac4af6c 100644 --- a/modules/atmosphere/CMakeLists.txt +++ b/modules/atmosphere/CMakeLists.txt @@ -38,7 +38,7 @@ source_group("Source Files" FILES ${SOURCE_FILES}) set(SHADER_FILES shaders/atmosphere_common.glsl - shaders/atmosphere_deferred_vs.glsl + shaders/atmosphere_deferred_vs.glsl shaders/atmosphere_deferred_fs.glsl shaders/calculation_gs.glsl shaders/calculation_vs.glsl diff --git a/modules/atmosphere/shaders/atmosphere_common.glsl b/modules/atmosphere/shaders/atmosphere_common.glsl index 7823e3e9a3..6326205d0f 100644 --- a/modules/atmosphere/shaders/atmosphere_common.glsl +++ b/modules/atmosphere/shaders/atmosphere_common.glsl @@ -24,7 +24,7 @@ /***************************************************************************************** * Modified parts of the code (4D texture mechanism, analytical transmittance etc) * - * from Eric Bruneton is used in the following code. * + * from Eric Bruneton is used in the following code. * ****************************************************************************************/ /** @@ -67,17 +67,17 @@ const float ATM_EPSILON = 1.0; // Calculate the distance of the ray starting at x (height r) until the planet's ground // or top of atmosphere // r := || vec(x) || e [0, Rt] -// mu := cosine of the zeith angle of vec(v). Or mu = (vec(x) * vec(v))/r +// mu := cosine of the zeith angle of vec(v). Or mu = (vec(x) * vec(v))/r float rayDistance(float r, float mu, float Rt, float Rg) { // The light ray starting at the observer in/on the atmosphere can have to possible end // points: the top of the atmosphere or the planet ground. So the shortest path is the // one we are looking for, otherwise we may be passing through the ground - + // cosine law float atmRadiusEps2 = (Rt + ATM_EPSILON) * (Rt + ATM_EPSILON); float mu2 = mu * mu; float r2 = r * r; - float rayDistanceAtmosphere = -r * mu + sqrt(r2 * (mu2 - 1.0) + atmRadiusEps2); + float rayDistanceAtmosphere = -r * mu + sqrt(r2 * (mu2 - 1.0) + atmRadiusEps2); float delta = r2 * (mu2 - 1.0) + Rg*Rg; // Ray may be hitting ground @@ -108,7 +108,7 @@ void unmappingMuMuSunNu(float r, vec4 dhdH, int SAMPLES_MU, float Rg, float Rt, // Pre-calculations float r2 = r * r; float Rg2 = Rg * Rg; - + float halfSAMPLE_MU = float(SAMPLES_MU) / 2.0; // If the (vec(x) dot vec(v))/r is negative, i.e., the light ray has great probability // to touch the ground, we obtain mu considering the geometry of the ground @@ -130,7 +130,7 @@ void unmappingMuMuSunNu(float r, vec4 dhdH, int SAMPLES_MU, float Rg, float Rt, // cosine law: Rt^2 = r^2 + d^2 - 2rdcos(pi-theta) where cosine(theta) = mu mu = (Rt*Rt - r2 - d * d) / (2.0 * r * d); } - + float modValueMuSun = mod(fragment.x, float(SAMPLES_MU_S)) / (float(SAMPLES_MU_S) - 1.0); // The following mapping is different from the paper. See Collienne for an details. muSun = tan((2.0 * modValueMuSun - 1.0 + 0.26) * 1.1) / tan(1.26 * 1.1); @@ -148,7 +148,7 @@ vec3 transmittance(sampler2D tex, float r, float mu, float Rg, float Rt) { float u_r = sqrt((r - Rg) / (Rt - Rg)); // See Collienne to understand the mapping float u_mu = atan((mu + 0.15) / 1.15 * tan(1.5)) / 1.5; - + return texture(tex, vec2(u_mu, u_r)).rgb; } @@ -161,7 +161,7 @@ vec3 transmittance(sampler2D tex, float r, float mu, float d, float Rg, float Rt // Here we use the transmittance property: T(x,v) = T(x,d)*T(d,v) to, given a distance // d, calculates that transmittance along that distance starting in x (height r): // T(x,d) = T(x,v)/T(d,v). - // + // // From cosine law: c^2 = a^2 + b^2 - 2*a*b*cos(ab) float ri = sqrt(d * d + r * r + 2.0 * r * d * mu); // mu_i = (vec(d) dot vec(v)) / r_i diff --git a/modules/atmosphere/shaders/atmosphere_deferred_fs.glsl b/modules/atmosphere/shaders/atmosphere_deferred_fs.glsl index f3f8eb96b5..4789e2ba2d 100644 --- a/modules/atmosphere/shaders/atmosphere_deferred_fs.glsl +++ b/modules/atmosphere/shaders/atmosphere_deferred_fs.glsl @@ -24,7 +24,7 @@ /***************************************************************************************** * Modified parts of the code (4D texture mechanism) from Eric Bruneton is used in the * - * following code. * + * following code. * ****************************************************************************************/ /** @@ -86,7 +86,7 @@ uniform sampler3D inscatterTexture; uniform sampler2D mainPositionTexture; uniform sampler2D mainNormalTexture; uniform sampler2D mainColorTexture; -uniform dmat4 inverseModelTransformMatrix; +uniform dmat4 inverseModelTransformMatrix; uniform dmat4 modelTransformMatrix; uniform dmat4 viewToWorldMatrix; uniform dmat4 projectionToModelTransformMatrix; @@ -129,13 +129,13 @@ float calcShadow(ShadowRenderingStruct shadowInfoArray[numberOfShadows], dvec3 p dvec3 scNorm = shadowInfoArray[0].sourceCasterVec; dvec3 pcProj = dot(pc, scNorm) * scNorm; dvec3 d = pc - pcProj; - + float length_d = float(length(d)); double lengthPcProj = length(pcProj); - + float r_p_pi = float(shadowInfoArray[0].rc * (lengthPcProj + shadowInfoArray[0].xp) / shadowInfoArray[0].xp); float r_u_pi = float(shadowInfoArray[0].rc * (shadowInfoArray[0].xu - lengthPcProj) / shadowInfoArray[0].xu); - + if (length_d < r_u_pi) { // umbra if (hardShadows) { @@ -240,7 +240,7 @@ bool atmosphereIntersection(Ray ray, double atmRadius, out double offset, offset = 0.0; maxLength = s + q; } - + return true; } @@ -257,7 +257,7 @@ Ray calculateRayRenderableGlobe(vec2 st) { // Clip to Object Coords dvec4 objectCoords = projectionToModelTransformMatrix * clipCoords; objectCoords.xyz /= objectCoords.w; - + // Building Ray // Ray in object space (in KM) Ray ray; @@ -266,7 +266,7 @@ Ray calculateRayRenderableGlobe(vec2 st) { return ray; } -/* +/* * Calculates the light scattering in the view direction comming from other light rays * scattered in the atmosphere. * Following the paper: S[L]|x - T(x,xs) * S[L]|xs @@ -274,7 +274,7 @@ Ray calculateRayRenderableGlobe(vec2 st) { * position and zenith cosine angle as in the paper. * Arguments: * x := camera position - * t := ray displacement variable after calculating the intersection with the + * t := ray displacement variable after calculating the intersection with the * atmosphere. It is the distance from the camera to the last intersection with the * atmosphere. If the ray hits the ground, t is updated to the correct value * v := view direction (ray's direction) (normalized) @@ -292,7 +292,7 @@ vec3 inscatterRadiance(vec3 x, inout float t, inout float irradianceFactor, vec3 const float INTERPOLATION_EPS = 0.004; // precision const from Brunetton vec3 radiance; - + mu = dot(x, v) / r; float r2 = r * r; @@ -300,7 +300,7 @@ vec3 inscatterRadiance(vec3 x, inout float t, inout float irradianceFactor, vec3 float muSun = dot(x, s) / r; float rayleighPhase = rayleighPhaseFunction(nu); float miePhase = miePhaseFunction(nu, mieG); - + // S[L](x,s,v) // I.e. the next line has the scattering light for the "infinite" ray passing through // the atmosphere. If this ray hits something inside the atmosphere, we will subtract @@ -310,7 +310,7 @@ vec3 inscatterRadiance(vec3 x, inout float t, inout float irradianceFactor, vec3 SAMPLES_MU_S, SAMPLES_NU), 0.0 ); - + // After removing the initial path from camera pos to top of atmosphere (for an // observer in the space) we test if the light ray is hitting the atmosphere float r0 = length(fragPosObj); @@ -319,18 +319,18 @@ vec3 inscatterRadiance(vec3 x, inout float t, inout float irradianceFactor, vec3 float mu0 = dot(fragPosObj, v) * invr0; if ((pixelDepth > INTERPOLATION_EPS) && (pixelDepth < maxLength)) { - t = float(pixelDepth); + t = float(pixelDepth); groundHit = true; - + // Transmittance from point r, direction mu, distance t // By Analytical calculation // attenuation = analyticTransmittance(r, mu, t); // JCC: change from analytical to LUT transmittance to avoid // acme on planet surface when looking from far away. (11/02/2017) - attenuation = transmittance(transmittanceTexture, r, mu, t, Rg, Rt); - + attenuation = transmittance(transmittanceTexture, r, mu, t, Rg, Rt); + // Here we use the idea of S[L](a->b) = S[L](b->a), and get the S[L](x0, v, s) - // Then we calculate S[L] = S[L]|x - T(x, x0)*S[L]|x0 + // Then we calculate S[L] = S[L]|x - T(x, x0)*S[L]|x0 // The "infinite" ray hist something inside the atmosphere, so we need to remove // the unsused contribution to the final radiance. vec4 inscatterFromSurface = texture4D(inscatterTexture, r0, mu0, muSun0, nu, Rg, @@ -367,13 +367,13 @@ vec3 inscatterRadiance(vec3 x, inout float t, inout float irradianceFactor, vec3 float halfCosineLaw1 = r2 + (t * t); float halfCosineLaw2 = 2.0 * r * t; r0 = sqrt(halfCosineLaw1 + halfCosineLaw2 * mu); - + // From the dot product: cos(theta0) = (x0 dot v)/(||ro||*||v||) // mu0 = ((x + t) dot v) / r0 // mu0 = (x dot v + t dot v) / r0 // mu0 = (r*mu + t) / r0 mu0 = (r * mu + t) * (1.0 / r0); - + vec4 inScatterAboveX = texture4D(inscatterTexture, r, mu, muSun, nu, Rg, SAMPLES_MU, Rt, SAMPLES_R, SAMPLES_MU_S, SAMPLES_NU); vec4 inScatterAboveXs = texture4D(inscatterTexture, r0, mu0, muSun0, nu, Rg, @@ -385,9 +385,9 @@ vec3 inscatterRadiance(vec3 x, inout float t, inout float irradianceFactor, vec3 mu = muHorizon + INTERPOLATION_EPS; //r0 = sqrt(r2 + t2 + 2.0 * r * t * mu); r0 = sqrt(halfCosineLaw1 + halfCosineLaw2 * mu); - + mu0 = (r * mu + t) * (1.0 / r0); - + vec4 inScatterBelowX = texture4D(inscatterTexture, r, mu, muSun, nu, Rg, SAMPLES_MU, Rt, SAMPLES_R, SAMPLES_MU_S, SAMPLES_NU); vec4 inScatterBelowXs = texture4D(inscatterTexture, r0, mu0, muSun0, nu, Rg, @@ -397,12 +397,12 @@ vec3 inscatterRadiance(vec3 x, inout float t, inout float irradianceFactor, vec3 // Interpolate between above and below inScattering radiance inscatterRadiance = mix(inScatterAbove, inScatterBelow, interpolationValue); - } + } // The w component of inscatterRadiance has stored the Cm,r value (Cm = Sm[L0]) // So, we must reintroduce the Mie inscatter by the proximity rule as described in the // paper by Bruneton and Neyret in "Angular precision" paragraph: - + // Hermite interpolation between two values // This step is done because imprecision problems happen when the Sun is slightly // below the horizon. When this happens, we avoid the Mie scattering contribution @@ -410,19 +410,19 @@ vec3 inscatterRadiance(vec3 x, inout float t, inout float irradianceFactor, vec3 vec3 inscatterMie = inscatterRadiance.rgb * inscatterRadiance.a / max(inscatterRadiance.r, 1e-4) * (betaRayleigh.r / betaRayleigh); - - radiance = max(inscatterRadiance.rgb * rayleighPhase + inscatterMie * miePhase, 0.0); - + + radiance = max(inscatterRadiance.rgb * rayleighPhase + inscatterMie * miePhase, 0.0); + // Finally we add the Lsun (all calculations are done with no Lsun so we can change it // on the fly with no precomputations) vec3 finalScatteringRadiance = radiance * sunIntensity; return groundHit ? finalScatteringRadiance : spaceColor + finalScatteringRadiance; } -/* +/* * Calculates the light reflected in the view direction comming from other light rays * integrated over the hemispehre plus the direct light (L0) from Sun. - * Following the paper: R[L]= R[L0]+R[L*] + * Following the paper: R[L]= R[L0]+R[L*] * The ray is x + tv, v the view direction, s is the sun direction, r and mu the position * and zenith cosine angle as in the paper. * As for all calculations in the atmosphere, the center of the coordinate system is the @@ -430,7 +430,7 @@ vec3 inscatterRadiance(vec3 x, inout float t, inout float irradianceFactor, vec3 * Arguments: * x := camera position * t := ray displacement variable. Here, differently from the inScatter light calculation, - * the position of the camera is already offset (on top of atmosphere) or inside + * the position of the camera is already offset (on top of atmosphere) or inside * the atmosphere * v := view direction (ray's direction) (normalized) * s := Sun direction (normalized) @@ -465,7 +465,7 @@ vec3 groundColor(vec3 x, float t, vec3 v, vec3 s, vec3 attenuationXtoX0, vec3 gr groundReflectance * mix(30.0, 1.0, smoothstep(-1.0, 0.05, dotNS)) * RLStar : groundReflectance * RLStar; - // Specular reflection from sun on oceans and rivers + // Specular reflection from sun on oceans and rivers if ((waterReflectance > 0.1) && (muSun > 0.0)) { vec3 h = normalize(s - v); // Fresnell Schlick's approximation @@ -478,11 +478,11 @@ vec3 groundColor(vec3 x, float t, vec3 v, vec3 s, vec3 attenuationXtoX0, vec3 gr } // Finally, we attenuate the surface Radiance from the point x0 to the camera location - vec3 reflectedRadiance = attenuationXtoX0 * groundRadiance; - return reflectedRadiance; + vec3 reflectedRadiance = attenuationXtoX0 * groundRadiance; + return reflectedRadiance; } -/* +/* * Calculates the Sun color. The ray is x + tv, v the view direction, s is the sun * direction, r and mu the position and zenith cosine angle as in the paper. As for all * calculations in the atmosphere, the center of the coordinate system is the planet's @@ -535,7 +535,7 @@ void main() { // Get the ray from camera to atm in object space Ray ray = calculateRayRenderableGlobe(texCoord); - + double offset = 0.0; // in KM double maxLength = 0.0; // in KM bool intersect = atmosphereIntersection(ray, Rt - (ATM_EPSILON * 0.001), offset, maxLength); @@ -561,7 +561,7 @@ void main() { // Data in the mainPositionTexture are written in view space (view plus camera rig) vec4 position = texture(mainPositionTexture, st); - // OS Eye to World coords + // OS Eye to World coords dvec4 positionWorldCoords = viewToWorldMatrix * position; // World to Object (Normal and Position in meters) @@ -571,7 +571,7 @@ void main() { // JCC (12/12/2017): AMD distance function is buggy. //double pixelDepth = distance(cameraPositionInObject.xyz, positionObjectsCoords.xyz); double pixelDepth = length(camPosObj - positionObjectsCoords); - + // JCC (12/13/2017): Trick to remove floating error in texture. // We see a squared noise on planet's surface when seeing the planet from far away // @TODO (abock, 2021-07-01) I don't think this does anything. Remove? @@ -581,12 +581,12 @@ void main() { pixelDepth += 1000.0; const float alpha = 1000.0; const float beta = 1000000.0; - const float x2 = 1e9; + const float x2 = 1e9; const float diffGreek = beta - alpha; const float diffDist = x2 - x1; const float varA = diffGreek / diffDist; const float varB = (alpha - varA * x1); - pixelDepth += double(varA * dC + varB); + pixelDepth += double(varA * dC + varB); } // All calculations are done in KM: @@ -599,8 +599,8 @@ void main() { return; } - // Following paper nomenclature - double t = offset; + // Following paper nomenclature + double t = offset; // Moving observer from camera location to top atmosphere. If the observer is already // inside the atm, offset = 0.0 and no changes at all @@ -615,16 +615,16 @@ void main() { // adjust the pixelDepth for tdCalculateRayRenderableGlobe' offset so the next // comparison with the planet's ground make sense: pixelDepth -= offset; - + dvec3 onATMPos = (modelTransformMatrix * dvec4(x * 1000.0, 1.0)).xyz; - float eclipseShadowATM = calcShadow(shadowDataArray, onATMPos, false); + float eclipseShadowATM = calcShadow(shadowDataArray, onATMPos, false); float sunIntensityInscatter = sunRadiance * eclipseShadowATM; float irradianceFactor = 0.0; bool groundHit = false; - vec3 attenuation; - + vec3 attenuation; + vec3 inscatterColor = inscatterRadiance(x, tF, irradianceFactor, v, s, r, vec3(positionObjectsCoords), maxLength, pixelDepth, color, sunIntensityInscatter, mu, attenuation, groundHit); @@ -639,8 +639,8 @@ void main() { // In order to get better performance, we are not tracing multiple rays per pixel // when the ray doesn't intersect the ground atmColor = sunColor(v, s, r, mu, irradianceFactor); - } - + } + // Final Color of ATM plus terrain: renderTarget = vec4(inscatterColor + atmColor, 1.0);; } diff --git a/modules/atmosphere/shaders/calculation_gs.glsl b/modules/atmosphere/shaders/calculation_gs.glsl index 16304411cc..0abafa92be 100644 --- a/modules/atmosphere/shaders/calculation_gs.glsl +++ b/modules/atmosphere/shaders/calculation_gs.glsl @@ -21,7 +21,7 @@ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE * * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * ****************************************************************************************/ - + #version __CONTEXT__ layout (triangles) in; diff --git a/modules/atmosphere/shaders/deltaE_calc_fs.glsl b/modules/atmosphere/shaders/deltaE_calc_fs.glsl index a5e90e204c..6695d32bef 100644 --- a/modules/atmosphere/shaders/deltaE_calc_fs.glsl +++ b/modules/atmosphere/shaders/deltaE_calc_fs.glsl @@ -27,6 +27,6 @@ out vec4 renderTableColor; -void main() { +void main() { renderTableColor = vec4(0.0, 0.0, 0.0, 1.0); } diff --git a/modules/atmosphere/shaders/deltaJ_calc_fs.glsl b/modules/atmosphere/shaders/deltaJ_calc_fs.glsl index d58ac25efe..a1e3d6c475 100644 --- a/modules/atmosphere/shaders/deltaJ_calc_fs.glsl +++ b/modules/atmosphere/shaders/deltaJ_calc_fs.glsl @@ -21,7 +21,7 @@ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE * * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * ****************************************************************************************/ - + #version __CONTEXT__ #include "atmosphere_common.glsl" @@ -100,7 +100,7 @@ vec3 inscatter(float r, float mu, float muSun, float nu) { // Now we get vec(v) and vec(s) from mu, muSun and nu: // Assuming: - // z |theta + // z |theta // |\ vec(v) ||vec(v)|| = 1 // | \ // |__\_____x @@ -121,7 +121,7 @@ vec3 inscatter(float r, float mu, float muSun, float nu) { // 1 = sqrt(s.x*s.x + s.y*s.y + s.z*s.z) // s.y = sqrt(1 - s.x*s.x - s.z*s.z) = sqrt(1 - s.x*s.x - muSun*muSun) vec3 s = vec3(sx, sqrt(max(0.0, 1.0 - sx * sx - muSun2)), muSun); - + // In order to integrate over 4PI, we scan the sphere using the spherical coordinates // previously defined vec3 radianceJAcc = vec3(0.0); @@ -132,7 +132,7 @@ vec3 inscatter(float r, float mu, float muSun, float nu) { float distanceToGround = 0.0; float groundReflectance = 0.0; vec3 groundTransmittance = vec3(0.0); - + // If the ray w can see the ground we must compute the transmittance // effect from the starting point x to the ground point in direction -vec(v): if (cosineTheta < cosHorizon) { // ray hits ground @@ -146,7 +146,7 @@ vec3 inscatter(float r, float mu, float muSun, float nu) { // |\ distGround // r | \ alpha // | \/ - // | / + // | / // | / Rg // |/ // So cos(alpha) = ((vec(x)+vec(dg)) dot -vec(distG))/(||(vec(x)+vec(distG))|| * ||vec(distG)||) @@ -178,7 +178,7 @@ vec3 inscatter(float r, float mu, float muSun, float nu) { float nuWV = dot(v, w); float phaseRayleighWV = rayleighPhaseFunction(nuWV); float phaseMieWV = miePhaseFunction(nuWV, mieG); - + vec3 groundNormal = (vec3(0.0, 0.0, r) + distanceToGround * w) / Rg; vec3 groundIrradiance = irradianceLUT(deltaETexture, dot(groundNormal, s), Rg); @@ -194,7 +194,7 @@ vec3 inscatter(float r, float mu, float muSun, float nu) { // light. We stored these values in the deltaS textures (Ray and Mie), and in order // to avoid problems with the high angle dependency in the phase functions, we don't // include the phase functions on those tables (that's why we calculate them now). - if (firstIteration == 1) { + if (firstIteration == 1) { float phaseRaySW = rayleighPhaseFunction(nuSW); float phaseMieSW = miePhaseFunction(nuSW, mieG); // We can now access the values for the single InScattering in the textures deltaS textures. @@ -204,7 +204,7 @@ vec3 inscatter(float r, float mu, float muSun, float nu) { Rt, SAMPLES_R, SAMPLES_MU_S, SAMPLES_NU).rgb; // Initial InScattering including the phase functions - radianceJ1 += singleRay * phaseRaySW + singleMie * phaseMieSW; + radianceJ1 += singleRay * phaseRaySW + singleMie * phaseMieSW; } else { // On line 9 of the algorithm, the texture table deltaSR is updated, so when we @@ -219,7 +219,7 @@ vec3 inscatter(float r, float mu, float muSun, float nu) { // Finally, we add the atmospheric scale height (See: Radiation Transfer on the // Atmosphere and Ocean from Thomas and Stamnes, pg 9-10. radianceJAcc += radianceJ1 * (betaRayleigh * exp(-(r - Rg) / HR) * phaseRayleighWV + - betaMieScattering * exp(-(r - Rg) / HM) * phaseMieWV) * dw; + betaMieScattering * exp(-(r - Rg) / HM) * phaseMieWV) * dw; } } diff --git a/modules/atmosphere/shaders/deltaS_calc_fs.glsl b/modules/atmosphere/shaders/deltaS_calc_fs.glsl index 99c25429ca..ee3ebced4c 100644 --- a/modules/atmosphere/shaders/deltaS_calc_fs.glsl +++ b/modules/atmosphere/shaders/deltaS_calc_fs.glsl @@ -41,11 +41,11 @@ void main() { // First we convert the window's fragment coordinate to texel coordinates vec3 rst = vec3(gl_FragCoord.xy, float(layer) + 0.5) / vec3(ivec3(SAMPLES_MU_S * SAMPLES_NU, SAMPLES_MU, SAMPLES_R)); - + vec3 rayleighInscattering = texture(deltaSRTexture, rst).rgb; float mieInscattering = texture(deltaSMTexture, rst).r; - + // We are using only the red component of the Mie scattering. See the Precomputed // Atmosphere Scattering paper for details about the angular precision - renderTarget = vec4(rayleighInscattering, mieInscattering); + renderTarget = vec4(rayleighInscattering, mieInscattering); } diff --git a/modules/atmosphere/shaders/deltaS_sup_calc_fs.glsl b/modules/atmosphere/shaders/deltaS_sup_calc_fs.glsl index 8c7fecc422..85b7561ee5 100644 --- a/modules/atmosphere/shaders/deltaS_sup_calc_fs.glsl +++ b/modules/atmosphere/shaders/deltaS_sup_calc_fs.glsl @@ -21,7 +21,7 @@ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE * * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * ****************************************************************************************/ - + #version __CONTEXT__ #include "atmosphere_common.glsl" diff --git a/modules/atmosphere/shaders/inScattering_calc_fs.glsl b/modules/atmosphere/shaders/inScattering_calc_fs.glsl index afc37beb31..d5a94c2d2b 100644 --- a/modules/atmosphere/shaders/inScattering_calc_fs.glsl +++ b/modules/atmosphere/shaders/inScattering_calc_fs.glsl @@ -45,7 +45,7 @@ uniform float r; uniform vec4 dhdH; -void integrand(float r, float mu, float muSun, float nu, float y, out vec3 S_R, +void integrand(float r, float mu, float muSun, float nu, float y, out vec3 S_R, out vec3 S_M) { // The integral's integrand is the single inscattering radiance: @@ -59,10 +59,10 @@ void integrand(float r, float mu, float muSun, float nu, float y, out vec3 S_R, // angular precision S_R = vec3(0.0); S_M = vec3(0.0); - + // cosine law float ri = max(sqrt(r * r + y * y + 2.0 * r * mu * y), Rg); - + // Considering the Sun as a parallel light source, thew vector s_i = s. // So muSun_i = (vec(y_i) dot vec(s))/r_i = ((vec(x) + vec(yi-x)) dot vec(s))/r_i // muSun_i = (vec(x) dot vec(s) + vec(yi-x) dot vec(s))/r_i = (r*muSun + yi*nu)/r_i @@ -123,7 +123,7 @@ void main() { // parameters (uv), we unmapping mu, muSun and nu. float mu, muSun, nu; unmappingMuMuSunNu(r, dhdH, SAMPLES_MU, Rg, Rt, SAMPLES_MU_S, SAMPLES_NU, mu, muSun, nu); - + // Here we calculate the single inScattered light. Because this is a single // inscattering, the light that arrives at a point y in the path from the eye to the // infinity (top of atmosphere or planet's ground), comes only from the light source, @@ -135,7 +135,7 @@ void main() { // S[L0] = P_R*S_R[L0] + P_M*S_M[L0] // In order to save memory, we just store the red component of S_M[L0], and later we use // the proportionality rule to calcule the other components. - vec3 S_R; // First Order Rayleigh InScattering + vec3 S_R; // First Order Rayleigh InScattering vec3 S_M; // First Order Mie InScattering inscatter(r, mu, muSun, nu, S_R, S_M); renderTarget1 = vec4(S_R, 1.0); diff --git a/modules/atmosphere/shaders/inScattering_sup_calc_fs.glsl b/modules/atmosphere/shaders/inScattering_sup_calc_fs.glsl index 4ea9697d02..f5a0b55a79 100644 --- a/modules/atmosphere/shaders/inScattering_sup_calc_fs.glsl +++ b/modules/atmosphere/shaders/inScattering_sup_calc_fs.glsl @@ -64,7 +64,7 @@ vec3 inscatter(float r, float mu, float muSun, float nu) { vec3 inScatteringRadiance = vec3(0.0); float dy = rayDistance(r, mu, Rt, Rg) / float(INSCATTER_INTEGRAL_SAMPLES); vec3 inScatteringRadiance_i = integrand(r, mu, muSun, nu, 0.0); - + // In order to solve the integral from equation (11) we use the trapezoidal rule: // Integral(f(y)dy)(from a to b) = ((b-a)/2n_steps)*(Sum(f(y_i+1)+f(y_i))) // where y_i+1 = y_j @@ -84,7 +84,7 @@ void main() { float nu = 0.0; // Unmapping the variables from texture texels coordinates to mapped coordinates unmappingMuMuSunNu(r, dhdH, SAMPLES_MU, Rg, Rt, SAMPLES_MU_S, SAMPLES_NU, mu, muSun, nu); - - // Write to texture deltaSR + + // Write to texture deltaSR renderTarget = vec4(inscatter(r, mu, muSun, nu), 1.0); } diff --git a/modules/atmosphere/shaders/irradiance_final_fs.glsl b/modules/atmosphere/shaders/irradiance_final_fs.glsl index f99e10cac1..0c933a45f1 100644 --- a/modules/atmosphere/shaders/irradiance_final_fs.glsl +++ b/modules/atmosphere/shaders/irradiance_final_fs.glsl @@ -30,9 +30,9 @@ uniform ivec2 OTHER_TEXTURES; uniform sampler2D deltaETexture; -void main() { +void main() { vec2 uv = gl_FragCoord.xy / vec2(OTHER_TEXTURES); // Update texture E with E plus deltaE textures. - renderTableColor = texture(deltaETexture, uv); + renderTableColor = texture(deltaETexture, uv); } diff --git a/modules/atmosphere/shaders/irradiance_sup_calc_fs.glsl b/modules/atmosphere/shaders/irradiance_sup_calc_fs.glsl index 82e3f6faca..b8f061b892 100644 --- a/modules/atmosphere/shaders/irradiance_sup_calc_fs.glsl +++ b/modules/atmosphere/shaders/irradiance_sup_calc_fs.glsl @@ -21,7 +21,7 @@ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE * * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * ****************************************************************************************/ - + #version __CONTEXT__ #include "atmosphere_common.glsl" @@ -98,5 +98,5 @@ void main() { } // Write the higher order irradiance to texture deltaE - renderTableColor = vec4(irradianceE, 0.0); + renderTableColor = vec4(irradianceE, 0.0); } diff --git a/modules/atmosphere/shaders/transmittance_calc_fs.glsl b/modules/atmosphere/shaders/transmittance_calc_fs.glsl index ba0a415daf..a81fa6e0a8 100644 --- a/modules/atmosphere/shaders/transmittance_calc_fs.glsl +++ b/modules/atmosphere/shaders/transmittance_calc_fs.glsl @@ -47,14 +47,14 @@ const int TRANSMITTANCE_STEPS = 500; // r := height of starting point vect(x) // mu := cosine of the zeith angle of vec(v). Or mu = (vec(x) * vec(v))/r // H := Thickness of atmosphere if its density were uniform (used for Rayleigh and Mie) -float opticalDepth(float r, float mu, float H) { +float opticalDepth(float r, float mu, float H) { float r2 = r * r; // Is ray below horizon? The transmittance table will have only the values for // transmittance starting at r (x) until the light ray touches the atmosphere or the // ground and only for view angles v between 0 and pi/2 + eps. That's because we can // calculate the transmittance for angles bigger than pi/2 just inverting the ray // direction and starting and ending points. - + // cosine law for triangles: y_i^2 = a^2 + b^2 - 2abcos(alpha) float cosZenithHorizon = -sqrt(1.0 - ((Rg * Rg) / r2)); if (mu < cosZenithHorizon) { @@ -67,7 +67,7 @@ float opticalDepth(float r, float mu, float H) { float deltaStep = b_a / float(TRANSMITTANCE_STEPS); // cosine law float y_i = exp(-(r - Rg) / H); - + float accumulation = 0.0; for (int i = 1; i <= TRANSMITTANCE_STEPS; ++i) { float x_i = float(i) * deltaStep; @@ -84,11 +84,11 @@ float opticalDepth(float r, float mu, float H) { void main() { float u_mu = gl_FragCoord.x / float(TRANSMITTANCE.x); float u_r = gl_FragCoord.y / float(TRANSMITTANCE.y); - + // In the paper u_r^2 = (r^2-Rg^2)/(Rt^2-Rg^2) // So, extracting r from u_r in the above equation: float r = Rg + (u_r * u_r) * (Rt - Rg); - + // In the paper the Bruneton suggest mu = dot(v,x)/||x|| with ||v|| = 1.0 // Later he proposes u_mu = (1-exp(-3mu-0.6))/(1-exp(-3.6)) // But the below one is better. See Collienne. @@ -99,9 +99,9 @@ void main() { if (ozoneLayerEnabled) { ozoneContribution = betaOzoneExtinction * 0.0000006 * opticalDepth(r, muSun, HO); } - vec3 opDepth = ozoneContribution + + vec3 opDepth = ozoneContribution + betaMieExtinction * opticalDepth(r, muSun, HM) + betaRayleigh * opticalDepth(r, muSun, HR); - + renderTableColor = vec4(exp(-opDepth), 0.0); } diff --git a/modules/base/rendering/renderabletrailtrajectory.cpp b/modules/base/rendering/renderabletrailtrajectory.cpp index 68120b0427..d6141007b9 100644 --- a/modules/base/rendering/renderabletrailtrajectory.cpp +++ b/modules/base/rendering/renderabletrailtrajectory.cpp @@ -208,23 +208,23 @@ void RenderableTrailTrajectory::update(const UpdateData& data) { _totalSampleInterval = _sampleInterval / _timeStampSubsamplingFactor; // Cap _numberOfVertices in order to prevent overflow and extreme performance - // degredation/RAM usage + // degredation/RAM usage _numberOfVertices = std::min( static_cast(timespan / _totalSampleInterval), maxNumberOfVertices ); // We need to recalcuate the _totalSampleInterval if _numberOfVertices eqals - // maxNumberOfVertices. If we don't do this the position for each vertex + // maxNumberOfVertices. If we don't do this the position for each vertex // will not be correct for the number of vertices we are doing along the trail. - _totalSampleInterval = (_numberOfVertices == maxNumberOfVertices) ? + _totalSampleInterval = (_numberOfVertices == maxNumberOfVertices) ? (timespan / _numberOfVertices) : _totalSampleInterval; // Make space for the vertices _vertexArray.clear(); _vertexArray.resize(_numberOfVertices); } - + // Calculate sweeping range for this iteration unsigned int startIndex = _sweepIteration * _sweepChunkSize; unsigned int nextIndex = (_sweepIteration + 1) * _sweepChunkSize; @@ -249,12 +249,12 @@ void RenderableTrailTrajectory::update(const UpdateData& data) { _sweepIteration = 0; setBoundingSphere(glm::distance(_maxVertex, _minVertex) / 2.f); } - else { - // Early return as we don't need to render if we are still + else { + // Early return as we don't need to render if we are still // doing full sweep calculations return; } - + // Upload vertices to the GPU glBindVertexArray(_primaryRenderInformation._vaoID); glBindBuffer(GL_ARRAY_BUFFER, _primaryRenderInformation._vBufferID); diff --git a/modules/base/rendering/renderabletrailtrajectory.h b/modules/base/rendering/renderabletrailtrajectory.h index 704e072dae..018b5f6b58 100644 --- a/modules/base/rendering/renderabletrailtrajectory.h +++ b/modules/base/rendering/renderabletrailtrajectory.h @@ -60,7 +60,7 @@ public: static documentation::Documentation Documentation(); private: - + /// Reset some variables to default state void reset(); @@ -95,7 +95,7 @@ private: /// Tracks sweep iteration, is used to calculate which vertices to work on per frame int _sweepIteration = 0; - /// How many points do we need to compute given the distance between the + /// How many points do we need to compute given the distance between the /// start and end date and the desired sample interval unsigned int _numberOfVertices = 0; diff --git a/modules/base/shaders/model_fs.glsl b/modules/base/shaders/model_fs.glsl index 688c680e81..5ee2771f32 100644 --- a/modules/base/shaders/model_fs.glsl +++ b/modules/base/shaders/model_fs.glsl @@ -103,7 +103,7 @@ Fragment getFragment() { // Some of these values could be passed in as uniforms const vec3 lightColorAmbient = vec3(1.0); const vec3 lightColor = vec3(1.0); - + vec3 n; if (has_texture_normal) { vec3 normalAlbedo = texture(texture_normal, vs_st).rgb; diff --git a/modules/base/shaders/model_vs.glsl b/modules/base/shaders/model_vs.glsl index 6bb6a853d2..6e863b322c 100644 --- a/modules/base/shaders/model_vs.glsl +++ b/modules/base/shaders/model_vs.glsl @@ -52,7 +52,7 @@ void main() { gl_Position = positionScreenSpace; vs_st = in_st; vs_screenSpaceDepth = positionScreenSpace.w; - + vs_normalViewSpace = normalize(mat3(normalTransform) * (mat3(meshNormalTransform) * in_normal)); // TBN matrix for normal mapping diff --git a/modules/base/shaders/renderabletrail_apple_fs.glsl b/modules/base/shaders/renderabletrail_apple_fs.glsl index a0fe0af4a2..7d7d61cbb4 100644 --- a/modules/base/shaders/renderabletrail_apple_fs.glsl +++ b/modules/base/shaders/renderabletrail_apple_fs.glsl @@ -32,7 +32,7 @@ uniform vec3 color; uniform int renderPhase; uniform float opacity = 1.0; -// Fragile! Keep in sync with RenderableTrail::render::RenderPhase +// Fragile! Keep in sync with RenderableTrail::render::RenderPhase #define RenderPhaseLines 0 #define RenderPhasePoints 1 @@ -49,7 +49,7 @@ Fragment getFragment() { // Use the length of the vector (dot(circCoord, circCoord)) as factor in the // smoothstep to gradually decrease the alpha on the edges of the point vec2 circCoord = 2.0 * gl_PointCoord - 1.0; - //float circleClipping = 1.0 - smoothstep(1.0 - Delta, 1.0, dot(circCoord, circCoord)); + //float circleClipping = 1.0 - smoothstep(1.0 - Delta, 1.0, dot(circCoord, circCoord)); float circleClipping = smoothstep(1.0, 1.0 - Delta, dot(circCoord, circCoord)); float transparencyCorrection = frag.color.a * circleClipping; if (transparencyCorrection < 0.9) { diff --git a/modules/base/shaders/renderabletrail_apple_vs.glsl b/modules/base/shaders/renderabletrail_apple_vs.glsl index 93bd48220d..75baaa5449 100644 --- a/modules/base/shaders/renderabletrail_apple_vs.glsl +++ b/modules/base/shaders/renderabletrail_apple_vs.glsl @@ -67,7 +67,7 @@ void main() { id = 1.0 - id; } - fade = clamp(id * lineFade, 0.0, 1.0); + fade = clamp(id * lineFade, 0.0, 1.0); } else { fade = 1.0; @@ -76,8 +76,8 @@ void main() { vs_gPosition = vec4(modelViewTransform * dvec4(in_point_position, 1)); vec4 vs_positionClipSpace = projectionTransform * vs_gPosition; vs_positionDepth = vs_positionClipSpace.w; - - gl_PointSize = (stride == 1 || int(modId) % stride == 0) ? + + gl_PointSize = (stride == 1 || int(modId) % stride == 0) ? float(pointSize) : float(pointSize) / 2; gl_Position = z_normalization(vs_positionClipSpace); } diff --git a/modules/base/shaders/renderabletrail_fs.glsl b/modules/base/shaders/renderabletrail_fs.glsl index c68fab1acb..7d0ac545ef 100644 --- a/modules/base/shaders/renderabletrail_fs.glsl +++ b/modules/base/shaders/renderabletrail_fs.glsl @@ -35,7 +35,7 @@ uniform float opacity = 1.0; uniform float lineWidth; uniform vec4 viewport; -// Fragile! Keep in sync with RenderableTrail::render::RenderPhase +// Fragile! Keep in sync with RenderableTrail::render::RenderPhase const int RenderPhaseLines = 0; const int RenderPhasePoints = 1; @@ -52,7 +52,7 @@ Fragment getFragment() { // Use the length of the vector (dot(circCoord, circCoord)) as factor in the // smoothstep to gradually decrease the alpha on the edges of the point vec2 circCoord = 2.0 * gl_PointCoord - 1.0; - //float circleClipping = 1.0 - smoothstep(1.0 - Delta, 1.0, dot(circCoord, circCoord)); + //float circleClipping = 1.0 - smoothstep(1.0 - Delta, 1.0, dot(circCoord, circCoord)); float circleClipping = smoothstep(1.0, 1.0 - Delta, dot(circCoord, circCoord)); float transparencyCorrection = frag.color.a * circleClipping; if (transparencyCorrection < 0.9) { @@ -71,7 +71,7 @@ Fragment getFragment() { double distanceCenter = length(mathLine - xy); double dLW = double(lineWidth); const float blendFactor = 20.0; - + if (distanceCenter > dLW) { frag.color.a = 0.0; } @@ -80,7 +80,7 @@ Fragment getFragment() { } frag.gPosition = vs_gPosition; - + // There is no normal here frag.gNormal = vec4(0.0, 0.0, -1.0, 1.0); diff --git a/modules/base/shaders/renderabletrail_vs.glsl b/modules/base/shaders/renderabletrail_vs.glsl index 387478cd55..1b5f818a53 100644 --- a/modules/base/shaders/renderabletrail_vs.glsl +++ b/modules/base/shaders/renderabletrail_vs.glsl @@ -68,7 +68,7 @@ void main() { id = 1.0 - id; } - fade = clamp(id * lineFade, 0.0, 1.0); + fade = clamp(id * lineFade, 0.0, 1.0); } else { fade = 1.0; @@ -78,8 +78,8 @@ void main() { vec4 vs_positionClipSpace = projectionTransform * vs_gPosition; vec4 vs_positionNDC = vs_positionClipSpace / vs_positionClipSpace.w; vs_positionDepth = vs_positionClipSpace.w; - - gl_PointSize = (stride == 1 || int(modId) % stride == 0) ? + + gl_PointSize = (stride == 1 || int(modId) % stride == 0) ? float(pointSize) : float(pointSize) / 2; gl_Position = z_normalization(vs_positionClipSpace); diff --git a/modules/digitaluniverse/shaders/billboard_fs.glsl b/modules/digitaluniverse/shaders/billboard_fs.glsl index bbd3e78a87..f6ce480f6a 100644 --- a/modules/digitaluniverse/shaders/billboard_fs.glsl +++ b/modules/digitaluniverse/shaders/billboard_fs.glsl @@ -48,7 +48,7 @@ Fragment getFragment() { } vec4 fullColor = textureColor; - + if (hasColorMap && useColorMap) { fullColor *= gs_colorMap; } diff --git a/modules/digitaluniverse/shaders/billboardpolygon_gs.glsl b/modules/digitaluniverse/shaders/billboardpolygon_gs.glsl index 4155d8761a..764fb2fbe6 100644 --- a/modules/digitaluniverse/shaders/billboardpolygon_gs.glsl +++ b/modules/digitaluniverse/shaders/billboardpolygon_gs.glsl @@ -34,7 +34,7 @@ const float PI = 3.1415926; void main() { vec4 v0 = gl_in[0].gl_Position; - + for (int i = sides; i > 0; --i) { // Angle between each side in radians float ang = 2.0 * PI / float(sides) * i; diff --git a/modules/digitaluniverse/shaders/dumesh_fs.glsl b/modules/digitaluniverse/shaders/dumesh_fs.glsl index 9b405e6264..e037698615 100644 --- a/modules/digitaluniverse/shaders/dumesh_fs.glsl +++ b/modules/digitaluniverse/shaders/dumesh_fs.glsl @@ -44,6 +44,6 @@ Fragment getFragment() { // JCC: Need to change the position to camera space frag.gPosition = vs_positionViewSpace; frag.gNormal = vec4(0.0, 0.0, 0.0, 1.0); - + return frag; } diff --git a/modules/fieldlines/shaders/fieldline_fs.glsl b/modules/fieldlines/shaders/fieldline_fs.glsl index 505f748f5c..e7c42dd82a 100644 --- a/modules/fieldlines/shaders/fieldline_fs.glsl +++ b/modules/fieldlines/shaders/fieldline_fs.glsl @@ -45,7 +45,7 @@ Fragment getFragment() { } frag.depth = pscDepth(gs_position); - + // G-Buffer frag.gPosition = vec4(0.0);//vs_gPosition; // There is no normal here diff --git a/modules/fieldlinessequence/rendering/renderablefieldlinessequence.cpp b/modules/fieldlinessequence/rendering/renderablefieldlinessequence.cpp index d98c314214..990feb5693 100644 --- a/modules/fieldlinessequence/rendering/renderablefieldlinessequence.cpp +++ b/modules/fieldlinessequence/rendering/renderablefieldlinessequence.cpp @@ -577,7 +577,7 @@ bool RenderableFieldlinesSequence::prepareForOsflsStreaming() { _states.push_back(newState); _nStates = _startTimes.size(); if (_nStates == 1) { - // loading dynamicaly is not nessesary if only having one set in the sequence + // loading dynamicaly is not nessesary if only having one set in the sequence _loadingStatesDynamically = false; } _activeStateIndex = 0; @@ -1046,7 +1046,7 @@ void RenderableFieldlinesSequence::update(const UpdateData& data) { const double currentTime = data.time.j2000Seconds(); const bool isInInterval = (currentTime >= _startTimes[0]) && (currentTime < _sequenceEndTime); - + // Check if current time in OpenSpace is within sequence interval if (isInInterval) { const size_t nextIdx = _activeTriggerTimeIndex + 1; diff --git a/modules/fieldlinessequence/rendering/renderablefieldlinessequence.h b/modules/fieldlinessequence/rendering/renderablefieldlinessequence.h index 64962b8077..f30c8c75ad 100644 --- a/modules/fieldlinessequence/rendering/renderablefieldlinessequence.h +++ b/modules/fieldlinessequence/rendering/renderablefieldlinessequence.h @@ -108,7 +108,7 @@ private: // line segments bool _shouldUpdateMaskingBuffer = false; // note Elon: rework the case of only one state - // hasBeenUpdated only gets sets once, first iteration of update function, to + // hasBeenUpdated only gets sets once, first iteration of update function, to // guarantee the vertext position buffer to be initialized. bool _hasBeenUpdated = false; diff --git a/modules/gaia/scripts/filtering.lua b/modules/gaia/scripts/filtering.lua index 896f6c2d24..f070583daf 100644 --- a/modules/gaia/scripts/filtering.lua +++ b/modules/gaia/scripts/filtering.lua @@ -79,7 +79,7 @@ openspace.gaia.addClippingSphere = function (name, radius) Transform = { Scale = { Type = "StaticScale", - Scale = radius * kilo_parsec_in_meter + Scale = radius * kilo_parsec_in_meter } }, Renderable = { diff --git a/modules/gaia/shaders/gaia_billboard_fs.glsl b/modules/gaia/shaders/gaia_billboard_fs.glsl index dcd4d84ab0..ffb76f0781 100644 --- a/modules/gaia/shaders/gaia_billboard_fs.glsl +++ b/modules/gaia/shaders/gaia_billboard_fs.glsl @@ -44,7 +44,7 @@ uniform int renderOption; // Keep in sync with gaiaoptions.h:RenderOption enum const int RENDEROPTION_STATIC = 0; const int RENDEROPTION_COLOR = 1; -const int RENDEROPTION_MOTION = 2; +const int RENDEROPTION_MOTION = 2; const float ONE_PARSEC = 3.08567758e16; // 1 Parsec const float FLT_MAX = 3.402823466e38; // Max float constant in GLSL const float LUM_LOWER_CAP = 0.01; diff --git a/modules/gaia/shaders/gaia_billboard_ge.glsl b/modules/gaia/shaders/gaia_billboard_ge.glsl index 833b6df677..4d3df59446 100644 --- a/modules/gaia/shaders/gaia_billboard_ge.glsl +++ b/modules/gaia/shaders/gaia_billboard_ge.glsl @@ -34,7 +34,7 @@ in float vs_cameraDistFromSun[]; layout(triangle_strip, max_vertices = 4) out; out vec2 ge_brightness; -out vec4 ge_gPosition; +out vec4 ge_gPosition; out vec2 texCoord; out float ge_starDistFromSun; out float ge_cameraDistFromSun; @@ -54,15 +54,15 @@ uniform float magnitudeBoost; // Keep in sync with gaiaoptions.h:RenderOption enum const int RENDEROPTION_STATIC = 0; const int RENDEROPTION_COLOR = 1; -const int RENDEROPTION_MOTION = 2; +const int RENDEROPTION_MOTION = 2; const float EPS = 1e-5; const vec2 corners[4] = vec2[4]( - vec2(0.0, 1.0), - vec2(0.0, 0.0), - vec2(1.0, 1.0), - vec2(1.0, 0.0) + vec2(0.0, 1.0), + vec2(0.0, 0.0), + vec2(1.0, 1.0), + vec2(1.0, 0.0) ); @@ -86,7 +86,7 @@ void main() { // Big positive magnitude => Dwarfs float absoluteMagnitude = vs_brightness[0].x; float normalizedMagnitude = (absoluteMagnitude - 20) / -1; // (-15 - 20); - + // TODO: A linear scale is prabably not the best! initStarSize += normalizedMagnitude * (magnitudeBoost / 50); } @@ -102,9 +102,9 @@ void main() { if (length(position) < EPS || distThreshold <= 0) { return; } - + vec4 centerWorldPos = vs_gPosition[0]; - + dvec3 cameraNormal = normalize(cameraPos - dvec3(centerWorldPos.xyz)); dvec3 newRight = normalize(cross(cameraLookUp, cameraNormal)); dvec3 newUp = cross(cameraNormal, newRight); @@ -122,7 +122,7 @@ void main() { gl_Position.z = 0.0; texCoord = corners[i]; ge_gPosition = viewPosition; - + EmitVertex(); } diff --git a/modules/gaia/shaders/gaia_billboard_nofbo_fs.glsl b/modules/gaia/shaders/gaia_billboard_nofbo_fs.glsl index 7ff547f3ec..763b0d5122 100644 --- a/modules/gaia/shaders/gaia_billboard_nofbo_fs.glsl +++ b/modules/gaia/shaders/gaia_billboard_nofbo_fs.glsl @@ -21,7 +21,7 @@ * 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" #include "floatoperations.glsl" @@ -41,7 +41,7 @@ uniform int renderOption; // Keep in sync with gaiaoptions.h:RenderOption enum const int RENDEROPTION_STATIC = 0; const int RENDEROPTION_COLOR = 1; -const int RENDEROPTION_MOTION = 2; +const int RENDEROPTION_MOTION = 2; const float ONE_PARSEC = 3.08567758e16; // 1 Parsec const float DEFAULT_DEPTH = 3.08567758e19; // 1000 Pc const float LUM_LOWER_CAP = 0.01; @@ -114,7 +114,7 @@ Fragment getFragment() { Fragment frag; frag.color = vec4(color, textureColor.a);; - // Place stars at back to begin with. + // Place stars at back to begin with. frag.depth = DEFAULT_DEPTH; frag.gNormal = vec4(0.0, 0.0, 0.0, 1.0); frag.blend = BLEND_MODE_NORMAL; diff --git a/modules/gaia/shaders/gaia_point_fs.glsl b/modules/gaia/shaders/gaia_point_fs.glsl index 9e271f44f5..c7f998c063 100644 --- a/modules/gaia/shaders/gaia_point_fs.glsl +++ b/modules/gaia/shaders/gaia_point_fs.glsl @@ -42,7 +42,7 @@ uniform float viewScaling; // Keep in sync with gaiaoptions.h:RenderOption enum const int RENDEROPTION_STATIC = 0; const int RENDEROPTION_COLOR = 1; -const int RENDEROPTION_MOTION = 2; +const int RENDEROPTION_MOTION = 2; const float ONE_PARSEC = 3.08567758e16; // 1 Parsec const float LUM_LOWER_CAP = 0.01; diff --git a/modules/gaia/shaders/gaia_ssbo_vs.glsl b/modules/gaia/shaders/gaia_ssbo_vs.glsl index fc1d70048b..b379f956df 100644 --- a/modules/gaia/shaders/gaia_ssbo_vs.glsl +++ b/modules/gaia/shaders/gaia_ssbo_vs.glsl @@ -26,11 +26,11 @@ #include "floatoperations.glsl" -layout (std430) buffer ssbo_idx_data { +layout (std430) buffer ssbo_idx_data { int starsPerChunk[]; }; -layout (std430) buffer ssbo_comb_data { +layout (std430) buffer ssbo_comb_data { float allData[]; }; @@ -42,7 +42,7 @@ out float vs_cameraDistFromSun; uniform dmat4 model; uniform dmat4 view; uniform dmat4 projection; -uniform float time; +uniform float time; uniform int renderOption; uniform int maxStarsPerNode; uniform int valuesPerStar; @@ -57,7 +57,7 @@ uniform vec2 distThreshold; // Keep in sync with gaiaoptions.h:RenderOption enum const int RENDEROPTION_STATIC = 0; const int RENDEROPTION_COLOR = 1; -const int RENDEROPTION_MOTION = 2; +const int RENDEROPTION_MOTION = 2; const float EPS = 1e-5; const float Parsec = 3.0856776e16; @@ -88,7 +88,7 @@ void main() { int chunkId = findChunkId(0, nChunksToRender - 1, gl_VertexID); // Fail safe - this should never happen! if (chunkId == -1) { - vs_gPosition = vec4(0.0); + vs_gPosition = vec4(0.0); gl_Position = vec4(0.0); return; } @@ -97,28 +97,28 @@ void main() { int nStarsInChunk = starsPerChunk[chunkId + 1] - starsPerChunk[chunkId]; // Stars in current chunk. // Remove possible duplicates if (nStarsInChunk <= 0) { - vs_gPosition = vec4(0.0); + vs_gPosition = vec4(0.0); gl_Position = vec4(0.0); return; } - + int startOfPos = firstStarInChunk + placeInChunk * 3; vec3 in_position = vec3(allData[startOfPos], allData[startOfPos + 1], allData[startOfPos + 2]); vec2 in_brightness = vec2(0.0); vec3 in_velocity = vec3(0.0); // Check if we should filter this star by position - if ((abs(posXThreshold.x) > EPS && in_position.x < posXThreshold.x) || - (abs(posXThreshold.y) > EPS && in_position.x > posXThreshold.y) || - (abs(posYThreshold.x) > EPS && in_position.y < posYThreshold.x) || - (abs(posYThreshold.y) > EPS && in_position.y > posYThreshold.y) || - (abs(posZThreshold.x) > EPS && in_position.z < posZThreshold.x) || - (abs(posZThreshold.y) > EPS && in_position.z > posZThreshold.y) || - (abs(distThreshold.x - distThreshold.y) < EPS + if ((abs(posXThreshold.x) > EPS && in_position.x < posXThreshold.x) || + (abs(posXThreshold.y) > EPS && in_position.x > posXThreshold.y) || + (abs(posYThreshold.x) > EPS && in_position.y < posYThreshold.x) || + (abs(posYThreshold.y) > EPS && in_position.y > posYThreshold.y) || + (abs(posZThreshold.x) > EPS && in_position.z < posZThreshold.x) || + (abs(posZThreshold.y) > EPS && in_position.z > posZThreshold.y) || + (abs(distThreshold.x - distThreshold.y) < EPS && abs(length(in_position) - distThreshold.y) < EPS)) { // Discard star in geometry shader - vs_gPosition = vec4(0.0); + vs_gPosition = vec4(0.0); gl_Position = vec4(0.0); return; } @@ -130,14 +130,14 @@ void main() { // Check if we should filter this star by magnitude or color if ((abs(gMagThreshold.x - gMagThreshold.y) < EPS && abs(gMagThreshold.x - in_brightness.x) < EPS) || - (abs(gMagThreshold.x - 20.0f) > EPS && in_brightness.x < gMagThreshold.x) || + (abs(gMagThreshold.x - 20.0f) > EPS && in_brightness.x < gMagThreshold.x) || (abs(gMagThreshold.y - 20.0f) > EPS && in_brightness.x > gMagThreshold.y) || (abs(bpRpThreshold.x - bpRpThreshold.y) < EPS && abs(bpRpThreshold.x - in_brightness.y) < EPS) || - (abs(bpRpThreshold.x) > EPS && in_brightness.y < bpRpThreshold.x) || + (abs(bpRpThreshold.x) > EPS && in_brightness.y < bpRpThreshold.x) || (abs(bpRpThreshold.y) > EPS && in_brightness.y > bpRpThreshold.y)) { // Discard star in geometry shader - vs_gPosition = vec4(0.0); + vs_gPosition = vec4(0.0); gl_Position = vec4(0.0); return; } @@ -145,7 +145,7 @@ void main() { if (renderOption == RENDEROPTION_MOTION) { int startOfVel = firstStarInChunk + nStarsInChunk * 5 + placeInChunk * 3; in_velocity = vec3(allData[startOfVel], allData[startOfVel + 1], allData[startOfVel + 2]); - } + } } vs_brightness = in_brightness; @@ -157,12 +157,12 @@ void main() { // Thres moving stars by their new position float distPosition = length(objectPosition.xyz / (1000.0 * Parsec)); - if ((abs(distThreshold.x - distThreshold.y) > EPS && - ((abs(distThreshold.x) > EPS && distPosition < distThreshold.x) || + if ((abs(distThreshold.x - distThreshold.y) > EPS && + ((abs(distThreshold.x) > EPS && distPosition < distThreshold.x) || (abs(distThreshold.y) > EPS && distPosition > distThreshold.y)))) { // Discard star in geometry shader - vs_gPosition = vec4(0.0); + vs_gPosition = vec4(0.0); gl_Position = vec4(0.0); return; } @@ -177,11 +177,11 @@ void main() { // Remove stars without position, happens when VBO chunk is stuffed with zeros. // Has to be done in Geometry shader because Vertices cannot be discarded here. if (length(in_position) > EPS){ - vs_gPosition = vec4(model * objectPosition); + vs_gPosition = vec4(model * objectPosition); gl_Position = vec4(projection * viewPosition); } else { - vs_gPosition = vec4(0.0); + vs_gPosition = vec4(0.0); gl_Position = vec4(0.0); } } diff --git a/modules/gaia/shaders/gaia_tonemapping_billboard_fs.glsl b/modules/gaia/shaders/gaia_tonemapping_billboard_fs.glsl index 720ed9911a..208b247c2b 100644 --- a/modules/gaia/shaders/gaia_tonemapping_billboard_fs.glsl +++ b/modules/gaia/shaders/gaia_tonemapping_billboard_fs.glsl @@ -33,9 +33,9 @@ const float DEFAULT_DEPTH = 3.08567758e19; // 1000 Pc Fragment getFragment() { vec4 color = vec4(0.0); - + // BILLBOARDS - // Sample color. Tonemapping done in first shader pass. + // Sample color. Tonemapping done in first shader pass. vec4 textureColor = texture(renderedTexture, uv); // Use the following to check for any intensity at all. @@ -43,7 +43,7 @@ Fragment getFragment() { Fragment frag; frag.color = textureColor; - // Place stars at back to begin with. + // Place stars at back to begin with. frag.depth = DEFAULT_DEPTH; frag.gNormal = vec4(0.0, 0.0, 0.0, 1.0); frag.blend = BLEND_MODE_NORMAL; diff --git a/modules/gaia/shaders/gaia_tonemapping_point_fs.glsl b/modules/gaia/shaders/gaia_tonemapping_point_fs.glsl index ebca0af85c..09c5548510 100644 --- a/modules/gaia/shaders/gaia_tonemapping_point_fs.glsl +++ b/modules/gaia/shaders/gaia_tonemapping_point_fs.glsl @@ -39,7 +39,7 @@ const float DEFAULT_DEPTH = 3.08567758e19; // 1000 Pc Fragment getFragment() { vec4 color = vec4(0.0); - + // GL_POINTS // Use frustum params to be able to compensate for a skewed frustum (in a dome). @@ -55,21 +55,21 @@ Fragment getFragment() { float planeAspect = yFactor / xFactor; // Equals: (right - left) / (top - bottom) float screenAspect = screenSize.x / screenSize.y; float fullAspect = planeAspect / screenAspect; - - // Find screenPos in skewed frustum. uv is [0, 1] - vec2 screenPos = uv * vec2(right - left, top - bottom) + vec2(left, bottom); - // Find our elliptic scale factors by trigonometric approximation. + // Find screenPos in skewed frustum. uv is [0, 1] + vec2 screenPos = uv * vec2(right - left, top - bottom) + vec2(left, bottom); + + // Find our elliptic scale factors by trigonometric approximation. float beta = atan(length(screenPos) / near); - vec2 sigmaScaleFactor = vec2(1.0 / cos(beta), 1.0 / pow(cos(beta), 2.0)); + vec2 sigmaScaleFactor = vec2(1.0 / cos(beta), 1.0 / pow(cos(beta), 2.0)); float defaultScreen = 1200.0; float scaling = screenSize.y / defaultScreen * yFactor; // Scale filter size depending on screen pos. vec2 filterScaleFactor = vec2( - pow(screenPos.x / near, 2.0) * fullAspect, - pow(screenPos.y / near, 2.0) + pow(screenPos.x / near, 2.0) * fullAspect, + pow(screenPos.y / near, 2.0) ); // Use to ignore scaling. @@ -91,8 +91,8 @@ Fragment getFragment() { // Uncomment to compare to original filterSize (assumes origo in center of screen). //screenPos = (uv - 0.5) * 2.0; // [-1, 1] //filterScaleFactor = vec2( - // pow(screenPos.x, 2.0), - // pow(screenPos.y, 2.0) + // pow(screenPos.x, 2.0), + // pow(screenPos.y, 2.0) //); // Make use of the following flag this to toggle betweeen circular and elliptic distribution. @@ -131,20 +131,20 @@ Fragment getFragment() { // Calculate the contribution of this pixel (elliptic gaussian distribution). float pixelWeight = exp(-( - a * pow(x * fullAspect, 2.0) + 2 * b * x * y * fullAspect + c * pow(y, 2.0) + a * pow(x * fullAspect, 2.0) + 2 * b * x * y * fullAspect + c * pow(y, 2.0) )); - + // Only sample inside FBO texture and if the pixel will contribute to final color. if (all(greaterThan(sPoint, vec2(0.0))) && all(lessThan(sPoint, vec2(1.0))) && pixelWeight > pixelWeightThreshold) { vec4 sIntensity = texture(renderedTexture, sPoint); - // Use normal distribution function for halo/bloom effect. + // Use normal distribution function for halo/bloom effect. if (useCircleDist) { float circleDist = sqrt(pow(x / (1 + length(filterScaleFactor)), 2.0) + pow(y / (1 + length(filterScaleFactor)), 2.0)); - intensity += sIntensity.rgb * (1.0 / (sigma * sqrt(2.0 * M_PI))) * + intensity += sIntensity.rgb * (1.0 / (sigma * sqrt(2.0 * M_PI))) * exp(-(pow(circleDist, 2.0) / (2.0 * pow(sigma, 2.0)))) / filterSize; } else { @@ -169,7 +169,7 @@ Fragment getFragment() { Fragment frag; frag.color = color; - // Place stars at back to begin with. + // Place stars at back to begin with. frag.depth = DEFAULT_DEPTH; frag.gNormal = vec4(0.0, 0.0, 0.0, 1.0); frag.blend = BLEND_MODE_NORMAL; diff --git a/modules/gaia/shaders/gaia_vbo_vs.glsl b/modules/gaia/shaders/gaia_vbo_vs.glsl index 53a624ef2a..cd1b7b8745 100644 --- a/modules/gaia/shaders/gaia_vbo_vs.glsl +++ b/modules/gaia/shaders/gaia_vbo_vs.glsl @@ -38,7 +38,7 @@ out float vs_cameraDistFromSun; uniform dmat4 model; uniform dmat4 view; uniform dmat4 projection; -uniform float time; +uniform float time; uniform int renderOption; uniform vec2 posXThreshold; uniform vec2 posYThreshold; @@ -50,7 +50,7 @@ uniform vec2 distThreshold; // Keep in sync with gaiaoptions.h:RenderOption enum const int RENDEROPTION_STATIC = 0; const int RENDEROPTION_COLOR = 1; -const int RENDEROPTION_MOTION = 2; +const int RENDEROPTION_MOTION = 2; const float EPS = 1e-5; const float Parsec = 3.0856776e16; @@ -59,24 +59,24 @@ void main() { vs_brightness = in_brightness; // Check if we should filter this star by position. Thres depending on original values. - if ((abs(posXThreshold.x) > EPS && in_position.x < posXThreshold.x) || - (abs(posXThreshold.y) > EPS && in_position.x > posXThreshold.y) || - (abs(posYThreshold.x) > EPS && in_position.y < posYThreshold.x) || - (abs(posYThreshold.y) > EPS && in_position.y > posYThreshold.y) || - (abs(posZThreshold.x) > EPS && in_position.z < posZThreshold.x) || - (abs(posZThreshold.y) > EPS && in_position.z > posZThreshold.y) || - (abs(distThreshold.x - distThreshold.y) < EPS + if ((abs(posXThreshold.x) > EPS && in_position.x < posXThreshold.x) || + (abs(posXThreshold.y) > EPS && in_position.x > posXThreshold.y) || + (abs(posYThreshold.x) > EPS && in_position.y < posYThreshold.x) || + (abs(posYThreshold.y) > EPS && in_position.y > posYThreshold.y) || + (abs(posZThreshold.x) > EPS && in_position.z < posZThreshold.x) || + (abs(posZThreshold.y) > EPS && in_position.z > posZThreshold.y) || + (abs(distThreshold.x - distThreshold.y) < EPS && abs(length(in_position) - distThreshold.y) < EPS) || (renderOption != RENDEROPTION_STATIC && ( (abs(gMagThreshold.x - gMagThreshold.y) < EPS && abs(gMagThreshold.x - in_brightness.x) < EPS) || - (abs(gMagThreshold.x - 20.0f) > EPS && in_brightness.x < gMagThreshold.x) || + (abs(gMagThreshold.x - 20.0f) > EPS && in_brightness.x < gMagThreshold.x) || (abs(gMagThreshold.y - 20.0f) > EPS && in_brightness.x > gMagThreshold.y) || (abs(bpRpThreshold.x - bpRpThreshold.y) < EPS && abs(bpRpThreshold.x - in_brightness.y) < EPS) || - (abs(bpRpThreshold.x) > EPS && in_brightness.y < bpRpThreshold.x) || + (abs(bpRpThreshold.x) > EPS && in_brightness.y < bpRpThreshold.x) || (abs(bpRpThreshold.y) > EPS && in_brightness.y > bpRpThreshold.y)))) { // Discard star in geometry shader. - vs_gPosition = vec4(0.0); + vs_gPosition = vec4(0.0); gl_Position = vec4(0.0); return; } @@ -92,12 +92,12 @@ void main() { // Thres moving stars by their new position. float distPosition = length(objectPosition.xyz / (1000.0 * Parsec)); - if ((abs(distThreshold.x - distThreshold.y) > EPS && - ((abs(distThreshold.x) > EPS && distPosition< distThreshold.x) || + if ((abs(distThreshold.x - distThreshold.y) > EPS && + ((abs(distThreshold.x) > EPS && distPosition< distThreshold.x) || (abs(distThreshold.y) > EPS && distPosition > distThreshold.y)))) { // Discard star in geometry shader. - vs_gPosition = vec4(0.0); + vs_gPosition = vec4(0.0); gl_Position = vec4(0.0); return; } @@ -112,11 +112,11 @@ void main() { // Remove stars without position, happens when VBO chunk is stuffed with zeros. // Has to be done in Geometry shader because Vertices cannot be discarded here. if (length(in_position) > EPS) { - vs_gPosition = vec4(model * objectPosition); + vs_gPosition = vec4(model * objectPosition); gl_Position = vec4(projection * viewPosition); } else { - vs_gPosition = vec4(0.0); + vs_gPosition = vec4(0.0); gl_Position = vec4(0.0); } } diff --git a/modules/globebrowsing/ext/gdal/include/cpl_conv.h b/modules/globebrowsing/ext/gdal/include/cpl_conv.h index 7982dc268e..df9a42696d 100644 --- a/modules/globebrowsing/ext/gdal/include/cpl_conv.h +++ b/modules/globebrowsing/ext/gdal/include/cpl_conv.h @@ -369,9 +369,9 @@ namespace cpl /** Use cpl::down_cast(pointer_to_base) as equivalent of * static_cast(pointer_to_base) with safe checking in debug * mode. - * + * * Only works if no virtual inheritance is involved. - * + * * @param f pointer to a base class * @return pointer to a derived class */ diff --git a/modules/globebrowsing/ext/gdal/include/cpl_http.h b/modules/globebrowsing/ext/gdal/include/cpl_http.h index 7a6b58f541..44626bf958 100644 --- a/modules/globebrowsing/ext/gdal/include/cpl_http.h +++ b/modules/globebrowsing/ext/gdal/include/cpl_http.h @@ -148,7 +148,7 @@ bool CPLIsMachinePotentiallyGCEInstance(); bool CPLIsMachineForSureGCEInstance(); /** Manager of Google OAuth2 authentication. - * + * * This class handles different authentication methods and handles renewal * of access token. * diff --git a/modules/globebrowsing/globebrowsingmodule_lua.inl b/modules/globebrowsing/globebrowsingmodule_lua.inl index 7320e0cf6d..1085f944d9 100644 --- a/modules/globebrowsing/globebrowsingmodule_lua.inl +++ b/modules/globebrowsing/globebrowsingmodule_lua.inl @@ -182,7 +182,7 @@ namespace { if (group == layers::Group::ID::Unknown) { throw ghoul::lua::LuaError(fmt::format("Unknown layer group: {}", layerGroup)); } - + LayerGroup& lg = globe->layerManager().layerGroup(group); if (std::holds_alternative(source) && std::holds_alternative(destination)) { // Short circut here, no need to get the layers diff --git a/modules/globebrowsing/shaders/texturetilemapping.glsl b/modules/globebrowsing/shaders/texturetilemapping.glsl index eb7647d711..dd70e3631e 100644 --- a/modules/globebrowsing/shaders/texturetilemapping.glsl +++ b/modules/globebrowsing/shaders/texturetilemapping.glsl @@ -185,7 +185,7 @@ vec4 getSample#{layerGroup}#{i}(vec2 uv, vec3 levelWeights, vec4 blend#{layerGroup}#{i}(vec4 currentColor, vec4 newColor, float blendFactor) { #if (#{#{layerGroup}#{i}BlendMode} == BlendModeDefault) - return blendNormal(currentColor, vec4(newColor.rgb, newColor.a * blendFactor)); + return blendNormal(currentColor, vec4(newColor.rgb, newColor.a * blendFactor)); #elif (#{#{layerGroup}#{i}BlendMode} == BlendModeMultiply) return blendMultiply(currentColor, newColor * blendFactor); #elif (#{#{layerGroup}#{i}BlendMode} == BlendModeAdd) diff --git a/modules/iswa/shaders/dataplane_fs.glsl b/modules/iswa/shaders/dataplane_fs.glsl index 88b239f21c..8076a78f03 100644 --- a/modules/iswa/shaders/dataplane_fs.glsl +++ b/modules/iswa/shaders/dataplane_fs.glsl @@ -54,7 +54,7 @@ Fragment getFragment() { v += texture(textures[i], vs_st).r; } v /= numTextures; - + vec4 color = texture(transferFunctions[0], vec2(v, 0.0)); if ((v < (x + y)) && v > (x - y)) { diffuse = Transparent; diff --git a/modules/iswa/shaders/dataplane_vs.glsl b/modules/iswa/shaders/dataplane_vs.glsl index 396429bdfe..09ca68d6b4 100644 --- a/modules/iswa/shaders/dataplane_vs.glsl +++ b/modules/iswa/shaders/dataplane_vs.glsl @@ -42,7 +42,7 @@ void main() { vs_position = tmp; vs_st = in_st; - + position = ViewProjection * position; gl_Position = z_normalization(position); } diff --git a/modules/iswa/shaders/datasphere_fs.glsl b/modules/iswa/shaders/datasphere_fs.glsl index c94f815909..54d336454d 100644 --- a/modules/iswa/shaders/datasphere_fs.glsl +++ b/modules/iswa/shaders/datasphere_fs.glsl @@ -47,14 +47,14 @@ Fragment getFragment() { float x = backgroundValues.x; float y = backgroundValues.y; - + if ((numTransferFunctions == 1) || (numTextures > numTransferFunctions)) { float v = 0; for (int i = 0; i < numTextures; i++) { v += texture(textures[i], vec2(vs_st.t, vs_st.s)).r; } v /= numTextures; - + vec4 color = texture(transferFunctions[0], vec2(v, 0.0)); if ((v < (x + y)) && v > (x - y)) { color = mix(Transparent, color, clamp(1.0, 0.0, abs(v - x))); diff --git a/modules/iswa/shaders/datasphere_vs.glsl b/modules/iswa/shaders/datasphere_vs.glsl index fbd39a753c..2cfbcc93e4 100644 --- a/modules/iswa/shaders/datasphere_vs.glsl +++ b/modules/iswa/shaders/datasphere_vs.glsl @@ -43,7 +43,7 @@ void main() { // this is wrong for the normal. The normal transform is the transposed inverse of the model transform // vs_normal = normalize(ModelTransform * vec4(in_normal,0)); - + vec4 position = pscTransform(tmp, ModelTransform); vs_position = tmp; position = ViewProjection * position; diff --git a/modules/iswa/shaders/textureplane_vs.glsl b/modules/iswa/shaders/textureplane_vs.glsl index fc429dc3c5..e31de12e26 100644 --- a/modules/iswa/shaders/textureplane_vs.glsl +++ b/modules/iswa/shaders/textureplane_vs.glsl @@ -42,7 +42,7 @@ void main() { vs_position = tmp; vs_st = in_st; - + position = ViewProjection * position; gl_Position = z_normalization(position); } diff --git a/modules/kameleonvolume/CMakeLists.txt b/modules/kameleonvolume/CMakeLists.txt index 7d475fb2a4..e4931f2065 100644 --- a/modules/kameleonvolume/CMakeLists.txt +++ b/modules/kameleonvolume/CMakeLists.txt @@ -17,7 +17,7 @@ # 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 # +# 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. # ########################################################################################## diff --git a/modules/multiresvolume/shaders/bounds_vs.glsl b/modules/multiresvolume/shaders/bounds_vs.glsl index 3052fc615d..8f5650bc34 100644 --- a/modules/multiresvolume/shaders/bounds_vs.glsl +++ b/modules/multiresvolume/shaders/bounds_vs.glsl @@ -21,7 +21,7 @@ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE * * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * ****************************************************************************************/ - + #version __CONTEXT__ #include "PowerScaling/powerScaling_vs.hglsl" @@ -40,7 +40,7 @@ void main() { worldPosition = vec4(vertPosition.xyz, 0.0); vec4 position = pscTransform(worldPosition, modelTransform); - + // project the position to view space gl_Position = z_normalization(viewProjection * position); } diff --git a/modules/multiresvolume/shaders/raycast.glsl b/modules/multiresvolume/shaders/raycast.glsl index ce54a9f79f..e9bb14c4c1 100644 --- a/modules/multiresvolume/shaders/raycast.glsl +++ b/modules/multiresvolume/shaders/raycast.glsl @@ -80,12 +80,12 @@ float stepSize#{id}(vec3 samplePos, vec3 dir) { } } -void sample#{id}(vec3 samplePos, vec3 dir, inout vec3 accumulatedColor, +void sample#{id}(vec3 samplePos, vec3 dir, inout vec3 accumulatedColor, inout vec3 accumulatedAlpha, inout float maxStepSize) { //vec4 sample#{id}(vec3 samplePos, vec3 dir, vec4 foregroundColor, inout float maxStepSize) { //return vec4(1.0, 1.0, 1.0, 1.0); - + if (true /*opacity_#{id} >= MULTIRES_OPACITY_THRESHOLD*/) { if (gridType_#{id} == 1) { samplePos = multires_cartesianToSpherical(samplePos); diff --git a/modules/skybrowser/shaders/target_vs.glsl b/modules/skybrowser/shaders/target_vs.glsl index a249d6af40..a395ea0e5b 100644 --- a/modules/skybrowser/shaders/target_vs.glsl +++ b/modules/skybrowser/shaders/target_vs.glsl @@ -21,7 +21,7 @@ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE * * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * ****************************************************************************************/ - + #version __CONTEXT__ #include "PowerScaling/powerScaling_vs.hglsl" diff --git a/modules/skybrowser/skybrowsermodule_lua.inl b/modules/skybrowser/skybrowsermodule_lua.inl index 2d64d4c423..c018cdca4a 100644 --- a/modules/skybrowser/skybrowsermodule_lua.inl +++ b/modules/skybrowser/skybrowsermodule_lua.inl @@ -454,7 +454,7 @@ std::string prunedIdentifier(std::string identifier) { * Takes an identifier to a sky browser or sky target, an index to an image and a value * for the opacity. */ -[[codegen::luawrap]] void setOpacityOfImageLayer(std::string identifier, +[[codegen::luawrap]] void setOpacityOfImageLayer(std::string identifier, std::string imageUrl, float opacity) { using namespace openspace; diff --git a/modules/skybrowser/src/browser.cpp b/modules/skybrowser/src/browser.cpp index 206fcfeca7..e9e6671277 100644 --- a/modules/skybrowser/src/browser.cpp +++ b/modules/skybrowser/src/browser.cpp @@ -124,7 +124,7 @@ void Browser::initializeGL() { _browserInstance->initialize(); _browserInstance->loadUrl(_url); - // Update the dimensions upon initialization. Do this with flag as it affects + // Update the dimensions upon initialization. Do this with flag as it affects // derived classes as well _isDimensionsDirty = true; } diff --git a/modules/skybrowser/src/targetbrowserpair.cpp b/modules/skybrowser/src/targetbrowserpair.cpp index a946e6f737..90672f5856 100644 --- a/modules/skybrowser/src/targetbrowserpair.cpp +++ b/modules/skybrowser/src/targetbrowserpair.cpp @@ -164,7 +164,7 @@ ghoul::Dictionary TargetBrowserPair::dataAsDictionary() const { glm::dvec3 cartesian = skybrowser::sphericalToCartesian(spherical); SkyBrowserModule* module = global::moduleEngine->module(); std::vector selectedImagesIndices; - + for (const std::string& imageUrl : selectedImages()) { bool imageExists = module->wwtDataHandler().image(imageUrl).has_value(); ghoul_assert(imageExists, "Image doesn't exist in the wwt catalog!"); @@ -303,7 +303,7 @@ void TargetBrowserPair::incrementallyAnimateToCoordinate() { _targetIsAnimating = false; _fovIsAnimating = true; } - // After the target has animated to its position, animate the field of view + // After the target has animated to its position, animate the field of view if (_fovAnimation.isAnimating()) { _browser->setVerticalFov(_fovAnimation.newValue()); _targetRenderable->setVerticalFov(_browser->verticalFov()); diff --git a/modules/skybrowser/src/wwtcommunicator.cpp b/modules/skybrowser/src/wwtcommunicator.cpp index a02daeb31a..66f7cb41d1 100644 --- a/modules/skybrowser/src/wwtcommunicator.cpp +++ b/modules/skybrowser/src/wwtcommunicator.cpp @@ -278,13 +278,13 @@ bool WwtCommunicator::isImageCollectionLoaded() const { } SelectedImageDeque::iterator WwtCommunicator::findSelectedImage( - const std::string& imageUrl) + const std::string& imageUrl) { auto it = std::find_if( _selectedImages.begin(), _selectedImages.end(), - [imageUrl](const std::pair& pair) { - return pair.first == imageUrl; + [imageUrl](const std::pair& pair) { + return pair.first == imageUrl; } ); return it; diff --git a/modules/skybrowser/src/wwtdatahandler.cpp b/modules/skybrowser/src/wwtdatahandler.cpp index a465eb4ab7..7ef139bdb9 100644 --- a/modules/skybrowser/src/wwtdatahandler.cpp +++ b/modules/skybrowser/src/wwtdatahandler.cpp @@ -171,7 +171,7 @@ namespace { return true; } - std::optional + std::optional loadImageFromNode(const tinyxml2::XMLElement* node, const std::string& collection) { using namespace openspace; diff --git a/modules/space/shaders/convolution_fs.glsl b/modules/space/shaders/convolution_fs.glsl index 53ba366fba..ca1ff4f734 100644 --- a/modules/space/shaders/convolution_fs.glsl +++ b/modules/space/shaders/convolution_fs.glsl @@ -36,7 +36,7 @@ uniform sampler2D shapeTexture; void main() { float fullColor = 0.0; - + float maxConvSize = float(psfTextureSize); float convStep = 1.0 / maxConvSize; float textureStep = 1.0 / float(convolvedfTextureSize); diff --git a/modules/space/shaders/debrisViz_fs.glsl b/modules/space/shaders/debrisViz_fs.glsl index e5b164f25c..31c0db4235 100644 --- a/modules/space/shaders/debrisViz_fs.glsl +++ b/modules/space/shaders/debrisViz_fs.glsl @@ -40,12 +40,12 @@ Fragment getFragment() { // vertices. We want vertexDistance to be double up to this point, I think, (hence the // unnessesary float to float conversion) float vertexDistance = periodFraction - offsetPeriods; - - // This is the alternative way of calculating + + // This is the alternative way of calculating // the offsetPeriods: (vertexID_perOrbit/nrOfSegments_f) // float vertexID_perOrbit = mod(vertexID_f, numberOfSegments); // float nrOfSegments_f = float(numberOfSegments); - // float vertexDistance = periodFraction - (vertexID_perOrbit/nrOfSegments_f); + // float vertexDistance = periodFraction - (vertexID_perOrbit/nrOfSegments_f); if (vertexDistance < 0.0) { vertexDistance += 1.0; diff --git a/modules/space/shaders/debrisViz_vs.glsl b/modules/space/shaders/debrisViz_vs.glsl index ff76079d97..601a33316a 100644 --- a/modules/space/shaders/debrisViz_vs.glsl +++ b/modules/space/shaders/debrisViz_vs.glsl @@ -26,7 +26,7 @@ #include "PowerScaling/powerScalingMath.hglsl" -layout (location = 0) in vec4 vertexData; // 1: x, 2: y, 3: z, 4: timeOffset, +layout (location = 0) in vec4 vertexData; // 1: x, 2: y, 3: z, 4: timeOffset, layout (location = 1) in vec2 orbitData; // 1: epoch, 2: period out vec4 viewSpacePosition; diff --git a/modules/space/shaders/psfToTexture_fs.glsl b/modules/space/shaders/psfToTexture_fs.glsl index 75edb42d9d..8d914d9dd0 100644 --- a/modules/space/shaders/psfToTexture_fs.glsl +++ b/modules/space/shaders/psfToTexture_fs.glsl @@ -42,7 +42,7 @@ const int PsfMethodMoffat = 1; void main() { vec4 fullColor = vec4(0.0, 0.0, 0.0, 1.0); - if (psfMethod == PsfMethodSpencer) { + if (psfMethod == PsfMethodSpencer) { // PSF Functions from paper: Physically-Based Galre Effects for Digital // Images - Spencer, Shirley, Zimmerman and Greenberg. float theta = sqrt((psfCoords.y * psfCoords.y + psfCoords.x * psfCoords.x)) * 90.0; @@ -59,10 +59,10 @@ void main() { float moffat = pow(1.0 + (r/alpha) * (r/alpha), -betaConstant); fullColor = vec4(moffat); } - + if (fullColor.a == 0) { discard; } - + renderTableColor = fullColor; } diff --git a/modules/space/shaders/rings_fs.glsl b/modules/space/shaders/rings_fs.glsl index e7c294c2df..eaf78692bf 100644 --- a/modules/space/shaders/rings_fs.glsl +++ b/modules/space/shaders/rings_fs.glsl @@ -58,7 +58,7 @@ Fragment getFragment() { if (texCoord < 0.0 || texCoord > 1.0) { discard; } - + vec4 diffuse = texture(texture1, texCoord); // divided by 3 as length of vec3(1.0, 1.0, 1.0) will return 3 and we want // to normalize the alpha value to [0,1] diff --git a/modules/space/shaders/star_fs.glsl b/modules/space/shaders/star_fs.glsl index a2864ac811..45360a1434 100644 --- a/modules/space/shaders/star_fs.glsl +++ b/modules/space/shaders/star_fs.glsl @@ -42,7 +42,7 @@ uniform bool filterOutOfRange; // keep in sync with renderablestars.h:ColorOption enum const int ColorOptionColor = 0; -const int ColorOptionVelocity = 1; +const int ColorOptionVelocity = 1; const int ColorOptionSpeed = 2; const int ColorOptionOtherData = 3; const int ColorOptionFixedColor = 4; @@ -69,7 +69,7 @@ vec4 otherDataValue() { Fragment getFragment() { vec4 color = vec4(0.0); switch (colorOption) { - case ColorOptionColor: + case ColorOptionColor: color = bv2rgb(ge_bv); break; case ColorOptionVelocity: @@ -94,7 +94,7 @@ Fragment getFragment() { vec4 textureColor = texture(psfTexture, texCoords); vec4 fullColor = vec4(color.rgb, textureColor.a * alphaValue); - + if (fullColor.a < 0.001) { discard; } @@ -105,6 +105,6 @@ Fragment getFragment() { frag.gPosition = vec4(vs_position, 1.0); frag.gNormal = vec4(0.0, 0.0, 0.0, 1.0); frag.disableLDR2HDR = true; - + return frag; } diff --git a/modules/space/shaders/star_ge.glsl b/modules/space/shaders/star_ge.glsl index e8458747a9..4e3cba08fa 100644 --- a/modules/space/shaders/star_ge.glsl +++ b/modules/space/shaders/star_ge.glsl @@ -110,14 +110,14 @@ double scaleForAbsoluteMagnitude(float absMagnitude) { double scaleForApparentMagnitude(dvec3 dpos, float absMag) { double distanceToStarInMeters = length(dpos - eyePosition); double distanceToCenterInMeters = length(eyePosition); - float distanceToStarInParsecs = float(distanceToStarInMeters/PARSEC); + float distanceToStarInParsecs = float(distanceToStarInMeters/PARSEC); //float appMag = absMag + 5*log(distanceToStarInParsecs) - 5.0; float appMag = absMag + 5.0 * (log(distanceToStarInParsecs/10.0)/log(2.0)); //appMag = vs_bvLumAbsMagAppMag[0].w; - - //scaleMultiply = (30.623 - appMag) * pow(10.0, magnitudeExponent + 7.0);// * + + //scaleMultiply = (30.623 - appMag) * pow(10.0, magnitudeExponent + 7.0);// * //float(distanceToStarInMeters/distanceToCenterInMeters); - + return (-appMag + 50.0) * pow(10.0, magnitudeExponent + 7.5); // return log(35.f + appMag) * pow(10.0, magnitudeExponent + 6.5f); // return exp((35.f - appMag) * 0.2) * pow(10.0, magnitudeExponent + 2.5f); @@ -134,7 +134,7 @@ double scaleForDistanceModulus(float absMag) { void main() { vec3 pos = gl_in[0].gl_Position.xyz; vs_position = pos; // in object space - dvec4 dpos = modelMatrix * dvec4(pos, 1.0); + dvec4 dpos = modelMatrix * dvec4(pos, 1.0); ge_bv = vs_bvLumAbsMagAppMag[0].x; ge_velocity = vs_velocity[0]; @@ -173,7 +173,7 @@ void main() { } else if (psfParamConf == SizeCompositionOptionLumSizeDistanceModulus) { float absMagnitude = vs_bvLumAbsMagAppMag[0].z; - + scaleMultiply = scaleForDistanceModulus(absMagnitude); } @@ -182,30 +182,30 @@ void main() { dvec3 newUp = normalize(cross(normal, newRight)); dvec3 scaledRight = scaleMultiply * newRight; dvec3 scaledUp = scaleMultiply * newUp; - + vec4 lowerLeft = z_normalization( vec4(cameraViewProjectionMatrix * dvec4(dpos.xyz - scaledRight - scaledUp, dpos.w)) ); - + vec4 upperRight = z_normalization( vec4(cameraViewProjectionMatrix * dvec4(dpos.xyz + scaledUp + scaledRight, dpos.w)) - ); + ); vec4 lowerRight = z_normalization( vec4(cameraViewProjectionMatrix * dvec4(dpos.xyz + scaledRight - scaledUp, dpos.w)) ); - + vec4 upperLeft = z_normalization( vec4(cameraViewProjectionMatrix * dvec4(dpos.xyz + scaledUp - scaledRight, dpos.w)) ); gs_screenSpaceDepth = lowerLeft.w; - // Build primitive + // Build primitive gl_Position = lowerLeft; texCoords = vec2(0.0, 0.0); EmitVertex(); - + gl_Position = lowerRight; texCoords = vec2(1.0,0.0); EmitVertex(); @@ -213,10 +213,10 @@ void main() { gl_Position = upperLeft; texCoords = vec2(0.0, 1.0); EmitVertex(); - + gl_Position = upperRight; texCoords = vec2(1.0, 1.0); EmitVertex(); - + EndPrimitive(); } diff --git a/modules/space/shaders/travelspeed_fs.glsl b/modules/space/shaders/travelspeed_fs.glsl index ccafe094ab..e74e11a9ba 100644 --- a/modules/space/shaders/travelspeed_fs.glsl +++ b/modules/space/shaders/travelspeed_fs.glsl @@ -21,7 +21,7 @@ * 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" #include "floatoperations.glsl" diff --git a/modules/spacecraftinstruments/scripts/crawl_rosetta_images/crawl_rosetta_images.js b/modules/spacecraftinstruments/scripts/crawl_rosetta_images/crawl_rosetta_images.js index 0176f14bfe..961364a7b1 100644 --- a/modules/spacecraftinstruments/scripts/crawl_rosetta_images/crawl_rosetta_images.js +++ b/modules/spacecraftinstruments/scripts/crawl_rosetta_images/crawl_rosetta_images.js @@ -80,14 +80,14 @@ getHttps(archiveUrl, (body) => { let imageUrl = ''; if (thumbnailName) { let originalName = thumbnailName.replace('_tn', ''); - imageUrl = rootUrl + originalName; + imageUrl = rootUrl + originalName; } let detailsName = $(td).find('a').attr('href'); if (detailsName) { let detailsUrl = rootUrl + detailsName; - + getHttps(detailsUrl, (detailsBody) => { let $detailsRoot = $.load(detailsBody); @@ -99,7 +99,7 @@ getHttps(archiveUrl, (body) => { $detailsRoot('tr').map((i, detailsTr) => { let header = $(detailsTr).children('th').html(); let cell = $(detailsTr).children('td').html(); - + switch (header) { case 'ID': id = cell; break; case 'Date taken': startTime = cell; break; diff --git a/modules/spacecraftinstruments/shaders/fov_vs.glsl b/modules/spacecraftinstruments/shaders/fov_vs.glsl index 04d8a47d0d..9d62bf358e 100644 --- a/modules/spacecraftinstruments/shaders/fov_vs.glsl +++ b/modules/spacecraftinstruments/shaders/fov_vs.glsl @@ -60,7 +60,7 @@ void main() { gl_Position = pos; vec3 color; - switch (colorInformation) { + switch (colorInformation) { case VertexColorTypeDefaultStart: vs_color = vec4(colorStart, 1.0); break; diff --git a/modules/spacecraftinstruments/shaders/renderableModelProjection_fs.glsl b/modules/spacecraftinstruments/shaders/renderableModelProjection_fs.glsl index b4b25ae41f..1bb8255e1e 100644 --- a/modules/spacecraftinstruments/shaders/renderableModelProjection_fs.glsl +++ b/modules/spacecraftinstruments/shaders/renderableModelProjection_fs.glsl @@ -40,7 +40,7 @@ uniform vec3 boresight; bool inRange(float x, float a, float b) { return (x >= a && x <= b); -} +} void main() { diff --git a/modules/spacecraftinstruments/shaders/renderableModelProjection_vs.glsl b/modules/spacecraftinstruments/shaders/renderableModelProjection_vs.glsl index 80a91fac74..e3732da719 100644 --- a/modules/spacecraftinstruments/shaders/renderableModelProjection_vs.glsl +++ b/modules/spacecraftinstruments/shaders/renderableModelProjection_vs.glsl @@ -45,6 +45,6 @@ void main() { vs_normal = normalize(ModelTransform * meshNormalTransform * vec4(in_normal, 0.0)); vs_ndc = position / position.w; - vec2 texco = (in_st * 2.0) - 1.0; + vec2 texco = (in_st * 2.0) - 1.0; gl_Position = vec4(texco, 0.0, 1.0); } diff --git a/modules/spacecraftinstruments/shaders/renderableModel_fs.glsl b/modules/spacecraftinstruments/shaders/renderableModel_fs.glsl index 2a9fd56ccc..6ed9b41adc 100644 --- a/modules/spacecraftinstruments/shaders/renderableModel_fs.glsl +++ b/modules/spacecraftinstruments/shaders/renderableModel_fs.glsl @@ -62,7 +62,7 @@ Fragment getFragment() { projectionFading * projectionColor.a ); } - + vec3 diffuseAlbedo = textureColor.rgb; Fragment frag; @@ -70,7 +70,7 @@ Fragment getFragment() { // Some of these values could be passed in as uniforms const vec3 lightColorAmbient = vec3(1.0); const vec3 lightColor = vec3(1.0); - + vec3 n = normalize(vs_normalViewSpace); vec3 l = directionToSunViewSpace; vec3 c = normalize(vs_positionCameraSpace.xyz); @@ -80,7 +80,7 @@ Fragment getFragment() { float specularCosineFactor = dot(c,r); vec3 ambientColor = ambientIntensity * lightColorAmbient * diffuseAlbedo; - vec3 diffuseColor = + vec3 diffuseColor = diffuseIntensity * lightColor * diffuseAlbedo * max(diffuseCosineFactor, 0.0); vec3 specularColor = specularIntensity * lightColor * specularAlbedo * pow(max(specularCosineFactor, 0.0), specularPower); diff --git a/modules/spacecraftinstruments/shaders/renderableModel_vs.glsl b/modules/spacecraftinstruments/shaders/renderableModel_vs.glsl index dcf4cf3b7a..b2a2e26c30 100644 --- a/modules/spacecraftinstruments/shaders/renderableModel_vs.glsl +++ b/modules/spacecraftinstruments/shaders/renderableModel_vs.glsl @@ -51,7 +51,7 @@ void main() { vec4 p = z_normalization(positionClipSpace); vs_depth = p.w; gl_Position = p; - + // The normal transform should be the transposed inverse of the model transform? vs_normalViewSpace = normalize( mat3(modelViewTransform) * (mat3(meshNormalTransform) * in_normal) diff --git a/modules/spacecraftinstruments/shaders/renderablePlanetProjection_fs.glsl b/modules/spacecraftinstruments/shaders/renderablePlanetProjection_fs.glsl index f323bdffb0..5eb98ea72a 100644 --- a/modules/spacecraftinstruments/shaders/renderablePlanetProjection_fs.glsl +++ b/modules/spacecraftinstruments/shaders/renderablePlanetProjection_fs.glsl @@ -28,7 +28,7 @@ in vec2 vs_position; -layout (location = 0) out vec4 color; +layout (location = 0) out vec4 color; layout (location = 1) out vec4 stencil; uniform sampler2D projectionTexture; @@ -51,13 +51,13 @@ vec4 uvToModel(vec2 uv, vec3 radius, float segments) { float x = radius.x * sin(theta) * cos(phi); float y = radius.y * sin(theta) * sin(phi); float z = radius.z * cos(theta); - + return vec4(x, y, z, 0.0); } bool inRange(float x, float a, float b) { return (x >= a && x <= b); -} +} void main() { @@ -81,7 +81,7 @@ void main() { dot(v_b, normal) < 0.0) { color = texture(projectionTexture, vec2(projected.x, projected.y)); - stencil = vec4(1.0); + stencil = vec4(1.0); } else { color = vec4(0.0); diff --git a/modules/spacecraftinstruments/shaders/renderablePlanet_vs.glsl b/modules/spacecraftinstruments/shaders/renderablePlanet_vs.glsl index d9322c8be7..8925ff01ae 100644 --- a/modules/spacecraftinstruments/shaders/renderablePlanet_vs.glsl +++ b/modules/spacecraftinstruments/shaders/renderablePlanet_vs.glsl @@ -46,11 +46,11 @@ void main() { vs_st = in_st; vec3 tmp = in_position.xyz; - - // This is wrong for the normal. + + // This is wrong for the normal. // The normal transform is the transposed inverse of the model transform vs_normal = normalize(modelTransform * vec4(in_normal, 0.0)).xyz; - + if (hasHeightMap) { vec2 st = vs_st; if (meridianShift) { diff --git a/modules/spacecraftinstruments/shaders/terminatorshadow_vs.glsl b/modules/spacecraftinstruments/shaders/terminatorshadow_vs.glsl index fc3f0b5af1..0b9c43a496 100644 --- a/modules/spacecraftinstruments/shaders/terminatorshadow_vs.glsl +++ b/modules/spacecraftinstruments/shaders/terminatorshadow_vs.glsl @@ -42,7 +42,7 @@ void main() { else { vs_color = vec3(0.0); } - + // Transform the damn psc to homogenous coordinate vec4 position = vec4(in_point_position.xyz * pow(10, in_point_position.w), 1.0); vec4 positionClipSpace = modelViewProjectionTransform * position; diff --git a/modules/toyvolume/shaders/bounds_vs.glsl b/modules/toyvolume/shaders/bounds_vs.glsl index 3bb2aef19a..bd61697e12 100644 --- a/modules/toyvolume/shaders/bounds_vs.glsl +++ b/modules/toyvolume/shaders/bounds_vs.glsl @@ -21,7 +21,7 @@ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE * * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * ****************************************************************************************/ - + #version __CONTEXT__ layout(location = 0) in vec4 vertPosition; @@ -36,7 +36,7 @@ uniform mat4 modelViewTransform; void main() { modelPosition = vertPosition.xyz; viewPosition = modelViewTransform*vertPosition; - + // project the position to view space gl_Position = projectionTransform * viewPosition; gl_Position.z = 1.0; diff --git a/modules/toyvolume/shaders/raycast.glsl b/modules/toyvolume/shaders/raycast.glsl index c33c3c03fc..66faa16211 100644 --- a/modules/toyvolume/shaders/raycast.glsl +++ b/modules/toyvolume/shaders/raycast.glsl @@ -60,7 +60,7 @@ void sample#{id}(vec3 samplePos, vec3 dir, inout vec3 accumulatedColor, backColor = clamp(backColor, 0.0, 1.0); backAlpha = clamp(backAlpha, 0.0, 1.0); - + vec3 oneMinusFrontAlpha = vec3(1.0) - accumulatedAlpha; accumulatedColor += oneMinusFrontAlpha * backColor; accumulatedAlpha += oneMinusFrontAlpha * backAlpha; diff --git a/modules/volume/shaders/bounds_vs.glsl b/modules/volume/shaders/bounds_vs.glsl index 76fd110043..cf93a6b7bb 100644 --- a/modules/volume/shaders/bounds_vs.glsl +++ b/modules/volume/shaders/bounds_vs.glsl @@ -21,7 +21,7 @@ * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE * * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * ****************************************************************************************/ - + #version __CONTEXT__ #include "PowerScaling/powerScaling_vs.hglsl" @@ -41,6 +41,6 @@ void main() { vec4 positionClipSpace = projectionTransform * positionCameraSpace; vec4 positionScreenSpace = z_normalization(positionClipSpace); - + gl_Position = positionScreenSpace; } diff --git a/modules/webbrowser/cmake/patch/cmake/cef_variables.cmake b/modules/webbrowser/cmake/patch/cmake/cef_variables.cmake index ab9dc9754c..0271a8c89b 100644 --- a/modules/webbrowser/cmake/patch/cmake/cef_variables.cmake +++ b/modules/webbrowser/cmake/patch/cmake/cef_variables.cmake @@ -59,7 +59,7 @@ set(CEF_LIBCEF_DLL_WRAPPER_PATH "${_CEF_ROOT}/libcef_dll") # Shared compiler/linker flags. list(APPEND CEF_COMPILER_DEFINES - # Allow C++ programs to use stdint.h macros specified in the C99 standard that aren't + # Allow C++ programs to use stdint.h macros specified in the C99 standard that aren't # in the C++ standard (e.g. UINT8_MAX, INT64_MIN, etc) __STDC_CONSTANT_MACROS __STDC_FORMAT_MACROS ) diff --git a/modules/webbrowser/cmake/webbrowser_helpers.cmake b/modules/webbrowser/cmake/webbrowser_helpers.cmake index 0b606022dd..67fb45768e 100644 --- a/modules/webbrowser/cmake/webbrowser_helpers.cmake +++ b/modules/webbrowser/cmake/webbrowser_helpers.cmake @@ -160,7 +160,7 @@ function(run_cef_linux_config CEF_TARGET CEF_ROOT) endfunction () function(set_modules_dependency_on_cef_libraries LIB_DEPENDENT) - target_link_libraries(${LIB_DEPENDENT} INTERFACE libcef_lib) + target_link_libraries(${LIB_DEPENDENT} INTERFACE libcef_lib) target_link_libraries(${LIB_DEPENDENT} INTERFACE libcef_dll_wrapper) endfunction () diff --git a/shaders/PowerScaling/powerScalingMath.hglsl b/shaders/PowerScaling/powerScalingMath.hglsl index 8eb3c63b05..24dde9f6d3 100644 --- a/shaders/PowerScaling/powerScalingMath.hglsl +++ b/shaders/PowerScaling/powerScalingMath.hglsl @@ -29,8 +29,8 @@ const float k = 10.0; const float FLT_MAX = 1e38; // Not max but large enough for the purpose -float log10(float x) { - return log(x) / log(10.0); +float log10(float x) { + return log(x) / log(10.0); } vec4 psc_normalization(vec4 v) { diff --git a/shaders/PowerScaling/powerScaling_vs.hglsl b/shaders/PowerScaling/powerScaling_vs.hglsl index 6918e3d320..45b0aacb43 100644 --- a/shaders/PowerScaling/powerScaling_vs.hglsl +++ b/shaders/PowerScaling/powerScaling_vs.hglsl @@ -40,13 +40,13 @@ vec4 psc_to_meter(vec4 v1, vec2 v2) { // vertexPosition is returned as the transformed vertex in OS Camera Rig Space in PSC vec4 pscTransform(inout vec4 vertexPosition, mat4 modelTransform) { vec3 local_vertex_pos = mat3(modelTransform) * vertexPosition.xyz; - + // PSC addition; local vertex position and the object power scaled world position vertexPosition = psc_addition(vec4(local_vertex_pos,vertexPosition.w),objpos); - + // PSC addition; rotated and viewscaled vertex and the cameras negative position vertexPosition = psc_addition(vertexPosition,vec4(-campos.xyz,campos.w)); - + // rotate the camera vertexPosition.xyz = mat3(camrot) * vertexPosition.xyz; vec4 tmp = vertexPosition; @@ -58,10 +58,10 @@ vec4 pscTransform(inout vec4 vertexPosition, mat4 modelTransform) { else { vertexPosition = vec4(vertexPosition.xyz * scaling.x * pow(k, scaling.y), vertexPosition.w); } - + // project using the rescaled coordinates, tmp = psc_to_meter(tmp, scaling); - + // Return the vertex tranformed to OS Camera Rig Space in meters return tmp; } diff --git a/shaders/floatoperations.glsl b/shaders/floatoperations.glsl index 1f25c1c8cf..722dd135a7 100644 --- a/shaders/floatoperations.glsl +++ b/shaders/floatoperations.glsl @@ -53,7 +53,7 @@ float denormalizeFloat(float inpt) { /** * Compute the length of a vector. * Supporting huge vectors, where the square of any of the components is too large to be - * represented as a float. + * represented as a float. */ float safeLength(vec4 v) { float m = max(max(max(abs(v.x), abs(v.y)), abs(v.z)), abs(v.w)); diff --git a/shaders/framebuffer/fxaa.frag b/shaders/framebuffer/fxaa.frag index 66a7130086..06f85a6d84 100644 --- a/shaders/framebuffer/fxaa.frag +++ b/shaders/framebuffer/fxaa.frag @@ -24,14 +24,14 @@ #version __CONTEXT__ -#define EDGE_THRESHOLD_MIN 0.0312f +#define EDGE_THRESHOLD_MIN 0.0312f #define EDGE_THRESHOLD_MAX 0.125f #define ITERATIONS 12 #define SUBPIXEL_QUALITY 0.75f const float[12] QUALITY = float[](1.f, 1.f, 1.f, 1.f, 1.f, 1.5f, 2.f, 2.f, 2.f, 2.f, 4.f, 8.f); // const float[24] QUALITY = {2.f, 4.f, 6.f, 8.f, 10.f, 12.f, 12.f, 12.f, 12.f, 12.f, 14.f, 18.f, -// 18.f, 18.f, 18.f, 18.f, 18.f, 18.f, 18.f, 18.f, 18.f, 18.f, +// 18.f, 18.f, 18.f, 18.f, 18.f, 18.f, 18.f, 18.f, 18.f, 18.f, // 18.f, 18.f}; in vec2 texCoord; @@ -67,7 +67,7 @@ void main() { float pixelLumUp = getLum(textureOffset(renderedTexture, st, ivec2(0,1)).rgb); float pixelLumLeft = getLum(textureOffset(renderedTexture, st, ivec2(-1,0)).rgb); float pixelLumRight = getLum(textureOffset(renderedTexture, st, ivec2(1,0)).rgb); - + float pixelLumMin = min(pixelLumCenter, min(min(pixelLumDown, pixelLumUp), min(pixelLumLeft, pixelLumRight))); float pixelLumMax = max(pixelLumCenter, max(max(pixelLumDown, pixelLumUp), max(pixelLumLeft, pixelLumRight))); @@ -95,16 +95,16 @@ void main() { float pixelLumUpCorners = pixelLumUpRight + pixelLumUpLeft; // Compute an estimation of the gradient - float edgeHorizontal = abs(-2.0 * pixelLumLeft + pixelLumLeftCorners) + + float edgeHorizontal = abs(-2.0 * pixelLumLeft + pixelLumLeftCorners) + abs(-2.0 * pixelLumCenter + pixelLumDownUp) * 2.0 + abs(-2.0 * pixelLumRight + pixelLumRightCorners); - float edgeVertical = abs(-2.0 * pixelLumUp + pixelLumUpCorners) + + float edgeVertical = abs(-2.0 * pixelLumUp + pixelLumUpCorners) + abs(-2.0 * pixelLumCenter + pixelLumLeftRight) * 2.0 + abs(-2.0 * pixelLumDown + pixelLumDownCorners); // Choosing Edge Orientation bool isHorizontal = (edgeHorizontal >= edgeVertical); float pixelLum1 = isHorizontal ? pixelLumDown : pixelLumLeft; float pixelLum2 = isHorizontal ? pixelLumUp : pixelLumRight; - + // Gradients float gradient1 = pixelLum1 - pixelLumCenter; float gradient2 = pixelLum2 - pixelLumCenter; @@ -137,11 +137,11 @@ void main() { vec2 offset = isHorizontal ? vec2(inverseScreenSize.x, 0.0) : vec2(0.0, inverseScreenSize.y); - + vec2 uv1 = currentUv - offset; vec2 uv2 = currentUv + offset; - // Read the pixelLums at both current extremities of the exploration segment, + // Read the pixelLums at both current extremities of the exploration segment, // and compute the delta wrt to the local average pixelLum. float pixelLumEnd1 = getLum(texture(renderedTexture, uv1).rgb); float pixelLumEnd2 = getLum(texture(renderedTexture, uv2).rgb); @@ -158,7 +158,7 @@ void main() { if (!reached2) { uv2 += offset; - } + } // Still exploring if (!reachedBoth) { @@ -187,7 +187,7 @@ void main() { } // If both sides have been reached - if (reachedBoth) { + if (reachedBoth) { break; } } @@ -207,7 +207,7 @@ void main() { bool ispixelLumCenterSmaller = pixelLumCenter < pixelLumLocalAverage; - // If the pixelLum at center is smaller than at its neighbour, the delta pixelLum at + // If the pixelLum at center is smaller than at its neighbour, the delta pixelLum at // each end should be positive (same variation). bool correctVariation = ((isDirection1 ? pixelLumEnd1 : pixelLumEnd2) < 0.0) != ispixelLumCenterSmaller; @@ -215,9 +215,9 @@ void main() { float finalOffset = correctVariation ? pixelOffset : 0.0; // Subpixel antialiasing - float pixelLumAverage = (1.0/12.0) * (2.0 * (pixelLumDownUp + pixelLumLeftRight) + + float pixelLumAverage = (1.0/12.0) * (2.0 * (pixelLumDownUp + pixelLumLeftRight) + pixelLumLeftCorners + pixelLumRightCorners); - + float subPixelOffset1 = clamp(abs(pixelLumAverage - pixelLumCenter) / pixelLumRange, 0.0, 1.0); float subPixelOffset2 = (-2.0 * subPixelOffset1 + 3.0) * subPixelOffset1 * subPixelOffset1; float subPixelOffsetFinal = subPixelOffset2 * subPixelOffset2 * SUBPIXEL_QUALITY; diff --git a/shaders/framebuffer/hdrAndFiltering.frag b/shaders/framebuffer/hdrAndFiltering.frag index 93b7bd9347..b25214c26d 100644 --- a/shaders/framebuffer/hdrAndFiltering.frag +++ b/shaders/framebuffer/hdrAndFiltering.frag @@ -58,10 +58,10 @@ void main() { vec4 color = texture(hdrFeedingTexture, st); color.rgb *= blackoutFactor; - + // Applies TMO vec3 tColor = toneMappingOperator(color.rgb, hdrExposure); - + // Color control vec3 hsvColor = rgb2hsv(tColor); hsvColor.x = (hsvColor.x + Hue); diff --git a/shaders/framebuffer/raycastframebuffer.frag b/shaders/framebuffer/raycastframebuffer.frag index 64a240b97b..da1f4c00db 100644 --- a/shaders/framebuffer/raycastframebuffer.frag +++ b/shaders/framebuffer/raycastframebuffer.frag @@ -98,10 +98,10 @@ void main() { vec3 accumulatedAlpha = vec3(0.f); - for (nSteps = 0; - (accumulatedAlpha.r < ALPHA_LIMIT || accumulatedAlpha.g < ALPHA_LIMIT || - accumulatedAlpha.b < ALPHA_LIMIT) && nSteps < rayCastSteps; - ++nSteps) + for (nSteps = 0; + (accumulatedAlpha.r < ALPHA_LIMIT || accumulatedAlpha.g < ALPHA_LIMIT || + accumulatedAlpha.b < ALPHA_LIMIT) && nSteps < rayCastSteps; + ++nSteps) { if (nextStepSize < raycastDepth / 10000000000.f) { break; diff --git a/shaders/framebuffer/renderframebuffer.frag b/shaders/framebuffer/renderframebuffer.frag index 6b62ec8eeb..bf7f209a82 100644 --- a/shaders/framebuffer/renderframebuffer.frag +++ b/shaders/framebuffer/renderframebuffer.frag @@ -39,18 +39,18 @@ void main() { // Color is already in HDR space if (f.disableLDR2HDR || (disableHDRPipeline == 1)) { - _out_color_ = f.color; + _out_color_ = f.color; } else { - _out_color_ = vec4((log2(vec3(1.0) - (f.color.rgb - vec3(DeltaError)))/(-exposure)), f.color.a); + _out_color_ = vec4((log2(vec3(1.0) - (f.color.rgb - vec3(DeltaError)))/(-exposure)), f.color.a); } - + _out_color_.x = isnan(_out_color_.x) ? MaxValueColorBuffer : _out_color_.x; _out_color_.y = isnan(_out_color_.y) ? MaxValueColorBuffer : _out_color_.y; _out_color_.z = isnan(_out_color_.z) ? MaxValueColorBuffer : _out_color_.z; - + gPosition = f.gPosition; gNormal = f.gNormal; - + gl_FragDepth = normalizeFloat(f.depth); } diff --git a/src/documentation/documentation.cpp b/src/documentation/documentation.cpp index f5ba040530..3b66777c4c 100644 --- a/src/documentation/documentation.cpp +++ b/src/documentation/documentation.cpp @@ -158,7 +158,6 @@ void logError(const SpecificationError& error, std::string component) { } else { LERRORC(fmt::format("{}: {}", component, error.component), error.message); - } for (const documentation::TestResult::Offense& o : error.result.offenses) { LERRORC( diff --git a/src/interaction/touchbar.mm b/src/interaction/touchbar.mm index e0c193d772..3e67369240 100644 --- a/src/interaction/touchbar.mm +++ b/src/interaction/touchbar.mm @@ -74,7 +74,7 @@ NSArray* focusIdentifiers; // Set the default ordering of items. touchBar.defaultItemIdentifiers = objs; - + touchBar.customizationAllowedItemIdentifiers = objs; if ([focusIdentifiers count] > 0) { touchBar.principalItemIdentifier = [focusIdentifiers firstObject]; @@ -90,7 +90,7 @@ NSArray* focusIdentifiers; (void)touchBar; if ([identifier isEqualToString:pauseResultId]) { - NSButton* button = [NSButton + NSButton* button = [NSButton buttonWithTitle:NSLocalizedString( (global::timeManager->isPaused() ? @"Resume" : @"Pause"), @"" @@ -112,7 +112,7 @@ NSArray* focusIdentifiers; } if ([identifier isEqualToString:hideOnScreenTextId]) { - NSButton* button = [NSButton + NSButton* button = [NSButton buttonWithTitle:@"Toggle Text" target:self action:@selector(hideTextAction:) ]; @@ -241,7 +241,7 @@ void showTouchbar() { g_TouchBarDelegate = [[TouchBarDelegate alloc] init]; [NSApplication sharedApplication].automaticCustomizeTouchBarMenuItemEnabled = YES; } - + std::vector ns = global::renderEngine->scene()->allSceneGraphNodes(); std::sort( diff --git a/src/navigation/path.cpp b/src/navigation/path.cpp index ecadff6d0d..95a7f51830 100644 --- a/src/navigation/path.cpp +++ b/src/navigation/path.cpp @@ -192,7 +192,7 @@ bool Path::hasReachedEnd() const { return true; } - // @TODO (emmbr, 2022-11-07) Handle linear paths separately, as they might + // @TODO (emmbr, 2022-11-07) Handle linear paths separately, as they might // abort prematurely due to the "isPositionFinished" condition bool isPositionFinished = (_traveledDistance / pathLength()) >= 1.0; diff --git a/support/coding/check_style_guide.py b/support/coding/check_style_guide.py index ecd1dfe52b..ca3c3266bf 100644 --- a/support/coding/check_style_guide.py +++ b/support/coding/check_style_guide.py @@ -201,7 +201,7 @@ def check_naming_convention_component(lines, component): component_part = ifndef_symbol[2:2 + len(component)] if component_part != component.upper(): - return '#ifndef naming convention broken: ' + ifndef_symbol + ' || ' + component.upper() + return '#ifndef naming convention broken: ' + ifndef_symbol + ' || ' + component.upper() else: return '' @@ -246,7 +246,7 @@ def check_glm_header(lines, file): return '' index = [i for i,s in enumerate(lines) - if '#include ' in s or + if '#include ' in s or '#include "glm/glm.hpp>"' in s] if len(index) > 0: diff --git a/support/coding/codegen b/support/coding/codegen index 72abde18b4..59c93dbb13 160000 --- a/support/coding/codegen +++ b/support/coding/codegen @@ -1 +1 @@ -Subproject commit 72abde18b40cb8490fc173bb2e8043fd43a8b48b +Subproject commit 59c93dbb1389d607ed2e34b0c12373441b945d43 diff --git a/tests/test_documentation.cpp b/tests/test_documentation.cpp index 4aa618087b..bae134b1b9 100644 --- a/tests/test_documentation.cpp +++ b/tests/test_documentation.cpp @@ -276,7 +276,7 @@ TEST_CASE("Documentation: Constructor", "[documentation]") { TEST_CASE("Documentation: Initializer Constructor", "[documentation]") { using namespace openspace::documentation; - + Documentation doc { { // Basic Verifiers @@ -1037,7 +1037,7 @@ TEST_CASE("Documentation: Optional", "[documentation]") { positiveRes = testSpecification(doc, positive); CHECK(positiveRes.success); CHECK(positiveRes.offenses.empty()); - + ghoul::Dictionary negative; TestResult negativeRes = testSpecification(doc, negative); CHECK_FALSE(negativeRes.success); diff --git a/tests/test_lrucache.cpp b/tests/test_lrucache.cpp index 05355ea0fb..5603d0c276 100644 --- a/tests/test_lrucache.cpp +++ b/tests/test_lrucache.cpp @@ -46,7 +46,7 @@ namespace { return o << key.x << ", " << key.y; } - // custom specialization + // custom specialization struct DefaultHasherMyKey { unsigned long long operator()(const MyKey& s) const { return s.x ^ (s.y << 1); diff --git a/tests/test_profile.cpp b/tests/test_profile.cpp index 9f97f7a49e..ffe21b86c2 100644 --- a/tests/test_profile.cpp +++ b/tests/test_profile.cpp @@ -69,7 +69,7 @@ namespace openspace { lhs.name == rhs.name && lhs.value == rhs.value; } - + bool operator==(const openspace::Profile::Action& lhs, const openspace::Profile::Action& rhs) noexcept { @@ -180,7 +180,7 @@ TEST_CASE("Basic Meta (full)", "[profile]") { Profile ref; ref.version = Profile::CurrentVersion; - + Profile::Meta meta; meta.name = "name"; meta.version = "version"; diff --git a/tests/test_scriptscheduler.cpp b/tests/test_scriptscheduler.cpp index 2dbcac374a..a9652c4572 100644 --- a/tests/test_scriptscheduler.cpp +++ b/tests/test_scriptscheduler.cpp @@ -34,7 +34,7 @@ TEST_CASE("ScriptScheduler: Simple Forward", "[scriptscheduler]") { using namespace openspace; using namespace openspace::scripting; - + SpiceManager::initialize(); SpiceManager::ref().loadKernel( absPath("${TESTDIR}/SpiceTest/spicekernels/naif0008.tls").string() diff --git a/tests/test_spicemanager.cpp b/tests/test_spicemanager.cpp index debf12a936..44065b8a71 100644 --- a/tests/test_spicemanager.cpp +++ b/tests/test_spicemanager.cpp @@ -91,7 +91,7 @@ namespace { CHECK(k9 == 9); } - int loadLSKKernel() { + int loadLSKKernel() { int kernelID = openspace::SpiceManager::ref().loadKernel( absPath("${TESTDIR}/SpiceTest/spicekernels/naif0008.tls").string() ); @@ -99,7 +99,7 @@ namespace { return kernelID; } - int loadPCKKernel() { + int loadPCKKernel() { int kernelID = openspace::SpiceManager::ref().loadKernel( absPath("${TESTDIR}/SpiceTest/spicekernels/cpck05Mar2004.tpc").string() ); @@ -126,7 +126,7 @@ TEST_CASE("SpiceManager: Load Single Kernel", "[spicemanager]") { &spicemanager_constants::handle, &found ); - + CHECK(found == SPICETRUE); openspace::SpiceManager::deinitialize(); @@ -276,7 +276,7 @@ TEST_CASE("SpiceManager: Get Value From ID ND", "[spicemanager]") { CHECK_NOTHROW(openspace::SpiceManager::ref().getValue(target, valueND, returnND)); std::vector controlVec{ 189870.0, 256900.0, 9000.0, 9000.0, 0.000003 }; - + CHECK(controlVec.size() == returnND.size()); for (unsigned int i = 0; i < returnND.size(); ++i){ @@ -392,7 +392,7 @@ TEST_CASE("SpiceManager: Transform matrix", "[spicemanager]") { stateMatrix = openspace::SpiceManager::ref().stateTransformMatrix( "J2000", "IAU_PHOEBE", et) ); - + // check for matrix consistency for (int i = 0; i < 6; i++) { for (int j = 0; j < 6; j++) { @@ -452,7 +452,7 @@ TEST_CASE("SpiceManager: Get Position Transform Matrix", "[spicemanager]") { #endif position = positionMatrix * position; - // check transformed values match + // check transformed values match for (int i = 0; i < 3; i++) { CHECK(position[i] == Catch::Approx(state_t[i])); } @@ -465,7 +465,7 @@ TEST_CASE("SpiceManager: Get Field Of View", "[spicemanager]") { using openspace::SpiceManager; loadMetaKernel(); - + SpiceInt n; SpiceInt cassini_ID; double et; diff --git a/tests/test_timequantizer.cpp b/tests/test_timequantizer.cpp index 2a83989100..fb96eb018e 100644 --- a/tests/test_timequantizer.cpp +++ b/tests/test_timequantizer.cpp @@ -50,7 +50,7 @@ namespace { CHECK(t.ISO8601() == expected); } - void singleResolutionTest(globebrowsing::TimeQuantizer& tq, std::string resolution, + void singleResolutionTest(globebrowsing::TimeQuantizer& tq, std::string resolution, std::string expectedType, bool expectFailure) { std::string res; @@ -69,7 +69,7 @@ namespace { } } - void singleStartTimeTest(globebrowsing::TimeQuantizer& tq, std::string startTime, + void singleStartTimeTest(globebrowsing::TimeQuantizer& tq, std::string startTime, std::string expectedErrSubstring, bool expectFailure) { std::string res; From 3379393af756cccf5575f5823a769201c6d00adf Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Wed, 5 Apr 2023 17:58:18 +0200 Subject: [PATCH 19/31] Harmonize capitalization of action names (#2579) * Harmonize capitalization of action names (closes #2215) * Fix confusion between delta time and simulation time (closes #2536) --- data/assets/actions/planets/mars_layers.asset | 6 ++-- .../actions/planets/planet_lighting.asset | 4 +-- .../planets/scale_planets_and_moons.asset | 2 +- .../actions/system/undo_event_fades.asset | 2 +- .../trails/on_off_all_minor_moons.asset | 4 +-- .../trails/toggle_all_minor_moon_trails.asset | 2 +- .../actions/trails/toggle_all_trails.asset | 6 ++-- ...gle_all_trails_planets_moons_instant.asset | 2 +- data/assets/actions/trails/toggle_trail.asset | 6 ++-- .../trails/toggle_trails_planets_moons.asset | 6 ++-- .../actions/trails/trail_appearance.asset | 10 +++--- .../educational/scale/eiffeltower.asset | 4 +-- data/assets/examples/approachevents.asset | 2 +- .../constellations/constellation_art.asset | 10 +++--- .../heliosphere/bastille_day/fieldlines.asset | 2 +- .../missions/apollo/11/lem_flipbook.asset | 4 +-- .../missions/apollo/insignias_map.asset | 4 +-- .../missions/jwst/toggle_trail.asset | 2 +- .../missions/newhorizons/actions.asset | 22 ++++++------- .../missions/osirisrex/actions.asset | 2 +- .../missions/perseverance/actions.asset | 2 +- .../missions/rosetta/actions.asset | 2 +- .../missions/voyager/actions.asset | 6 ++-- .../planets/jupiter/minor_moons.asset | 4 +-- .../planets/neptune/minor_moons.asset | 4 +-- .../planets/saturn/minor_moons.asset | 4 +-- .../planets/uranus/minor_moons.asset | 4 +-- .../scene/solarsystem/sun/EUV_layer.asset | 2 +- data/assets/util/default_keybindings.asset | 32 +++++++++---------- data/assets/util/testing_keybindings.asset | 2 +- src/util/timemanager.cpp | 4 +-- 31 files changed, 84 insertions(+), 84 deletions(-) diff --git a/data/assets/actions/planets/mars_layers.asset b/data/assets/actions/planets/mars_layers.asset index aec3d7ec86..8eccca5000 100644 --- a/data/assets/actions/planets/mars_layers.asset +++ b/data/assets/actions/planets/mars_layers.asset @@ -13,7 +13,7 @@ asset.export("ctx_enable_action", ctx_enable_action.Identifier) local ctx_disable_action = { Identifier = "os.mars.ctx.fadedout", - Name = "Fade out CTX Layer", + Name = "Fade out CTX layer", Command = [[openspace.setPropertyValueSingle("Scene.Mars.Renderable.Layers.ColorLayers.CTX_blended_01.Settings.Opacity", 0, 2.0)]], Documentation = "Fade out CTX", GuiPath = "/Solar System/Mars", @@ -46,7 +46,7 @@ asset.export("hirise_disable_action", hirise_disable_action.Identifier) local lshirise_enable_action = { Identifier = "os.mars.lshirise.fadein", - Name = "Fade in HiRISE Local Set", + Name = "Fade in HiRISE local set", Command = [[ openspace.setPropertyValueSingle("Scene.Mars.Renderable.Layers.ColorLayers.HiRISE-LS.Enabled", true) openspace.setPropertyValueSingle("Scene.Mars.Renderable.Layers.HeightLayers.HiRISE-LS-DEM.Enabled", true) @@ -60,7 +60,7 @@ asset.export("lshirise_enable_action", lshirise_enable_action.Identifier) local lshirise_disable_action = { Identifier = "os.mars.lshirise.fadedout", - Name = "Fade out HiRISE Local Set", + Name = "Fade out HiRISE local set", Command = [[openspace.setPropertyValueSingle("Scene.Mars.Renderable.Layers.ColorLayers.HiRISE-LS.Settings.Opacity", 0, 2.0) openspace.setPropertyValueSingle("Scene.Mars.Renderable.Layers.HeightLayers.HiRISE-LS-DEM.Enabled", false)]], Documentation = "Fade out HiRISE local set layer for Mars", diff --git a/data/assets/actions/planets/planet_lighting.asset b/data/assets/actions/planets/planet_lighting.asset index b3b2463181..f5835e6c9b 100644 --- a/data/assets/actions/planets/planet_lighting.asset +++ b/data/assets/actions/planets/planet_lighting.asset @@ -45,11 +45,11 @@ end local function getIlluminationAction(node, node_lower, global) local actionString = "_standard_illumination" - local actionName = "Standard Illumination" + local actionName = "standard illumination" local actionCommand = getIlluminationCommand(node, global) if (global) then actionString = "_global_illumination" - actionName = "Global Illumination" + actionName = "global illumination" actionCommand = getIlluminationCommand(node, global) end diff --git a/data/assets/actions/planets/scale_planets_and_moons.asset b/data/assets/actions/planets/scale_planets_and_moons.asset index b5cb38d471..629fdfca27 100644 --- a/data/assets/actions/planets/scale_planets_and_moons.asset +++ b/data/assets/actions/planets/scale_planets_and_moons.asset @@ -28,7 +28,7 @@ end local function getToggleScaleAction(identifier, scale, name, speedup, speedown) local action = { Identifier = "os.toggle_" .. string.gsub(name, "%s+", "") .. "_scale", - Name = "Toggle " .. name .. " Scale", + Name = "Toggle " .. name .. " scale", Command = [[ local list = openspace.getProperty("]] .. identifier .. [[.Scale.Scale"); if #list == 0 then diff --git a/data/assets/actions/system/undo_event_fades.asset b/data/assets/actions/system/undo_event_fades.asset index ed8249386c..d3ec3bab5a 100644 --- a/data/assets/actions/system/undo_event_fades.asset +++ b/data/assets/actions/system/undo_event_fades.asset @@ -1,6 +1,6 @@ local undo_event_fade = { Identifier = "os.undo_event_fade", - Name = "Undo All Event Fading", + Name = "Undo all event fading", Command = [[ openspace.setPropertyValue("Scene.*.Renderable.Fade", 1.0, 0.5); ]], diff --git a/data/assets/actions/trails/on_off_all_minor_moons.asset b/data/assets/actions/trails/on_off_all_minor_moons.asset index 08bdccaa7d..dcc7ccf9ed 100644 --- a/data/assets/actions/trails/on_off_all_minor_moons.asset +++ b/data/assets/actions/trails/on_off_all_minor_moons.asset @@ -1,6 +1,6 @@ local minormoons_on = { Identifier = "os_default.minormoons_on", - Name = "Turn ON minor moons and trails", + Name = "Turn on minor moons and trails", Command = [[ local trails = openspace.getProperty('{moonTrail_minor}.Renderable.Enabled'); local trails_fade = openspace.getProperty('{moonTrail_minor}.Renderable.Fade'); @@ -25,7 +25,7 @@ local minormoons_on = { local minormoons_off = { Identifier = "os_default.minormoons_off", - Name = "Turn OFF minor moons and trails", + Name = "Turn off minor moons and trails", Command = [[ local trails = openspace.getProperty('{moonTrail_minor}.Renderable.Enabled'); local trails_fade = openspace.getProperty('{moonTrail_minor}.Renderable.Fade'); diff --git a/data/assets/actions/trails/toggle_all_minor_moon_trails.asset b/data/assets/actions/trails/toggle_all_minor_moon_trails.asset index 0de865f09e..7d5333768c 100644 --- a/data/assets/actions/trails/toggle_all_minor_moon_trails.asset +++ b/data/assets/actions/trails/toggle_all_minor_moon_trails.asset @@ -1,6 +1,6 @@ local toggle_minormoon_trails = { Identifier = "os_default.toggle_minormoon_trails", - Name = "Toggle Minor Moon Trails", + Name = "Toggle minor moon trails", Command = [[ local list = openspace.getProperty('{moonTrail_minor}.Renderable.Enabled'); for _,v in pairs(list) do diff --git a/data/assets/actions/trails/toggle_all_trails.asset b/data/assets/actions/trails/toggle_all_trails.asset index dbe39e362a..05f09cf8f3 100644 --- a/data/assets/actions/trails/toggle_all_trails.asset +++ b/data/assets/actions/trails/toggle_all_trails.asset @@ -1,6 +1,6 @@ local fade_up_trails = { Identifier = "os.fade_up_trails", - Name = "Show All Trails", + Name = "Show all trails", Command = [[ local capList = openspace.getProperty("Scene.*Trail.Renderable.Fade"); for _,v in ipairs(capList) do @@ -19,7 +19,7 @@ asset.export("fade_up_trails", fade_up_trails.Identifier) local fade_down_trails = { Identifier = "os.fade_down_trails", - Name = "Hide All Trails", + Name = "Hide all trails", Command = [[ local capList = openspace.getProperty("Scene.*Trail.Renderable.Fade"); for _,v in ipairs(capList) do @@ -38,7 +38,7 @@ asset.export("fade_down_trails", fade_down_trails.Identifier) local toggle_trails = { Identifier = "os.toggle_trails", - Name = "Toggle All Trails", + Name = "Toggle all trails", Command = [[ local capList = openspace.getProperty("*Trail.Renderable.Fade"); local list = openspace.getProperty("*trail.Renderable.Fade"); diff --git a/data/assets/actions/trails/toggle_all_trails_planets_moons_instant.asset b/data/assets/actions/trails/toggle_all_trails_planets_moons_instant.asset index a9bbd70335..5e7e423a4a 100644 --- a/data/assets/actions/trails/toggle_all_trails_planets_moons_instant.asset +++ b/data/assets/actions/trails/toggle_all_trails_planets_moons_instant.asset @@ -1,6 +1,6 @@ local toggle_trails = { Identifier = "os_default.toggle_trails", - Name = "Toggle Planet and Moon Trails (Instant)", + Name = "Toggle planet and moon trails (instant)", Command = [[ local list = openspace.getProperty("{planetTrail_solarSystem}.Renderable.Enabled"); for _,v in pairs(list) do openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) end diff --git a/data/assets/actions/trails/toggle_trail.asset b/data/assets/actions/trails/toggle_trail.asset index ab5db95231..0be657b127 100644 --- a/data/assets/actions/trails/toggle_trail.asset +++ b/data/assets/actions/trails/toggle_trail.asset @@ -1,6 +1,6 @@ local toggle_trail = { Identifier = "os.toggle_trail", - Name = "Toggle Trail", + Name = "Toggle trail", Command = [[ local node if is_declared("args") then @@ -48,7 +48,7 @@ asset.export("toggle_trail", toggle_trail.Identifier) local hide_trail = { Identifier = "os.hide_trail", - Name = "Hide Trail", + Name = "Hide trail", Command = [[ local node if is_declared("args") then @@ -73,7 +73,7 @@ asset.export("hide_trail", hide_trail.Identifier) local show_trail = { Identifier = "os.show_trail", - Name = "Show Trail", + Name = "Show trail", Command = [[ local node if is_declared("args") then diff --git a/data/assets/actions/trails/toggle_trails_planets_moons.asset b/data/assets/actions/trails/toggle_trails_planets_moons.asset index 769bb13afa..7d014c710e 100644 --- a/data/assets/actions/trails/toggle_trails_planets_moons.asset +++ b/data/assets/actions/trails/toggle_trails_planets_moons.asset @@ -1,6 +1,6 @@ local fade_up_trails = { Identifier = "os.fade_up_trails_planets_moon", - Name = "Show Planet and Moon Trails", + Name = "Show planet and moon trails", Command = [[ openspace.setPropertyValue("{planetTrail_solarSystem}.Renderable.Fade", 1, 2); openspace.setPropertyValue("{moonTrail_solarSystem}.Renderable.Fade", 1, 2); @@ -13,7 +13,7 @@ asset.export("fade_up_trails", fade_up_trails.Identifier) local fade_down_trails = { Identifier = "os.fade_down_trails_planets_moon", - Name = "Hide Planet and Moon Trails", + Name = "Hide planet and moon trails", Command = [[ openspace.setPropertyValue("{planetTrail_solarSystem}.Renderable.Fade", 0, 2); openspace.setPropertyValue("{moonTrail_solarSystem}.Renderable.Fade", 0, 2); @@ -26,7 +26,7 @@ asset.export("fade_down_trails", fade_down_trails.Identifier) local toggle_trails = { Identifier = "os.toggle_trails_planets_moon", - Name = "Toggle Planet and Moon Trails", + Name = "Toggle planet and moon trails", Command = [[ local capList = openspace.getProperty("{planetTrail_solarSystem}.Renderable.Fade"); local list = openspace.getProperty("{moonTrail_solarSystem}.Renderable.Fade"); diff --git a/data/assets/actions/trails/trail_appearance.asset b/data/assets/actions/trails/trail_appearance.asset index bf7ec94f80..5e1daa1db0 100644 --- a/data/assets/actions/trails/trail_appearance.asset +++ b/data/assets/actions/trails/trail_appearance.asset @@ -1,6 +1,6 @@ local enable_trail_fading = { Identifier = "os.enable_trail_fading", - Name = "Enable Trail Fading", + Name = "Enable trail fading", Command = [[ openspace.setPropertyValue("Scene.*Trail.Renderable.Appearance.EnableFade", true); openspace.setPropertyValue("Scene.*trail.Renderable.Appearance.EnableFade", true); @@ -13,7 +13,7 @@ asset.export("enable_trail_fading", enable_trail_fading.Identifier) local disable_trail_fading = { Identifier = "os.disable_trail_fading", - Name = "Disable Trail Fading", + Name = "Disable trail fading", Command = [[ openspace.setPropertyValue("Scene.*Trail.Renderable.Appearance.EnableFade", false); openspace.setPropertyValue("Scene.*trail.Renderable.Appearance.EnableFade", false); @@ -26,7 +26,7 @@ asset.export("disable_trail_fading", disable_trail_fading.Identifier) local toggle_trail_fading = { Identifier = "os.toggle_trail_fading", - Name = "Toggle Trail Fading", + Name = "Toggle trail fading", Command = [[ local capList = openspace.getProperty("*Trail.Renderable.Appearance.EnableFade") local list = openspace.getProperty("*trail.Renderable.Appearance.EnableFade") @@ -69,7 +69,7 @@ local function getHighlightAction(identifierString, value, nameString) end local action = { Identifier = "os." .. actionString .. identifierString .. "_trail", - Name = actionString .. " " .. nameString .. " Trail", + Name = actionString .. " " .. nameString .. " trail", Command = getHightlightCommand(identifierString, value), Documentation = "Animates the trail fade of " .. nameString .. "'s Trail", GuiPath = "/Trails/Appearance", @@ -81,7 +81,7 @@ end local function getToggleHighlightAction(identifierString, value, nameString) local action = { Identifier = "os.toggle_" .. identifierString .. "_trail_highlight", - Name = "Toggle " .. nameString .. " Trail Highlight", + Name = "Toggle " .. nameString .. " trail highlight", Command = [[ local list = openspace.getProperty("]] .. identifierString .. [[.Renderable.Appearance.Fade"); if #list == 0 then diff --git a/data/assets/educational/scale/eiffeltower.asset b/data/assets/educational/scale/eiffeltower.asset index 097da8f3b5..9b16c63579 100644 --- a/data/assets/educational/scale/eiffeltower.asset +++ b/data/assets/educational/scale/eiffeltower.asset @@ -48,7 +48,7 @@ local eiffelTower = { local updatePositionAction = { Identifier = "os.drop_eiffel_tower", - Name = "Drop Eiffel Tower under camera", + Name = "Drop Eiffel tower under camera", Command = [[ local lat, lon, alt = openspace.globebrowsing.getGeoPositionForCamera(); local camera = openspace.navigation.getNavigationState(); @@ -67,7 +67,7 @@ local updatePositionAction = { local resetPositionAction = { Identifier = "os.reset_eiffel_tower", - Name = "Reset Eiffel Tower position", + Name = "Reset Eiffel tower position", Command = [[ -- same position as above local lat = 48.85824 diff --git a/data/assets/examples/approachevents.asset b/data/assets/examples/approachevents.asset index 821a40e6e3..54291995a2 100644 --- a/data/assets/examples/approachevents.asset +++ b/data/assets/examples/approachevents.asset @@ -3,7 +3,7 @@ local transforms = asset.require("scene/solarsystem/planets/earth/transforms") local generic_action = { Identifier = "os.example.generic", - Name = "Generic Example", + Name = "Generic example", Command = [[ openspace.printInfo("Node: " .. args.Node) openspace.printInfo("Transition: " .. args.Transition) diff --git a/data/assets/scene/milkyway/constellations/constellation_art.asset b/data/assets/scene/milkyway/constellations/constellation_art.asset index 0bf65abd00..a83d44f5ed 100644 --- a/data/assets/scene/milkyway/constellations/constellation_art.asset +++ b/data/assets/scene/milkyway/constellations/constellation_art.asset @@ -124,7 +124,7 @@ end local show_art = { Identifier = "constellation_art.show_art", - Name = "Show Constellation Art", + Name = "Show constellation art", Command = [[ openspace.setPropertyValue("Scene.ImageConstellation*.Renderable.Opacity", 0); openspace.setPropertyValue("Scene.ImageConstellation*.Renderable.Enabled", true); @@ -138,7 +138,7 @@ asset.export("ShowArtAction", show_art) local hide_art = { Identifier = "constellation_art.hide_art", - Name = "Hide Constellation Art", + Name = "Hide constellation art", Command = [[openspace.setPropertyValue("Scene.ImageConstellation*.Renderable.Opacity", 0, 2)]], Documentation = "Fades out constellation artwork", GuiPath = "/Rendering", @@ -148,7 +148,7 @@ asset.export("HideArtAction", hide_art) local disable_art = { Identifier = "constellation_art.disable_art", - Name = "Disable Constellation Art", + Name = "Disable constellation art", Command = [[openspace.setPropertyValue("Scene.ImageConstellation*.Renderable.Enabled", false)]], Documentation = "Disable constellation artwork", GuiPath = "/Rendering", @@ -158,7 +158,7 @@ asset.export("DisableArtAction", disable_art) local show_zodiac_art = { Identifier = "constellation_art.show_zodiac_art", - Name = "Show Zodiac Art", + Name = "Show zodiac art", Command = [[ openspace.setPropertyValue("Scene.ImageConstellation*.Renderable.Opacity", 0); openspace.setPropertyValue("{zodiac}.Renderable.Enabled",true); @@ -172,7 +172,7 @@ asset.export("ShowZodiacArt", show_zodiac_art) local hide_zodiac_art = { Identifier = "constellation_art.hide_zodiac_art", - Name = "Hide Zodiac Art", + Name = "Hide zodiac art", Command = [[openspace.setPropertyValue("{zodiac}.Renderable.Opacity", 0, 2)]], Documentation = "fades down zodiac art work", GuiPath = "/Rendering", diff --git a/data/assets/scene/solarsystem/heliosphere/bastille_day/fieldlines.asset b/data/assets/scene/solarsystem/heliosphere/bastille_day/fieldlines.asset index cfae12d725..14fbe8ff1f 100644 --- a/data/assets/scene/solarsystem/heliosphere/bastille_day/fieldlines.asset +++ b/data/assets/scene/solarsystem/heliosphere/bastille_day/fieldlines.asset @@ -49,7 +49,7 @@ local fieldlines = { local toggle_fieldlines = { Identifier = "os.events.bastilleday.fieldlines.togglefieldlines", - Name = "Toggle Fieldlines", + Name = "Toggle fieldlines", Command = propertyHelper.invert("Scene.MAS-MHD-Fieldlines-bastille-day-2000.Renderable.Enabled"), Documentation = "Toggle fieldline rendering of CME", GuiPath = "/Bastille-Day 2000", diff --git a/data/assets/scene/solarsystem/missions/apollo/11/lem_flipbook.asset b/data/assets/scene/solarsystem/missions/apollo/11/lem_flipbook.asset index 3172e6c417..4e94a13036 100644 --- a/data/assets/scene/solarsystem/missions/apollo/11/lem_flipbook.asset +++ b/data/assets/scene/solarsystem/missions/apollo/11/lem_flipbook.asset @@ -23,7 +23,7 @@ asset.onInitialize(function () rawset(_G, "nextFlip", function() helper.nextFlipbookPage(flipbook) end) openspace.action.registerAction({ Identifier = "lem_flipbook.next_flip", - Name = "Next A11 flip", + Name = "Next Apollo 11 flip", Command = "nextFlip()", Documentation = "Show the next Apollo 11 flipbook image", GuiPath = "/Missions/Apollo/11", @@ -33,7 +33,7 @@ asset.onInitialize(function () rawset(_G, "previousFlip", function() helper.previousFlipbookPage(flipbook) end) openspace.action.registerAction({ Identifier = "lem_flipbook.prev_flip", - Name = "Prev A11 flip", + Name = "Prev Apollo 11 flip", Command = "previousFlip()", Documentation = "Show the previous Apollo 11 flipbook image", GuiPath = "/Missions/Apollo/11", diff --git a/data/assets/scene/solarsystem/missions/apollo/insignias_map.asset b/data/assets/scene/solarsystem/missions/apollo/insignias_map.asset index 291eb01e04..71b3372e23 100644 --- a/data/assets/scene/solarsystem/missions/apollo/insignias_map.asset +++ b/data/assets/scene/solarsystem/missions/apollo/insignias_map.asset @@ -85,7 +85,7 @@ end local show_apollo_labels = { Identifier = "apollo_insignias.show_insignias", - Name = "Show Apollo Landing Labels", + Name = "Show Apollo landing labels", Command = [[openspace.setPropertyValue("Scene.Apollo*Insignia.Renderable.Opacity", 1, 0.5)]], Documentation = "Show patches of the Apollo missions on their respective landing sites", GuiPath = "/Missions/Apollo", @@ -94,7 +94,7 @@ local show_apollo_labels = { local hide_apollo_labels = { Identifier = "apollo_insignias.hide_insignias", - Name = "Hide Apollo Landing Labels", + Name = "Hide Apollo landing labels", Command = [[openspace.setPropertyValue("Scene.Apollo*Insignia.Renderable.Opacity", 0, 0.5)]], Documentation = "Hide patches of the Apollo missions on their respective landing sites", GuiPath = "/Missions/Apollo", diff --git a/data/assets/scene/solarsystem/missions/jwst/toggle_trail.asset b/data/assets/scene/solarsystem/missions/jwst/toggle_trail.asset index 37c8900d1c..0dd57b1d1e 100644 --- a/data/assets/scene/solarsystem/missions/jwst/toggle_trail.asset +++ b/data/assets/scene/solarsystem/missions/jwst/toggle_trail.asset @@ -1,6 +1,6 @@ local toggle_trail = { Identifier = "event.jwst.toggle_trail", - Name = "Toggle JWST Trail (Auto)", + Name = "Toggle JWST trail (auto)", Command = [[ local node if is_declared("args") then diff --git a/data/assets/scene/solarsystem/missions/newhorizons/actions.asset b/data/assets/scene/solarsystem/missions/newhorizons/actions.asset index 4b24ca4420..5445b9fda0 100644 --- a/data/assets/scene/solarsystem/missions/newhorizons/actions.asset +++ b/data/assets/scene/solarsystem/missions/newhorizons/actions.asset @@ -13,7 +13,7 @@ local focus_newhorizons = { local anchor_nh_aim_pluto = { Identifier = "os.missions.newhorizons.aimpluto", - Name = "Anchor NH, Aim Pluto", + Name = "Anchor NH, Aim Pluto", Command = [[ openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'NewHorizons'); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', 'Pluto'); @@ -52,7 +52,7 @@ local focus_charon = { local toggle_nh_imageprojection = { Identifier = "os.missions.newhorizons.toggleimageprojection", - Name = "Toggle NH Image Projection", + Name = "Toggle NH image projection", Command = [[ local enabled = openspace.getPropertyValue('Scene.PlutoProjection.Renderable.ProjectionComponent.PerformProjection'); openspace.setPropertyValue('Scene.PlutoProjection.Renderable.ProjectionComponent.PerformProjection', not enabled); @@ -90,7 +90,7 @@ local approach_time_and_projections = { local increase_hightmap_pluto = { Identifier = "os.missions.newhorizons.pluto.increasehightmap", - Name = "Pluto HeightExaggeration +", + Name = "Pluto height exaggeration +", Command = [[ openspace.setPropertyValueSingle("Scene.PlutoProjection.Renderable.HeightExaggeration", openspace.getPropertyValue("Scene.PlutoProjection.Renderable.HeightExaggeration") + 5000); ]], @@ -101,7 +101,7 @@ local increase_hightmap_pluto = { local decrease_hightmap_pluto = { Identifier = "os.missions.newhorizons.pluto.decreasehightmap", - Name = "Pluto HeightExaggeration -", + Name = "Pluto height exaggeration -", Command = [[ openspace.setPropertyValueSingle("Scene.PlutoProjection.Renderable.HeightExaggeration", openspace.getPropertyValue("Scene.PlutoProjection.Renderable.HeightExaggeration") - 5000); ]], @@ -112,7 +112,7 @@ local decrease_hightmap_pluto = { local increase_hightmap_charon = { Identifier = "os.missions.newhorizons.charon.increasehightmap", - Name = "Charon HeightExaggeration +", + Name = "Charon height exaggeration +", Command = [[ openspace.setPropertyValueSingle("Scene.CharonProjection.Renderable.HeightExaggeration", openspace.getPropertyValue("Scene.CharonProjection.Renderable.HeightExaggeration") + 5000); ]], @@ -123,7 +123,7 @@ local increase_hightmap_charon = { local decrease_hightmap_charon = { Identifier = "os.missions.newhorizons.charon.decreasehightmap", - Name = "Charon HeightExaggeration -", + Name = "Charon height exaggeration -", Command = [[ openspace.setPropertyValueSingle("Scene.CharonProjection.Renderable.HeightExaggeration", openspace.getPropertyValue("Scene.CharonProjection.Renderable.HeightExaggeration") - 5000); ]], @@ -134,7 +134,7 @@ local decrease_hightmap_charon = { local toggle_pluto_trail = { Identifier = "os.missions.newhorizons.pluto.toggletrail", - Name = "Toggle Pluto Trail", + Name = "Toggle Pluto trail", Command = [[ openspace.setPropertyValueSingle('Scene.PlutoBarycentricTrail.Renderable.Enabled', not openspace.getPropertyValue('Scene.PlutoBarycentricTrail.Renderable.Enabled')); ]], @@ -145,7 +145,7 @@ local toggle_pluto_trail = { local toggle_pluto_labels = { Identifier = "os.missions.newhorizons.pluto.togglelabels", - Name = "Toggle Pluto Labels", + Name = "Toggle Pluto labels", Command = [[ local list = {"Scene.PlutoText.Renderable.Enabled", "Scene.CharonText.Renderable.Enabled", "Scene.HydraText.Renderable.Enabled", "Scene.NixText.Renderable.Enabled", "Scene.KerberosText.Renderable.Enabled", "Scene.StyxText.Renderable.Enabled"}; for _,v in pairs(list) do @@ -159,7 +159,7 @@ local toggle_pluto_labels = { local toggle_nh_labels = { Identifier = "os.missions.newhorizons.togglelabels", - Name = "Toggle New Horizons Labels", + Name = "Toggle New Horizons labels", Command = [[ local v = openspace.getPropertyValue("Scene.Labels.Renderable.Opacity"); if v <= 0.5 then @@ -175,7 +175,7 @@ local toggle_nh_labels = { local toggle_shadows = { Identifier = "os.missions.newhorizons.toggleshadows", - Name = "Toggle Shadows", + Name = "Toggle shadows", Command = [[ openspace.setPropertyValueSingle('Scene.PlutoShadow.Renderable.Enabled', not openspace.getPropertyValue('Scene.PlutoShadow.Renderable.Enabled')); openspace.setPropertyValueSingle('Scene.CharonShadow.Renderable.Enabled', not openspace.getPropertyValue('Scene.CharonShadow.Renderable.Enabled')); @@ -187,7 +187,7 @@ local toggle_shadows = { local toggle_nh_trail = { Identifier = "os.missions.newhorizons.toggletrail", - Name = "Toggle NH Trail", + Name = "Toggle New Horizons trail", Command = [[ openspace.setPropertyValueSingle('Scene.NewHorizonsTrailPluto.Renderable.Enabled', not openspace.getPropertyValue('Scene.NewHorizonsTrailPluto.Renderable.Enabled')); ]], diff --git a/data/assets/scene/solarsystem/missions/osirisrex/actions.asset b/data/assets/scene/solarsystem/missions/osirisrex/actions.asset index daa57fdefd..8dea2b19c0 100644 --- a/data/assets/scene/solarsystem/missions/osirisrex/actions.asset +++ b/data/assets/scene/solarsystem/missions/osirisrex/actions.asset @@ -1,6 +1,6 @@ local focus_osirisrex = { Identifier = "os.missions.osirisrex.focus", - Name = "Focus on OsirisRex", + Name = "Focus on OsirisREx", Command = [[ openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Anchor', 'OsirisRex'); openspace.setPropertyValue('NavigationHandler.OrbitalNavigator.Aim', ''); diff --git a/data/assets/scene/solarsystem/missions/perseverance/actions.asset b/data/assets/scene/solarsystem/missions/perseverance/actions.asset index a2fb85abc1..aa8a769fa5 100644 --- a/data/assets/scene/solarsystem/missions/perseverance/actions.asset +++ b/data/assets/scene/solarsystem/missions/perseverance/actions.asset @@ -1,6 +1,6 @@ local setup_perseverance = { Identifier = "os.missions.perseverance.setup", - Name = "Setup and Goto Perseverance", + Name = "Setup and go to Perseverance", Command = [[ openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.Mola_Utah.Settings.Offset', -1685.5); openspace.setPropertyValueSingle('Scene.Mars.Renderable.Layers.HeightLayers.HiRISE-LS-DEM.Settings.Offset', -1686.0); diff --git a/data/assets/scene/solarsystem/missions/rosetta/actions.asset b/data/assets/scene/solarsystem/missions/rosetta/actions.asset index 1037ae73e4..39b8d0f0e2 100644 --- a/data/assets/scene/solarsystem/missions/rosetta/actions.asset +++ b/data/assets/scene/solarsystem/missions/rosetta/actions.asset @@ -2,7 +2,7 @@ local toggle_outer_planetary_trails = { Identifier = "os.missions.rosetta.toggleouterplanetarytrails", Name = "Toggle outer planetary trails", Command = [[ - local list = openspace.getProperty('{planetTrail_giants}.Renderable.Enabled'); + local list = openspace.getProperty('{planetTrail_giants}.Renderable.Enabled') for _,v in pairs(list) do openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) end diff --git a/data/assets/scene/solarsystem/missions/voyager/actions.asset b/data/assets/scene/solarsystem/missions/voyager/actions.asset index a3c34764f0..750aa75786 100644 --- a/data/assets/scene/solarsystem/missions/voyager/actions.asset +++ b/data/assets/scene/solarsystem/missions/voyager/actions.asset @@ -1,6 +1,6 @@ local jupiter_approach = { Identifier = "os.missions.voyager.setup.jupiterapproach", - Name = "Set Jupiter Approach", + Name = "Set Jupiter approach", Command = [[ openspace.time.setTime('1979-01-20T01:32:07.914') ]], @@ -11,7 +11,7 @@ local jupiter_approach = { local saturn_approach = { Identifier = "os.missions.voyager.setup.saturnapproach", - Name = "Set Saturn Approach", + Name = "Set Saturn approach", Command = [[ openspace.time.setTime('1980-10-20T07:43:42.645'); ]], @@ -50,7 +50,7 @@ local toggle_minormoon_trails = { Identifier = "os.missions.voyager.toggleminormoontrails", Name = "Toggle minor trails", Command = [[ - local list = openspace.getProperty('{moonTrail_minor}.Renderable.Enabled'); + local list = openspace.getProperty('{moonTrail_minor}.Renderable.Enabled') for _,v in pairs(list) do openspace.setPropertyValueSingle(v, not openspace.getPropertyValue(v)) end diff --git a/data/assets/scene/solarsystem/planets/jupiter/minor_moons.asset b/data/assets/scene/solarsystem/planets/jupiter/minor_moons.asset index 99b5e07a60..8d98f3d84b 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/minor_moons.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/minor_moons.asset @@ -9,7 +9,7 @@ asset.require("./minor/themisto_group") local minormoons_on = { Identifier = "os.solarsystem.jupiter.minormoonson", - Name = "Turn ON minor moons and trails", + Name = "Turn on minor moons and trails", Command = [[ local trails = openspace.getProperty('{moonTrail_minor_jupiter}.Renderable.Enabled'); local trails_fade = openspace.getProperty('{moonTrail_minor_jupiter}.Renderable.Fade'); @@ -34,7 +34,7 @@ local minormoons_on = { local minormoons_off = { Identifier = "os.solarsystem.jupiter.minormoonsoff", - Name = "Turn OFF minors moon and trails", + Name = "Turn off minors moon and trails", Command = [[ local trails = openspace.getProperty('{moonTrail_minor_jupiter}.Renderable.Enabled'); local trails_fade = openspace.getProperty('{moonTrail_minor_jupiter}.Renderable.Fade'); diff --git a/data/assets/scene/solarsystem/planets/neptune/minor_moons.asset b/data/assets/scene/solarsystem/planets/neptune/minor_moons.asset index 27b19fce35..d32b5195dd 100644 --- a/data/assets/scene/solarsystem/planets/neptune/minor_moons.asset +++ b/data/assets/scene/solarsystem/planets/neptune/minor_moons.asset @@ -4,7 +4,7 @@ asset.require("./irregular_retrograde_moons") local minormoons_on = { Identifier = "os.solarsystem.neptune.minormoonson", - Name = "Turn ON minor moons and trails", + Name = "Turn on minor moons and trails", Command = [[ local trails = openspace.getProperty('{moonTrail_minor_neptune}.Renderable.Enabled'); local trails_fade = openspace.getProperty('{moonTrail_minor_neptune}.Renderable.Fade'); @@ -29,7 +29,7 @@ local minormoons_on = { local minormoons_off = { Identifier = "os.solarsystem.neptune.minormoonsoff", - Name = "Turn OFF minors moon and trails", + Name = "Turn off minors moon and trails", Command = [[ local trails = openspace.getProperty('{moonTrail_minor_neptune}.Renderable.Enabled'); local trails_fade = openspace.getProperty('{moonTrail_minor_neptune}.Renderable.Fade'); diff --git a/data/assets/scene/solarsystem/planets/saturn/minor_moons.asset b/data/assets/scene/solarsystem/planets/saturn/minor_moons.asset index 27b8f39e57..9851b5d0d5 100644 --- a/data/assets/scene/solarsystem/planets/saturn/minor_moons.asset +++ b/data/assets/scene/solarsystem/planets/saturn/minor_moons.asset @@ -6,7 +6,7 @@ asset.require("./minor/shepherd_group") local minormoons_on = { Identifier = "os.solarsystem.saturn.minormoonson", - Name = "Turn ON minor moons and trails", + Name = "Turn on minor moons and trails", Command = [[ local trails = openspace.getProperty('{moonTrail_minor_saturn}.Renderable.Enabled'); local trails_fade = openspace.getProperty('{moonTrail_minor_saturn}.Renderable.Fade'); @@ -31,7 +31,7 @@ local minormoons_on = { local minormoons_off = { Identifier = "os.solarsystem.saturn.minormoonsoff", - Name = "Turn OFF minors moon and trails", + Name = "Turn off minors moon and trails", Command = [[ local trails = openspace.getProperty('{moonTrail_minor_saturn}.Renderable.Enabled'); local trails_fade = openspace.getProperty('{moonTrail_minor_saturn}.Renderable.Fade'); diff --git a/data/assets/scene/solarsystem/planets/uranus/minor_moons.asset b/data/assets/scene/solarsystem/planets/uranus/minor_moons.asset index 620f301d18..ac9834a7ee 100644 --- a/data/assets/scene/solarsystem/planets/uranus/minor_moons.asset +++ b/data/assets/scene/solarsystem/planets/uranus/minor_moons.asset @@ -4,7 +4,7 @@ asset.require("./irregular_retrograde_moons") local minormoons_on = { Identifier = "os.solarsystem.uranus.minormoonson", - Name = "Turn ON minor moons and trails", + Name = "Turn on minor moons and trails", Command = [[ local trails = openspace.getProperty('{moonTrail_minor_uranus}.Renderable.Enabled'); local trails_fade = openspace.getProperty('{moonTrail_minor_uranus}.Renderable.Fade'); @@ -29,7 +29,7 @@ local minormoons_on = { local minormoons_off = { Identifier = "os.solarsystem.uranus.minormoonsoff", - Name = "Turn OFF minors moon and trails", + Name = "Turn off minors moon and trails", Command = [[ local trails = openspace.getProperty('{moonTrail_minor_uranus}.Renderable.Enabled'); local trails_fade = openspace.getProperty('{moonTrail_minor_uranus}.Renderable.Fade'); diff --git a/data/assets/scene/solarsystem/sun/EUV_layer.asset b/data/assets/scene/solarsystem/sun/EUV_layer.asset index 123d5ac025..31eb818d07 100644 --- a/data/assets/scene/solarsystem/sun/EUV_layer.asset +++ b/data/assets/scene/solarsystem/sun/EUV_layer.asset @@ -32,7 +32,7 @@ local EUVLayer = { local toggle_EUV_layer = { Identifier = "os.solarsystem.sun.toggleeuv", - Name = "Toggle EUV Layer", + Name = "Toggle EUV layer", Command = propertyHelper.invert("Scene.EUV-Layer-bastille-day-2000.Renderable.Enabled"), Documentation = "Toggle EUV layer of sun", GuiPath = "/Bastille-Day 2000", diff --git a/data/assets/util/default_keybindings.asset b/data/assets/util/default_keybindings.asset index f91a42bc87..6a74947420 100644 --- a/data/assets/util/default_keybindings.asset +++ b/data/assets/util/default_keybindings.asset @@ -2,7 +2,7 @@ local propertyHelper = asset.require("./property_helper") local toggle_native_ui = { Identifier = "os_default.toggle_native_ui", - Name = "Show Native GUI", + Name = "Show native GUI", Command = propertyHelper.invert("Modules.ImGUI.Enabled"), Documentation = "Shows or hides the native UI", GuiPath = "/System/GUI", @@ -13,7 +13,7 @@ local toggle_native_ui = { local toggle_shutdown = { Identifier = "os_default.toggle_shutdown", - Name = "Toggle Shutdown", + Name = "Toggle shutdown", Command = "openspace.toggleShutdown()", Documentation = "Toggles the shutdown that will stop OpenSpace after a grace period. Press again to cancel the shutdown during this period", GuiPath = "/System", @@ -24,7 +24,7 @@ local toggle_shutdown = { local take_screenshot = { Identifier = "os_default.take_screenshot", - Name = "Take Screenshot", + Name = "Take screenshot", Command = "openspace.takeScreenshot()", Documentation = "Saves the contents of the screen to a file in the ${SCREENSHOTS} directory", GuiPath = "/System/Rendering", @@ -35,7 +35,7 @@ local take_screenshot = { local toggle_pause_interpolated = { Identifier = "os_default.toggle_pause_interpolated", - Name = "Toggle Pause (Interpolated)", + Name = "Toggle pause (interpolate)", Command = "openspace.time.pauseToggleViaKeyboard()", Documentation = "Smoothly starts and stops the simulation time", GuiPath = "/Time/Simulation Speed", @@ -46,7 +46,7 @@ local toggle_pause_interpolated = { local toggle_pause_immediate = { Identifier = "os_default.toggle_pause_immediate", - Name = "Toggle Pause (Immediate)", + Name = "Toggle pause (immediate)", Command = "openspace.time.togglePause()", Documentation = "Immediately starts and stops the simulation time", GuiPath = "/Time/Simulation Speed", @@ -57,7 +57,7 @@ local toggle_pause_immediate = { local toggle_rotation_friction = { Identifier = "os_default.toggle_rotation_friction", - Name = "Toggle Rotation friction", + Name = "Toggle rotation friction", Command = propertyHelper.invert("NavigationHandler.OrbitalNavigator.Friction.RotationalFriction"), Documentation = "Toggles the rotational friction of the camera. If it is disabled, the camera rotates around the focus object indefinitely", GuiPath = "/Navigation", @@ -68,7 +68,7 @@ local toggle_rotation_friction = { local toggle_zoom_friction = { Identifier = "os_default.toggle_zoom_friction", - Name = "Toggle Zoom Friction", + Name = "Toggle zoom friction", Command = propertyHelper.invert("NavigationHandler.OrbitalNavigator.Friction.ZoomFriction"), Documentation = "Toggles the zoom friction of the camera. If it is disabled, the camera rises up from or closes in towards the focus object indefinitely", GuiPath = "/Navigation", @@ -79,7 +79,7 @@ local toggle_zoom_friction = { local toggle_roll_friction = { Identifier = "os_default.toggle_roll_friction", - Name = "Toggle Roll Friction", + Name = "Toggle roll friction", Command = propertyHelper.invert("NavigationHandler.OrbitalNavigator.Friction.RollFriction"), Documentation = "Toggles the roll friction of the camera. If it is disabled, the camera rolls around its own axis indefinitely", GuiPath = "/Navigation", @@ -145,9 +145,9 @@ local toggle_master_rendering = { local next_delta_step_interpolate = { Identifier = "os_default.next_delta_step_interpolate", - Name = "Next Delta Time Step (Interpolate)", + Name = "Next simulation time step (interpolate)", Command = "openspace.time.interpolateNextDeltaTimeStep()", - Documentation = "Smoothly interpolates the simulation speed to the next delta time step, if one exists", + Documentation = "Smoothly interpolates the simulation speed to the next simulation time step, if one exists", GuiPath = "/Time/Simulation Speed", IsLocal = true, @@ -156,9 +156,9 @@ local next_delta_step_interpolate = { local next_delta_step_immediate = { Identifier = "os_default.next_delta_step_immediate", - Name = "Next Delta Time Step (Immediate)", + Name = "Next simulation time step (immediate)", Command = "openspace.time.setNextDeltaTimeStep()", - Documentation = "Immediately set the simulation speed to the next delta time step, if one exists", + Documentation = "Immediately set the simulation speed to the next simulation time step, if one exists", GuiPath = "/Time/Simulation Speed", IsLocal = true, @@ -167,9 +167,9 @@ local next_delta_step_immediate = { local previous_delta_step_interpolate = { Identifier = "os_default.previous_delta_step_interpolate", - Name = "Previous Delta Time Step (Interpolate)", + Name = "Previous simulation time step (interpolate)", Command = "openspace.time.interpolatePreviousDeltaTimeStep()", - Documentation = "Smoothly interpolates the simulation speed to the previous delta time step, if one exists", + Documentation = "Smoothly interpolates the simulation speed to the previous simulation time step, if one exists", GuiPath = "/Time/Simulation Speed", IsLocal = true, @@ -178,9 +178,9 @@ local previous_delta_step_interpolate = { local previous_delta_step_immediate = { Identifier = "os_default.previous_delta_step_immediate", - Name = "Previous Delta Time Step (Immediate)", + Name = "Previous simulation time step (immediate)", Command = "openspace.time.setPreviousDeltaTimeStep()", - Documentation = "Immediately set the simulation speed to the previous delta time step, if one exists", + Documentation = "Immediately set the simulation speed to the previous simulation time step, if one exists", GuiPath = "/Time/Simulation Speed", IsLocal = true, diff --git a/data/assets/util/testing_keybindings.asset b/data/assets/util/testing_keybindings.asset index 48f1991826..c40489a1a7 100644 --- a/data/assets/util/testing_keybindings.asset +++ b/data/assets/util/testing_keybindings.asset @@ -4,7 +4,7 @@ local propertyHelper = asset.require("./property_helper") local take_screenshot = { Identifier = "testing_keyboard.take_screenshot", - Name = "Take Screenshot", + Name = "Take screenshot", Command = "openspace.takeScreenshot()", Documentation = "Saves the contents of the screen to a file in the ${SCREENSHOTS} directory", GuiPath = "/Rendering", diff --git a/src/util/timemanager.cpp b/src/util/timemanager.cpp index ee8d37bc95..86b17fdd09 100644 --- a/src/util/timemanager.cpp +++ b/src/util/timemanager.cpp @@ -74,7 +74,7 @@ namespace { "when interpolating" }; - constexpr std::string_view DeltaTimeStepsKeybindsGuiPath = "/Time/Delta Time Steps"; + constexpr std::string_view DeltaTimeStepsKeybindsGuiPath = "/Time/Simulation Speed/Steps"; } namespace openspace { @@ -507,7 +507,7 @@ void TimeManager::addDeltaTimesKeybindings() { action.documentation = fmt::format( "Setting the simulation speed to {} seconds per realtime second", s ); - action.name = fmt::format("Set Simulation Speed: {}", s); + action.name = fmt::format("Set: {}", s); action.guiPath = DeltaTimeStepsKeybindsGuiPath; action.isLocal = interaction::Action::IsLocal::Yes; global::actionManager->registerAction(std::move(action)); From fa4c213d2a2fd80b103886066da46e7ebe81bfa3 Mon Sep 17 00:00:00 2001 From: Emma Broman Date: Thu, 6 Apr 2023 10:20:02 +0200 Subject: [PATCH 20/31] Update GUI hash PR OpenSpace/OpenSpace-WebGuiFrontend#137 --- data/assets/util/webgui.asset | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/assets/util/webgui.asset b/data/assets/util/webgui.asset index 660acb27e7..cca84edd78 100644 --- a/data/assets/util/webgui.asset +++ b/data/assets/util/webgui.asset @@ -3,7 +3,7 @@ asset.require("./static_server") local guiCustomization = asset.require("customization/gui") -- Select which commit hashes to use for the frontend and backend -local frontendHash = "b6de72c6d3087ec26707c9647771d36b7b421eac" +local frontendHash = "70943156956e13be8820c695f979977b6d20bd92" local dataProvider = "data.openspaceproject.com/files/webgui" local frontend = asset.syncedResource({ From 439e4b8f9328abc2005244691657811613b725d1 Mon Sep 17 00:00:00 2001 From: Emma Broman Date: Thu, 6 Apr 2023 10:46:16 +0200 Subject: [PATCH 21/31] Update Gui hash, again --- data/assets/util/webgui.asset | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/assets/util/webgui.asset b/data/assets/util/webgui.asset index cca84edd78..618dfb94dd 100644 --- a/data/assets/util/webgui.asset +++ b/data/assets/util/webgui.asset @@ -3,7 +3,7 @@ asset.require("./static_server") local guiCustomization = asset.require("customization/gui") -- Select which commit hashes to use for the frontend and backend -local frontendHash = "70943156956e13be8820c695f979977b6d20bd92" +local frontendHash = "baf7c80db5f94a400b08e946ce3fdb4de47ad1d6" local dataProvider = "data.openspaceproject.com/files/webgui" local frontend = asset.syncedResource({ From 554373eb3eb41260be598891f5325aee067188d5 Mon Sep 17 00:00:00 2001 From: Emma Broman Date: Thu, 6 Apr 2023 12:49:49 +0200 Subject: [PATCH 22/31] Fading of propertyowners through GUI, and more owners with fade property (#2557) * Add property in OpenSpaceEngine for fading duration when enabling / disabling * Add interface for fadeable components and apply to renderable * Make layers a fadeable component * Make globelabels a fadeable component * Make labelscomponent a fadeable, and give it an enabled property * Make screenspace renderables fadeable components * Introduce concept of parent fadeables, to fade out subowners with parent * Make rings fadeable as well --------- Co-authored-by: Alexander Bock --- .../digitaluniverse/alternatestarlabels.asset | 4 +- .../scene/digitaluniverse/clusters.asset | 4 +- data/assets/scene/digitaluniverse/grids.asset | 8 +- .../assets/scene/digitaluniverse/groups.asset | 2 +- .../digitaluniverse/milkyway_label.asset | 2 +- .../scene/digitaluniverse/starlabels.asset | 4 +- .../scene/digitaluniverse/superclusters.asset | 2 +- data/assets/scene/digitaluniverse/tully.asset | 1 - data/assets/scene/digitaluniverse/voids.asset | 2 +- include/openspace/engine/openspaceengine.h | 4 +- include/openspace/rendering/fadeable.h | 62 +++++++++++++ include/openspace/rendering/renderable.h | 11 +-- .../rendering/screenspacerenderable.h | 6 +- .../rendering/grids/renderableboxgrid.cpp | 20 +---- .../base/rendering/grids/renderableboxgrid.h | 1 - .../base/rendering/grids/renderablegrid.cpp | 22 ++--- modules/base/rendering/grids/renderablegrid.h | 1 - .../rendering/grids/renderableradialgrid.cpp | 20 +---- .../rendering/grids/renderableradialgrid.h | 1 - .../grids/renderablesphericalgrid.cpp | 20 +---- .../rendering/grids/renderablesphericalgrid.h | 1 - .../rendering/renderablebillboardscloud.cpp | 20 +---- .../rendering/renderablebillboardscloud.h | 1 - .../rendering/renderableplanescloud.cpp | 2 + .../shaders/advanced_rings_fs.glsl | 2 + modules/globebrowsing/shaders/rings_fs.glsl | 2 + .../src/globelabelscomponent.cpp | 19 ++-- .../globebrowsing/src/globelabelscomponent.h | 8 +- modules/globebrowsing/src/gpulayergroup.cpp | 2 +- modules/globebrowsing/src/layer.cpp | 11 ++- modules/globebrowsing/src/layer.h | 3 +- .../globebrowsing/src/layerrendersettings.cpp | 14 +-- .../globebrowsing/src/layerrendersettings.h | 1 - modules/globebrowsing/src/renderableglobe.cpp | 16 +++- modules/globebrowsing/src/ringscomponent.cpp | 13 +-- modules/globebrowsing/src/ringscomponent.h | 8 +- modules/space/labelscomponent.cpp | 35 +++++--- modules/space/labelscomponent.h | 6 +- .../renderableconstellationsbase.cpp | 17 +--- .../rendering/renderableconstellationsbase.h | 1 - src/CMakeLists.txt | 2 + src/engine/openspaceengine.cpp | 11 +++ src/rendering/fadeable.cpp | 89 +++++++++++++++++++ src/rendering/renderable.cpp | 34 ++----- src/rendering/screenspacerenderable.cpp | 30 +------ 45 files changed, 302 insertions(+), 243 deletions(-) create mode 100644 include/openspace/rendering/fadeable.h create mode 100644 src/rendering/fadeable.cpp diff --git a/data/assets/scene/digitaluniverse/alternatestarlabels.asset b/data/assets/scene/digitaluniverse/alternatestarlabels.asset index 42776124b9..edb004c892 100644 --- a/data/assets/scene/digitaluniverse/alternatestarlabels.asset +++ b/data/assets/scene/digitaluniverse/alternatestarlabels.asset @@ -11,6 +11,7 @@ local object = { Type = "RenderableBillboardsCloud", Enabled = false, Labels = { + Enabled = true, File = speck .. "stars-altlbl.label", Color = { 0.4, 0.4, 0.4 }, Size = 14.7, @@ -19,8 +20,7 @@ local object = { }, Color = { 1.0, 1.0, 1.0 }, Opacity = 0.65, - Unit = "pc", - DrawLabels = true + Unit = "pc" }, GUI = { Name = "Stars Labels - Alternate", diff --git a/data/assets/scene/digitaluniverse/clusters.asset b/data/assets/scene/digitaluniverse/clusters.asset index 57aa7a429c..8c50d45189 100644 --- a/data/assets/scene/digitaluniverse/clusters.asset +++ b/data/assets/scene/digitaluniverse/clusters.asset @@ -11,6 +11,7 @@ local object = { Type = "RenderableBillboardsCloud", Enabled = false, Labels = { + Enabled = true, File = speck .. "galclust.label", Color = { 1.0, 0.44, 0.0 }, Size = 22, @@ -20,13 +21,12 @@ local object = { Color = { 1.0, 1.0, 1.0 }, Opacity = 0.65, Unit = "Mpc", - DrawLabels = true, TransformationMatrix = { -0.7357425748, 0.67726129641, 0.0, 0.0, -0.074553778365, -0.080991471307, 0.9939225904, 0.0, 0.67314530211, 0.73127116582, 0.11008126223, 0.0, 0.0, 0.0, 0.0, 1.0 - }, + } }, GUI = { Name = "Galaxy Cluster Labels", diff --git a/data/assets/scene/digitaluniverse/grids.asset b/data/assets/scene/digitaluniverse/grids.asset index a3e2b4c9fa..c66dac3cf9 100644 --- a/data/assets/scene/digitaluniverse/grids.asset +++ b/data/assets/scene/digitaluniverse/grids.asset @@ -126,6 +126,7 @@ local eclipticLabels = { Type = "RenderableBillboardsCloud", Enabled = false, Labels = { + Enabled = true, File = speck .. "eclip.label", Color = { 0.5, 0.5, 0.5 }, Size = 14.75, @@ -136,7 +137,6 @@ local eclipticLabels = { Color = { 1.0, 1.0, 1.0 }, Opacity = 0.65, Unit = "pc", - DrawLabels = true, TransformationMatrix = eclipticTransformationMatrix }, GUI = { @@ -178,6 +178,7 @@ local equatorialLabels = { Type = "RenderableBillboardsCloud", Enabled = false, Labels = { + Enabled = true, File = speck .. "radec.label", Color = { 0.5, 0.5, 0.5 }, Size = 14.5, @@ -188,7 +189,6 @@ local equatorialLabels = { Color = { 1.0, 1.0, 1.0 }, Opacity = 0.65, Unit = "pc", - DrawLabels = true, TransformationMatrix = equatorialTransformationMatrix }, GUI = { @@ -226,6 +226,7 @@ local galacticLabels = { Type = "RenderableBillboardsCloud", Enabled = false, Labels = { + Enabled = true, File = speck .. "galac.label", Color = { 0.5, 0.5, 0.5 }, Size = 15.8, @@ -234,8 +235,7 @@ local galacticLabels = { }, Color = { 1.0, 1.0, 1.0 }, Opacity = 0.65, - Unit = "pc", - DrawLabels = true + Unit = "pc" }, GUI = { Name = "Galactic Sphere Labels", diff --git a/data/assets/scene/digitaluniverse/groups.asset b/data/assets/scene/digitaluniverse/groups.asset index 1cd3e928f8..0faa4b57e9 100644 --- a/data/assets/scene/digitaluniverse/groups.asset +++ b/data/assets/scene/digitaluniverse/groups.asset @@ -11,6 +11,7 @@ local object = { Type = "RenderableBillboardsCloud", Enabled = false, Labels = { + Enabled = true, File = speck .. "groups.label", Color = { 0.1, 0.6, 0.2 }, Size = 21.5, @@ -21,7 +22,6 @@ local object = { Opacity = 0.65, --ScaleFactor = 10.0, Unit = "Mpc", - DrawLabels = true, TransformationMatrix = { -0.7357425748, 0.67726129641, 0.0, 0.0, -0.074553778365, -0.080991471307, 0.9939225904, 0.0, diff --git a/data/assets/scene/digitaluniverse/milkyway_label.asset b/data/assets/scene/digitaluniverse/milkyway_label.asset index f6501a647f..da61a3a946 100644 --- a/data/assets/scene/digitaluniverse/milkyway_label.asset +++ b/data/assets/scene/digitaluniverse/milkyway_label.asset @@ -11,6 +11,7 @@ local homeLabel = { Type = "RenderableBillboardsCloud", Enabled = false, Labels = { + Enabled = true, File = homespeck .. "home.label", Color = { 0.8, 0.8, 0.8 }, Size = 20.50, @@ -20,7 +21,6 @@ local homeLabel = { Color = { 1.0, 0.4, 0.2 }, Opacity = 0.99, ScaleFactor = 500.0, - DrawLabels = true, Unit = "Mpc", TransformationMatrix = { -0.7357425748, 0.67726129641, 0.0, 0.0, diff --git a/data/assets/scene/digitaluniverse/starlabels.asset b/data/assets/scene/digitaluniverse/starlabels.asset index 8543b5a6d6..92f511c9cf 100644 --- a/data/assets/scene/digitaluniverse/starlabels.asset +++ b/data/assets/scene/digitaluniverse/starlabels.asset @@ -11,6 +11,7 @@ local object = { Type = "RenderableBillboardsCloud", Enabled = false, Labels = { + Enabled = true, File = speck .. "stars.label", Color = { 0.4, 0.4, 0.4 }, Size = 14.7, @@ -19,8 +20,7 @@ local object = { }, Color = { 1.0, 1.0, 1.0 }, Opacity = 0.65, - Unit = "pc", - DrawLabels = true + Unit = "pc" }, GUI = { Name = "Stars Labels", diff --git a/data/assets/scene/digitaluniverse/superclusters.asset b/data/assets/scene/digitaluniverse/superclusters.asset index 375128e9d1..1943c1f216 100644 --- a/data/assets/scene/digitaluniverse/superclusters.asset +++ b/data/assets/scene/digitaluniverse/superclusters.asset @@ -18,6 +18,7 @@ local object = { Type = "RenderableBillboardsCloud", Enabled = false, Labels = { + Enabled = true, File = speck .. "superclust.label", Color = { 0.9, 0.9, 0.9 }, Size = 22.44, @@ -31,7 +32,6 @@ local object = { Texture = textures .. "point3A.png", Unit = "Mpc", ScaleFactor = 531.0, - DrawLabels = true, -- BillboardMinMaxSize = { 0.0, 7.2 }, EnablePixelSizeControl = true }, diff --git a/data/assets/scene/digitaluniverse/tully.asset b/data/assets/scene/digitaluniverse/tully.asset index 96521ba5f2..26ec295dc7 100644 --- a/data/assets/scene/digitaluniverse/tully.asset +++ b/data/assets/scene/digitaluniverse/tully.asset @@ -34,7 +34,6 @@ local tullyPoints = { --ColorOption = { "proximity" }, ColorOption = { "prox5Mpc" }, ColorRange = { { 1.0, 30.0 } }, - DrawLabels = false, Unit = "Mpc", TransformationMatrix = { -0.7357425748, 0.67726129641, 0.0, 0.0, diff --git a/data/assets/scene/digitaluniverse/voids.asset b/data/assets/scene/digitaluniverse/voids.asset index f380b05e32..6a97959b86 100644 --- a/data/assets/scene/digitaluniverse/voids.asset +++ b/data/assets/scene/digitaluniverse/voids.asset @@ -11,6 +11,7 @@ local object = { Type = "RenderableBillboardsCloud", Enabled = false, Labels = { + Enabled = true, File = speck .. "voids.label", Color = { 0.296, 0.629, 1.0 }, Size = 20.9, @@ -18,7 +19,6 @@ local object = { Unit = "Mpc" }, DrawElements = false, - DrawLabels = true, Color = { 1.0, 1.0, 1.0 }, Opacity = 0.65, Unit = "Mpc" diff --git a/include/openspace/engine/openspaceengine.h b/include/openspace/engine/openspaceengine.h index 74a0607bb5..16c5fa23ac 100644 --- a/include/openspace/engine/openspaceengine.h +++ b/include/openspace/engine/openspaceengine.h @@ -29,8 +29,9 @@ #include #include #include -#include #include +#include +#include #include #include #include @@ -145,6 +146,7 @@ private: properties::BoolProperty _printEvents; properties::OptionProperty _visibility; properties::BoolProperty _showHiddenSceneGraphNodes; + properties::FloatProperty _fadeOnEnableDuration; properties::BoolProperty _disableAllMouseInputs; std::unique_ptr _scene; diff --git a/include/openspace/rendering/fadeable.h b/include/openspace/rendering/fadeable.h new file mode 100644 index 0000000000..907ff7c7a6 --- /dev/null +++ b/include/openspace/rendering/fadeable.h @@ -0,0 +1,62 @@ +/***************************************************************************************** + * * + * 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___FADEABLE___H__ +#define __OPENSPACE_CORE___FADEABLE___H__ + +#include + +namespace openspace { + +/** + * This class is an interface for all things fadeable in the software; things that need + * a fade and opacity property, which will be combined into a final opacity value + * + * A Fadeable can also be dependent on the fade value from a specified parent fadeable, + * so that it fades out together with the parent + */ +class Fadeable { +public: + Fadeable(); + virtual ~Fadeable() = default; + + void setFade(float fade); + void setParentFadeable(Fadeable* parent); + + float fade() const; + virtual bool isVisible() const; + + /// Returns the full opacity constructed from the _opacity and _fade property values + virtual float opacity() const; + +protected: + properties::FloatProperty _opacity; + properties::FloatProperty _fade; + + Fadeable* _parentFadeable = nullptr; +}; + +} // namespace openspace + +#endif // __OPENSPACE_CORE___FADEABLE___H__ diff --git a/include/openspace/rendering/renderable.h b/include/openspace/rendering/renderable.h index ba411b493c..f23e2892d6 100644 --- a/include/openspace/rendering/renderable.h +++ b/include/openspace/rendering/renderable.h @@ -26,6 +26,7 @@ #define __OPENSPACE_CORE___RENDERABLE___H__ #include +#include #include #include @@ -52,7 +53,7 @@ namespace documentation { struct Documentation; } class Camera; -class Renderable : public properties::PropertyOwner { +class Renderable : public properties::PropertyOwner, public Fadeable { public: enum class RenderBin : int { Background = 1, @@ -102,9 +103,7 @@ public: bool matchesSecondaryRenderBin(int binMask) const noexcept; - void setFade(float fade); - - bool isVisible() const; + bool isVisible() const override; void onEnabledChange(std::function callback); @@ -112,8 +111,6 @@ public: protected: properties::BoolProperty _enabled; - properties::FloatProperty _opacity; - properties::FloatProperty _fade; properties::StringProperty _renderableType; properties::BoolProperty _dimInAtmosphere; @@ -124,7 +121,7 @@ protected: void registerUpdateRenderBinFromOpacity(); /// Returns the full opacity constructed from the _opacity and _fade property values - float opacity() const; + float opacity() const override; double _boundingSphere = 0.0; double _interactionSphere = 0.0; diff --git a/include/openspace/rendering/screenspacerenderable.h b/include/openspace/rendering/screenspacerenderable.h index 5db751bd60..93b03efe17 100644 --- a/include/openspace/rendering/screenspacerenderable.h +++ b/include/openspace/rendering/screenspacerenderable.h @@ -26,6 +26,7 @@ #define __OPENSPACE_CORE___SCREENSPACERENDERABLE___H__ #include +#include #include #include @@ -49,7 +50,7 @@ namespace documentation { struct Documentation; } * the planes from Spherical to Cartesian coordinates and back. It also specifies the * interface that its children need to implement. */ -class ScreenSpaceRenderable : public properties::PropertyOwner { +class ScreenSpaceRenderable : public properties::PropertyOwner, public Fadeable { public: static std::unique_ptr createFromDictionary( const ghoul::Dictionary& dictionary); @@ -111,7 +112,6 @@ protected: glm::vec3 cartesianToSpherical(const glm::vec3& cartesian) const; glm::vec3 sphericalToCartesian(glm::vec3 spherical) const; glm::vec3 sanitizeSphericalCoordinates(glm::vec3 spherical) const; - float opacity() const; properties::BoolProperty _enabled; properties::BoolProperty _usePerspectiveProjection; @@ -133,8 +133,6 @@ protected: properties::FloatProperty _gamma; properties::Vec3Property _multiplyColor; properties::Vec4Property _backgroundColor; - properties::FloatProperty _opacity; - properties::FloatProperty _fade; properties::TriggerProperty _delete; glm::ivec2 _objectSize = glm::ivec2(0); diff --git a/modules/base/rendering/grids/renderableboxgrid.cpp b/modules/base/rendering/grids/renderableboxgrid.cpp index 8934c3d7c4..3bf8ecd385 100644 --- a/modules/base/rendering/grids/renderableboxgrid.cpp +++ b/modules/base/rendering/grids/renderableboxgrid.cpp @@ -54,14 +54,7 @@ namespace { "This value species the size of each dimensions of the box" }; - constexpr openspace::properties::Property::PropertyInfo DrawLabelInfo = { - "DrawLabels", - "Draw Labels", - "Determines whether labels should be drawn or hidden" - }; - - static const openspace::properties::PropertyOwner::PropertyOwnerInfo LabelsInfo = - { + static const openspace::properties::PropertyOwner::PropertyOwnerInfo LabelsInfo = { "Labels", "Labels", "The labels for the grid" @@ -77,9 +70,6 @@ namespace { // [[codegen::verbatim(SizeInfo.description)]] std::optional size; - // [[codegen::verbatim(DrawLabelInfo.description)]] - std::optional drawLabels; - // [[codegen::verbatim(LabelsInfo.description)]] std::optional labels [[codegen::reference("space_labelscomponent")]]; @@ -98,7 +88,6 @@ RenderableBoxGrid::RenderableBoxGrid(const ghoul::Dictionary& dictionary) , _color(ColorInfo, glm::vec3(0.5f), glm::vec3(0.f), glm::vec3(1.f)) , _lineWidth(LineWidthInfo, 0.5f, 1.f, 20.f) , _size(SizeInfo, glm::vec3(1.f), glm::vec3(1.f), glm::vec3(100.f)) - , _drawLabels(DrawLabelInfo, false) { const Parameters p = codegen::bake(dictionary); @@ -117,12 +106,11 @@ RenderableBoxGrid::RenderableBoxGrid(const ghoul::Dictionary& dictionary) addProperty(_size); if (p.labels.has_value()) { - _drawLabels = p.drawLabels.value_or(_drawLabels); - addProperty(_drawLabels); - _labels = std::make_unique(*p.labels); _hasLabels = true; addPropertySubOwner(_labels.get()); + // Fading of the labels should also depend on the fading of the renderable + _labels->setParentFadeable(this); } } @@ -215,7 +203,7 @@ void RenderableBoxGrid::render(const RenderData& data, RendererTasks&){ global::renderEngine->openglStateCache().resetDepthState(); // Draw labels - if (_drawLabels && _hasLabels) { + if (_hasLabels && _labels->enabled()) { const glm::vec3 lookup = data.camera.lookUpVectorWorldSpace(); const glm::vec3 viewDirection = data.camera.viewDirectionWorldSpace(); glm::vec3 right = glm::cross(viewDirection, lookup); diff --git a/modules/base/rendering/grids/renderableboxgrid.h b/modules/base/rendering/grids/renderableboxgrid.h index cae5dc9f9b..e4a24c7df0 100644 --- a/modules/base/rendering/grids/renderableboxgrid.h +++ b/modules/base/rendering/grids/renderableboxgrid.h @@ -76,7 +76,6 @@ protected: // Labels bool _hasLabels = false; - properties::BoolProperty _drawLabels; std::unique_ptr _labels; }; diff --git a/modules/base/rendering/grids/renderablegrid.cpp b/modules/base/rendering/grids/renderablegrid.cpp index dc2370ee78..0dcc8e9249 100644 --- a/modules/base/rendering/grids/renderablegrid.cpp +++ b/modules/base/rendering/grids/renderablegrid.cpp @@ -81,14 +81,7 @@ namespace { "This value species the size of each dimensions of the grid" }; - constexpr openspace::properties::Property::PropertyInfo DrawLabelInfo = { - "DrawLabels", - "Draw Labels", - "Determines whether labels should be drawn or hidden" - }; - - static const openspace::properties::PropertyOwner::PropertyOwnerInfo LabelsInfo = - { + static const openspace::properties::PropertyOwner::PropertyOwnerInfo LabelsInfo = { "Labels", "Labels", "The labels for the grid" @@ -116,9 +109,6 @@ namespace { // [[codegen::verbatim(SizeInfo.description)]] std::optional size; - // [[codegen::verbatim(DrawLabelInfo.description)]] - std::optional drawLabels; - // [[codegen::verbatim(LabelsInfo.description)]] std::optional labels [[codegen::reference("space_labelscomponent")]]; @@ -141,7 +131,6 @@ RenderableGrid::RenderableGrid(const ghoul::Dictionary& dictionary) , _lineWidth(LineWidthInfo, 0.5f, 1.f, 20.f) , _highlightLineWidth(HighlightLineWidthInfo, 0.5f, 1.f, 20.f) , _size(SizeInfo, glm::vec2(1.f), glm::vec2(1.f), glm::vec2(1e11f)) - , _drawLabels(DrawLabelInfo, false) { const Parameters p = codegen::bake(dictionary); @@ -178,12 +167,11 @@ RenderableGrid::RenderableGrid(const ghoul::Dictionary& dictionary) addProperty(_size); if (p.labels.has_value()) { - _drawLabels = p.drawLabels.value_or(_drawLabels); - addProperty(_drawLabels); - _labels = std::make_unique(*p.labels); _hasLabels = true; addPropertySubOwner(_labels.get()); + // Fading of the labels should also depend on the fading of the renderable + _labels->setParentFadeable(this); } } @@ -314,11 +302,11 @@ void RenderableGrid::render(const RenderData& data, RendererTasks&){ global::renderEngine->openglStateCache().resetDepthState(); // Draw labels - if (_drawLabels && _hasLabels) { + if (_hasLabels && _labels->enabled()) { const glm::vec3 orthoUp = glm::normalize( glm::vec3(worldToModelTransform * glm::dvec4(up, 0.0)) ); - _labels->render(data, modelViewProjectionMatrix, orthoRight, orthoUp); + _labels->render(data, modelViewProjectionMatrix, orthoRight, orthoUp); } } diff --git a/modules/base/rendering/grids/renderablegrid.h b/modules/base/rendering/grids/renderablegrid.h index 4c30ef6d12..f9ddc2a1d9 100644 --- a/modules/base/rendering/grids/renderablegrid.h +++ b/modules/base/rendering/grids/renderablegrid.h @@ -85,7 +85,6 @@ protected: // Labels bool _hasLabels = false; - properties::BoolProperty _drawLabels; std::unique_ptr _labels; }; diff --git a/modules/base/rendering/grids/renderableradialgrid.cpp b/modules/base/rendering/grids/renderableradialgrid.cpp index fa4bb4060a..d9d1b7d09d 100644 --- a/modules/base/rendering/grids/renderableradialgrid.cpp +++ b/modules/base/rendering/grids/renderableradialgrid.cpp @@ -71,14 +71,7 @@ namespace { "ring" }; - constexpr openspace::properties::Property::PropertyInfo DrawLabelInfo = { - "DrawLabels", - "Draw Labels", - "Determines whether labels should be drawn or hidden" - }; - - static const openspace::properties::PropertyOwner::PropertyOwnerInfo LabelsInfo = - { + static const openspace::properties::PropertyOwner::PropertyOwnerInfo LabelsInfo = { "Labels", "Labels", "The labels for the grid" @@ -100,9 +93,6 @@ namespace { // [[codegen::verbatim(RadiiInfo.description)]] std::optional radii; - // [[codegen::verbatim(DrawLabelInfo.description)]] - std::optional drawLabels; - // [[codegen::verbatim(LabelsInfo.description)]] std::optional labels [[codegen::reference("space_labelscomponent")]]; @@ -123,7 +113,6 @@ RenderableRadialGrid::RenderableRadialGrid(const ghoul::Dictionary& dictionary) , _circleSegments(CircleSegmentsInfo, 36, 4, 200) , _lineWidth(LineWidthInfo, 0.5f, 1.f, 20.f) , _radii(RadiiInfo, glm::vec2(0.f, 1.f), glm::vec2(0.f), glm::vec2(20.f)) - , _drawLabels(DrawLabelInfo, false) { const Parameters p = codegen::bake(dictionary); @@ -157,12 +146,11 @@ RenderableRadialGrid::RenderableRadialGrid(const ghoul::Dictionary& dictionary) addProperty(_radii); if (p.labels.has_value()) { - _drawLabels = p.drawLabels.value_or(_drawLabels); - addProperty(_drawLabels); - _labels = std::make_unique(*p.labels); _hasLabels = true; addPropertySubOwner(_labels.get()); + // Fading of the labels should also depend on the fading of the renderable + _labels->setParentFadeable(this); } } @@ -244,7 +232,7 @@ void RenderableRadialGrid::render(const RenderData& data, RendererTasks&) { global::renderEngine->openglStateCache().resetDepthState(); // Draw labels - if (_drawLabels && _hasLabels) { + if (_hasLabels && _labels->enabled()) { const glm::vec3 lookup = data.camera.lookUpVectorWorldSpace(); const glm::vec3 viewDirection = data.camera.viewDirectionWorldSpace(); glm::vec3 right = glm::cross(viewDirection, lookup); diff --git a/modules/base/rendering/grids/renderableradialgrid.h b/modules/base/rendering/grids/renderableradialgrid.h index 7f0c2288fd..88689832fd 100644 --- a/modules/base/rendering/grids/renderableradialgrid.h +++ b/modules/base/rendering/grids/renderableradialgrid.h @@ -90,7 +90,6 @@ protected: // Labels bool _hasLabels = false; - properties::BoolProperty _drawLabels; std::unique_ptr _labels; }; diff --git a/modules/base/rendering/grids/renderablesphericalgrid.cpp b/modules/base/rendering/grids/renderablesphericalgrid.cpp index 99bba9bd56..bf58e7a461 100644 --- a/modules/base/rendering/grids/renderablesphericalgrid.cpp +++ b/modules/base/rendering/grids/renderablesphericalgrid.cpp @@ -55,14 +55,7 @@ namespace { "This value specifies the line width of the spherical grid" }; - constexpr openspace::properties::Property::PropertyInfo DrawLabelInfo = { - "DrawLabels", - "Draw Labels", - "Determines whether labels should be drawn or hidden" - }; - - static const openspace::properties::PropertyOwner::PropertyOwnerInfo LabelsInfo = - { + static const openspace::properties::PropertyOwner::PropertyOwnerInfo LabelsInfo = { "Labels", "Labels", "The labels for the grid" @@ -78,9 +71,6 @@ namespace { // [[codegen::verbatim(LineWidthInfo.description)]] std::optional lineWidth; - // [[codegen::verbatim(DrawLabelInfo.description)]] - std::optional drawLabels; - // [[codegen::verbatim(LabelsInfo.description)]] std::optional labels [[codegen::reference("space_labelscomponent")]]; @@ -100,7 +90,6 @@ RenderableSphericalGrid::RenderableSphericalGrid(const ghoul::Dictionary& dictio , _color(ColorInfo, glm::vec3(0.5f), glm::vec3(0.f), glm::vec3(1.f)) , _segments(SegmentsInfo, 36, 4, 200) , _lineWidth(LineWidthInfo, 0.5f, 1.f, 20.f) - , _drawLabels(DrawLabelInfo, false) { const Parameters p = codegen::bake(dictionary); @@ -127,12 +116,11 @@ RenderableSphericalGrid::RenderableSphericalGrid(const ghoul::Dictionary& dictio setBoundingSphere(1.0); if (p.labels.has_value()) { - _drawLabels = p.drawLabels.value_or(_drawLabels); - addProperty(_drawLabels); - _labels = std::make_unique(*p.labels); _hasLabels = true; addPropertySubOwner(_labels.get()); + // Fading of the labels should also depend on the fading of the renderable + _labels->setParentFadeable(this); } } @@ -232,7 +220,7 @@ void RenderableSphericalGrid::render(const RenderData& data, RendererTasks&){ global::renderEngine->openglStateCache().resetDepthState(); // Draw labels - if (_drawLabels && _hasLabels) { + if (_hasLabels && _labels->enabled()) { const glm::vec3 lookup = data.camera.lookUpVectorWorldSpace(); const glm::vec3 viewDirection = data.camera.viewDirectionWorldSpace(); glm::vec3 right = glm::cross(viewDirection, lookup); diff --git a/modules/base/rendering/grids/renderablesphericalgrid.h b/modules/base/rendering/grids/renderablesphericalgrid.h index eddbfe97c7..992dd7090f 100644 --- a/modules/base/rendering/grids/renderablesphericalgrid.h +++ b/modules/base/rendering/grids/renderablesphericalgrid.h @@ -80,7 +80,6 @@ protected: // Labels bool _hasLabels = false; - properties::BoolProperty _drawLabels; std::unique_ptr _labels; }; diff --git a/modules/digitaluniverse/rendering/renderablebillboardscloud.cpp b/modules/digitaluniverse/rendering/renderablebillboardscloud.cpp index 561f7b9319..1d91a51c76 100644 --- a/modules/digitaluniverse/rendering/renderablebillboardscloud.cpp +++ b/modules/digitaluniverse/rendering/renderablebillboardscloud.cpp @@ -106,14 +106,7 @@ namespace { "Enables/Disables the drawing of the astronomical objects" }; - constexpr openspace::properties::Property::PropertyInfo DrawLabelInfo = { - "DrawLabels", - "Draw Labels", - "Determines whether labels should be drawn or hidden" - }; - - static const openspace::properties::PropertyOwner::PropertyOwnerInfo LabelsInfo = - { + static const openspace::properties::PropertyOwner::PropertyOwnerInfo LabelsInfo = { "Labels", "Labels", "The labels for the astronomical objects" @@ -251,9 +244,6 @@ namespace { // The number of sides for the polygon used to represent the astronomical object std::optional polygonSides; - // [[codegen::verbatim(DrawLabelInfo.description)]] - std::optional drawLabels; - // [[codegen::verbatim(LabelsInfo.description)]] std::optional labels [[codegen::reference("space_labelscomponent")]]; @@ -308,7 +298,6 @@ RenderableBillboardsCloud::RenderableBillboardsCloud(const ghoul::Dictionary& di , _pointColor(ColorInfo, glm::vec3(1.f), glm::vec3(0.f), glm::vec3(1.f)) , _spriteTexturePath(SpriteTextureInfo) , _drawElements(DrawElementsInfo, true) - , _drawLabels(DrawLabelInfo, false) , _pixelSizeControl(PixelSizeControlInfo, false) , _colorOption(ColorOptionInfo, properties::OptionProperty::DisplayType::Dropdown) , _optionColorRangeData(OptionColorRangeInfo, glm::vec2(0.f)) @@ -441,12 +430,11 @@ RenderableBillboardsCloud::RenderableBillboardsCloud(const ghoul::Dictionary& di _hasPolygon = p.polygonSides.has_value(); if (p.labels.has_value()) { - _drawLabels = p.drawLabels.value_or(_drawLabels); - addProperty(_drawLabels); - _labels = std::make_unique(*p.labels); _hasLabels = true; addPropertySubOwner(_labels.get()); + // Fading of the labels should also depend on the fading of the renderable + _labels->setParentFadeable(this); } _transformationMatrix = p.transformationMatrix.value_or(_transformationMatrix); @@ -719,7 +707,7 @@ void RenderableBillboardsCloud::render(const RenderData& data, RendererTasks&) { renderBillboards(data, modelMatrix, orthoRight, orthoUp, fadeInVar); } - if (_drawLabels && _hasLabels) { + if (_hasLabels) { _labels->render(data, modelViewProjectionMatrix, orthoRight, orthoUp, fadeInVar); } } diff --git a/modules/digitaluniverse/rendering/renderablebillboardscloud.h b/modules/digitaluniverse/rendering/renderablebillboardscloud.h index 08974cf8db..142275c5fb 100644 --- a/modules/digitaluniverse/rendering/renderablebillboardscloud.h +++ b/modules/digitaluniverse/rendering/renderablebillboardscloud.h @@ -98,7 +98,6 @@ private: properties::Vec3Property _pointColor; properties::StringProperty _spriteTexturePath; properties::BoolProperty _drawElements; - properties::BoolProperty _drawLabels; properties::BoolProperty _pixelSizeControl; properties::OptionProperty _colorOption; properties::Vec2Property _optionColorRangeData; diff --git a/modules/digitaluniverse/rendering/renderableplanescloud.cpp b/modules/digitaluniverse/rendering/renderableplanescloud.cpp index 580eadb530..c343c56649 100644 --- a/modules/digitaluniverse/rendering/renderableplanescloud.cpp +++ b/modules/digitaluniverse/rendering/renderableplanescloud.cpp @@ -242,6 +242,8 @@ RenderablePlanesCloud::RenderablePlanesCloud(const ghoul::Dictionary& dictionary _labels = std::make_unique(*p.labels); _hasLabels = true; addPropertySubOwner(_labels.get()); + // Fading of the labels should also depend on the fading of the renderable + _labels->setParentFadeable(this); } _transformationMatrix = p.transformationMatrix.value_or(_transformationMatrix); diff --git a/modules/globebrowsing/shaders/advanced_rings_fs.glsl b/modules/globebrowsing/shaders/advanced_rings_fs.glsl index d428257405..e852929d1e 100644 --- a/modules/globebrowsing/shaders/advanced_rings_fs.glsl +++ b/modules/globebrowsing/shaders/advanced_rings_fs.glsl @@ -45,6 +45,7 @@ uniform vec3 sunPositionObj; uniform vec3 camPositionObj; uniform float nightFactor; uniform float zFightingPercentage; +uniform float opacity; Fragment getFragment() { @@ -123,6 +124,7 @@ Fragment getFragment() { Fragment frag; frag.color = diffuse * shadow; + frag.color.a *= opacity; frag.depth = vs_screenSpaceDepth; frag.gPosition = vec4(1e30, 1e30, 1e30, 1.0); frag.gNormal = vec4(normal, 1.0); diff --git a/modules/globebrowsing/shaders/rings_fs.glsl b/modules/globebrowsing/shaders/rings_fs.glsl index 64665803fd..75e0a8361a 100644 --- a/modules/globebrowsing/shaders/rings_fs.glsl +++ b/modules/globebrowsing/shaders/rings_fs.glsl @@ -39,6 +39,7 @@ uniform float colorFilterValue; uniform vec3 sunPosition; uniform float nightFactor; uniform float zFightingPercentage; +uniform float opacity; Fragment getFragment() { @@ -111,6 +112,7 @@ Fragment getFragment() { Fragment frag; frag.color = diffuse * shadow; + frag.color.a *= opacity; frag.depth = vs_screenSpaceDepth; frag.gPosition = vec4(1e30, 1e30, 1e30, 1.0); frag.gNormal = vec4(normal, 1.0); diff --git a/modules/globebrowsing/src/globelabelscomponent.cpp b/modules/globebrowsing/src/globelabelscomponent.cpp index c8c13a0d60..a0516e9c3d 100644 --- a/modules/globebrowsing/src/globelabelscomponent.cpp +++ b/modules/globebrowsing/src/globelabelscomponent.cpp @@ -97,12 +97,6 @@ namespace { "The text color of the labels" }; - constexpr openspace::properties::Property::PropertyInfo OpacityInfo = { - "Opacity", - "Opacity", - "The opacity of the labels" - }; - constexpr openspace::properties::Property::PropertyInfo FadeDistancesInfo = { "FadeDistances", "Fade-In Distances", @@ -165,7 +159,7 @@ namespace { // [[codegen::verbatim(ColorInfo.description)]] std::optional color [[codegen::color()]]; - // [[codegen::verbatim(OpacityInfo.description)]] + // The opacity of the labels std::optional opacity [[codegen::inrange(0.f, 1.f)]]; // [[codegen::verbatim(FadeDistancesInfo.description)]] @@ -207,7 +201,6 @@ GlobeLabelsComponent::GlobeLabelsComponent() , _minMaxSize(MinMaxSizeInfo, glm::ivec2(1, 1000), glm::ivec2(1), glm::ivec2(1000)) , _heightOffset(HeightOffsetInfo, 100.f, 0.f, 10000.f) , _color(ColorInfo, glm::vec3(1.f, 1.f, 0.f), glm::vec3(0.f), glm::vec3(1.f)) - , _opacity(OpacityInfo, 1.f, 0.f, 1.f) , _fadeDistances( FadeDistancesInfo, glm::vec2(1e4f, 1e6f), @@ -224,19 +217,21 @@ GlobeLabelsComponent::GlobeLabelsComponent() ) { addProperty(_enabled); + addProperty(_color); + _color.setViewOption(properties::Property::ViewOptions::Color); + addProperty(_opacity); + addProperty(_fade); + addProperty(_fontSize); addProperty(_size); _minMaxSize.setViewOption(properties::Property::ViewOptions::MinMaxRange); addProperty(_minMaxSize); - addProperty(_color); - addProperty(_opacity); _fadeDistances.setViewOption(properties::Property::ViewOptions::MinMaxRange); _fadeDistances.setExponent(3.f); addProperty(_fadeDistances); addProperty(_fadeInEnabled); addProperty(_fadeOutEnabled); addProperty(_heightOffset); - _color.setViewOption(properties::Property::ViewOptions::Color); addProperty(_disableCulling); addProperty(_distanceEPS); @@ -533,7 +528,7 @@ void GlobeLabelsComponent::renderLabels(const RenderData& data, ) { glm::vec4 textColor = glm::vec4( glm::vec3(_color), - _opacity * fadeInVariable + opacity() * fadeInVariable ); glm::dmat4 VP = glm::dmat4(data.camera.sgctInternal.projectionMatrix()) * diff --git a/modules/globebrowsing/src/globelabelscomponent.h b/modules/globebrowsing/src/globelabelscomponent.h index 841b65cdb2..9f0c418369 100644 --- a/modules/globebrowsing/src/globelabelscomponent.h +++ b/modules/globebrowsing/src/globelabelscomponent.h @@ -26,6 +26,7 @@ #define __OPENSPACE_MODULE_GLOBEBROWSING___GLOBELABELSCOMPONENT___H__ #include +#include #include #include @@ -47,7 +48,7 @@ struct RenderData; namespace documentation { struct Documentation; } namespace globebrowsing { class RenderableGlobe; } -class GlobeLabelsComponent : public properties::PropertyOwner { +class GlobeLabelsComponent : public properties::PropertyOwner, public Fadeable { public: GlobeLabelsComponent(); ~GlobeLabelsComponent() override = default; @@ -85,14 +86,11 @@ private: }; properties::BoolProperty _enabled; + properties::Vec3Property _color; properties::FloatProperty _fontSize; properties::FloatProperty _size; properties::IVec2Property _minMaxSize; properties::FloatProperty _heightOffset; - - properties::Vec3Property _color; - properties::FloatProperty _opacity; - properties::Vec2Property _fadeDistances; properties::BoolProperty _fadeInEnabled; properties::BoolProperty _fadeOutEnabled; diff --git a/modules/globebrowsing/src/gpulayergroup.cpp b/modules/globebrowsing/src/gpulayergroup.cpp index 981fa0c006..d6529ee642 100644 --- a/modules/globebrowsing/src/gpulayergroup.cpp +++ b/modules/globebrowsing/src/gpulayergroup.cpp @@ -48,7 +48,7 @@ void GPULayerGroup::setValue(ghoul::opengl::ProgramObject& program, auto& galuc = gal.uniformCache; const Layer& al = *activeLayers[i]; - program.setUniform(galuc.opacity, al.renderSettings().opacity); + program.setUniform(galuc.opacity, al.opacity()); program.setUniform(galuc.gamma, al.renderSettings().gamma); program.setUniform(galuc.multiplier, al.renderSettings().multiplier); program.setUniform(galuc.offset, al.renderSettings().offset); diff --git a/modules/globebrowsing/src/layer.cpp b/modules/globebrowsing/src/layer.cpp index 57ef993c45..ce0cd7e863 100644 --- a/modules/globebrowsing/src/layer.cpp +++ b/modules/globebrowsing/src/layer.cpp @@ -125,10 +125,10 @@ namespace { // borders std::optional padTiles; - struct Settings { - // The opacity value of the layer - std::optional opacity [[codegen::inrange(0.0, 1.0)]]; + // The opacity value of the layer + std::optional opacity [[codegen::inrange(0.0, 1.0)]]; + struct Settings { // The gamma value that is applied to each pixel of the layer std::optional gamma; @@ -228,8 +228,11 @@ Layer::Layer(layers::Group::ID id, const ghoul::Dictionary& layerDict, LayerGrou _padTilePixelStartOffset = initData.tilePixelStartOffset; _padTilePixelSizeDifference = initData.tilePixelSizeDifference; + _opacity = p.opacity.value_or(_opacity); + addProperty(_opacity); + addProperty(_fade); + if (p.settings.has_value()) { - _renderSettings.opacity = p.settings->opacity.value_or(_renderSettings.opacity); _renderSettings.gamma = p.settings->gamma.value_or(_renderSettings.gamma); _renderSettings.multiplier = p.settings->multiplier.value_or(_renderSettings.multiplier); diff --git a/modules/globebrowsing/src/layer.h b/modules/globebrowsing/src/layer.h index fccba0b56f..6e20489085 100644 --- a/modules/globebrowsing/src/layer.h +++ b/modules/globebrowsing/src/layer.h @@ -26,6 +26,7 @@ #define __OPENSPACE_MODULE_GLOBEBROWSING___LAYER___H__ #include +#include #include #include @@ -42,7 +43,7 @@ struct LayerGroup; struct TileIndex; struct TileProvider; -class Layer : public properties::PropertyOwner { +class Layer : public properties::PropertyOwner, public Fadeable { public: Layer(layers::Group::ID id, const ghoul::Dictionary& layerDict, LayerGroup& parent); diff --git a/modules/globebrowsing/src/layerrendersettings.cpp b/modules/globebrowsing/src/layerrendersettings.cpp index 545023504c..f50f5a0ee2 100644 --- a/modules/globebrowsing/src/layerrendersettings.cpp +++ b/modules/globebrowsing/src/layerrendersettings.cpp @@ -32,14 +32,6 @@ namespace { "values" }; - constexpr openspace::properties::Property::PropertyInfo OpacityInfo = { - "Opacity", - "Opacity", - "This value sets the transparency of this layer. If this value is equal to '1', " - "the layer is completely opaque. If this value is equal to '0', the layer is " - "completely transparent" - }; - constexpr openspace::properties::Property::PropertyInfo GammaInfo = { "Gamma", "Gamma", @@ -65,20 +57,17 @@ namespace openspace::globebrowsing { LayerRenderSettings::LayerRenderSettings() : properties::PropertyOwner({ "Settings" }) - , opacity(OpacityInfo, 1.f, 0.f, 1.f) , gamma(GammaInfo, 1.f, 0.f, 5.f) , multiplier(MultiplierInfo, 1.f, 0.f, 20.f) , offset(OffsetInfo, 0.f, -10000.f, 10000.f) , setDefault(SetDefaultInfo) { - addProperty(opacity); addProperty(gamma); addProperty(multiplier); addProperty(offset); addProperty(setDefault); setDefault.onChange([this](){ - opacity = 1.f; gamma = 1.f; multiplier = 1.f; offset = 0.f; @@ -86,7 +75,6 @@ LayerRenderSettings::LayerRenderSettings() } void LayerRenderSettings::onChange(std::function callback) { - opacity.onChange(callback); gamma.onChange(callback); multiplier.onChange(callback); multiplier.onChange(callback); @@ -95,7 +83,7 @@ void LayerRenderSettings::onChange(std::function callback) { float LayerRenderSettings::performLayerSettings(float v) const { return - ((glm::sign(v) * glm::pow(glm::abs(v), gamma) * multiplier) + offset) * opacity; + ((glm::sign(v) * glm::pow(glm::abs(v), gamma) * multiplier) + offset); } glm::vec4 LayerRenderSettings::performLayerSettings(const glm::vec4& currentValue) const { diff --git a/modules/globebrowsing/src/layerrendersettings.h b/modules/globebrowsing/src/layerrendersettings.h index 1a417eb470..69ffad1a50 100644 --- a/modules/globebrowsing/src/layerrendersettings.h +++ b/modules/globebrowsing/src/layerrendersettings.h @@ -35,7 +35,6 @@ namespace openspace::globebrowsing { struct LayerRenderSettings : public properties::PropertyOwner { LayerRenderSettings(); - properties::FloatProperty opacity; properties::FloatProperty gamma; properties::FloatProperty multiplier; properties::FloatProperty offset; diff --git a/modules/globebrowsing/src/renderableglobe.cpp b/modules/globebrowsing/src/renderableglobe.cpp index 439a939b0e..6fa031d31c 100644 --- a/modules/globebrowsing/src/renderableglobe.cpp +++ b/modules/globebrowsing/src/renderableglobe.cpp @@ -655,6 +655,7 @@ RenderableGlobe::RenderableGlobe(const ghoul::Dictionary& dictionary) // Components _hasRings = p.rings.has_value(); if (_hasRings) { + _ringsComponent.setParentFadeable(this); _ringsComponent.initialize(); addPropertySubOwner(_ringsComponent); } @@ -676,6 +677,9 @@ void RenderableGlobe::initializeGL() { if (!_labelsDictionary.isEmpty()) { _globeLabelsComponent.initialize(_labelsDictionary, this); addPropertySubOwner(_globeLabelsComponent); + + // Fading of the labels should also depend on the fading of the globe + _globeLabelsComponent.setParentFadeable(this); } _layerManager.update(); @@ -749,7 +753,9 @@ void RenderableGlobe::render(const RenderData& data, RendererTasks& rendererTask // Render from light source point of view renderChunks(lightRenderData, rendererTask, {}, true); - if (_hasRings && _ringsComponent.isEnabled()) { + if (_hasRings && _ringsComponent.isEnabled() && + _ringsComponent.isVisible()) + { _ringsComponent.draw( lightRenderData, RingsComponent::RenderPass::GeometryOnly @@ -762,7 +768,9 @@ void RenderableGlobe::render(const RenderData& data, RendererTasks& rendererTask // Render again from original point of view renderChunks(data, rendererTask, _shadowComponent.shadowMapData()); - if (_hasRings && _ringsComponent.isEnabled()) { + if (_hasRings && _ringsComponent.isEnabled() && + _ringsComponent.isVisible()) + { _ringsComponent.draw( data, RingsComponent::RenderPass::GeometryAndShading, @@ -772,7 +780,9 @@ void RenderableGlobe::render(const RenderData& data, RendererTasks& rendererTask } else { renderChunks(data, rendererTask); - if (_hasRings && _ringsComponent.isEnabled()) { + if (_hasRings && _ringsComponent.isEnabled() && + _ringsComponent.isVisible()) + { _ringsComponent.draw( data, RingsComponent::RenderPass::GeometryAndShading diff --git a/modules/globebrowsing/src/ringscomponent.cpp b/modules/globebrowsing/src/ringscomponent.cpp index c7e706e180..1927f1e61e 100644 --- a/modules/globebrowsing/src/ringscomponent.cpp +++ b/modules/globebrowsing/src/ringscomponent.cpp @@ -53,18 +53,18 @@ namespace { constexpr std::string_view _loggerCat = "RingsComponent"; - constexpr std::array UniformNames = { + constexpr std::array UniformNames = { "modelViewProjectionMatrix", "textureOffset", "colorFilterValue", "nightFactor", "sunPosition", "ringTexture", "shadowMatrix", "shadowMapTexture", - "zFightingPercentage" + "zFightingPercentage", "opacity" }; - constexpr std::array UniformNamesAdvancedRings = { + constexpr std::array UniformNamesAdvancedRings = { "modelViewProjectionMatrix", "textureOffset", "colorFilterValue", "nightFactor", "sunPosition", "sunPositionObj", "camPositionObj", "ringTextureFwrd", "ringTextureBckwrd", "ringTextureUnlit", "ringTextureColor", "ringTextureTransparency", "shadowMatrix", "shadowMapTexture", - "zFightingPercentage" + "zFightingPercentage", "opacity" }; constexpr std::array GeomUniformNames = { @@ -248,6 +248,8 @@ void RingsComponent::initialize() { const Parameters p = codegen::bake(_ringsDictionary); addProperty(_enabled); + addProperty(_opacity); + addProperty(_fade); _size.setExponent(15.f); _size = p.size.value_or(_size); @@ -473,6 +475,7 @@ void RingsComponent::draw(const RenderData& data, RenderPass renderPass, _uniformCacheAdvancedRings.ringTextureTransparency, ringTextureTransparencyUnit ); + _shader->setUniform(_uniformCacheAdvancedRings.opacityValue, opacity()); // Adding the model transformation to the final shadow matrix so we have a // complete transformation from the model coordinates to the clip space of @@ -507,7 +510,6 @@ void RingsComponent::draw(const RenderData& data, RenderPass renderPass, glEnable(GL_DEPTH_TEST); glEnablei(GL_BLEND, 0); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - } else { _shader->setUniform( @@ -523,6 +525,7 @@ void RingsComponent::draw(const RenderData& data, RenderPass renderPass, _uniformCache.modelViewProjectionMatrix, modelViewProjectionTransform ); + _shader->setUniform(_uniformCache.opacityValue, opacity()); ringTextureUnit.activate(); _texture->bind(); diff --git a/modules/globebrowsing/src/ringscomponent.h b/modules/globebrowsing/src/ringscomponent.h index d8211dcda8..8b13207348 100644 --- a/modules/globebrowsing/src/ringscomponent.h +++ b/modules/globebrowsing/src/ringscomponent.h @@ -26,6 +26,7 @@ #define __OPENSPACE_MODULE_GLOBEBROWSING___RINGSCOMPONENT___H__ #include +#include #include #include @@ -48,7 +49,7 @@ namespace openspace { namespace documentation { struct Documentation; } -class RingsComponent : public properties::PropertyOwner { +class RingsComponent : public properties::PropertyOwner, public Fadeable { public: enum class RenderPass { GeometryOnly, @@ -95,12 +96,13 @@ private: std::unique_ptr _shader; std::unique_ptr _geometryOnlyShader; UniformCache(modelViewProjectionMatrix, textureOffset, colorFilterValue, nightFactor, - sunPosition, ringTexture, shadowMatrix, shadowMapTexture, zFightingPercentage + sunPosition, ringTexture, shadowMatrix, shadowMapTexture, zFightingPercentage, + opacityValue ) _uniformCache; UniformCache(modelViewProjectionMatrix, textureOffset, colorFilterValue, nightFactor, sunPosition, sunPositionObj, camPositionObj, ringTextureFwrd, ringTextureBckwrd, ringTextureUnlit, ringTextureColor, ringTextureTransparency, shadowMatrix, - shadowMapTexture, zFightingPercentage + shadowMapTexture, zFightingPercentage, opacityValue ) _uniformCacheAdvancedRings; UniformCache(modelViewProjectionMatrix, textureOffset, ringTexture ) _geomUniformCache; diff --git a/modules/space/labelscomponent.cpp b/modules/space/labelscomponent.cpp index d1db51a8b6..5682ab117d 100644 --- a/modules/space/labelscomponent.cpp +++ b/modules/space/labelscomponent.cpp @@ -39,19 +39,19 @@ namespace { constexpr int RenderOptionFaceCamera = 0; constexpr int RenderOptionPositionNormal = 1; + constexpr openspace::properties::Property::PropertyInfo EnabledInfo = { + "Enabled", + "Is Enabled", + "This setting determines whether the labels will be visible or not. They are " + "disabled per default" + }; + constexpr openspace::properties::Property::PropertyInfo FileInfo = { "File", "File", "The speck label file with the data for the labels" }; - constexpr openspace::properties::Property::PropertyInfo OpacityInfo = { - "Opacity", - "Opacity", - "Determines the transparency of the labels, where 1 is completely opaque " - "and 0 fully transparent" - }; - constexpr openspace::properties::Property::PropertyInfo ColorInfo = { "Color", "Color", @@ -90,10 +90,13 @@ namespace { }; struct [[codegen::Dictionary(LabelsComponent)]] Parameters { + // [[codegen::verbatim(EnabledInfo.description)]] + std::optional enabled; + // [[codegen::verbatim(FileInfo.description)]] std::filesystem::path file; - // [[codegen::verbatim(OpacityInfo.description)]] + // The opacity of the labels std::optional opacity [[codegen::inrange(0.0, 1.0)]]; // [[codegen::verbatim(ColorInfo.description)]] @@ -136,7 +139,7 @@ documentation::Documentation LabelsComponent::Documentation() { LabelsComponent::LabelsComponent(const ghoul::Dictionary& dictionary) : properties::PropertyOwner({ "Labels" }) - , _opacity(OpacityInfo, 1.f, 0.f, 1.f) + , _enabled(EnabledInfo, false) , _color(ColorInfo, glm::vec3(1.f), glm::vec3(0.f), glm::vec3(1.f)) , _size(SizeInfo, 8.f, 0.5f, 24.f) , _fontSize(FontSizeInfo, 50.f, 1.f, 300.f) @@ -159,9 +162,14 @@ LabelsComponent::LabelsComponent(const ghoul::Dictionary& dictionary) _unit = DistanceUnit::Meter; } + _enabled = p.enabled.value_or(_enabled); + addProperty(_enabled); + _opacity = p.opacity.value_or(_opacity); addProperty(_opacity); + addProperty(_fade); + _color = p.color.value_or(_color); _color.setViewOption(properties::Property::ViewOptions::Color); addProperty(_color); @@ -223,11 +231,18 @@ bool LabelsComponent::isReady() const { return !(_labelset.entries.empty()); } +bool LabelsComponent::enabled() const { + return _enabled; +} + void LabelsComponent::render(const RenderData& data, const glm::dmat4& modelViewProjectionMatrix, const glm::vec3& orthoRight, const glm::vec3& orthoUp, float fadeInVariable) { + if (!_enabled) { + return; + } float scale = static_cast(toMeter(_unit)); int renderOption = _faceCamera ? RenderOptionFaceCamera : RenderOptionPositionNormal; @@ -245,7 +260,7 @@ void LabelsComponent::render(const RenderData& data, labelInfo.enableDepth = true; labelInfo.enableFalseDepth = false; - glm::vec4 textColor = glm::vec4(glm::vec3(_color), _opacity * fadeInVariable); + glm::vec4 textColor = glm::vec4(glm::vec3(_color), opacity() * fadeInVariable); for (const speck::Labelset::Entry& e : _labelset.entries) { if (!e.isEnabled) { diff --git a/modules/space/labelscomponent.h b/modules/space/labelscomponent.h index b20927df30..9d8759fa7f 100644 --- a/modules/space/labelscomponent.h +++ b/modules/space/labelscomponent.h @@ -26,6 +26,7 @@ #define __OPENSPACE_MODULE_SPACE___LABELSCOMPONENT___H__ #include +#include #include #include @@ -43,7 +44,7 @@ struct RenderData; namespace documentation { struct Documentation; } -class LabelsComponent : public properties::PropertyOwner { +class LabelsComponent : public properties::PropertyOwner, public Fadeable { public: explicit LabelsComponent(const ghoul::Dictionary& dictionary); ~LabelsComponent() override = default; @@ -56,6 +57,7 @@ public: void loadLabels(); bool isReady() const; + bool enabled() const; void render(const RenderData& data, const glm::dmat4& modelViewProjectionMatrix, const glm::vec3& orthoRight, const glm::vec3& orthoUp, @@ -73,7 +75,7 @@ private: glm::dmat4 _transformationMatrix = glm::dmat4(1.0); // Properties - properties::FloatProperty _opacity; + properties::BoolProperty _enabled; properties::Vec3Property _color; properties::FloatProperty _size; properties::FloatProperty _fontSize; diff --git a/modules/space/rendering/renderableconstellationsbase.cpp b/modules/space/rendering/renderableconstellationsbase.cpp index f6d5d87d16..803ebe21f4 100644 --- a/modules/space/rendering/renderableconstellationsbase.cpp +++ b/modules/space/rendering/renderableconstellationsbase.cpp @@ -51,12 +51,6 @@ namespace { "The line width of the constellation" }; - constexpr openspace::properties::Property::PropertyInfo DrawLabelInfo = { - "DrawLabels", - "Draw Labels", - "Determines whether labels should be drawn or hidden" - }; - constexpr openspace::properties::Property::PropertyInfo SelectionInfo = { "ConstellationSelection", "Constellation Selection", @@ -70,9 +64,6 @@ namespace { }; struct [[codegen::Dictionary(RenderableConstellationsBase)]] Parameters { - // [[codegen::verbatim(DrawLabelInfo.description)]] - std::optional drawLabels; - // [[codegen::verbatim(NamesFileInfo.description)]] std::optional namesFile; @@ -100,7 +91,6 @@ RenderableConstellationsBase::RenderableConstellationsBase( : Renderable(dictionary) , _lineWidth(LineWidthInfo, 2.f, 1.f, 16.f) , _selection(SelectionInfo) - , _drawLabels(DrawLabelInfo, false) , _namesFilename(NamesFileInfo) { const Parameters p = codegen::bake(dictionary); @@ -119,12 +109,11 @@ RenderableConstellationsBase::RenderableConstellationsBase( addProperty(_lineWidth); if (p.labels.has_value()) { - _drawLabels = p.drawLabels.value_or(_drawLabels); - addProperty(_drawLabels); - _labels = std::make_unique(*p.labels); _hasLabels = true; addPropertySubOwner(_labels.get()); + // Fading of the labels should also depend on the fading of the renderable + _labels->setParentFadeable(this); } _selection.onChange([this]() { selectionPropertyHasChanged(); }); @@ -218,7 +207,7 @@ bool RenderableConstellationsBase::isReady() const { } void RenderableConstellationsBase::render(const RenderData& data, RendererTasks&) { - if (!_hasLabels || !_drawLabels) { + if (!_hasLabels || !_labels->enabled()) { return; } diff --git a/modules/space/rendering/renderableconstellationsbase.h b/modules/space/rendering/renderableconstellationsbase.h index e942fd528d..13a013dfd2 100644 --- a/modules/space/rendering/renderableconstellationsbase.h +++ b/modules/space/rendering/renderableconstellationsbase.h @@ -85,7 +85,6 @@ protected: // Labels bool _hasLabels = false; - properties::BoolProperty _drawLabels; // Everything related to the labels is handled by LabelsComponent std::unique_ptr _labels; diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4c8d61a145..17118f7297 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -125,6 +125,7 @@ set(OPENSPACE_SOURCE rendering/dashboardtextitem.cpp rendering/framebufferrenderer.cpp rendering/deferredcastermanager.cpp + rendering/fadeable.cpp rendering/helper.cpp rendering/loadingscreen.cpp rendering/luaconsole.cpp @@ -313,6 +314,7 @@ set(OPENSPACE_HEADER ${PROJECT_SOURCE_DIR}/include/openspace/rendering/deferredcaster.h ${PROJECT_SOURCE_DIR}/include/openspace/rendering/deferredcasterlistener.h ${PROJECT_SOURCE_DIR}/include/openspace/rendering/deferredcastermanager.h + ${PROJECT_SOURCE_DIR}/include/openspace/rendering/fadeable.h ${PROJECT_SOURCE_DIR}/include/openspace/rendering/loadingscreen.h ${PROJECT_SOURCE_DIR}/include/openspace/rendering/luaconsole.h ${PROJECT_SOURCE_DIR}/include/openspace/rendering/helper.h diff --git a/src/engine/openspaceengine.cpp b/src/engine/openspaceengine.cpp index 824de87119..13b3f532d9 100644 --- a/src/engine/openspaceengine.cpp +++ b/src/engine/openspaceengine.cpp @@ -134,6 +134,15 @@ namespace { "If checked, hidden scene graph nodes are visible in the UI" }; + constexpr openspace::properties::Property::PropertyInfo FadeDurationInfo = { + "FadeDuration", + "Fade Duration (seconds)", + "Controls how long time the fading in/out takes when enabling/disabling an " + "object through a checkbox in the UI. Holding SHIFT while clicking the " + "checkbox will enable/disable the renderable without fading, as will setting " + "this value to zero." + }; + constexpr openspace::properties::Property::PropertyInfo DisableMouseInputInfo = { "DisableMouseInputs", "Disable All Mouse Inputs", @@ -151,6 +160,7 @@ OpenSpaceEngine::OpenSpaceEngine() , _printEvents(PrintEventsInfo, false) , _visibility(VisibilityInfo) , _showHiddenSceneGraphNodes(ShowHiddenSceneInfo, false) + , _fadeOnEnableDuration(FadeDurationInfo, 1.f, 0.f, 5.f) , _disableAllMouseInputs(DisableMouseInputInfo, false) { FactoryManager::initialize(); @@ -160,6 +170,7 @@ OpenSpaceEngine::OpenSpaceEngine() addProperty(_printEvents); addProperty(_visibility); addProperty(_showHiddenSceneGraphNodes); + addProperty(_fadeOnEnableDuration); addProperty(_disableAllMouseInputs); using Visibility = openspace::properties::Property::Visibility; diff --git a/src/rendering/fadeable.cpp b/src/rendering/fadeable.cpp new file mode 100644 index 0000000000..6342bd50fc --- /dev/null +++ b/src/rendering/fadeable.cpp @@ -0,0 +1,89 @@ +/***************************************************************************************** + * * + * 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 + +#include +#include +#include + +namespace { + constexpr openspace::properties::Property::PropertyInfo OpacityInfo = { + "Opacity", + "Opacity", + "This value determines the opacity of this object. A value of 0 means " + "completely transparent" + }; + + constexpr openspace::properties::Property::PropertyInfo FadeInfo = { + "Fade", + "Fade", + "This value is used by the system to be able to fade out objects " + "independently from the Opacity value selected by the user. This value should " + "not be directly manipulated through a user interface, but instead used by other " + "components of the system programmatically", + // The Developer mode should be used once the properties in the UI listen to this + // openspace::properties::Property::Visibility::Developer + openspace::properties::Property::Visibility::Hidden + }; +} // namespace + +namespace openspace { + +Fadeable::Fadeable() + : _opacity(OpacityInfo, 1.f, 0.f, 1.f) + , _fade(FadeInfo, 1.f, 0.f, 1.f) +{ + // Note that this is not a property owner. It's still up to the subclasses to + // add the properties, assign values, etc. +} + +void Fadeable::setFade(float fade) { + _fade = fade; +} + +void Fadeable::setParentFadeable(Fadeable* parent) { + _parentFadeable = parent; +} + +float Fadeable::fade() const { + return _fade; +} + +bool Fadeable::isVisible() const { + return opacity() > 0.f; +} + +float Fadeable::opacity() const { + float fadeFromParent = 1.f; + if (_parentFadeable) { + // Note that we only care about the fade here, not the full opacity of the + // parent. A subowner might still be visible even if the opacity of the + // parent is set to zero + fadeFromParent = _parentFadeable->fade(); + } + return _opacity * _fade * fadeFromParent; +} + +} // namespace openspace diff --git a/src/rendering/renderable.cpp b/src/rendering/renderable.cpp index 83a17a07e6..149f64d5c2 100644 --- a/src/rendering/renderable.cpp +++ b/src/rendering/renderable.cpp @@ -48,25 +48,6 @@ namespace { "This setting determines whether this object will be visible or not" }; - constexpr openspace::properties::Property::PropertyInfo OpacityInfo = { - "Opacity", - "Opacity", - "This value determines the opacity of this renderable. A value of 0 means " - "completely transparent" - }; - - constexpr openspace::properties::Property::PropertyInfo FadeInfo = { - "Fade", - "Fade", - "This value is used by the system to be able to fade out renderables " - "independently from the Opacity value selected by the user. This value should " - "not be directly manipulated through a user interface, but instead used by other " - "components of the system programmatically", - // The Developer mode should be used once the properties in the UI listen to this - // openspace::properties::Property::Visibility::Developer - openspace::properties::Property::Visibility::Hidden - }; - constexpr openspace::properties::Property::PropertyInfo RenderableTypeInfo = { "Type", "Renderable Type", @@ -95,7 +76,8 @@ namespace { // [[codegen::verbatim(EnabledInfo.description)]] std::optional enabled; - // [[codegen::verbatim(OpacityInfo.description)]] + // This value determines the opacity of this renderable. A value of 0 means + // completely transparent std::optional opacity [[codegen::inrange(0.0, 1.0)]]; // A single tag or a list of tags that this renderable will respond to when @@ -155,9 +137,8 @@ ghoul::mm_unique_ptr Renderable::createFromDictionary( Renderable::Renderable(const ghoul::Dictionary& dictionary) : properties::PropertyOwner({ "Renderable" }) + , Fadeable() , _enabled(EnabledInfo, true) - , _opacity(OpacityInfo, 1.f, 0.f, 1.f) - , _fade(FadeInfo, 1.f, 0.f, 1.f) , _renderableType(RenderableTypeInfo, "Renderable") , _dimInAtmosphere(DimInAtmosphereInfo, false) { @@ -280,12 +261,8 @@ bool Renderable::matchesSecondaryRenderBin(int binMask) const noexcept { return binMask & static_cast(*_secondaryRenderBin); } -void Renderable::setFade(float fade) { - _fade = fade; -} - bool Renderable::isVisible() const { - return _enabled && _opacity > 0.f && _fade > 0.f; + return _enabled && Fadeable::isVisible(); } bool Renderable::isReady() const { @@ -331,7 +308,8 @@ float Renderable::opacity() const { const float dimming = _dimInAtmosphere ? global::navigationHandler->camera()->atmosphereDimmingFactor() : 1.f; - return _opacity * _fade * dimming; + // @TODO (2023-03-20, emmbr) Should the dimming set the fade value instead? + return dimming * Fadeable::opacity(); } } // namespace openspace diff --git a/src/rendering/screenspacerenderable.cpp b/src/rendering/screenspacerenderable.cpp index eb613b5579..15d5d52858 100644 --- a/src/rendering/screenspacerenderable.cpp +++ b/src/rendering/screenspacerenderable.cpp @@ -117,26 +117,6 @@ namespace { "with the background color to produce the final result" }; - constexpr openspace::properties::Property::PropertyInfo OpacityInfo = { - "Opacity", - "Opacity", - "This value determines the opacity of the screen space plane. If this value " - "is 1, the plane is completely opaque, if this value is 0, the plane is " - "completely transparent" - }; - - constexpr openspace::properties::Property::PropertyInfo FadeInfo = { - "Fade", - "Fade", - "This value is used by the system to be able to fade out renderables " - "independently from the Opacity value selected by the user. This value should " - "not be directly manipulated through a user interface, but instead used by other " - "components of the system programmatically", - // The Developer mode should be used once the properties in the UI listen to this - // openspace::properties::Property::Visibility::Developer - openspace::properties::Property::Visibility::Hidden - }; - constexpr openspace::properties::Property::PropertyInfo DeleteInfo = { "Delete", "Delete", @@ -208,7 +188,9 @@ namespace { // [[codegen::verbatim(BackgroundColorInfo.description)]] std::optional backgroundColor [[codegen::color()]]; - // [codegen::verbatim(OpacityInfo.description)]] + // This value determines the opacity of the screen space plane. If this value + // is 1, the plane is completely opaque, if this value is 0, the plane is + // completely transparent std::optional opacity [[codegen::inrange(0.f, 1.f)]]; // Defines either a single or multiple tags that apply to this @@ -293,8 +275,6 @@ ScreenSpaceRenderable::ScreenSpaceRenderable(const ghoul::Dictionary& dictionary glm::vec4(0.f), glm::vec4(1.f) ) - , _opacity(OpacityInfo, 1.f, 0.f, 1.f) - , _fade(FadeInfo, 1.f, 0.f, 1.f) , _delete(DeleteInfo) { const Parameters p = codegen::bake(dictionary); @@ -705,8 +685,4 @@ glm::vec3 ScreenSpaceRenderable::sphericalToRae(glm::vec3 spherical) const { ); } - -float ScreenSpaceRenderable::opacity() const { - return _opacity * _fade; -} } // namespace openspace From 1a4c9bcbfc1427093591109e4806467eeb8b2705 Mon Sep 17 00:00:00 2001 From: Emma Broman Date: Thu, 6 Apr 2023 13:31:27 +0200 Subject: [PATCH 23/31] Remove forgotten comment --- src/rendering/renderable.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/rendering/renderable.cpp b/src/rendering/renderable.cpp index 149f64d5c2..9dba75a752 100644 --- a/src/rendering/renderable.cpp +++ b/src/rendering/renderable.cpp @@ -308,7 +308,6 @@ float Renderable::opacity() const { const float dimming = _dimInAtmosphere ? global::navigationHandler->camera()->atmosphereDimmingFactor() : 1.f; - // @TODO (2023-03-20, emmbr) Should the dimming set the fade value instead? return dimming * Fadeable::opacity(); } From 36538bf74be0eb6c04b34ecbb0d40d882e8d5245 Mon Sep 17 00:00:00 2001 From: Emma Broman Date: Thu, 6 Apr 2023 13:48:33 +0200 Subject: [PATCH 24/31] Update GUI hash OpenSpace/OpenSpace-WebGuiFrontend#141 --- data/assets/util/webgui.asset | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/assets/util/webgui.asset b/data/assets/util/webgui.asset index 618dfb94dd..3e808f2f32 100644 --- a/data/assets/util/webgui.asset +++ b/data/assets/util/webgui.asset @@ -3,7 +3,7 @@ asset.require("./static_server") local guiCustomization = asset.require("customization/gui") -- Select which commit hashes to use for the frontend and backend -local frontendHash = "baf7c80db5f94a400b08e946ce3fdb4de47ad1d6" +local frontendHash = "cf11c5ac6e0c62f1f2a82dfab7b7ec8db614a643" local dataProvider = "data.openspaceproject.com/files/webgui" local frontend = asset.syncedResource({ From 28cacd3df4277eb0e15a51d6d8cada5c6ed14b57 Mon Sep 17 00:00:00 2001 From: Gene Payne Date: Thu, 6 Apr 2023 15:00:51 -0600 Subject: [PATCH 25/31] Fix for missing image projection sequences --- data/assets/scene/solarsystem/missions/rosetta/67p.asset | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/data/assets/scene/solarsystem/missions/rosetta/67p.asset b/data/assets/scene/solarsystem/missions/rosetta/67p.asset index e93f1971a8..93e86cae24 100644 --- a/data/assets/scene/solarsystem/missions/rosetta/67p.asset +++ b/data/assets/scene/solarsystem/missions/rosetta/67p.asset @@ -21,10 +21,11 @@ local images = asset.syncedResource({ Type = "HttpSynchronization", Identifier = "rosettaimages", Version = 2, - UnzipFiles = true + UnzipFiles = true, + UnzipFilesDestination = "images" }) -local imagesDestination = images .. "images_v1_v2" +local imagesDestination = images .. "images" local Barycenter = { Identifier = "67PBarycenter", From bebac26a7f3637caaa3b316251e95b698e0959b8 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Sat, 8 Apr 2023 20:21:47 +0200 Subject: [PATCH 26/31] Add new 99.5% coverage CTX layer --- .../planets/mars/default_layers.asset | 2 +- .../mars/layers/colorlayers/ctx_blended.asset | 36 +++++++++++++++++++ .../{ctx_blended_01.vrt => ctx_blended.vrt} | 4 +-- .../mars/layers/colorlayers/ctx_blended.wms | 22 ++++++++++++ ...nded_01.asset => ctx_blended_beta01.asset} | 2 +- .../layers/colorlayers/ctx_blended_beta01.vrt | 28 +++++++++++++++ ..._blended_01.wms => ctx_blended_beta01.wms} | 12 ++++--- 7 files changed, 98 insertions(+), 8 deletions(-) create mode 100644 data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended.asset rename data/assets/scene/solarsystem/planets/mars/layers/colorlayers/{ctx_blended_01.vrt => ctx_blended.vrt} (90%) create mode 100644 data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended.wms rename data/assets/scene/solarsystem/planets/mars/layers/colorlayers/{ctx_blended_01.asset => ctx_blended_beta01.asset} (97%) create mode 100644 data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended_beta01.vrt rename data/assets/scene/solarsystem/planets/mars/layers/colorlayers/{ctx_blended_01.wms => ctx_blended_beta01.wms} (71%) diff --git a/data/assets/scene/solarsystem/planets/mars/default_layers.asset b/data/assets/scene/solarsystem/planets/mars/default_layers.asset index 92b856d860..f3390997c6 100644 --- a/data/assets/scene/solarsystem/planets/mars/default_layers.asset +++ b/data/assets/scene/solarsystem/planets/mars/default_layers.asset @@ -14,7 +14,7 @@ asset.require("./layers/colorlayers/themis_ir_night_utah", false) asset.require("./layers/colorlayers/themis_ir_night_sweden", false) asset.require("./layers/colorlayers/ctx_mosaic_utah", false) asset.require("./layers/colorlayers/ctx_mosaic_sweden", false) -asset.require("./layers/colorlayers/ctx_blended_01", false) +asset.require("./layers/colorlayers/ctx_blended", false) asset.require("./layers/colorlayers/hirise", false) asset.require("./layers/colorlayers/hirisels", false) diff --git a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended.asset b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended.asset new file mode 100644 index 0000000000..4df28544f5 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended.asset @@ -0,0 +1,36 @@ +local globeIdentifier = asset.require("../../mars").Mars.Identifier + +local layer = { + Identifier = "CTX_blended", + Name = "CTX Blended", + Enabled = asset.enabled, + FilePath = asset.localResource("ctx_blended.vrt"), + BlendMode = "Color", + Description = [[The Bruce Murray Laboratory for Planetary Visualization has completed a 5.7 terapixel mosaic of the surface of Mars rendered at 5.0 m/px. Each pixel in the mosaic is about the size of a typical parking space, providing unprecedented resolution of the martian surface at the global scale. + + The mosaic covers 99.5% of Mars from 88°S to 88°N. The pixels that make up the mosaic can all be mapped back to their source data, providing full traceability for the entire mosaic. The mosaic is available to stream over the internet and to download, as described below. + + All data in the mosaic come from the Context Camera (CTX) onboard the Mars Reconnaissance Orbiter (MRO). (Description from URL)]] +} + +asset.onInitialize(function() + openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.onDeinitialize(function() + openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer) +end) + +asset.export("layer", layer) + + + +asset.meta = { + Name = "CTX Blended", + Version = "1.0", + Description = [[New blended CTX map for Mars from CalTech Murray lab. This map is + hosted by ESRI]], + Author = "Caltech Murray Lab", + URL = "http://murray-lab.caltech.edu/CTX/", + License = "Esri Master License Agreement" +} diff --git a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended_01.vrt b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended.vrt similarity index 90% rename from data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended_01.vrt rename to data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended.vrt index ed8fb78132..342a7ad608 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended_01.vrt +++ b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended.vrt @@ -5,7 +5,7 @@ 0.00000000000000E+00 Gray - ctx_blended_01.wms + ctx_blended.wms 1 @@ -17,7 +17,7 @@ 0 Alpha - ctx_blended_01.wms + ctx_blended.wms 1 diff --git a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended.wms b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended.wms new file mode 100644 index 0000000000..cb5c3f9598 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended.wms @@ -0,0 +1,22 @@ + + + https://astro.arcgis.com/arcgis/rest/services/OnMars/CTX1/raw/tile/${z}/${y}/${x} + + + -180.0 + 90.0 + 180.0 + -90.0 + 4194304 + 2097152 + 12 + top + + GEOGCS["GCS_Mars_2000_Sphere",DATUM["D_Mars_2000_Sphere",SPHEROID["Mars_2000_Sphere_IAU_IAG",3396190.0,0.0]],PRIMEM["Reference_Meridian",0.0],UNIT["Degree",0.0174532925199433]] + 512 + 512 + 1 + 5 + + 404,400 + diff --git a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended_01.asset b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended_beta01.asset similarity index 97% rename from data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended_01.asset rename to data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended_beta01.asset index 884991fc0b..e4e4f48944 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended_01.asset +++ b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended_beta01.asset @@ -4,7 +4,7 @@ local layer = { Identifier = "CTX_blended_01", Name = "CTX Blended beta01", Enabled = asset.enabled, - FilePath = asset.localResource("ctx_blended_01.vrt"), + FilePath = asset.localResource("ctx_blended_beta01.vrt"), BlendMode = "Color", Settings = { Gamma = 2.14, diff --git a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended_beta01.vrt b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended_beta01.vrt new file mode 100644 index 0000000000..5b4b29aa85 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended_beta01.vrt @@ -0,0 +1,28 @@ + + GEOGCS["GCS_Mars_2000_Sphere",DATUM["D_Mars_2000_Sphere",SPHEROID["Mars_2000_Sphere_IAU_IAG",3396190.0,0.0]],PRIMEM["Reference_Meridian",0.0],UNIT["Degree",0.0174532925199433]] + -8.1000000000000000e+02, 8.5830688476562500e-05, 0.0000000000000000e+00, 9.0000000000000000e+01, 0.0000000000000000e+00, -8.5830688476562500e-05 + + 0.00000000000000E+00 + Gray + + ctx_blended_beta01.wms + 1 + + + + 0 + + + + 0 + Alpha + + ctx_blended_beta01.wms + 1 + + + + 0:0,1:255,255:255 + + + diff --git a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended_01.wms b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended_beta01.wms similarity index 71% rename from data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended_01.wms rename to data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended_beta01.wms index 28ea11c342..fb7677b04f 100644 --- a/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended_01.wms +++ b/data/assets/scene/solarsystem/planets/mars/layers/colorlayers/ctx_blended_beta01.wms @@ -3,10 +3,14 @@ http://astro.arcgis.com/arcgis/rest/services/OnMars/CTX/MapServer/tile/${z}/${y}/${x} - -180.0 90.0 - 180.0 -90.0 - 4194304 2097152 - 12 top + -180.0 + 90.0 + 180.0 + -90.0 + 4194304 + 2097152 + 12 + top GEOGCS["GCS_Mars_2000_Sphere",DATUM["D_Mars_2000_Sphere",SPHEROID["Mars_2000_Sphere_IAU_IAG",3396190.0,0.0]],PRIMEM["Reference_Meridian",0.0],UNIT["Degree",0.0174532925199433]] 512 From 9022aad4792b1484b355fc2666a9b93babbf1167 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Mon, 10 Apr 2023 20:49:01 +0200 Subject: [PATCH 27/31] Adding static Settings to Renderable (#2578) * Add settings to Renderable to control whether the renderbin is updated based on Opacity * Remove duplicate RenderBin specification for RenderableSphere * Remove unnecessary RenderBin specifications of Lagrange points * Don't automatically update the renderbin for RenderableLabel and RenderablePlane * Remove extra `setRenderBinFromOpacity` from RenderableSpheres * Move information about whether a renderable should be updated when disabled * Some cleanup of Renderable class * Don't update the renderbin automatically if the user specified the renderbin manually --- .../digitaluniverse/backgroundradiation.asset | 4 -- .../backgroundradiation_multiverse.asset | 4 -- .../digitaluniverse/milkyway_sphere.asset | 1 - data/assets/scene/milkyway/milkyway/eso.asset | 1 - .../solarsystem/missions/jwst/jwst.asset | 3 +- .../planets/earth/lagrange_points/L1.asset | 1 - .../planets/earth/lagrange_points/L2.asset | 2 - .../planets/earth/lagrange_points/L4.asset | 1 - .../planets/earth/lagrange_points/L5.asset | 1 - data/assets/scene/solarsystem/sun/glare.asset | 3 +- include/openspace/rendering/fadeable.h | 2 +- include/openspace/rendering/renderable.h | 34 ++++++++++----- .../rendering/grids/renderableboxgrid.cpp | 1 - .../base/rendering/grids/renderablegrid.cpp | 1 - .../rendering/grids/renderableradialgrid.cpp | 1 - .../grids/renderablesphericalgrid.cpp | 1 - modules/base/rendering/renderablelabel.cpp | 5 +-- modules/base/rendering/renderablemodel.cpp | 3 +- modules/base/rendering/renderablenodeline.cpp | 14 +++--- modules/base/rendering/renderableplane.cpp | 3 +- modules/base/rendering/renderablesphere.cpp | 2 - .../rendering/renderabletimevaryingsphere.cpp | 2 - modules/base/rendering/renderabletrail.cpp | 2 +- .../rendering/renderabledumeshes.cpp | 1 - .../rendering/renderablepoints.cpp | 1 - .../include/screenspaceskybrowser.h | 2 +- .../skybrowser/src/screenspaceskybrowser.cpp | 2 +- .../renderableconstellationsbase.cpp | 1 - modules/space/rendering/renderablestars.cpp | 1 - .../space/rendering/renderabletravelspeed.cpp | 2 +- .../rendering/renderableshadowcylinder.cpp | 1 - src/rendering/fadeable.cpp | 2 +- src/rendering/renderable.cpp | 43 +++++++++++++------ 33 files changed, 72 insertions(+), 76 deletions(-) diff --git a/data/assets/scene/digitaluniverse/backgroundradiation.asset b/data/assets/scene/digitaluniverse/backgroundradiation.asset index 4b6c8f00e2..5605f16bad 100644 --- a/data/assets/scene/digitaluniverse/backgroundradiation.asset +++ b/data/assets/scene/digitaluniverse/backgroundradiation.asset @@ -29,7 +29,6 @@ local wmap = { Texture = textures .. "wmap_ilc_7yr_v4_200uK_RGB_sos.png", Orientation = "Both", MirrorTexture = true, - RenderBinMode = "PreDeferredTransparent", FadeInThreshold = 0.4 }, GUI = { @@ -55,7 +54,6 @@ local cbe = { Texture = textures .. "COBErect.png", Orientation = "Both", MirrorTexture = true, - RenderBinMode = "PreDeferredTransparent", FadeInThreshold = 0.4 }, GUI = { @@ -81,7 +79,6 @@ local planck = { Texture = textures .. "cmb4k.jpg", Orientation = "Both", MirrorTexture = true, - RenderBinMode = "PreDeferredTransparent", FadeInThreshold = 0.4 }, GUI = { @@ -107,7 +104,6 @@ local Halpha = { Opacity = 0.4, Texture = textures .. "mwHalpha-f.png", Orientation = "Inside", - RenderBinMode = "PreDeferredTransparent", MirrorTexture = true, FadeOutThreshold = 0.025, Background = true diff --git a/data/assets/scene/digitaluniverse/backgroundradiation_multiverse.asset b/data/assets/scene/digitaluniverse/backgroundradiation_multiverse.asset index 736a1e416e..9015923568 100644 --- a/data/assets/scene/digitaluniverse/backgroundradiation_multiverse.asset +++ b/data/assets/scene/digitaluniverse/backgroundradiation_multiverse.asset @@ -26,7 +26,6 @@ local multiverse_planck_1 = { Texture = textures .. "cmb4k.jpg", Orientation = "Both", MirrorTexture = true, - RenderBinMode = "PreDeferredTransparent", FadeInThreshold = 0.4 }, GUI = { @@ -56,7 +55,6 @@ local multiverse_planck_2 = { Texture = textures .. "cmb4k.jpg", Orientation = "Both", MirrorTexture = true, - RenderBinMode = "PreDeferredTransparent", FadeInThreshold = 0.4 }, GUI = { @@ -86,7 +84,6 @@ local multiverse_planck_3 = { Texture = textures .. "cmb4k.jpg", Orientation = "Both", MirrorTexture = true, - RenderBinMode = "PreDeferredTransparent", FadeInThreshold = 0.4 }, GUI = { @@ -116,7 +113,6 @@ local multiverse_planck_4 = { Texture = textures .. "cmb4k.jpg", Orientation = "Both", MirrorTexture = true, - RenderBinMode = "PreDeferredTransparent", FadeInThreshold = 0.4 }, GUI = { diff --git a/data/assets/scene/digitaluniverse/milkyway_sphere.asset b/data/assets/scene/digitaluniverse/milkyway_sphere.asset index 2cde64e74a..9094724bd9 100644 --- a/data/assets/scene/digitaluniverse/milkyway_sphere.asset +++ b/data/assets/scene/digitaluniverse/milkyway_sphere.asset @@ -21,7 +21,6 @@ local sphere = { Opacity = 0.35, Texture = sphereTextures .. "DarkUniverse_mellinger_4k.jpg", Orientation = "Inside", - RenderBinMode = "PreDeferredTransparent", MirrorTexture = true, FadeOutThreshold = 0.0015, Background = true, diff --git a/data/assets/scene/milkyway/milkyway/eso.asset b/data/assets/scene/milkyway/milkyway/eso.asset index 37f64415bc..0276fea594 100644 --- a/data/assets/scene/milkyway/milkyway/eso.asset +++ b/data/assets/scene/milkyway/milkyway/eso.asset @@ -19,7 +19,6 @@ local object = { Segments = 40, Opacity = 0.4, Texture = textures .. "eso0932a_blend.png", - RenderBinMode = "PreDeferredTransparent", Orientation = "Inside", MirrorTexture = true, FadeOutThreshold = 0.01, diff --git a/data/assets/scene/solarsystem/missions/jwst/jwst.asset b/data/assets/scene/solarsystem/missions/jwst/jwst.asset index 2df50e614b..821929ee73 100644 --- a/data/assets/scene/solarsystem/missions/jwst/jwst.asset +++ b/data/assets/scene/solarsystem/missions/jwst/jwst.asset @@ -48,8 +48,7 @@ local JWSTBand = { Segments = 50, DisableFadeInOut = true, Orientation = "Inside", - Opacity = 0.05, - RenderBinMode = "PreDeferredTransparent", + Opacity = 0.05 }, Tag = { "mission_jwst_fov" }, GUI = { diff --git a/data/assets/scene/solarsystem/planets/earth/lagrange_points/L1.asset b/data/assets/scene/solarsystem/planets/earth/lagrange_points/L1.asset index 82a0506fe3..bf774d859f 100644 --- a/data/assets/scene/solarsystem/planets/earth/lagrange_points/L1.asset +++ b/data/assets/scene/solarsystem/planets/earth/lagrange_points/L1.asset @@ -39,7 +39,6 @@ local L1 = { Parent = L1Position.Identifier, Renderable = { Type = "RenderablePlaneImageLocal", - RenderBinMode = "Opaque", Billboard = true, Size = 700E5, Texture = circle .. "circle.png", diff --git a/data/assets/scene/solarsystem/planets/earth/lagrange_points/L2.asset b/data/assets/scene/solarsystem/planets/earth/lagrange_points/L2.asset index bae8099049..5dfbe59979 100644 --- a/data/assets/scene/solarsystem/planets/earth/lagrange_points/L2.asset +++ b/data/assets/scene/solarsystem/planets/earth/lagrange_points/L2.asset @@ -64,7 +64,6 @@ local L2Small = { Parent = L2Position.Identifier, Renderable = { Type = "RenderablePlaneImageLocal", - RenderBinMode = "Opaque", Billboard = true, Size = 400E4, Texture = circle .. "circle.png", @@ -82,7 +81,6 @@ local L2 = { Parent = L2Position.Identifier, Renderable = { Type = "RenderablePlaneImageLocal", - RenderBinMode = "Opaque", Billboard = true, Size = 700E5, Texture = circle .. "circle.png", diff --git a/data/assets/scene/solarsystem/planets/earth/lagrange_points/L4.asset b/data/assets/scene/solarsystem/planets/earth/lagrange_points/L4.asset index 4acaf26ebf..4118b9e731 100644 --- a/data/assets/scene/solarsystem/planets/earth/lagrange_points/L4.asset +++ b/data/assets/scene/solarsystem/planets/earth/lagrange_points/L4.asset @@ -39,7 +39,6 @@ local L4 = { Parent = L4Position.Identifier, Renderable = { Type = "RenderablePlaneImageLocal", - RenderBinMode = "Opaque", Billboard = true, Size = 800E6, Texture = circle .. "circle.png", diff --git a/data/assets/scene/solarsystem/planets/earth/lagrange_points/L5.asset b/data/assets/scene/solarsystem/planets/earth/lagrange_points/L5.asset index cd66f1bc15..fcb3c0a195 100644 --- a/data/assets/scene/solarsystem/planets/earth/lagrange_points/L5.asset +++ b/data/assets/scene/solarsystem/planets/earth/lagrange_points/L5.asset @@ -39,7 +39,6 @@ local L5 = { Parent = L5Position.Identifier, Renderable = { Type = "RenderablePlaneImageLocal", - RenderBinMode = "Opaque", Billboard = true, Size = 800E6, Texture = circle .. "circle.png", diff --git a/data/assets/scene/solarsystem/sun/glare.asset b/data/assets/scene/solarsystem/sun/glare.asset index 6f497ca306..501580dba7 100644 --- a/data/assets/scene/solarsystem/sun/glare.asset +++ b/data/assets/scene/solarsystem/sun/glare.asset @@ -19,8 +19,7 @@ local SunGlare = { Billboard = true, Texture = textures .. "halo.png", BlendMode = "Additive", - Opacity = 0.65, - RenderBinMode = "PreDeferredTransparent" + Opacity = 0.65 }, GUI = { Name = "Sun Glare", diff --git a/include/openspace/rendering/fadeable.h b/include/openspace/rendering/fadeable.h index 907ff7c7a6..5caf218e00 100644 --- a/include/openspace/rendering/fadeable.h +++ b/include/openspace/rendering/fadeable.h @@ -48,7 +48,7 @@ public: virtual bool isVisible() const; /// Returns the full opacity constructed from the _opacity and _fade property values - virtual float opacity() const; + virtual float opacity() const noexcept; protected: properties::FloatProperty _opacity; diff --git a/include/openspace/rendering/renderable.h b/include/openspace/rendering/renderable.h index f23e2892d6..fa3fd4971d 100644 --- a/include/openspace/rendering/renderable.h +++ b/include/openspace/rendering/renderable.h @@ -55,6 +55,11 @@ class Camera; class Renderable : public properties::PropertyOwner, public Fadeable { public: + struct Settings { + bool automaticallyUpdateRenderBin = true; + bool shouldUpdateIfDisabled = false; + }; + enum class RenderBin : int { Background = 1, Opaque = 2, @@ -66,7 +71,7 @@ public: static ghoul::mm_unique_ptr createFromDictionary( ghoul::Dictionary dictionary); - Renderable(const ghoul::Dictionary& dictionary); + Renderable(const ghoul::Dictionary& dictionary, Settings settings = Settings()); virtual ~Renderable() override = default; virtual void initialize(); @@ -76,12 +81,12 @@ public: virtual bool isReady() const = 0; bool isEnabled() const; - bool shouldUpdateIfDisabled() const; + bool shouldUpdateIfDisabled() const noexcept; - double boundingSphere() const; - double interactionSphere() const; + double boundingSphere() const noexcept; + double interactionSphere() const noexcept; - std::string_view typeAsString() const; + std::string_view typeAsString() const noexcept; virtual void update(const UpdateData& data); virtual void render(const RenderData& data, RendererTasks& rendererTask); @@ -118,15 +123,14 @@ protected: void setInteractionSphere(double interactionSphere); void setRenderBinFromOpacity(); - void registerUpdateRenderBinFromOpacity(); /// Returns the full opacity constructed from the _opacity and _fade property values - float opacity() const override; + float opacity() const noexcept override; + + SceneGraphNode* parent() const noexcept; + + bool automaticallyUpdatesRenderBin() const noexcept; - double _boundingSphere = 0.0; - double _interactionSphere = 0.0; - SceneGraphNode* _parent = nullptr; - bool _shouldUpdateIfDisabled = false; RenderBin _renderBin = RenderBin::Opaque; // An optional renderbin that renderables can use for certain components, in cases @@ -134,6 +138,14 @@ protected: std::optional _secondaryRenderBin; private: + void registerUpdateRenderBinFromOpacity(); + + double _boundingSphere = 0.0; + double _interactionSphere = 0.0; + SceneGraphNode* _parent = nullptr; + const bool _shouldUpdateIfDisabled = false; + bool _automaticallyUpdateRenderBin = true; + // We only want the SceneGraphNode to be able manipulate the parent, so we don't want // to provide a set method for this. Otherwise, anyone might mess around with our // parentage and that's no bueno diff --git a/modules/base/rendering/grids/renderableboxgrid.cpp b/modules/base/rendering/grids/renderableboxgrid.cpp index 3bf8ecd385..5cc398a1c4 100644 --- a/modules/base/rendering/grids/renderableboxgrid.cpp +++ b/modules/base/rendering/grids/renderableboxgrid.cpp @@ -92,7 +92,6 @@ RenderableBoxGrid::RenderableBoxGrid(const ghoul::Dictionary& dictionary) const Parameters p = codegen::bake(dictionary); addProperty(_opacity); - registerUpdateRenderBinFromOpacity(); _color = p.color.value_or(_color); _color.setViewOption(properties::Property::ViewOptions::Color); diff --git a/modules/base/rendering/grids/renderablegrid.cpp b/modules/base/rendering/grids/renderablegrid.cpp index 0dcc8e9249..9f5fd7f5cb 100644 --- a/modules/base/rendering/grids/renderablegrid.cpp +++ b/modules/base/rendering/grids/renderablegrid.cpp @@ -135,7 +135,6 @@ RenderableGrid::RenderableGrid(const ghoul::Dictionary& dictionary) const Parameters p = codegen::bake(dictionary); addProperty(_opacity); - registerUpdateRenderBinFromOpacity(); _color = p.color.value_or(_color); _color.setViewOption(properties::Property::ViewOptions::Color); diff --git a/modules/base/rendering/grids/renderableradialgrid.cpp b/modules/base/rendering/grids/renderableradialgrid.cpp index d9d1b7d09d..0026495a5b 100644 --- a/modules/base/rendering/grids/renderableradialgrid.cpp +++ b/modules/base/rendering/grids/renderableradialgrid.cpp @@ -117,7 +117,6 @@ RenderableRadialGrid::RenderableRadialGrid(const ghoul::Dictionary& dictionary) const Parameters p = codegen::bake(dictionary); addProperty(_opacity); - registerUpdateRenderBinFromOpacity(); _color = p.color.value_or(_color); _color.setViewOption(properties::Property::ViewOptions::Color); diff --git a/modules/base/rendering/grids/renderablesphericalgrid.cpp b/modules/base/rendering/grids/renderablesphericalgrid.cpp index bf58e7a461..8b75307f6d 100644 --- a/modules/base/rendering/grids/renderablesphericalgrid.cpp +++ b/modules/base/rendering/grids/renderablesphericalgrid.cpp @@ -94,7 +94,6 @@ RenderableSphericalGrid::RenderableSphericalGrid(const ghoul::Dictionary& dictio const Parameters p = codegen::bake(dictionary); addProperty(_opacity); - registerUpdateRenderBinFromOpacity(); _color = p.color.value_or(_color); _color.setViewOption(properties::Property::ViewOptions::Color); diff --git a/modules/base/rendering/renderablelabel.cpp b/modules/base/rendering/renderablelabel.cpp index cda0245757..072891ee73 100644 --- a/modules/base/rendering/renderablelabel.cpp +++ b/modules/base/rendering/renderablelabel.cpp @@ -238,7 +238,7 @@ documentation::Documentation RenderableLabel::Documentation() { } RenderableLabel::RenderableLabel(const ghoul::Dictionary& dictionary) - : Renderable(dictionary) + : Renderable(dictionary, { .automaticallyUpdateRenderBin = false }) , _blendMode(BlendModeInfo, properties::OptionProperty::DisplayType::Dropdown) , _color(ColorInfo, glm::vec3(1.f), glm::vec3(0.f), glm::vec3(1.f)) , _fontSize(FontSizeInfo, 50.f, 1.f, 100.f) @@ -260,11 +260,10 @@ RenderableLabel::RenderableLabel(const ghoul::Dictionary& dictionary) const Parameters p = codegen::bake(dictionary); addProperty(_opacity); - registerUpdateRenderBinFromOpacity(); _blendMode.addOptions({ { BlendMode::Normal, "Normal" }, - { BlendMode::Additive, "Additive"} + { BlendMode::Additive, "Additive" } }); _blendMode.onChange([&]() { switch (_blendMode) { diff --git a/modules/base/rendering/renderablemodel.cpp b/modules/base/rendering/renderablemodel.cpp index 04210ff701..425564c60b 100644 --- a/modules/base/rendering/renderablemodel.cpp +++ b/modules/base/rendering/renderablemodel.cpp @@ -293,7 +293,6 @@ RenderableModel::RenderableModel(const ghoul::Dictionary& dictionary) const Parameters p = codegen::bake(dictionary); addProperty(_opacity); - registerUpdateRenderBinFromOpacity(); if (p.forceRenderInvisible.has_value()) { _forceRenderInvisible = *p.forceRenderInvisible; @@ -690,7 +689,7 @@ void RenderableModel::update(const UpdateData& data) { glm::compMax(data.modelTransform.scale) ); // Set Interaction sphere size to be 10% of the bounding sphere - setInteractionSphere(_boundingSphere * 0.1); + setInteractionSphere(boundingSphere() * 0.1); if (_geometry->hasAnimation() && !_animationStart.empty()) { double relativeTime; diff --git a/modules/base/rendering/renderablenodeline.cpp b/modules/base/rendering/renderablenodeline.cpp index 7cb476c62c..26b08ce787 100644 --- a/modules/base/rendering/renderablenodeline.cpp +++ b/modules/base/rendering/renderablenodeline.cpp @@ -181,7 +181,7 @@ RenderableNodeLine::RenderableNodeLine(const ghoul::Dictionary& dictionary) "Trying to use relative offsets for start node '{}' that has no " "bounding sphere. This will result in no offset. Use direct " "values by setting UseRelativeOffsets to false", - _parent->identifier(), _start + parent()->identifier(), _start )); } }); @@ -199,7 +199,7 @@ RenderableNodeLine::RenderableNodeLine(const ghoul::Dictionary& dictionary) "Trying to use relative offsets for end node '{}' that has no " "bounding sphere. This will result in no offset. Use direct " "values by setting UseRelativeOffsets to false", - _parent->identifier(), _end + parent()->identifier(), _end )); } }); @@ -212,7 +212,7 @@ RenderableNodeLine::RenderableNodeLine(const ghoul::Dictionary& dictionary) if (!startNode) { LERROR(fmt::format( "Error when recomputing node line offsets for scene graph node '{}'. " - "Could not find start node '{}'", _parent->identifier(), _start.value() + "Could not find start node '{}'", parent()->identifier(), _start.value() )); return; } @@ -220,7 +220,7 @@ RenderableNodeLine::RenderableNodeLine(const ghoul::Dictionary& dictionary) if (!endNode) { LERROR(fmt::format( "Error when recomputing node line offsets for scene graph node '{}'. " - "Could not find end node '{}'", _parent->identifier(), _end.value() + "Could not find end node '{}'", parent()->identifier(), _end.value() )); return; } @@ -229,8 +229,10 @@ RenderableNodeLine::RenderableNodeLine(const ghoul::Dictionary& dictionary) // Recompute previous offsets to relative values double startBs = startNode->boundingSphere(); double endBs = endNode->boundingSphere(); - _startOffset = startBs > 0.0 ? _startOffset / startBs : 0.0; - _endOffset = endBs > 0.0 ? _endOffset / startBs : 0.0; + _startOffset = + static_cast(startBs > 0.0 ? _startOffset / startBs : 0.0); + _endOffset = + static_cast(endBs > 0.0 ? _endOffset / startBs : 0.0); } else { // Recompute relative values to meters diff --git a/modules/base/rendering/renderableplane.cpp b/modules/base/rendering/renderableplane.cpp index 647fe4818b..5fdc971f7c 100644 --- a/modules/base/rendering/renderableplane.cpp +++ b/modules/base/rendering/renderableplane.cpp @@ -113,7 +113,7 @@ documentation::Documentation RenderablePlane::Documentation() { } RenderablePlane::RenderablePlane(const ghoul::Dictionary& dictionary) - : Renderable(dictionary) + : Renderable(dictionary, { .automaticallyUpdateRenderBin = false }) , _blendMode(BlendModeInfo, properties::OptionProperty::DisplayType::Dropdown) , _billboard(BillboardInfo, false) , _mirrorBackside(MirrorBacksideInfo, false) @@ -123,7 +123,6 @@ RenderablePlane::RenderablePlane(const ghoul::Dictionary& dictionary) Parameters p = codegen::bake(dictionary); addProperty(_opacity); - registerUpdateRenderBinFromOpacity(); _size = p.size; _billboard = p.billboard.value_or(_billboard); diff --git a/modules/base/rendering/renderablesphere.cpp b/modules/base/rendering/renderablesphere.cpp index 2db518a6a0..f340951674 100644 --- a/modules/base/rendering/renderablesphere.cpp +++ b/modules/base/rendering/renderablesphere.cpp @@ -162,7 +162,6 @@ RenderableSphere::RenderableSphere(const ghoul::Dictionary& dictionary) const Parameters p = codegen::bake(dictionary); addProperty(_opacity); - registerUpdateRenderBinFromOpacity(); _size = p.size; _segments = p.segments; @@ -208,7 +207,6 @@ RenderableSphere::RenderableSphere(const ghoul::Dictionary& dictionary) addProperty(_disableFadeInDistance); setBoundingSphere(_size); - setRenderBinFromOpacity(); } bool RenderableSphere::isReady() const { diff --git a/modules/base/rendering/renderabletimevaryingsphere.cpp b/modules/base/rendering/renderabletimevaryingsphere.cpp index 0a0d488380..3cfd71cac7 100644 --- a/modules/base/rendering/renderabletimevaryingsphere.cpp +++ b/modules/base/rendering/renderabletimevaryingsphere.cpp @@ -164,7 +164,6 @@ RenderableTimeVaryingSphere::RenderableTimeVaryingSphere( const Parameters p = codegen::bake(dictionary); addProperty(_opacity); - registerUpdateRenderBinFromOpacity(); _size = p.size; _segments = p.segments; @@ -208,7 +207,6 @@ RenderableTimeVaryingSphere::RenderableTimeVaryingSphere( } setBoundingSphere(_size); - setRenderBinFromOpacity(); } bool RenderableTimeVaryingSphere::isReady() const { diff --git a/modules/base/rendering/renderabletrail.cpp b/modules/base/rendering/renderabletrail.cpp index 6dd70af5bb..92911e76eb 100644 --- a/modules/base/rendering/renderabletrail.cpp +++ b/modules/base/rendering/renderabletrail.cpp @@ -433,7 +433,7 @@ void RenderableTrail::render(const RenderData& data, RendererTasks&) { ); const double distance = glm::distance(trailPosWorld, data.camera.eyePositionVec3()); - if (distance > _boundingSphere * DISTANCE_CULLING_RADII) { + if (distance > boundingSphere() * DISTANCE_CULLING_RADII) { return; } diff --git a/modules/digitaluniverse/rendering/renderabledumeshes.cpp b/modules/digitaluniverse/rendering/renderabledumeshes.cpp index ae243e0087..7ea15ca523 100644 --- a/modules/digitaluniverse/rendering/renderabledumeshes.cpp +++ b/modules/digitaluniverse/rendering/renderabledumeshes.cpp @@ -189,7 +189,6 @@ RenderableDUMeshes::RenderableDUMeshes(const ghoul::Dictionary& dictionary) const Parameters p = codegen::bake(dictionary); addProperty(_opacity); - registerUpdateRenderBinFromOpacity(); _speckFile = absPath(p.file).string(); _hasSpeckFile = true; diff --git a/modules/digitaluniverse/rendering/renderablepoints.cpp b/modules/digitaluniverse/rendering/renderablepoints.cpp index 62db7cda17..9558e33956 100644 --- a/modules/digitaluniverse/rendering/renderablepoints.cpp +++ b/modules/digitaluniverse/rendering/renderablepoints.cpp @@ -130,7 +130,6 @@ RenderablePoints::RenderablePoints(const ghoul::Dictionary& dictionary) const Parameters p = codegen::bake(dictionary); addProperty(_opacity); - registerUpdateRenderBinFromOpacity(); _speckFile = absPath(p.file); diff --git a/modules/skybrowser/include/screenspaceskybrowser.h b/modules/skybrowser/include/screenspaceskybrowser.h index dd0a7ed772..9a59fb5d35 100644 --- a/modules/skybrowser/include/screenspaceskybrowser.h +++ b/modules/skybrowser/include/screenspaceskybrowser.h @@ -46,7 +46,7 @@ public: void render() override; void update() override; - float opacity() const; + float opacity() const noexcept; glm::dvec2 fineTuneVector(const glm::dvec2& drag); bool isInitialized() const; bool isPointingSpacecraft() const; diff --git a/modules/skybrowser/src/screenspaceskybrowser.cpp b/modules/skybrowser/src/screenspaceskybrowser.cpp index 85cf3c6eab..0eb7bee4e4 100644 --- a/modules/skybrowser/src/screenspaceskybrowser.cpp +++ b/modules/skybrowser/src/screenspaceskybrowser.cpp @@ -377,7 +377,7 @@ void ScreenSpaceSkyBrowser::setOpacity(float opacity) { _opacity = opacity; } -float ScreenSpaceSkyBrowser::opacity() const { +float ScreenSpaceSkyBrowser::opacity() const noexcept { return _opacity; } diff --git a/modules/space/rendering/renderableconstellationsbase.cpp b/modules/space/rendering/renderableconstellationsbase.cpp index 803ebe21f4..f791badbca 100644 --- a/modules/space/rendering/renderableconstellationsbase.cpp +++ b/modules/space/rendering/renderableconstellationsbase.cpp @@ -96,7 +96,6 @@ RenderableConstellationsBase::RenderableConstellationsBase( const Parameters p = codegen::bake(dictionary); addProperty(_opacity); - registerUpdateRenderBinFromOpacity(); // Avoid reading files here, instead do it in multithreaded initialize() if (p.namesFile.has_value()) { diff --git a/modules/space/rendering/renderablestars.cpp b/modules/space/rendering/renderablestars.cpp index 0c55c86114..d9601b2cd0 100644 --- a/modules/space/rendering/renderablestars.cpp +++ b/modules/space/rendering/renderablestars.cpp @@ -541,7 +541,6 @@ RenderableStars::RenderableStars(const ghoul::Dictionary& dictionary) const Parameters p = codegen::bake(dictionary); addProperty(_opacity); - registerUpdateRenderBinFromOpacity(); _dataMapping.bvColor = p.dataMapping.bv.value_or(""); _dataMapping.bvColor.onChange([this]() { _dataIsDirty = true; }); diff --git a/modules/space/rendering/renderabletravelspeed.cpp b/modules/space/rendering/renderabletravelspeed.cpp index 8813c15a4d..8004fcaf7a 100644 --- a/modules/space/rendering/renderabletravelspeed.cpp +++ b/modules/space/rendering/renderabletravelspeed.cpp @@ -259,7 +259,7 @@ void RenderableTravelSpeed::update(const UpdateData& data) { } _targetPosition = _targetNode->worldPosition(); - SceneGraphNode* mySGNPointer = _parent; + SceneGraphNode* mySGNPointer = parent(); ghoul_assert(mySGNPointer, "Renderable have to be owned by scene graph node"); _sourcePosition = mySGNPointer->worldPosition(); diff --git a/modules/spacecraftinstruments/rendering/renderableshadowcylinder.cpp b/modules/spacecraftinstruments/rendering/renderableshadowcylinder.cpp index 8e0fa9172e..c548d6d01e 100644 --- a/modules/spacecraftinstruments/rendering/renderableshadowcylinder.cpp +++ b/modules/spacecraftinstruments/rendering/renderableshadowcylinder.cpp @@ -161,7 +161,6 @@ RenderableShadowCylinder::RenderableShadowCylinder(const ghoul::Dictionary& dict const Parameters p = codegen::bake(dictionary); addProperty(_opacity); - registerUpdateRenderBinFromOpacity(); _numberOfPoints = p.numberOfPoints.value_or(_numberOfPoints); addProperty(_numberOfPoints); diff --git a/src/rendering/fadeable.cpp b/src/rendering/fadeable.cpp index 6342bd50fc..a1439dc086 100644 --- a/src/rendering/fadeable.cpp +++ b/src/rendering/fadeable.cpp @@ -75,7 +75,7 @@ bool Fadeable::isVisible() const { return opacity() > 0.f; } -float Fadeable::opacity() const { +float Fadeable::opacity() const noexcept { float fadeFromParent = 1.f; if (_parentFadeable) { // Note that we only care about the fade here, not the full opacity of the diff --git a/src/rendering/renderable.cpp b/src/rendering/renderable.cpp index 9dba75a752..8c8c15c4af 100644 --- a/src/rendering/renderable.cpp +++ b/src/rendering/renderable.cpp @@ -135,20 +135,29 @@ ghoul::mm_unique_ptr Renderable::createFromDictionary( -Renderable::Renderable(const ghoul::Dictionary& dictionary) +Renderable::Renderable(const ghoul::Dictionary& dictionary, Settings settings) : properties::PropertyOwner({ "Renderable" }) , Fadeable() , _enabled(EnabledInfo, true) , _renderableType(RenderableTypeInfo, "Renderable") , _dimInAtmosphere(DimInAtmosphereInfo, false) + , _shouldUpdateIfDisabled(settings.shouldUpdateIfDisabled) + , _automaticallyUpdateRenderBin(settings.automaticallyUpdateRenderBin) { ZoneScoped; - // I can't come up with a good reason not to do this for all renderables - registerUpdateRenderBinFromOpacity(); - const Parameters p = codegen::bake(dictionary); + if (p.renderBinMode.has_value()) { + _automaticallyUpdateRenderBin = false; + setRenderBin(codegen::map(*p.renderBinMode)); + } + + if (_automaticallyUpdateRenderBin) { + ghoul_assert(!p.renderBinMode.has_value(), "Something misfired in constructor"); + registerUpdateRenderBinFromOpacity(); + } + if (p.tag.has_value()) { if (std::holds_alternative(*p.tag)) { if (!std::get(*p.tag).empty()) { @@ -184,11 +193,6 @@ Renderable::Renderable(const ghoul::Dictionary& dictionary) _renderableType = p.type.value_or(_renderableType); addProperty(_renderableType); - // only used by a few classes such as RenderableTrail and RenderableSphere - if (p.renderBinMode.has_value()) { - setRenderBin(codegen::map(*p.renderBinMode)); - } - _dimInAtmosphere = p.dimInAtmosphere.value_or(_dimInAtmosphere); addProperty(_dimInAtmosphere); } @@ -211,7 +215,7 @@ void Renderable::setBoundingSphere(double boundingSphere) { _boundingSphere = boundingSphere; } -double Renderable::boundingSphere() const { +double Renderable::boundingSphere() const noexcept { return _boundingSphere; } @@ -219,11 +223,11 @@ void Renderable::setInteractionSphere(double interactionSphere) { _interactionSphere = interactionSphere; } -double Renderable::interactionSphere() const { +double Renderable::interactionSphere() const noexcept { return _interactionSphere; } -std::string_view Renderable::typeAsString() const { +std::string_view Renderable::typeAsString() const noexcept { return _renderableType; } @@ -273,7 +277,7 @@ bool Renderable::isEnabled() const { return _enabled; } -bool Renderable::shouldUpdateIfDisabled() const { +bool Renderable::shouldUpdateIfDisabled() const noexcept { return _shouldUpdateIfDisabled; } @@ -300,9 +304,11 @@ void Renderable::setRenderBinFromOpacity() { void Renderable::registerUpdateRenderBinFromOpacity() { _opacity.onChange([this]() { setRenderBinFromOpacity(); }); _fade.onChange([this]() { setRenderBinFromOpacity(); }); + + _automaticallyUpdateRenderBin = true; } -float Renderable::opacity() const { +float Renderable::opacity() const noexcept { // Rendering should depend on if camera is in the atmosphere and if camera is at the // dark part of the globe const float dimming = _dimInAtmosphere ? @@ -311,4 +317,13 @@ float Renderable::opacity() const { return dimming * Fadeable::opacity(); } +SceneGraphNode* Renderable::parent() const noexcept { + ghoul_assert(dynamic_cast(owner()), "Owner is not a SceneGraphNode"); + return static_cast(owner()); +} + +bool Renderable::automaticallyUpdatesRenderBin() const noexcept { + return _automaticallyUpdateRenderBin; +} + } // namespace openspace From 327c1b2399c12601f8c5cc19100d3ebdb8577c36 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Mon, 10 Apr 2023 20:49:30 +0200 Subject: [PATCH 28/31] Updating SPICE Kernels and adding new Moons to Outer Planets (#2556) * Update Jupiter moon kernels and add new moons * Update Neptune kernels * Update Uranus kernels * Update Saturn kernels * Add Jupiter moons * Add more Saturn moons * Add more moons for Jupiter and Saturn --- .../planets/jupiter/callisto/callisto.asset | 2 +- .../planets/jupiter/callisto/trail.asset | 2 +- .../planets/jupiter/europa/europa.asset | 4 +- .../planets/jupiter/europa/trail.asset | 2 +- .../planets/jupiter/ganymede/ganymede.asset | 2 +- .../planets/jupiter/ganymede/trail.asset | 2 +- .../solarsystem/planets/jupiter/io/io.asset | 2 +- .../planets/jupiter/io/trail.asset | 2 +- .../solarsystem/planets/jupiter/kernels.asset | 7 +- .../planets/jupiter/minor/ananke_group.asset | 167 ++++++- .../planets/jupiter/minor/carme_group.asset | 237 +++++++++- .../planets/jupiter/minor/carpo_group.asset | 21 +- .../planets/jupiter/minor/himalia_group.asset | 76 +++- .../planets/jupiter/minor/inner_group.asset | 2 +- .../planets/jupiter/minor/other_groups.asset | 112 +---- .../jupiter/minor/pasiphae_group.asset | 59 ++- .../jupiter/minor/themisto_group.asset | 2 +- .../planets/neptune/inner_moons.asset | 24 +- ...rade_moons.asset => irregular_moons.asset} | 45 +- .../neptune/irregular_retrograde_moons.asset | 143 ------ .../solarsystem/planets/neptune/kernels.asset | 10 +- .../planets/neptune/major_moons.asset | 3 +- .../planets/neptune/minor_moons.asset | 7 +- .../solarsystem/planets/neptune/neptune.asset | 4 +- .../planets/neptune/nereid/nereid.asset | 93 ++++ .../solarsystem/planets/neptune/trail.asset | 4 +- .../planets/neptune/trail_barycenter.asset | 4 +- .../planets/neptune/trail_earth.asset | 4 +- .../planets/neptune/transforms.asset | 4 +- .../planets/neptune/{ => triton}/triton.asset | 6 +- .../planets/saturn/dione/dione.asset | 2 +- .../planets/saturn/dione/trail.asset | 2 +- .../planets/saturn/enceladus/enceladus.asset | 2 +- .../planets/saturn/enceladus/trail.asset | 2 +- .../planets/saturn/hyperion/hyperion.asset | 2 +- .../planets/saturn/hyperion/trail.asset | 2 +- .../planets/saturn/iapetus/iapetus.asset | 2 +- .../planets/saturn/iapetus/trail.asset | 2 +- .../solarsystem/planets/saturn/kernels.asset | 9 +- .../planets/saturn/mimas/mimas.asset | 2 +- .../planets/saturn/mimas/trail.asset | 2 +- .../planets/saturn/minor/gallic_group.asset | 2 +- .../planets/saturn/minor/inuit_group.asset | 56 ++- .../planets/saturn/minor/norse_group.asset | 422 +++++++++++++++--- .../planets/saturn/minor/other_group.asset | 39 +- .../planets/saturn/rhea/rhea.asset | 2 +- .../planets/saturn/rhea/trail.asset | 2 +- .../planets/saturn/tethys/tethys.asset | 2 +- .../planets/saturn/tethys/trail.asset | 2 +- .../planets/saturn/titan/titan.asset | 2 +- .../planets/saturn/titan/trail.asset | 2 +- .../planets/uranus/inner_moons.asset | 2 +- .../uranus/irregular_prograde_moons.asset | 2 +- .../uranus/irregular_retrograde_moons.asset | 2 +- .../solarsystem/planets/uranus/kernels.asset | 6 +- 55 files changed, 1225 insertions(+), 399 deletions(-) rename data/assets/scene/solarsystem/planets/neptune/{irregular_prograde_moons.asset => irregular_moons.asset} (79%) delete mode 100644 data/assets/scene/solarsystem/planets/neptune/irregular_retrograde_moons.asset create mode 100644 data/assets/scene/solarsystem/planets/neptune/nereid/nereid.asset rename data/assets/scene/solarsystem/planets/neptune/{ => triton}/triton.asset (92%) diff --git a/data/assets/scene/solarsystem/planets/jupiter/callisto/callisto.asset b/data/assets/scene/solarsystem/planets/jupiter/callisto/callisto.asset index 6f038f0fa0..f74a81f97c 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/callisto/callisto.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/callisto/callisto.asset @@ -1,7 +1,7 @@ local transforms = asset.require("../transforms") asset.require("spice/base") asset.require("./trail") -local kernel = asset.require("../kernels").jup310 +local kernel = asset.require("../kernels").jup365 local labelsPath = asset.syncedResource({ Name = "Jupiter Labels", diff --git a/data/assets/scene/solarsystem/planets/jupiter/callisto/trail.asset b/data/assets/scene/solarsystem/planets/jupiter/callisto/trail.asset index 4e278dd93d..0576249c34 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/callisto/trail.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/callisto/trail.asset @@ -1,6 +1,6 @@ local transforms = asset.require("../transforms") asset.require("spice/base") -local kernel = asset.require("../kernels").jup310 +local kernel = asset.require("../kernels").jup365 diff --git a/data/assets/scene/solarsystem/planets/jupiter/europa/europa.asset b/data/assets/scene/solarsystem/planets/jupiter/europa/europa.asset index 002cce3765..b81150b745 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/europa/europa.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/europa/europa.asset @@ -1,7 +1,7 @@ local transforms = asset.require("../transforms") asset.require("spice/base") asset.require("./trail") -local kernel = asset.require("../kernels").jup310 +local kernel = asset.require("../kernels").jup365 local labelsPath = asset.syncedResource({ Name = "Jupiter Labels", @@ -92,7 +92,7 @@ asset.export(Europa) asset.meta = { - Name = "Mimas", + Name = "Europa", Version = "1.1", Description = "Europa globe with labels", Author = "OpenSpace Team", diff --git a/data/assets/scene/solarsystem/planets/jupiter/europa/trail.asset b/data/assets/scene/solarsystem/planets/jupiter/europa/trail.asset index 5a5e6e7e1b..7854fc5514 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/europa/trail.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/europa/trail.asset @@ -1,6 +1,6 @@ local transforms = asset.require("../transforms") asset.require("spice/base") -local kernel = asset.require("../kernels").jup310 +local kernel = asset.require("../kernels").jup365 local EuropaTrail = { Identifier = "EuropaTrail", diff --git a/data/assets/scene/solarsystem/planets/jupiter/ganymede/ganymede.asset b/data/assets/scene/solarsystem/planets/jupiter/ganymede/ganymede.asset index 40fad40f2c..d5aa371cd1 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/ganymede/ganymede.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/ganymede/ganymede.asset @@ -1,7 +1,7 @@ local transforms = asset.require("../transforms") asset.require("spice/base") asset.require("./trail") -local kernel = asset.require("../kernels").jup310 +local kernel = asset.require("../kernels").jup365 local labelsPath = asset.syncedResource({ Name = "Jupiter Labels", diff --git a/data/assets/scene/solarsystem/planets/jupiter/ganymede/trail.asset b/data/assets/scene/solarsystem/planets/jupiter/ganymede/trail.asset index 974be0f559..48d08b3b2f 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/ganymede/trail.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/ganymede/trail.asset @@ -1,6 +1,6 @@ local transforms = asset.require("../transforms") asset.require("spice/base") -local kernel = asset.require("../kernels").jup310 +local kernel = asset.require("../kernels").jup365 diff --git a/data/assets/scene/solarsystem/planets/jupiter/io/io.asset b/data/assets/scene/solarsystem/planets/jupiter/io/io.asset index ff28967ee9..b06f55b355 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/io/io.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/io/io.asset @@ -1,7 +1,7 @@ local transforms = asset.require("../transforms") asset.require("spice/base") asset.require("./trail") -local kernel = asset.require("../kernels").jup310 +local kernel = asset.require("../kernels").jup365 local labelsPath = asset.syncedResource({ Name = "Jupiter Labels", diff --git a/data/assets/scene/solarsystem/planets/jupiter/io/trail.asset b/data/assets/scene/solarsystem/planets/jupiter/io/trail.asset index 3c963617bb..4b75ba1f8d 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/io/trail.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/io/trail.asset @@ -1,6 +1,6 @@ local transforms = asset.require("../transforms") asset.require("spice/base") -local kernel = asset.require("../kernels").jup310 +local kernel = asset.require("../kernels").jup365 diff --git a/data/assets/scene/solarsystem/planets/jupiter/kernels.asset b/data/assets/scene/solarsystem/planets/jupiter/kernels.asset index cbc3414775..f8aa9766e9 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/kernels.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/kernels.asset @@ -2,11 +2,12 @@ local Kernels = asset.syncedResource({ Name = "Jupiter Spice Kernels", Type = "HttpSynchronization", Identifier = "jupiter_kernels", - Version = 1 + Version = 2 }) -asset.export("jup310", Kernels .. "jup310.bsp") -asset.export("jup341", Kernels .. "jup341.bsp") +asset.export("jup344", Kernels .. "jup344.bsp") +asset.export("jup346", Kernels .. "jup346.bsp") +asset.export("jup365", Kernels .. "jup365.bsp") asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/jupiter/minor/ananke_group.asset b/data/assets/scene/solarsystem/planets/jupiter/minor/ananke_group.asset index 0db8004434..f77e5c80e6 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/minor/ananke_group.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/minor/ananke_group.asset @@ -1,6 +1,7 @@ local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("../transforms") -local kernel = asset.require("../kernels").jup341 +local kernel = asset.require("../kernels").jup344 +local kernel346 = asset.require("../kernels").jup346 @@ -92,7 +93,7 @@ local anankeGroup = { Identifier = parentIdentifier, Spice = parentSpice }, - Spice = "55068", + Spice = "55506", Radii = { 2000, 2000, 2000 }, Tags = tags, TrailTags = trailTags, @@ -205,6 +206,168 @@ local anankeGroup = { TrailColor = trailColor, OrbitPeriod = 640.38, Kernels = kernel + }, + { + Identifier = "S2021J1", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "55512", + Radii = { 1000, 1000, 1000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2021 J 1", + Path = "/Solar System/Planets/Jupiter/Moons/Ananke Group" + }, + TrailColor = trailColor, + OrbitPeriod = 606.99, + Kernels = kernel346 + }, + { + Identifier = "S2021J2", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "55513", + Radii = { 1000, 1000, 1000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2021 J 2", + Path = "/Solar System/Planets/Jupiter/Moons/Ananke Group" + }, + TrailColor = trailColor, + OrbitPeriod = 627.96, + Kernels = kernel346 + }, + { + Identifier = "S2021J3", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "55514", + Radii = { 2000, 2000, 2000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2021 J 3", + Path = "/Solar System/Planets/Jupiter/Moons/Ananke Group" + }, + TrailColor = trailColor, + OrbitPeriod = 643.85, + Kernels = kernel346 + }, + { + Identifier = "S2022J3", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "55523", + Radii = { 1000, 1000, 1000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2022 J 3", + Path = "/Solar System/Planets/Jupiter/Moons/Ananke Group" + }, + TrailColor = trailColor, + OrbitPeriod = 617.82, + Kernels = kernel346 + }, + { + Identifier = "S2017J3", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "564", + Radii = { 2000, 2000, 2000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2017 J 3", + Path = "/Solar System/Planets/Jupiter/Moons/Ananke Group" + }, + TrailColor = trailColor, + OrbitPeriod = 606.3, + Kernels = kernel + }, + { + Identifier = "S2017J7", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "568", + Radii = { 2000, 2000, 2000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2017 J 7", + Path = "/Solar System/Planets/Jupiter/Moons/Ananke Group" + }, + TrailColor = trailColor, + OrbitPeriod = 602.6, + Kernels = kernel + }, + { + Identifier = "S2017J9", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "570", + Radii = { 3000, 3000, 3000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2017 J 9", + Path = "/Solar System/Planets/Jupiter/Moons/Ananke Group" + }, + TrailColor = trailColor, + OrbitPeriod = 639.2, + Kernels = kernel + }, + { + Identifier = "S2003J2", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "55501", + Radii = { 2000, 2000, 2000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2003 J 2", + Path = "/Solar System/Planets/Jupiter/Moons/Ananke Group" + }, + TrailColor = trailColor, + OrbitPeriod = 602.02, + Kernels = kernel + }, + { + Identifier = "S2003J12", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "55505", + Radii = { 1000, 1000, 1000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2003 J 12", + Path = "/Solar System/Planets/Jupiter/Moons/Ananke Group" + }, + TrailColor = trailColor, + OrbitPeriod = 646.64, + Kernels = kernel } } diff --git a/data/assets/scene/solarsystem/planets/jupiter/minor/carme_group.asset b/data/assets/scene/solarsystem/planets/jupiter/minor/carme_group.asset index 683cf0c489..90763e4a77 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/minor/carme_group.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/minor/carme_group.asset @@ -1,6 +1,7 @@ local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("../transforms") -local kernel = asset.require("../kernels").jup341 +local kernel = asset.require("../kernels").jup344 +local kernel346 = asset.require("../kernels").jup346 @@ -273,6 +274,240 @@ local carmeGroup = { TrailColor = trailColor, OrbitPeriod = 758.34, Kernels = kernel + }, + { + Identifier = "S2018J3", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "55511", + Radii = { 1000, 1000, 1000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2018 J 3", + Path = "/Solar System/Planets/Jupiter/Moons/Carme Group" + }, + TrailColor = trailColor, + OrbitPeriod = 704.56, + Kernels = kernel346 + }, + { + Identifier = "S2021J4", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "55515", + Radii = { 1000, 1000, 1000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2021 J 4", + Path = "/Solar System/Planets/Jupiter/Moons/Carme Group" + }, + TrailColor = trailColor, + OrbitPeriod = 710.13, + Kernels = kernel346 + }, + { + Identifier = "S2021J5", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "55516", + Radii = { 2000, 2000, 2000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2021 J 5", + Path = "/Solar System/Planets/Jupiter/Moons/Carme Group" + }, + TrailColor = trailColor, + OrbitPeriod = 704.80, + Kernels = kernel346 + }, + { + Identifier = "S2021J6", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "55517", + Radii = { 1000, 1000, 1000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2021 J 6", + Path = "/Solar System/Planets/Jupiter/Moons/Carme Group" + }, + TrailColor = trailColor, + OrbitPeriod = 732.55, + Kernels = kernel346 + }, + { + Identifier = "S2016J3", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "55518", + Radii = { 2000, 2000, 2000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2016 J 3", + Path = "/Solar System/Planets/Jupiter/Moons/Carme Group" + }, + TrailColor = trailColor, + OrbitPeriod = 676.37, + Kernels = kernel346 + }, + { + Identifier = "S2022J1", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "55521", + Radii = { 2000, 2000, 2000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2022 J 1", + Path = "/Solar System/Planets/Jupiter/Moons/Carme Group" + }, + TrailColor = trailColor, + OrbitPeriod = 667.34, + Kernels = kernel346 + }, + { + Identifier = "S2022J2", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "55522", + Radii = { 1000, 1000, 1000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2022 J 2", + Path = "/Solar System/Planets/Jupiter/Moons/Carme Group" + }, + TrailColor = trailColor, + OrbitPeriod = 685.51, + Kernels = kernel346 + }, + { + Identifier = "S2017J2", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "563", + Radii = { 1000, 1000, 1000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2017 J 2", + Path = "/Solar System/Planets/Jupiter/Moons/Carme Group" + }, + TrailColor = trailColor, + OrbitPeriod = 723.1, + Kernels = kernel346 + }, + { + Identifier = "S2017J5", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "566", + Radii = { 2000, 2000, 2000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2017 J 5", + Path = "/Solar System/Planets/Jupiter/Moons/Carme Group" + }, + TrailColor = trailColor, + OrbitPeriod = 719.5, + Kernels = kernel + }, + { + Identifier = "S2017J8", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "569", + Radii = { 1000, 1000, 1000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2017 J 8", + Path = "/Solar System/Planets/Jupiter/Moons/Carme Group" + }, + TrailColor = trailColor, + OrbitPeriod = 719.6, + Kernels = kernel + }, + { + Identifier = "S2011J1", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "572", + Radii = { 2000, 2000, 2000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2011 J 1", + Path = "/Solar System/Planets/Jupiter/Moons/Carme Group" + }, + TrailColor = trailColor, + OrbitPeriod = 686.6, + Kernels = kernel + }, + { + Identifier = "S2003J9", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "55503", + Radii = { 1000, 1000, 1000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2003 J 9", + Path = "/Solar System/Planets/Jupiter/Moons/Carme Group" + }, + TrailColor = trailColor, + OrbitPeriod = 767.6, + Kernels = kernel + }, + { + Identifier = "S2003J10", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "55504", + Radii = { 2000, 2000, 2000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2003 J 10", + Path = "/Solar System/Planets/Jupiter/Moons/Carme Group" + }, + TrailColor = trailColor, + OrbitPeriod = 705.96, + Kernels = kernel } } diff --git a/data/assets/scene/solarsystem/planets/jupiter/minor/carpo_group.asset b/data/assets/scene/solarsystem/planets/jupiter/minor/carpo_group.asset index 64e658658e..f6f721bd4a 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/minor/carpo_group.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/minor/carpo_group.asset @@ -1,6 +1,7 @@ local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("../transforms") -local kernel = asset.require("../kernels").jup341 +local kernel = asset.require("../kernels").jup344 +local kernel346 = asset.require("../kernels").jup346 @@ -33,6 +34,24 @@ local carpoGroup = { TrailColor = trailColor, OrbitPeriod = 458.62, Kernels = kernel + }, + { + Identifier = "S2018J4", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "55520", + Radii = { 2000, 2000, 2000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2018 J 4", + Path = "/Solar System/Planets/Jupiter/Moons/Carpo Group" + }, + TrailColor = trailColor, + OrbitPeriod = 427.631, + Kernels = kernel346 } } diff --git a/data/assets/scene/solarsystem/planets/jupiter/minor/himalia_group.asset b/data/assets/scene/solarsystem/planets/jupiter/minor/himalia_group.asset index e66ae2fa9c..906bbd179d 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/minor/himalia_group.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/minor/himalia_group.asset @@ -1,6 +1,7 @@ local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("../transforms") -local kernel = asset.require("../kernels").jup341 +local kernel = asset.require("../kernels").jup344 +local kernel346 = asset.require("../kernels").jup346 @@ -91,8 +92,7 @@ local himaliaGroup = { Identifier = parentIdentifier, Spice = parentSpice }, - -- Spice = "DIA", -- The Identifier is not correctly registered in the Spice kernel - Spice = "553", + Spice = "DIA", Radii = { 4000, 4000, 4000 }, Tags = tags, TrailTags = trailTags, @@ -102,6 +102,76 @@ local himaliaGroup = { TrailColor = trailColor, OrbitPeriod = 287.93, Kernels = kernel + }, + { + Identifier = "S2011J3", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "55509", + Radii = { 3000, 3000, 3000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2011 J 3", + Path = "/Solar System/Planets/Jupiter/Moons/Himalia Group" + }, + TrailColor = trailColor, + OrbitPeriod = 261.77, + Kernels = kernel346 + }, + { + Identifier = "S2018J2", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "55510", + Radii = { 3000, 3000, 3000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2018 J 2", + Path = "/Solar System/Planets/Jupiter/Moons/Himalia Group" + }, + TrailColor = trailColor, + OrbitPeriod = 250.88, + Kernels = kernel346 + }, + { + Identifier = "Pandia", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "565", + Radii = { 3000, 3000, 3000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Path = "/Solar System/Planets/Jupiter/Moons/Himalia Group" + }, + TrailColor = trailColor, + OrbitPeriod = 251.911, + Kernels = kernel + }, + { + Identifier = "Ersa", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "571", + Radii = { 3000, 3000, 3000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Path = "/Solar System/Planets/Jupiter/Moons/Himalia Group" + }, + TrailColor = trailColor, + OrbitPeriod = 249.229, + Kernels = kernel } } diff --git a/data/assets/scene/solarsystem/planets/jupiter/minor/inner_group.asset b/data/assets/scene/solarsystem/planets/jupiter/minor/inner_group.asset index 49e438f9af..17524a2be7 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/minor/inner_group.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/minor/inner_group.asset @@ -1,6 +1,6 @@ local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("../transforms") -local kernel = asset.require("../kernels").jup341 +local kernel = asset.require("../kernels").jup365 diff --git a/data/assets/scene/solarsystem/planets/jupiter/minor/other_groups.asset b/data/assets/scene/solarsystem/planets/jupiter/minor/other_groups.asset index ca46e4a280..75f6a0e8ce 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/minor/other_groups.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/minor/other_groups.asset @@ -1,6 +1,6 @@ local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("../transforms") -local kernel = asset.require("../kernels").jup341 +local kernel = asset.require("../kernels").jup344 @@ -18,57 +18,21 @@ local trailTags = { local otherGroups = { { - Identifier = "S2003J12", + Identifier = "Eupheme", Parent = { Identifier = parentIdentifier, Spice = parentSpice }, - Spice = "55066", - Radii = { 1000, 1000, 1000 }, - Tags = tags, - TrailTags = trailTags, - GUI = { - Name = "S/2003 J 12", - Path = "/Solar System/Planets/Jupiter/Moons/Other Groups" - }, - TrailColor = trailColor, - OrbitPeriod = 482.69, - Kernels = kernel - }, - { - Identifier = "S/2003J3", - Parent = { - Identifier = parentIdentifier, - Spice = parentSpice - }, - Spice = "55061", + Spice = "560", Radii = { 2000, 2000, 2000 }, Tags = tags, TrailTags = trailTags, GUI = { - Name = "S/2003 J 3", + Name = "Eupheme", Path = "/Solar System/Planets/Jupiter/Moons/Other Groups" }, TrailColor = trailColor, - OrbitPeriod = 561.52, - Kernels = kernel - }, - { - Identifier = "S2011J1", - Parent = { - Identifier = parentIdentifier, - Spice = parentSpice - }, - Spice = "55074", - Radii = { 1000, 1000, 1000 }, - Tags = tags, - TrailTags = trailTags, - GUI = { - Name = "S/2011 J 1", - Path = "/Solar System/Planets/Jupiter/Moons/Other Groups" - }, - TrailColor = trailColor, - OrbitPeriod = 582.22, + OrbitPeriod = 628.06, Kernels = kernel }, { @@ -77,7 +41,7 @@ local otherGroups = { Identifier = parentIdentifier, Spice = parentSpice }, - Spice = "55070", + Spice = "561", Radii = { 2000, 2000, 2000 }, Tags = tags, TrailTags = trailTags, @@ -90,75 +54,21 @@ local otherGroups = { Kernels = kernel }, { - Identifier = "S2003J10", + Identifier = "Valetudo", Parent = { Identifier = parentIdentifier, Spice = parentSpice }, - Spice = "55065", - Radii = { 2000, 2000, 2000 }, + Spice = "562", + Radii = { 1000, 1000, 1000 }, Tags = tags, TrailTags = trailTags, GUI = { - Name = "S/2003 J 10", + Name = "Valetudo", Path = "/Solar System/Planets/Jupiter/Moons/Other Groups" }, TrailColor = trailColor, - OrbitPeriod = 700.13, - Kernels = kernel - }, - { - Identifier = "S2003J23", - Parent = { - Identifier = parentIdentifier, - Spice = parentSpice - }, - Spice = "55071", - Radii = { 2000, 2000, 2000 }, - Tags = tags, - TrailTags = trailTags, - GUI = { - Name = "S/2003 J 23", - Path = "/Solar System/Planets/Jupiter/Moons/Other Groups" - }, - TrailColor = trailColor, - OrbitPeriod = 700.54, - Kernels = kernel - }, - { - Identifier = "S2003J9", - Parent = { - Identifier = parentIdentifier, - Spice = parentSpice - }, - Spice = "55064", - Radii = { 2000, 2000, 2000 }, - Tags = tags, - TrailTags = trailTags, - GUI = { - Name = "S/2003 J 9", - Path = "/Solar System/Planets/Jupiter/Moons/Other Groups" - }, - TrailColor = trailColor, - OrbitPeriod = 752.84, - Kernels = kernel - }, - { - Identifier = "S2003J2", - Parent = { - Identifier = parentIdentifier, - Spice = parentSpice - }, - Spice = "55060", - Radii = { 2000, 2000, 2000 }, - Tags = tags, - TrailTags = trailTags, - GUI = { - Name = "S/2003 J 2", - Path = "/Solar System/Planets/Jupiter/Moons/Other Groups" - }, - TrailColor = trailColor, - OrbitPeriod = 981.55, + OrbitPeriod = 527.41, Kernels = kernel } } diff --git a/data/assets/scene/solarsystem/planets/jupiter/minor/pasiphae_group.asset b/data/assets/scene/solarsystem/planets/jupiter/minor/pasiphae_group.asset index 0fbf568e03..95f6a304ea 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/minor/pasiphae_group.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/minor/pasiphae_group.asset @@ -1,6 +1,7 @@ local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("../transforms") -local kernel = asset.require("../kernels").jup341 +local kernel = asset.require("../kernels").jup344 +local kernel346 = asset.require("../kernels").jup346 @@ -248,7 +249,7 @@ local pasiphaeGroup = { Identifier = parentIdentifier, Spice = parentSpice }, - Spice = "55062", + Spice = "55502", Radii = { 2000, 2000, 2000 }, Tags = tags, TrailTags = trailTags, @@ -361,6 +362,60 @@ local pasiphaeGroup = { TrailColor = trailColor, OrbitPeriod = 792.44, Kernels = kernel + }, + { + Identifier = "S2016J4", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "55519", + Radii = { 1000, 1000, 1000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2016 J 4", + Path = "/Solar System/Planets/Jupiter/Moons/Pasiphae Group" + }, + TrailColor = trailColor, + OrbitPeriod = 743.69, + Kernels = kernel346 + }, + { + Identifier = "S2017J6", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "567", + Radii = { 2000, 2000, 2000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2017 J 6", + Path = "/Solar System/Planets/Jupiter/Moons/Pasiphae Group" + }, + TrailColor = trailColor, + OrbitPeriod = 683.0, + Kernels = kernel + }, + { + Identifier = "S2003J23", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "55507", + Radii = { 2000, 2000, 2000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2003 J 23", + Path = "/Solar System/Planets/Jupiter/Moons/Other Groups" + }, + TrailColor = trailColor, + OrbitPeriod = 792.00, + Kernels = kernel } } diff --git a/data/assets/scene/solarsystem/planets/jupiter/minor/themisto_group.asset b/data/assets/scene/solarsystem/planets/jupiter/minor/themisto_group.asset index 5656a8e53f..efa7f6b7f9 100644 --- a/data/assets/scene/solarsystem/planets/jupiter/minor/themisto_group.asset +++ b/data/assets/scene/solarsystem/planets/jupiter/minor/themisto_group.asset @@ -1,6 +1,6 @@ local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("../transforms") -local kernel = asset.require("../kernels").jup341 +local kernel = asset.require("../kernels").jup344 diff --git a/data/assets/scene/solarsystem/planets/neptune/inner_moons.asset b/data/assets/scene/solarsystem/planets/neptune/inner_moons.asset index 29372eb903..94c9ff4fa4 100644 --- a/data/assets/scene/solarsystem/planets/neptune/inner_moons.asset +++ b/data/assets/scene/solarsystem/planets/neptune/inner_moons.asset @@ -1,9 +1,7 @@ local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("./transforms") -local kernels = asset.require("./kernels") -local kernel081 = kernels.nep081 -local kernel087 = kernels.nep087 -local kernel088 = kernels.nep088 +local kernel095 = asset.require("./kernels").nep095 +local kernel = asset.require("./kernels").nep097 @@ -35,7 +33,7 @@ local innerMoons = { }, TrailColor = trailColor, OrbitPeriod = 0.294, - Kernels = kernel088 + Kernels = kernel095 }, { Identifier = "Thalassa", @@ -52,7 +50,7 @@ local innerMoons = { }, TrailColor = trailColor, OrbitPeriod = 0.311, - Kernels = kernel088 + Kernels = kernel095 }, { Identifier = "Despina", @@ -69,7 +67,7 @@ local innerMoons = { }, TrailColor = trailColor, OrbitPeriod = 0.335, - Kernels = kernel088 + Kernels = kernel095 }, { Identifier = "Galatea", @@ -86,7 +84,7 @@ local innerMoons = { }, TrailColor = trailColor, OrbitPeriod = 0.429, - Kernels = kernel088 + Kernels = kernel095 }, { Identifier = "Larissa", @@ -103,10 +101,10 @@ local innerMoons = { }, TrailColor = trailColor, OrbitPeriod = 0.555, - Kernels = kernel088 + Kernels = kernel095 }, { - Identifier = "S2004N1", + Identifier = "Hippocamp", Parent = { Identifier = parentIdentifier, Spice = parentSpice @@ -116,12 +114,12 @@ local innerMoons = { Tags = tags, TrailTags = trailTags, GUI = { - Name = "S/2004 N 1", + Name = "Hippocamp", Path = "/Solar System/Planets/Neptune/Moons/Inner Moons" }, TrailColor = trailColor, OrbitPeriod = 0.936, - Kernels = kernel088 + Kernels = kernel }, { Identifier = "Proteus", @@ -138,7 +136,7 @@ local innerMoons = { }, TrailColor = trailColor, OrbitPeriod = 1.122, - Kernels = kernel081 + Kernels = kernel095 } } diff --git a/data/assets/scene/solarsystem/planets/neptune/irregular_prograde_moons.asset b/data/assets/scene/solarsystem/planets/neptune/irregular_moons.asset similarity index 79% rename from data/assets/scene/solarsystem/planets/neptune/irregular_prograde_moons.asset rename to data/assets/scene/solarsystem/planets/neptune/irregular_moons.asset index 4677234303..98b4946e71 100644 --- a/data/assets/scene/solarsystem/planets/neptune/irregular_prograde_moons.asset +++ b/data/assets/scene/solarsystem/planets/neptune/irregular_moons.asset @@ -1,9 +1,6 @@ local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("./transforms") -local kernels = asset.require("./kernels") -local kernel081 = kernels.nep081 -local kernel086 = kernels.nep086 -local kernel088 = kernels.nep088 +local kernel = asset.require("./kernels").nep102 @@ -35,7 +32,7 @@ local irregularProgradeMoons = { }, TrailColor = trailColor, OrbitPeriod = 1879.08, - Kernels = kernel086 + Kernels = kernel }, { Identifier = "Psamathe", @@ -52,7 +49,41 @@ local irregularProgradeMoons = { }, TrailColor = trailColor, OrbitPeriod = 9074.3, - Kernels = kernel086 + Kernels = kernel + }, + { + Identifier = "Sao", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "SAO", + Radii = { 44000, 44000, 44000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Path = "/Solar System/Planets/Neptune/Moons/Irregular Prograde Moons" + }, + TrailColor = trailColor, + OrbitPeriod = 2912.72, + Kernels = kernel + }, + { + Identifier = "Laomedeia", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "LAOMEDEIA", + Radii = { 42000, 42000, 42000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Path = "/Solar System/Planets/Neptune/Moons/Irregular Prograde Moons" + }, + TrailColor = trailColor, + OrbitPeriod = 3171.33, + Kernels = kernel }, { Identifier = "Neso", @@ -69,7 +100,7 @@ local irregularProgradeMoons = { }, TrailColor = trailColor, OrbitPeriod = 9740.73, - Kernels = kernel086 + Kernels = kernel } } diff --git a/data/assets/scene/solarsystem/planets/neptune/irregular_retrograde_moons.asset b/data/assets/scene/solarsystem/planets/neptune/irregular_retrograde_moons.asset deleted file mode 100644 index ff8e2102c1..0000000000 --- a/data/assets/scene/solarsystem/planets/neptune/irregular_retrograde_moons.asset +++ /dev/null @@ -1,143 +0,0 @@ -local proceduralGlobes = asset.require("util/procedural_globe") -local transforms = asset.require("./transforms") -local kernels = asset.require("./kernels") -local kernel081 = kernels.nep081 -local kernel086 = kernels.nep086 - - - -local parentIdentifier = transforms.NeptuneBarycenter.Identifier -local parentSpice = "NEPTUNE BARYCENTER" -local tags = { "moon_solarSystem", "moon_giants", "moon_neptune", "moon_irregular_retrograde", "moon_minor", "moon_minor_neptune" } -local trailColor = { 0.2, 0.5, 0.75 } -local trailTags = { - "moonTrail_solarSystem", - "moonTrail_giants", - "moonTrail_neptune", - "moonTrail_minor", - "moonTrail_minor_neptune" -} - -local irregularRetrogradeMoons = { - { - Identifier = "Nereid", - Parent = { - Identifier = parentIdentifier, - Spice = parentSpice - }, - Spice = "NEREID", - Radii = { 340000, 340000, 340000 }, - Tags = tags, - TrailTags = trailTags, - GUI = { - Path = "/Solar System/Planets/Neptune/Moons/Irregular Retrograde Moons" - }, - TrailColor = trailColor, - OrbitPeriod = 360.13, - Kernels = kernel081 - }, - { - Identifier = "Sao", - Parent = { - Identifier = parentIdentifier, - Spice = parentSpice - }, - Spice = "SAO", - Radii = { 44000, 44000, 44000 }, - Tags = tags, - TrailTags = trailTags, - GUI = { - Path = "/Solar System/Planets/Neptune/Moons/Irregular Retrograde Moons" - }, - TrailColor = trailColor, - OrbitPeriod = 2912.72, - Kernels = kernel086 - }, - { - Identifier = "Laomedeia", - Parent = { - Identifier = parentIdentifier, - Spice = parentSpice - }, - Spice = "LAOMEDEIA", - Radii = { 42000, 42000, 42000 }, - Tags = tags, - TrailTags = trailTags, - GUI = { - Path = "/Solar System/Planets/Neptune/Moons/Irregular Retrograde Moons" - }, - TrailColor = trailColor, - OrbitPeriod = 3171.33, - Kernels = kernel086 - } -} - - --- Generate labels for each moon -local moon_labels = {} - -for i, moon in ipairs(irregularRetrogradeMoons) do - local moonName = moon.GUI.Name or moon.Identifier - moon_labels[i] = { - Identifier = moon.Identifier .. "Label", - Parent = moon.Identifier, - Renderable = { - Enabled = false, - Type = "RenderableLabel", - Text = moonName, - FontSize = 70.0, - Size = 7.4, - MinMaxSize = { 1, 25 }, - OrientationOption = "Camera View Direction", - BlendMode = "Additive", - EnableFading = true, - FadeUnit = "Gm", - FadeDistances = { 1, 250.0 }, - FadeWidths = { 1, 250.0 }, - }, - Tag = { "solarsystem_labels", "moon_labels", "minor_moon_labels" }, - GUI = { - Name = moonName .. " Label", - Path = "/Solar System/Planets/Neptune/Moons", - Description = "Label for Neptune's moon " .. moonName .. " (Irregular retrograde group)" - } - } -end - -local nodes = proceduralGlobes.createGlobes(irregularRetrogradeMoons) - -asset.onInitialize(function() - for _, node in ipairs(nodes) do - openspace.addSceneGraphNode(node) - end - - for _, moonlabel in ipairs(moon_labels) do - openspace.addSceneGraphNode(moonlabel) - end -end) - -asset.onDeinitialize(function() - for i = #moon_labels, 1, -1 do - openspace.removeSceneGraphNode(moon_labels[i]) - end - - for i = #nodes, 1, -1 do - openspace.removeSceneGraphNode(nodes[i]) - end -end) - -for _, node in ipairs(nodes) do - asset.export(node) -end - - -asset.meta = { - Name = "Neptune Irregular Retrograde Moons", - Version = "1.0", - Description = [[Procedural Globe asset containing Neptune' irregular retrograde - moons: Nereid, Sao and Laomedeia. Blank globes and SPICE trails are generated for - each moon]], - Author = "OpenSpace Team", - URL = "http://openspaceproject.com", - License = "MIT license" -} diff --git a/data/assets/scene/solarsystem/planets/neptune/kernels.asset b/data/assets/scene/solarsystem/planets/neptune/kernels.asset index 1511116f76..3343a941e3 100644 --- a/data/assets/scene/solarsystem/planets/neptune/kernels.asset +++ b/data/assets/scene/solarsystem/planets/neptune/kernels.asset @@ -2,13 +2,13 @@ local Kernels = asset.syncedResource({ Name = "Neptune Spice Kernels", Type = "HttpSynchronization", Identifier = "neptune_kernels", - Version = 1 + Version = 2 }) -asset.export("nep081", Kernels .. "nep081.bsp") -asset.export("nep086", Kernels .. "nep086.bsp") -asset.export("nep087", Kernels .. "nep087.bsp") -asset.export("nep088", Kernels .. "nep088.bsp") +asset.export("nep095", Kernels .. "nep095.bsp") +asset.export("nep097", Kernels .. "nep097.bsp") +asset.export("nep101xl_802", Kernels .. "nep101xl-802.bsp") +asset.export("nep102", Kernels .. "nep102.bsp") asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/neptune/major_moons.asset b/data/assets/scene/solarsystem/planets/neptune/major_moons.asset index b3ad035361..2d5ad03546 100644 --- a/data/assets/scene/solarsystem/planets/neptune/major_moons.asset +++ b/data/assets/scene/solarsystem/planets/neptune/major_moons.asset @@ -1,4 +1,5 @@ -asset.require("./triton") +asset.require("./triton/triton") +asset.require("./nereid/nereid") asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/neptune/minor_moons.asset b/data/assets/scene/solarsystem/planets/neptune/minor_moons.asset index d32b5195dd..19a16e02d2 100644 --- a/data/assets/scene/solarsystem/planets/neptune/minor_moons.asset +++ b/data/assets/scene/solarsystem/planets/neptune/minor_moons.asset @@ -1,6 +1,5 @@ asset.require("./inner_moons") -asset.require("./irregular_prograde_moons") -asset.require("./irregular_retrograde_moons") +asset.require("./irregular_moons") local minormoons_on = { Identifier = "os.solarsystem.neptune.minormoonson", @@ -63,8 +62,8 @@ end) asset.meta = { Name = "Neptune Minor Moons", Version = "1.1", - Description = [[Meta asset containing 3 moon groups: inner_moons, - irregular_prograde_moons, and irregular_retrograde_moons]], + Description = [[Meta asset containing two moon groups: inner_moons and + irregular_moons]], Author = "OpenSpace Team", URL = "http://openspaceproject.com", License = "MIT license" diff --git a/data/assets/scene/solarsystem/planets/neptune/neptune.asset b/data/assets/scene/solarsystem/planets/neptune/neptune.asset index 917cbe7439..e9b6152538 100644 --- a/data/assets/scene/solarsystem/planets/neptune/neptune.asset +++ b/data/assets/scene/solarsystem/planets/neptune/neptune.asset @@ -1,6 +1,7 @@ local transforms = asset.require("./transforms") asset.require("spice/base") asset.require("./trail") +local kernel = asset.require("./kernels").nep097 local Neptune = { Identifier = "Neptune", @@ -9,7 +10,8 @@ local Neptune = { Translation = { Type = "SpiceTranslation", Target = "NEPTUNE", - Observer = "NEPTUNE BARYCENTER" + Observer = "NEPTUNE BARYCENTER", + Kernels = kernel }, Rotation = { Type = "SpiceRotation", diff --git a/data/assets/scene/solarsystem/planets/neptune/nereid/nereid.asset b/data/assets/scene/solarsystem/planets/neptune/nereid/nereid.asset new file mode 100644 index 0000000000..21be217580 --- /dev/null +++ b/data/assets/scene/solarsystem/planets/neptune/nereid/nereid.asset @@ -0,0 +1,93 @@ +local proceduralGlobes = asset.require("util/procedural_globe") +local transforms = asset.require("../transforms") +local kernel = asset.require("../kernels").nep101xl_802 + + +local Nereid = { + Identifier = "Nereid", + Parent = { + Identifier = transforms.NeptuneBarycenter.Identifier, + Spice = "NEPTUNE BARYCENTER" + }, + Spice = "NEREID", + Radii = { 357000, 340000, 340000 }, + Tags = { "moon_solarSystem", "moon_giants", "moon_neptune" }, + TrailTags = { "moonTrail_solarSystem", "moonTrail_giants", "moonTrail_neptune" }, + GUI = { + Path = "/Solar System/Planets/Neptune/Moons" + }, + TrailColor = { 0.2, 0.5, 0.75 }, + OrbitPeriod = 360.13, + Kernels = kernel +} + + +-- Generate labels for each moon +local moon_labels = {} + +for i, moon in ipairs({ Nereid }) do + local moonName = moon.GUI.Name or moon.Identifier + moon_labels[i] = { + Identifier = moon.Identifier .. "Label", + Parent = moon.Identifier, + Renderable = { + Enabled = false, + Type = "RenderableLabel", + Text = moonName, + FontSize = 50.0, + Size = 7.0, + MinMaxSize = { 1, 25 }, + OrientationOption = "Camera View Direction", + BlendMode = "Additive", + EnableFading = true, + FadeUnit = "Gm", + FadeDistances = { 1, 15.0 }, + FadeWidths = { 1, 15.0 }, + }, + Tag = { "solarsystem_labels", "moon_labels", "major_moon_labels" }, + GUI = { + Name = moonName .. " Label", + Path = "/Solar System/Planets/Neptune/Moons", + Description = "Label for Neptune's moon " .. moonName + } + } +end + + +local nodes = proceduralGlobes.createGlobes({ Nereid }) + +asset.onInitialize(function() + for _, node in ipairs(nodes) do + openspace.addSceneGraphNode(node) + end + + for _, moonlabel in ipairs(moon_labels) do + openspace.addSceneGraphNode(moonlabel) + end +end) + +asset.onDeinitialize(function() + for i = #moon_labels, 1, -1 do + openspace.removeSceneGraphNode(moon_labels[i]) + end + + for i = #nodes, 1, -1 do + openspace.removeSceneGraphNode(nodes[i]) + end +end) + +for _, node in ipairs(nodes) do + asset.export(node) +end + + + +asset.meta = { + Name = "Nereid", + Version = "1.1", + Description = [[Procedural Globe asset containing Neptune's moon: Nereid. A blank globe + and SPICE trail are generated for the moon]], + Author = "OpenSpace Team", + URL = "http://openspaceproject.com", + License = "MIT license" +} diff --git a/data/assets/scene/solarsystem/planets/neptune/trail.asset b/data/assets/scene/solarsystem/planets/neptune/trail.asset index 4af5ba2cd4..dda68425c0 100644 --- a/data/assets/scene/solarsystem/planets/neptune/trail.asset +++ b/data/assets/scene/solarsystem/planets/neptune/trail.asset @@ -1,5 +1,6 @@ local transforms = asset.require("scene/solarsystem/sun/transforms") asset.require("spice/base") +local kernel = asset.require("./kernels").nep097 @@ -11,7 +12,8 @@ local NeptuneTrail = { Translation = { Type = "SpiceTranslation", Target = "NEPTUNE", - Observer = "SSB" + Observer = "SSB", + Kernels = kernel }, Color = { 0.2, 0.5, 1.0 }, -- Period = 60200, diff --git a/data/assets/scene/solarsystem/planets/neptune/trail_barycenter.asset b/data/assets/scene/solarsystem/planets/neptune/trail_barycenter.asset index 112c4a71ed..ae92975815 100644 --- a/data/assets/scene/solarsystem/planets/neptune/trail_barycenter.asset +++ b/data/assets/scene/solarsystem/planets/neptune/trail_barycenter.asset @@ -1,5 +1,6 @@ local transforms = asset.require("scene/solarsystem/sun/transforms") asset.require("spice/base") +local kernel = asset.require("./kernels").nep097 @@ -11,7 +12,8 @@ local NeptuneBarycenterTrail = { Translation = { Type = "SpiceTranslation", Target = "NEPTUNE BARYCENTER", - Observer = "SSB" + Observer = "SSB", + Kernels = kernel }, Color = { 0.2, 0.5, 1.0 }, Period = 60266, diff --git a/data/assets/scene/solarsystem/planets/neptune/trail_earth.asset b/data/assets/scene/solarsystem/planets/neptune/trail_earth.asset index b79ed5ac5c..8ea0b55222 100644 --- a/data/assets/scene/solarsystem/planets/neptune/trail_earth.asset +++ b/data/assets/scene/solarsystem/planets/neptune/trail_earth.asset @@ -1,6 +1,7 @@ local transforms = asset.require("scene/solarsystem/sun/transforms") local earthTransforms = asset.require("scene/solarsystem/planets/earth/transforms") asset.require("spice/base") +local kernel = asset.require("./kernels").nep097 @@ -12,7 +13,8 @@ local NeptuneTrailEarth = { Translation = { Type = "SpiceTranslation", Target = "NEPTUNE", - Observer = "EARTH" + Observer = "EARTH", + Kernels = kernel }, Color = { 1.0, 0.5, 0.2 }, Period = 224.695, diff --git a/data/assets/scene/solarsystem/planets/neptune/transforms.asset b/data/assets/scene/solarsystem/planets/neptune/transforms.asset index a4c81387b8..903a55f4f6 100644 --- a/data/assets/scene/solarsystem/planets/neptune/transforms.asset +++ b/data/assets/scene/solarsystem/planets/neptune/transforms.asset @@ -1,5 +1,6 @@ local sun_transforms_asset = asset.require("scene/solarsystem/sun/transforms") asset.require("spice/base") +local kernel = asset.require("./kernels").nep097 local NeptuneBarycenter = { Identifier = "NeptuneBarycenter", @@ -8,7 +9,8 @@ local NeptuneBarycenter = { Translation = { Type = "SpiceTranslation", Target = "NEPTUNE BARYCENTER", - Observer = "SSB" + Observer = "SSB", + Kernels = kernel } }, GUI = { diff --git a/data/assets/scene/solarsystem/planets/neptune/triton.asset b/data/assets/scene/solarsystem/planets/neptune/triton/triton.asset similarity index 92% rename from data/assets/scene/solarsystem/planets/neptune/triton.asset rename to data/assets/scene/solarsystem/planets/neptune/triton/triton.asset index 0f63edb6c8..ebbc644a2e 100644 --- a/data/assets/scene/solarsystem/planets/neptune/triton.asset +++ b/data/assets/scene/solarsystem/planets/neptune/triton/triton.asset @@ -1,6 +1,6 @@ local proceduralGlobes = asset.require("util/procedural_globe") -local transforms = asset.require("./transforms") -local kernel = asset.require("./kernels").nep081 +local transforms = asset.require("../transforms") +local kernel = asset.require("../kernels").nep097 @@ -15,7 +15,7 @@ local Triton = { Tags = { "moon_solarSystem", "moon_giants", "moon_neptune" }, TrailTags = { "moonTrail_solarSystem", "moonTrail_giants", "moonTrail_neptune" }, GUI = { - Path = "/Solar System/Planets/Neptune/Moons/Irregular Prograde Moons" + Path = "/Solar System/Planets/Neptune/Moons" }, TrailColor = { 0.2, 0.5, 0.75 }, OrbitPeriod = 5.877, diff --git a/data/assets/scene/solarsystem/planets/saturn/dione/dione.asset b/data/assets/scene/solarsystem/planets/saturn/dione/dione.asset index 5a2baed2ee..447aca79ec 100644 --- a/data/assets/scene/solarsystem/planets/saturn/dione/dione.asset +++ b/data/assets/scene/solarsystem/planets/saturn/dione/dione.asset @@ -1,5 +1,5 @@ local transforms = asset.require("../transforms") -local kernel = asset.require("../kernels").sat375 +local kernel = asset.require("../kernels").sat441 asset.require("./trail") local labelsPath = asset.syncedResource({ diff --git a/data/assets/scene/solarsystem/planets/saturn/dione/trail.asset b/data/assets/scene/solarsystem/planets/saturn/dione/trail.asset index 0bd7895e15..076bfe9ea7 100644 --- a/data/assets/scene/solarsystem/planets/saturn/dione/trail.asset +++ b/data/assets/scene/solarsystem/planets/saturn/dione/trail.asset @@ -1,5 +1,5 @@ local transforms = asset.require("../transforms") -local kernel = asset.require("../kernels").sat375 +local kernel = asset.require("../kernels").sat441 diff --git a/data/assets/scene/solarsystem/planets/saturn/enceladus/enceladus.asset b/data/assets/scene/solarsystem/planets/saturn/enceladus/enceladus.asset index 4035fe53f5..dda8760dd0 100644 --- a/data/assets/scene/solarsystem/planets/saturn/enceladus/enceladus.asset +++ b/data/assets/scene/solarsystem/planets/saturn/enceladus/enceladus.asset @@ -1,5 +1,5 @@ local transforms = asset.require("../transforms") -local kernel = asset.require("../kernels").sat375 +local kernel = asset.require("../kernels").sat441 asset.require("./trail") local labelsPath = asset.syncedResource({ diff --git a/data/assets/scene/solarsystem/planets/saturn/enceladus/trail.asset b/data/assets/scene/solarsystem/planets/saturn/enceladus/trail.asset index 8918169f3b..408ef6914b 100644 --- a/data/assets/scene/solarsystem/planets/saturn/enceladus/trail.asset +++ b/data/assets/scene/solarsystem/planets/saturn/enceladus/trail.asset @@ -1,5 +1,5 @@ local transforms = asset.require("../transforms") -local kernel = asset.require("../kernels").sat375 +local kernel = asset.require("../kernels").sat441 diff --git a/data/assets/scene/solarsystem/planets/saturn/hyperion/hyperion.asset b/data/assets/scene/solarsystem/planets/saturn/hyperion/hyperion.asset index 9df51d793f..72d6f82cbf 100644 --- a/data/assets/scene/solarsystem/planets/saturn/hyperion/hyperion.asset +++ b/data/assets/scene/solarsystem/planets/saturn/hyperion/hyperion.asset @@ -1,5 +1,5 @@ local transforms = asset.require("../transforms") -local kernel = asset.require("../kernels").sat375 +local kernel = asset.require("../kernels").sat441 asset.require("./trail") local labelsPath = asset.syncedResource({ diff --git a/data/assets/scene/solarsystem/planets/saturn/hyperion/trail.asset b/data/assets/scene/solarsystem/planets/saturn/hyperion/trail.asset index 09f870b4f7..4bc21d9acd 100644 --- a/data/assets/scene/solarsystem/planets/saturn/hyperion/trail.asset +++ b/data/assets/scene/solarsystem/planets/saturn/hyperion/trail.asset @@ -1,5 +1,5 @@ local transforms = asset.require("../transforms") -local kernel = asset.require("../kernels").sat375 +local kernel = asset.require("../kernels").sat441 diff --git a/data/assets/scene/solarsystem/planets/saturn/iapetus/iapetus.asset b/data/assets/scene/solarsystem/planets/saturn/iapetus/iapetus.asset index a841b2e21f..3c57ea8c92 100644 --- a/data/assets/scene/solarsystem/planets/saturn/iapetus/iapetus.asset +++ b/data/assets/scene/solarsystem/planets/saturn/iapetus/iapetus.asset @@ -1,5 +1,5 @@ local transforms = asset.require("../transforms") -local kernel = asset.require("../kernels").sat375 +local kernel = asset.require("../kernels").sat441 asset.require("./trail") local labelsPath = asset.syncedResource({ diff --git a/data/assets/scene/solarsystem/planets/saturn/iapetus/trail.asset b/data/assets/scene/solarsystem/planets/saturn/iapetus/trail.asset index b9b3371148..db55d9ba5d 100644 --- a/data/assets/scene/solarsystem/planets/saturn/iapetus/trail.asset +++ b/data/assets/scene/solarsystem/planets/saturn/iapetus/trail.asset @@ -1,5 +1,5 @@ local transforms = asset.require("../transforms") -local kernel = asset.require("../kernels").sat375 +local kernel = asset.require("../kernels").sat441 diff --git a/data/assets/scene/solarsystem/planets/saturn/kernels.asset b/data/assets/scene/solarsystem/planets/saturn/kernels.asset index e6f3176e7b..c52a03bd21 100644 --- a/data/assets/scene/solarsystem/planets/saturn/kernels.asset +++ b/data/assets/scene/solarsystem/planets/saturn/kernels.asset @@ -2,13 +2,12 @@ local Kernels = asset.syncedResource({ Name = "Saturn Spice Kernels", Type = "HttpSynchronization", Identifier = "saturn_kernels", - Version = 1 + Version = 2 }) -asset.export("sat319", Kernels .. "sat319.bsp") -asset.export("sat368", Kernels .. "sat368.bsp") -asset.export("sat375", Kernels .. "sat375.bsp") -asset.export("sat393", Kernels .. "sat393.bsp") +asset.export("sat415", Kernels .. "sat415.bsp") +asset.export("sat441", Kernels .. "sat441.bsp") +asset.export("sat452", Kernels .. "sat452.bsp") asset.meta = { diff --git a/data/assets/scene/solarsystem/planets/saturn/mimas/mimas.asset b/data/assets/scene/solarsystem/planets/saturn/mimas/mimas.asset index 1c63b5c0ef..e806aed9c1 100644 --- a/data/assets/scene/solarsystem/planets/saturn/mimas/mimas.asset +++ b/data/assets/scene/solarsystem/planets/saturn/mimas/mimas.asset @@ -1,5 +1,5 @@ local transforms = asset.require("../transforms") -local kernel = asset.require("../kernels").sat375 +local kernel = asset.require("../kernels").sat441 asset.require("./trail") local labelsPath = asset.syncedResource({ diff --git a/data/assets/scene/solarsystem/planets/saturn/mimas/trail.asset b/data/assets/scene/solarsystem/planets/saturn/mimas/trail.asset index 16326c78b1..20fb844653 100644 --- a/data/assets/scene/solarsystem/planets/saturn/mimas/trail.asset +++ b/data/assets/scene/solarsystem/planets/saturn/mimas/trail.asset @@ -1,5 +1,5 @@ local transforms = asset.require("../transforms") -local kernel = asset.require("../kernels").sat375 +local kernel = asset.require("../kernels").sat441 diff --git a/data/assets/scene/solarsystem/planets/saturn/minor/gallic_group.asset b/data/assets/scene/solarsystem/planets/saturn/minor/gallic_group.asset index 7b2f72efdb..f82db16368 100644 --- a/data/assets/scene/solarsystem/planets/saturn/minor/gallic_group.asset +++ b/data/assets/scene/solarsystem/planets/saturn/minor/gallic_group.asset @@ -1,6 +1,6 @@ local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("../transforms") -local kernel = asset.require("../kernels").sat368 +local kernel = asset.require("../kernels").sat452 diff --git a/data/assets/scene/solarsystem/planets/saturn/minor/inuit_group.asset b/data/assets/scene/solarsystem/planets/saturn/minor/inuit_group.asset index 6642e7850f..2ee155c0fe 100644 --- a/data/assets/scene/solarsystem/planets/saturn/minor/inuit_group.asset +++ b/data/assets/scene/solarsystem/planets/saturn/minor/inuit_group.asset @@ -1,6 +1,6 @@ local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("../transforms") -local kernel = asset.require("../kernels").sat368 +local kernel = asset.require("../kernels").sat452 @@ -101,6 +101,60 @@ local inuitGroup = { TrailColor = trailColor, OrbitPeriod = 894.86, Kernels = kernel + }, + { + Identifier = "S2004S29", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "660", + Radii = { 4000, 4000, 4000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2004 S 29", + Path = "/Solar System/Planets/Saturn/Moons/Norse Group" + }, + TrailColor = trailColor, + OrbitPeriod = 858.77, + Kernels = kernel + }, + { + Identifier = "S2004S31", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "65067", + Radii = { 4000, 4000, 4000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2004 S 31", + Path = "/Solar System/Planets/Saturn/Moons/Norse Group" + }, + TrailColor = trailColor, + OrbitPeriod = 853.80, + Kernels = kernel + }, + { + Identifier = "S2019S01", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "65093", + Radii = { 5000, 5000, 5000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2019 S 01", + Path = "/Solar System/Planets/Saturn/Moons/Norse Group" + }, + TrailColor = trailColor, + OrbitPeriod = 443.78, + Kernels = kernel } } diff --git a/data/assets/scene/solarsystem/planets/saturn/minor/norse_group.asset b/data/assets/scene/solarsystem/planets/saturn/minor/norse_group.asset index 0a1efada10..1400306681 100644 --- a/data/assets/scene/solarsystem/planets/saturn/minor/norse_group.asset +++ b/data/assets/scene/solarsystem/planets/saturn/minor/norse_group.asset @@ -1,8 +1,8 @@ local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("../transforms") local kernels = asset.require("../kernels") -local kernel368 = kernels.sat368 -local kernel375 = kernels.sat375 +local kernel441 = kernels.sat441 +local kernel452 = kernels.sat452 @@ -34,7 +34,7 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 545.09, - Kernels = kernel375 + Kernels = kernel441 }, { Identifier = "Skathi", @@ -51,7 +51,7 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 732.52, - Kernels = kernel368 + Kernels = kernel452 }, { Identifier = "S2007S2", @@ -59,7 +59,7 @@ local norseGroup = { Identifier = parentIdentifier, Spice = parentSpice }, - Spice = "65055", + Spice = "65091", Radii = { 6000, 6000, 6000 }, Tags = tags, TrailTags = trailTags, @@ -69,7 +69,7 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 792.96, - Kernels = kernel368 + Kernels = kernel452 }, { Identifier = "Skoll", @@ -86,7 +86,7 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 862.37, - Kernels = kernel368 + Kernels = kernel452 }, { Identifier = "S2004S13", @@ -94,7 +94,7 @@ local norseGroup = { Identifier = parentIdentifier, Spice = parentSpice }, - Spice = "65041", + Spice = "65087", Radii = { 6000, 6000, 6000 }, Tags = tags, TrailTags = trailTags, @@ -104,7 +104,7 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 905.85, - Kernels = kernel368 + Kernels = kernel452 }, { Identifier = "Greip", @@ -121,7 +121,7 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 906.56, - Kernels = kernel368 + Kernels = kernel452 }, { Identifier = "Hyrrokkin", @@ -138,7 +138,7 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 914.29, - Kernels = kernel368 + Kernels = kernel452 }, { Identifier = "Jarnsaxa", @@ -155,7 +155,7 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 943.78, - Kernels = kernel368 + Kernels = kernel452 }, { Identifier = "Mundilfari", @@ -172,7 +172,7 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 956.70, - Kernels = kernel368 + Kernels = kernel452 }, { Identifier = "S2006S1", @@ -180,7 +180,7 @@ local norseGroup = { Identifier = parentIdentifier, Spice = parentSpice }, - Spice = "65048", + Spice = "65089", Radii = { 6000, 6000, 6000 }, Tags = tags, TrailTags = trailTags, @@ -190,7 +190,7 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 972.41, - Kernels = kernel368 + Kernels = kernel452 }, { Identifier = "S2004S17", @@ -198,7 +198,7 @@ local norseGroup = { Identifier = parentIdentifier, Spice = parentSpice }, - Spice = "65045", + Spice = "65088", Radii = { 4000, 4000, 4000 }, Tags = tags, TrailTags = trailTags, @@ -208,7 +208,7 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 985.45, - Kernels = kernel368 + Kernels = kernel452 }, { Identifier = "Bergelmir", @@ -225,7 +225,7 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 985.83, - Kernels = kernel368 + Kernels = kernel452 }, { Identifier = "Narvi", @@ -242,7 +242,7 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 1008.45, - Kernels = kernel368 + Kernels = kernel452 }, { Identifier = "Suttungr", @@ -259,7 +259,7 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 1022.82, - Kernels = kernel368 + Kernels = kernel452 }, { Identifier = "Hati", @@ -276,7 +276,7 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 1033.05, - Kernels = kernel368 + Kernels = kernel452 }, { Identifier = "S2004S12", @@ -284,7 +284,7 @@ local norseGroup = { Identifier = parentIdentifier, Spice = parentSpice }, - Spice = "65040", + Spice = "65086", Radii = { 5000, 5000, 5000 }, Tags = tags, TrailTags = trailTags, @@ -294,7 +294,7 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 1048.54, - Kernels = kernel368 + Kernels = kernel452 }, { Identifier = "Farbauti", @@ -311,7 +311,7 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 1054.78, - Kernels = kernel368 + Kernels = kernel452 }, { Identifier = "Thrymr", @@ -328,7 +328,7 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 1078.09, - Kernels = kernel368 + Kernels = kernel452 }, { Identifier = "Aegir", @@ -345,7 +345,7 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 1094.46, - Kernels = kernel368 + Kernels = kernel452 }, { Identifier = "S2007S3", @@ -353,7 +353,7 @@ local norseGroup = { Identifier = parentIdentifier, Spice = parentSpice }, - Spice = "65056", + Spice = "65092", Radii = { 5000, 5000, 5000 }, Tags = tags, TrailTags = trailTags, @@ -363,7 +363,7 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 1100, - Kernels = kernel368 + Kernels = kernel452 }, { Identifier = "Bestla", @@ -380,7 +380,7 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 1101.45, - Kernels = kernel368 + Kernels = kernel452 }, { Identifier = "S2004S7", @@ -388,7 +388,7 @@ local norseGroup = { Identifier = parentIdentifier, Spice = parentSpice }, - Spice = "65035", + Spice = "65085", Radii = { 6000, 6000, 6000 }, Tags = tags, TrailTags = trailTags, @@ -398,7 +398,7 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 1101.99, - Kernels = kernel368 + Kernels = kernel452 }, { Identifier = "S2006S3", @@ -406,7 +406,7 @@ local norseGroup = { Identifier = parentIdentifier, Spice = parentSpice }, - Spice = "65050", + Spice = "65090", Radii = { 6000, 6000, 6000 }, Tags = tags, TrailTags = trailTags, @@ -416,7 +416,7 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 1142.37, - Kernels = kernel368 + Kernels = kernel452 }, { Identifier = "FENRIR", @@ -433,25 +433,24 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 1212.53, - Kernels = kernel368 + Kernels = kernel452 + }, + { + Identifier = "Surtur", -- Rising + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "648", + Radii = { 6000, 6000, 6000 }, + Tags = tags, + GUI = { + Path = "/Solar System/Planets/Saturn/Moons/Norse Group" + }, + TrailColor = trailColor, + OrbitPeriod = 1297.7, + Kernels = kernel452 }, - -- Not yet in the Spice kernels - -- { - -- Identifier = "Sutur", -- Rising - -- Parent = { - -- Identifier = parentIdentifier, - -- Spice = parentSpice - -- }, - -- Spice = "SUTUR", - -- Radii = { 6000, 6000, 6000 }, - -- Tags = tags, - -- GUI = { - -- Path = "/Solar System/Planets/Saturn/Moons/Norse Group" - -- }, - -- TrailColor = trailColor, - -- OrbitPeriod = 1242.36, - -- Kernels = kernels368 - -- }, { Identifier = "Kari", Parent = { @@ -467,7 +466,7 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 1245.06, - Kernels = kernel368 + Kernels = kernel452 }, { Identifier = "Ymir", @@ -484,7 +483,7 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 1254.15, - Kernels = kernel368 + Kernels = kernel452 }, { Identifier = "Loge", @@ -501,7 +500,7 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 1300.95, - Kernels = kernel368 + Kernels = kernel452 }, { Identifier = "Fornjot", @@ -518,7 +517,320 @@ local norseGroup = { }, TrailColor = trailColor, OrbitPeriod = 1432.16, - Kernels = kernel368 + Kernels = kernel452 + }, + { + Identifier = "Skadi", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "627", + Radii = { 8000, 8000, 8000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Path = "/Solar System/Planets/Saturn/Moons/Norse Group" + }, + TrailColor = trailColor, + OrbitPeriod = 728.2, + Kernels = kernel452 + }, + { + Identifier = "Gridr", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "654", + Radii = { 4000, 4000, 4000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Path = "/Solar System/Planets/Saturn/Moons/Norse Group" + }, + TrailColor = trailColor, + OrbitPeriod = 990.23, + Kernels = kernel452 + }, + { + Identifier = "Angrboda", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "655", + Radii = { 3000, 3000, 3000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Path = "/Solar System/Planets/Saturn/Moons/Norse Group" + }, + TrailColor = trailColor, + OrbitPeriod = 1080.4, + Kernels = kernel452 + }, + { + Identifier = "Skrymir", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "656", + Radii = { 4000, 4000, 4000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Path = "/Solar System/Planets/Saturn/Moons/Norse Group" + }, + TrailColor = trailColor, + OrbitPeriod = 1164.3, + Kernels = kernel452 + }, + { + Identifier = "Gerd", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "657", + Radii = { 4000, 4000, 4000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Path = "/Solar System/Planets/Saturn/Moons/Norse Group" + }, + TrailColor = trailColor, + OrbitPeriod = 1095.0, + Kernels = kernel452 + }, + { + Identifier = "S2004S26", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "658", + Radii = { 4000, 4000, 4000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2004 S 26", + Path = "/Solar System/Planets/Saturn/Moons/Norse Group" + }, + TrailColor = trailColor, + OrbitPeriod = 1624.2, + Kernels = kernel452 + }, + { + Identifier = "Eggther", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "659", + Radii = { 6000, 6000, 6000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Path = "/Solar System/Planets/Saturn/Moons/Norse Group" + }, + TrailColor = trailColor, + OrbitPeriod = 1033.0, + Kernels = kernel452 + }, + { + Identifier = "Beli", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "661", + Radii = { 4000, 4000, 4000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Path = "/Solar System/Planets/Saturn/Moons/Norse Group" + }, + TrailColor = trailColor, + OrbitPeriod = 1084.1, + Kernels = kernel452 + }, + { + Identifier = "Gunnlod", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "662", + Radii = { 4000, 4000, 4000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Path = "/Solar System/Planets/Saturn/Moons/Norse Group" + }, + TrailColor = trailColor, + OrbitPeriod = 1175.3, + Kernels = kernel452 + }, + { + Identifier = "Thiazzi", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "663", + Radii = { 4000, 4000, 4000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Path = "/Solar System/Planets/Saturn/Moons/Norse Group" + }, + TrailColor = trailColor, + OrbitPeriod = 1361.5, + Kernels = kernel452 + }, + { + Identifier = "S2004S34", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "664", + Radii = { 3000, 3000, 3000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2004 S 34", + Path = "/Solar System/Planets/Saturn/Moons/Norse Group" + }, + TrailColor = trailColor, + OrbitPeriod = 1412.5, + Kernels = kernel452 + }, + { + Identifier = "Alvaldi", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "665", + Radii = { 5000, 5000, 5000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Path = "/Solar System/Planets/Saturn/Moons/Norse Group" + }, + TrailColor = trailColor, + OrbitPeriod = 1208.1, + Kernels = kernel452 + }, + { + Identifier = "Geirrod", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "666", + Radii = { 4000, 4000, 4000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Path = "/Solar System/Planets/Saturn/Moons/Norse Group" + }, + TrailColor = trailColor, + OrbitPeriod = 1295.8, + Kernels = kernel452 + }, + { + Identifier = "S2004S28", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "65077", + Radii = { 4000, 4000, 4000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2004 S 28", + Path = "/Solar System/Planets/Saturn/Moons/Norse Group" + }, + TrailColor = trailColor, + OrbitPeriod = 1197.2, + Kernels = kernel452 + }, + { + Identifier = "S2004S21", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "65079", + Radii = { 3000, 3000, 3000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2004 S 21", + Path = "/Solar System/Planets/Saturn/Moons/Norse Group" + }, + TrailColor = trailColor, + OrbitPeriod = 1365.1, + Kernels = kernel452 + }, + { + Identifier = "S2004S36", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "65081", + Radii = { 3000, 3000, 3000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2004 S 36", + Path = "/Solar System/Planets/Saturn/Moons/Norse Group" + }, + TrailColor = trailColor, + OrbitPeriod = 1354.2, + Kernels = kernel452 + }, + { + Identifier = "S2004S37", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "65082", + Radii = { 4000, 4000, 4000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2004 S 37", + Path = "/Solar System/Planets/Saturn/Moons/Norse Group" + }, + TrailColor = trailColor, + OrbitPeriod = 752.88, + Kernels = kernel452 + }, + { + Identifier = "S2004S39", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "65084", + Radii = { 3000, 3000, 3000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2004 S 39", + Path = "/Solar System/Planets/Saturn/Moons/Norse Group" + }, + TrailColor = trailColor, + OrbitPeriod = 1277.5, + Kernels = kernel452 } } diff --git a/data/assets/scene/solarsystem/planets/saturn/minor/other_group.asset b/data/assets/scene/solarsystem/planets/saturn/minor/other_group.asset index 552104b632..af78ba6ad8 100644 --- a/data/assets/scene/solarsystem/planets/saturn/minor/other_group.asset +++ b/data/assets/scene/solarsystem/planets/saturn/minor/other_group.asset @@ -1,8 +1,9 @@ local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("../transforms") local kernels = asset.require("../kernels") -local kernel375 = kernels.sat375 -local kernel393 = kernels.sat393 +local kernel415 = kernels.sat415 +local kernel441 = kernels.sat441 +local kernel452 = kernels.sat452 @@ -34,7 +35,7 @@ local otherGroup = { }, TrailColor = trailColor, OrbitPeriod = 0.80812, - Kernels = kernel393 + Kernels = kernel415 }, { Identifier = "Methone", @@ -51,7 +52,7 @@ local otherGroup = { }, TrailColor = trailColor, OrbitPeriod = 1.00957, - Kernels = kernel393 + Kernels = kernel415 }, { Identifier = "Anthe", @@ -68,7 +69,7 @@ local otherGroup = { }, TrailColor = trailColor, OrbitPeriod = 1.05089, - Kernels = kernel393 + Kernels = kernel415 }, { Identifier = "Pallene", @@ -85,7 +86,7 @@ local otherGroup = { }, TrailColor = trailColor, OrbitPeriod = 1.370218, - Kernels = kernel393 + Kernels = kernel415 }, { Identifier = "Telesto", @@ -102,7 +103,7 @@ local otherGroup = { }, TrailColor = trailColor, OrbitPeriod = 1.887802, - Kernels = kernel375 + Kernels = kernel441 }, { Identifier = "Calypso", @@ -119,7 +120,7 @@ local otherGroup = { }, TrailColor = trailColor, OrbitPeriod = 1.887802, - Kernels = kernel375 + Kernels = kernel441 }, { Identifier = "Helene", @@ -136,7 +137,7 @@ local otherGroup = { }, TrailColor = trailColor, OrbitPeriod = 2.736915, - Kernels = kernel375 + Kernels = kernel441 }, { Identifier = "Polydeuces", @@ -153,7 +154,25 @@ local otherGroup = { }, TrailColor = trailColor, OrbitPeriod = 2.736915, - Kernels = kernel393 + Kernels = kernel441 + }, + { + Identifier = "S2004S24", + Parent = { + Identifier = parentIdentifier, + Spice = parentSpice + }, + Spice = "65070", + Radii = { 3000, 3000, 3000 }, + Tags = tags, + TrailTags = trailTags, + GUI = { + Name = "S/2004 S 24", + Path = "/Solar System/Planets/Saturn/Moons/Other Group" + }, + TrailColor = trailColor, + OrbitPeriod = 1293.85, + Kernels = kernel452 } } diff --git a/data/assets/scene/solarsystem/planets/saturn/rhea/rhea.asset b/data/assets/scene/solarsystem/planets/saturn/rhea/rhea.asset index b1b441fa04..fed5a94335 100644 --- a/data/assets/scene/solarsystem/planets/saturn/rhea/rhea.asset +++ b/data/assets/scene/solarsystem/planets/saturn/rhea/rhea.asset @@ -1,5 +1,5 @@ local transforms = asset.require("../transforms") -local kernel = asset.require("../kernels").sat375 +local kernel = asset.require("../kernels").sat441 asset.require("./trail") local labelsPath = asset.syncedResource({ diff --git a/data/assets/scene/solarsystem/planets/saturn/rhea/trail.asset b/data/assets/scene/solarsystem/planets/saturn/rhea/trail.asset index a985709375..3cdc35e70d 100644 --- a/data/assets/scene/solarsystem/planets/saturn/rhea/trail.asset +++ b/data/assets/scene/solarsystem/planets/saturn/rhea/trail.asset @@ -1,5 +1,5 @@ local transforms = asset.require("../transforms") -local kernel = asset.require("../kernels").sat375 +local kernel = asset.require("../kernels").sat441 diff --git a/data/assets/scene/solarsystem/planets/saturn/tethys/tethys.asset b/data/assets/scene/solarsystem/planets/saturn/tethys/tethys.asset index 78f5825189..9e0a1faef7 100644 --- a/data/assets/scene/solarsystem/planets/saturn/tethys/tethys.asset +++ b/data/assets/scene/solarsystem/planets/saturn/tethys/tethys.asset @@ -1,5 +1,5 @@ local transforms = asset.require("../transforms") -local kernel = asset.require("../kernels").sat375 +local kernel = asset.require("../kernels").sat441 asset.require("./trail") local labelsPath = asset.syncedResource({ diff --git a/data/assets/scene/solarsystem/planets/saturn/tethys/trail.asset b/data/assets/scene/solarsystem/planets/saturn/tethys/trail.asset index 7fa5e94717..e3829c1a53 100644 --- a/data/assets/scene/solarsystem/planets/saturn/tethys/trail.asset +++ b/data/assets/scene/solarsystem/planets/saturn/tethys/trail.asset @@ -1,5 +1,5 @@ local transforms = asset.require("../transforms") -local kernel = asset.require("../kernels").sat375 +local kernel = asset.require("../kernels").sat441 diff --git a/data/assets/scene/solarsystem/planets/saturn/titan/titan.asset b/data/assets/scene/solarsystem/planets/saturn/titan/titan.asset index 6cddd13b22..3895ebe763 100644 --- a/data/assets/scene/solarsystem/planets/saturn/titan/titan.asset +++ b/data/assets/scene/solarsystem/planets/saturn/titan/titan.asset @@ -1,5 +1,5 @@ local transforms = asset.require("../transforms") -local kernel = asset.require("../kernels").sat375 +local kernel = asset.require("../kernels").sat441 asset.require("./trail") local labelsPath = asset.syncedResource({ diff --git a/data/assets/scene/solarsystem/planets/saturn/titan/trail.asset b/data/assets/scene/solarsystem/planets/saturn/titan/trail.asset index 65384fbc8d..2c8699b07c 100644 --- a/data/assets/scene/solarsystem/planets/saturn/titan/trail.asset +++ b/data/assets/scene/solarsystem/planets/saturn/titan/trail.asset @@ -1,5 +1,5 @@ local transforms = asset.require("../transforms") -local kernel = asset.require("../kernels").sat375 +local kernel = asset.require("../kernels").sat441 diff --git a/data/assets/scene/solarsystem/planets/uranus/inner_moons.asset b/data/assets/scene/solarsystem/planets/uranus/inner_moons.asset index c9cbabebe9..555acbede7 100644 --- a/data/assets/scene/solarsystem/planets/uranus/inner_moons.asset +++ b/data/assets/scene/solarsystem/planets/uranus/inner_moons.asset @@ -1,6 +1,6 @@ local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("./transforms") -local kernel = asset.require("./kernels").ura091 +local kernel = asset.require("./kernels").ura115 diff --git a/data/assets/scene/solarsystem/planets/uranus/irregular_prograde_moons.asset b/data/assets/scene/solarsystem/planets/uranus/irregular_prograde_moons.asset index b82b0446b3..bb4a759054 100644 --- a/data/assets/scene/solarsystem/planets/uranus/irregular_prograde_moons.asset +++ b/data/assets/scene/solarsystem/planets/uranus/irregular_prograde_moons.asset @@ -1,6 +1,6 @@ local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("./transforms") -local kernel = asset.require("./kernels").ura112 +local kernel = asset.require("./kernels").ura116 diff --git a/data/assets/scene/solarsystem/planets/uranus/irregular_retrograde_moons.asset b/data/assets/scene/solarsystem/planets/uranus/irregular_retrograde_moons.asset index df1e401f53..2d09fd78f7 100644 --- a/data/assets/scene/solarsystem/planets/uranus/irregular_retrograde_moons.asset +++ b/data/assets/scene/solarsystem/planets/uranus/irregular_retrograde_moons.asset @@ -1,6 +1,6 @@ local proceduralGlobes = asset.require("util/procedural_globe") local transforms = asset.require("./transforms") -local kernel = asset.require("./kernels").ura112 +local kernel = asset.require("./kernels").ura116 diff --git a/data/assets/scene/solarsystem/planets/uranus/kernels.asset b/data/assets/scene/solarsystem/planets/uranus/kernels.asset index aaa96e06da..3585fd7832 100644 --- a/data/assets/scene/solarsystem/planets/uranus/kernels.asset +++ b/data/assets/scene/solarsystem/planets/uranus/kernels.asset @@ -2,12 +2,12 @@ local Kernels = asset.syncedResource({ Name = "Uranus Spice Kernels", Type = "HttpSynchronization", Identifier = "uranus_kernels", - Version = 1 + Version = 2 }) -asset.export("ura091", Kernels .. "ura091-rocks-merge.bsp") asset.export("ura111", Kernels .. "ura111.bsp") -asset.export("ura112", Kernels .. "ura112.bsp") +asset.export("ura115", Kernels .. "ura115.bsp") +asset.export("ura116", Kernels .. "ura116.bsp") asset.meta = { From b219638e290b892b7221ebbaa69f3792dfa90e11 Mon Sep 17 00:00:00 2001 From: Joakim Kilby Date: Tue, 11 Apr 2023 08:46:25 +0200 Subject: [PATCH 29/31] Add ability to cache globe data using MRFs (#2565) Enables globe-browsing data to be cached using caching mrf's as it is loaded from the original dataset. Subsequent reads of tiles that have been cached do not query the original dataset but picks it up from the mrf data. Supports anything that can be used a dataset for a gdal raster but raw images such as JPGs are explicitly disallowed as they lack necessary geotransform data. Activated on a global scale by setting the following keys in openspace.cfg (ModuleConfigurations/GlobeBrowsing) MRFCacheEnabled = true, MRFCacheLocation = "", Settings can be overriden on a per-layer basis by adding the following entries to the layer entity of an asset CacheSettings = { Enabled = true, Compression = "LERC", BlockSize = 512, Quality=25 }, The following per-layer settings are available and override the global module settings: Enabled : enable/disable caching for this layer. Compression: The compression algorithm to use for tile cache storage. (JPEG, PNG, or LERC) BlockSize: Size of tiles in cache, should be a multiple of 2 although this is not required. Quality: The quality setting of the JPEG compression (when used) Note that heightlayers must use LERC compresison and this is the default unless overridden by a layer. --- .gitignore | 1 + modules/globebrowsing/CMakeLists.txt | 1 + modules/globebrowsing/globebrowsingmodule.cpp | 110 +++-------- modules/globebrowsing/globebrowsingmodule.h | 13 +- .../globebrowsing/globebrowsingmodule_lua.inl | 3 + .../globebrowsing/src/rawtiledatareader.cpp | 175 +++++++++++------- modules/globebrowsing/src/rawtiledatareader.h | 5 + .../globebrowsing/src/tilecacheproperties.h | 42 +++++ .../src/tileprovider/defaulttileprovider.cpp | 85 ++++++++- .../src/tileprovider/defaulttileprovider.h | 5 +- openspace.cfg | 9 +- 11 files changed, 277 insertions(+), 172 deletions(-) create mode 100644 modules/globebrowsing/src/tilecacheproperties.h diff --git a/.gitignore b/.gitignore index 1ed32e43c9..11489c2ac9 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,7 @@ Thumbs.db /cache/ /cache-*/ /cache_gdal/ +/mrf_cache/ /documentation/ /logs/ /screenshots/ diff --git a/modules/globebrowsing/CMakeLists.txt b/modules/globebrowsing/CMakeLists.txt index 1bc921acf4..31899a4ff0 100644 --- a/modules/globebrowsing/CMakeLists.txt +++ b/modules/globebrowsing/CMakeLists.txt @@ -58,6 +58,7 @@ set(HEADER_FILES src/tileindex.h src/tileloadjob.h src/tiletextureinitdata.h + src/tilecacheproperties.h src/timequantizer.h src/tileprovider/defaulttileprovider.h src/tileprovider/imagesequencetileprovider.h diff --git a/modules/globebrowsing/globebrowsingmodule.cpp b/modules/globebrowsing/globebrowsingmodule.cpp index 20c04f5e60..a0d86ecc73 100644 --- a/modules/globebrowsing/globebrowsingmodule.cpp +++ b/modules/globebrowsing/globebrowsingmodule.cpp @@ -91,43 +91,24 @@ namespace { constexpr std::string_view _loggerCat = "GlobeBrowsingModule"; - constexpr openspace::properties::Property::PropertyInfo WMSCacheEnabledInfo = { - "WMSCacheEnabled", - "WMS Cache Enabled", - "Determines whether automatic caching of WMS servers is enabled. Changing the " - "value of this property will not affect already created WMS datasets" - }; - - constexpr openspace::properties::Property::PropertyInfo OfflineModeInfo = { - "OfflineMode", - "Offline Mode", - "Determines whether loaded WMS servers should be used in offline mode, that is " - "not even try to retrieve images through an internet connection. Please note " - "that this setting is only reasonable, if the caching is enabled and there is " - "available cached data. Changing the value of this property will not affect " - "already created WMS datasets" - }; - - constexpr openspace::properties::Property::PropertyInfo WMSCacheLocationInfo = { - "WMSCacheLocation", - "WMS Cache Location", - "The location of the cache folder for WMS servers. Changing the value of this " - "property will not affect already created WMS datasets" - }; - - constexpr openspace::properties::Property::PropertyInfo WMSCacheSizeInfo = { - "WMSCacheSize", - "WMS Cache Size", - "The maximum size of the cache for each WMS server. Changing the value of this " - "property will not affect already created WMS datasets" - }; - constexpr openspace::properties::Property::PropertyInfo TileCacheSizeInfo = { "TileCacheSize", "Tile Cache Size", "The maximum size of the MemoryAwareTileCache, on the CPU and GPU" }; + constexpr openspace::properties::Property::PropertyInfo MRFCacheEnabledInfo = { + "MRFCacheEnabled", + "MRF Cache Enabled", + "Determines whether automatic caching of globe browsing data is enabled." + }; + + constexpr openspace::properties::Property::PropertyInfo MRFCacheLocationInfo = { + "MRFCacheLocation", + "MRF Cache Location", + "The location of the root folder for the MRF cache of globe browsing data." + }; + openspace::GlobeBrowsingModule::Capabilities parseSubDatasets(char** subDatasets, int nSubdatasets) { @@ -185,25 +166,15 @@ namespace { } struct [[codegen::Dictionary(GlobeBrowsingModule)]] Parameters { - // [[codegen::verbatim(WMSCacheEnabledInfo.description)]] - std::optional cacheEnabled [[codegen::key("WMSCacheEnabled")]]; - - // [[codegen::verbatim(OfflineModeInfo.description)]] - std::optional offlineMode; - - // [[codegen::verbatim(WMSCacheLocationInfo.description)]] - std::optional cacheLocation [[codegen::key("WMSCacheLocation")]]; - - // [[codegen::verbatim(WMSCacheSizeInfo.description)]] - std::optional wmsCacheSize [[codegen::key("WMSCacheSize")]]; // [[codegen::verbatim(TileCacheSizeInfo.description)]] std::optional tileCacheSize; - // If you know what you are doing and you have WMS caching *disabled* but offline - // mode *enabled*, you can set this value to 'true' to silence a warning that you - // would otherwise get at startup - std::optional noWarning; + // [[codegen::verbatim(MRFCacheEnabledInfo.description)]] + std::optional mrfCacheEnabled [[codegen::key("MRFCacheEnabled")]]; + + // [[codegen::verbatim(MRFCacheLocationInfo.description)]] + std::optional mrfCacheLocation [[codegen::key("MRFCacheLocation")]]; }; #include "globebrowsingmodule_codegen.cpp" } // namespace @@ -212,40 +183,22 @@ namespace openspace { GlobeBrowsingModule::GlobeBrowsingModule() : OpenSpaceModule(Name) - , _wmsCacheEnabled(WMSCacheEnabledInfo, false) - , _offlineMode(OfflineModeInfo, false) - , _wmsCacheLocation(WMSCacheLocationInfo, "${BASE}/cache_gdal") - , _wmsCacheSizeMB(WMSCacheSizeInfo, 1024) , _tileCacheSizeMB(TileCacheSizeInfo, 1024) + , _mrfCacheEnabled(MRFCacheEnabledInfo, false) + , _mrfCacheLocation(MRFCacheLocationInfo, "${BASE}/cache_mrf") { - addProperty(_wmsCacheEnabled); - addProperty(_offlineMode); - addProperty(_wmsCacheLocation); - addProperty(_wmsCacheSizeMB); addProperty(_tileCacheSizeMB); + addProperty(_mrfCacheEnabled); + addProperty(_mrfCacheLocation); } void GlobeBrowsingModule::internalInitialize(const ghoul::Dictionary& dict) { using namespace globebrowsing; const Parameters p = codegen::bake(dict); - _wmsCacheEnabled = p.cacheEnabled.value_or(_wmsCacheEnabled); - _offlineMode = p.offlineMode.value_or(_offlineMode); - _wmsCacheLocation = p.cacheLocation.value_or(_wmsCacheLocation); - _wmsCacheSizeMB = p.wmsCacheSize.value_or(_wmsCacheSizeMB); _tileCacheSizeMB = p.tileCacheSize.value_or(_tileCacheSizeMB); - const bool noWarning = p.noWarning.value_or(false); - - if (!_wmsCacheEnabled && _offlineMode && !noWarning) { - LWARNINGC( - "GlobeBrowsingModule", - "WMS caching is disabled, but offline mode is enabled. Unless you know " - "what you are doing, this will probably cause many servers to stop working. " - "If you want to silence this warning, set the 'NoWarning' parameter to " - "'true'" - ); - } - + _mrfCacheEnabled = p.mrfCacheEnabled.value_or(_mrfCacheEnabled); + _mrfCacheLocation = p.mrfCacheLocation.value_or(_mrfCacheLocation); // Initialize global::callback::initializeGL->emplace_back([&]() { @@ -670,21 +623,12 @@ bool GlobeBrowsingModule::hasUrlInfo(const std::string& globe) const { return _urlList.find(globe) != _urlList.end(); } -bool GlobeBrowsingModule::isWMSCachingEnabled() const { - return _wmsCacheEnabled; +bool GlobeBrowsingModule::isMRFCachingEnabled() const { + return _mrfCacheEnabled; } -bool GlobeBrowsingModule::isInOfflineMode() const { - return _offlineMode; -} - -std::string GlobeBrowsingModule::wmsCacheLocation() const { - return _wmsCacheLocation; -} - -uint64_t GlobeBrowsingModule::wmsCacheSize() const { - uint64_t size = _wmsCacheSizeMB; - return size * 1024 * 1024; +const std::string GlobeBrowsingModule::mrfCacheLocation() const { + return _mrfCacheLocation; } scripting::LuaLibrary GlobeBrowsingModule::luaLibrary() const { diff --git a/modules/globebrowsing/globebrowsingmodule.h b/modules/globebrowsing/globebrowsingmodule.h index 3539b6f077..3902e5b663 100644 --- a/modules/globebrowsing/globebrowsingmodule.h +++ b/modules/globebrowsing/globebrowsingmodule.h @@ -92,10 +92,8 @@ public: void removeWMSServer(const std::string& name); - bool isWMSCachingEnabled() const; - bool isInOfflineMode() const; - std::string wmsCacheLocation() const; - uint64_t wmsCacheSize() const; // bytes + bool isMRFCachingEnabled() const; + const std::string mrfCacheLocation() const; protected: void internalInitialize(const ghoul::Dictionary&) override; @@ -113,12 +111,11 @@ private: glm::dquat lookDownCameraRotation(const globebrowsing::RenderableGlobe& globe, glm::dvec3 cameraPositionModelSpace, globebrowsing::Geodetic2 geo2); - properties::BoolProperty _wmsCacheEnabled; - properties::BoolProperty _offlineMode; - properties::StringProperty _wmsCacheLocation; - properties::UIntProperty _wmsCacheSizeMB; properties::UIntProperty _tileCacheSizeMB; + properties::BoolProperty _mrfCacheEnabled; + properties::StringProperty _mrfCacheLocation; + std::unique_ptr _tileCache; // name -> capabilities diff --git a/modules/globebrowsing/globebrowsingmodule_lua.inl b/modules/globebrowsing/globebrowsingmodule_lua.inl index 1085f944d9..9881a65fe0 100644 --- a/modules/globebrowsing/globebrowsingmodule_lua.inl +++ b/modules/globebrowsing/globebrowsingmodule_lua.inl @@ -56,6 +56,9 @@ namespace { throw ghoul::lua::LuaError("Unknown layer group: " + layerGroupName); } + // Add the name of the enclosing globe to layer dict, it is used to identify a cache + layer.setValue("GlobeName", globeName); + // Get the dictionary defining the layer Layer* l = globe->layerManager().addLayer(groupID, layer); if (l) { diff --git a/modules/globebrowsing/src/rawtiledatareader.cpp b/modules/globebrowsing/src/rawtiledatareader.cpp index d7d5a1536e..dfd4e3ad45 100644 --- a/modules/globebrowsing/src/rawtiledatareader.cpp +++ b/modules/globebrowsing/src/rawtiledatareader.cpp @@ -34,7 +34,6 @@ #include #include #include -#include #ifdef _MSC_VER #pragma warning (push) @@ -54,11 +53,13 @@ #include #include +#include +#include namespace openspace::globebrowsing { namespace { - + constexpr std::string_view _loggerCat = "RawTileDataReader"; // These are some locations in memory taken from ESRI's No Data Available tile so that we // can spotcheck these tiles and not present them // The pair is @@ -421,9 +422,11 @@ RawTile::ReadError postProcessErrorCheck(const RawTile& rawTile, RawTileDataReader::RawTileDataReader(std::string filePath, TileTextureInitData initData, + TileCacheProperties cacheProperties, PerformPreprocessing preprocess) : _datasetFilePath(std::move(filePath)) , _initData(std::move(initData)) + , _cacheProperties(std::move(cacheProperties)) , _preprocess(preprocess) { ZoneScoped; @@ -439,83 +442,115 @@ RawTileDataReader::~RawTileDataReader() { } } +std::optional RawTileDataReader::mrfCache() { + // We don't support these formats as they will typically lack + // crucial imformation such as GeoTags. It also makes little sense to + // cache them as they are already local files. + // If it is crucial to cache a dataset of this type, convert it to geotiff. + constexpr std::array Unsupported = { + "jpeg", "jpg", + "png", + "bmp", + "psd", + "tga", + "gif", + "hdr", + "pic", + "ppm", "pgm" + }; + + for (std::string_view fmt : Unsupported) { + if (_datasetFilePath.ends_with(fmt)) { + LWARNING(fmt::format( + "Unsupported file format for MRF caching: {}, Dataset: {}", + fmt, _datasetFilePath + )); + return std::nullopt; + } + } + + GlobeBrowsingModule& module = *global::moduleEngine->module(); + + std::string datasetIdentifier = + std::to_string(std::hash{}(_datasetFilePath)); + std::string path = fmt::format("{}/{}/{}/", + module.mrfCacheLocation(), _cacheProperties.path, datasetIdentifier); + std::string root = absPath(path).string(); + std::string mrf = root + datasetIdentifier + ".mrf"; + std::string cache = root + datasetIdentifier + ".mrfcache"; + + if (!std::filesystem::exists(mrf)) { + std::error_code ec; + if (!std::filesystem::create_directories(root, ec)) { + // Already existing directories causes a 'failure' but no error + if (ec) { + LWARNING(fmt::format( + "Failed to create directories for cache at: {}. Error Code: {}, message: {}", + root, std::to_string(ec.value()), ec.message() + )); + return std::nullopt; + } + } + + GDALDriver* driver = GetGDALDriverManager()->GetDriverByName("MRF"); + if (driver != nullptr) { + GDALDataset* src = static_cast(GDALOpen(_datasetFilePath.c_str(), GA_ReadOnly)); + if (!src) { + LWARNING(fmt::format( + "Failed to load dataset: {}. GDAL Error: {}", + _datasetFilePath, CPLGetLastErrorMsg() + )); + return std::nullopt; + } + + defer{ GDALClose(src); }; + + char** createOpts = nullptr; + createOpts = CSLSetNameValue(createOpts, "CACHEDSOURCE", _datasetFilePath.c_str()); + createOpts = CSLSetNameValue(createOpts, "NOCOPY", "true"); + createOpts = CSLSetNameValue(createOpts, "uniform_scale", "2"); + createOpts = CSLSetNameValue(createOpts, "compress", _cacheProperties.compression.c_str()); + createOpts = CSLSetNameValue(createOpts, "quality", std::to_string(_cacheProperties.quality).c_str()); + createOpts = CSLSetNameValue(createOpts, "blocksize", std::to_string(_cacheProperties.blockSize).c_str()); + createOpts = CSLSetNameValue(createOpts, "indexname", cache.c_str()); + createOpts = CSLSetNameValue(createOpts, "DATANAME", cache.c_str()); + + GDALDataset* dst = static_cast(driver->CreateCopy(mrf.c_str(), src, false, createOpts, nullptr, nullptr)); + if (!dst) { + LWARNING(fmt::format( + "Failed to create MRF Caching dataset dataset: {}. GDAL Error: {}", + mrf, CPLGetLastErrorMsg() + )); + return std::nullopt; + } + GDALClose(dst); + + return mrf; + } + else { + LWARNING("Failed to create MRF driver"); + return std::nullopt; + } + } + else { + return mrf; + } +} + void RawTileDataReader::initialize() { ZoneScoped; if (_datasetFilePath.empty()) { throw ghoul::RuntimeError("File path must not be empty"); } - - GlobeBrowsingModule& module = *global::moduleEngine->module(); - std::string content = _datasetFilePath; - if (module.isWMSCachingEnabled()) { - ZoneScopedN("WMS Caching"); - std::string c; - if (std::filesystem::is_regular_file(_datasetFilePath)) { - // Only replace the 'content' if the dataset is an XML file and we want to do - // caching - std::ifstream t(_datasetFilePath); - c.append( - (std::istreambuf_iterator(t)), - std::istreambuf_iterator() - ); - } - else { - //GDAL input case for configuration string (e.g. temporal data) - c = _datasetFilePath; - } - if (c.size() > 10 && c.substr(0, 10) == "") { - // We know that _datasetFilePath is an XML file, so now we add a Cache line - // into it iff there isn't already one in the XML and if the configuration - // says we should + if (_cacheProperties.enabled) { + ZoneScopedN("MRF Caching"); - // 1. Parse XML - // 2. Inject Cache tag if it isn't already there - // 3. Serialize XML to pass into GDAL - - LDEBUGC(_datasetFilePath, "Inserting caching tag"); - - bool shouldSerializeXml = false; - - CPLXMLNode* root = CPLParseXMLString(c.c_str()); - CPLXMLNode* cache = CPLSearchXMLNode(root, "Cache"); - if (!cache) { - // If there already is a cache, we don't want to modify it - cache = CPLCreateXMLNode(root, CXT_Element, "Cache"); - - CPLCreateXMLElementAndValue( - cache, - "Path", - absPath(module.wmsCacheLocation()).string().c_str() - ); - CPLCreateXMLElementAndValue(cache, "Depth", "4"); - CPLCreateXMLElementAndValue(cache, "Expires", "315576000"); // 10 years - CPLCreateXMLElementAndValue( - cache, - "MaxSize", - std::to_string(module.wmsCacheSize()).c_str() - ); - - // The serialization only needs to be one if the cache didn't exist - // already - shouldSerializeXml = true; - } - - if (module.isInOfflineMode()) { - CPLXMLNode* offlineMode = CPLSearchXMLNode(root, "OfflineMode"); - if (!offlineMode) { - CPLCreateXMLElementAndValue(root, "OfflineMode", "true"); - shouldSerializeXml = true; - } - } - - - if (shouldSerializeXml) { - content = std::string(CPLSerializeXMLTree(root)); - //CPLSerializeXMLTreeToFile(root, (_datasetFilePath + ".xml").c_str()); - } + std::optional cache = mrfCache(); + if (cache.has_value()) { + content = cache.value(); } } diff --git a/modules/globebrowsing/src/rawtiledatareader.h b/modules/globebrowsing/src/rawtiledatareader.h index c58ea2da80..7d23d4bfeb 100644 --- a/modules/globebrowsing/src/rawtiledatareader.h +++ b/modules/globebrowsing/src/rawtiledatareader.h @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -53,6 +54,7 @@ public: * \param baseDirectory, the base directory to use in future loading operations */ RawTileDataReader(std::string filePath, TileTextureInitData initData, + TileCacheProperties cacheProperties, PerformPreprocessing preprocess = PerformPreprocessing::No); ~RawTileDataReader(); @@ -65,6 +67,8 @@ public: glm::ivec2 fullPixelSize() const; private: + std::optional mrfCache(); + void initialize(); RawTile::ReadError rasterRead(int rasterBand, const IODescription& io, @@ -97,6 +101,7 @@ private: int _maxChunkLevel = -1; const TileTextureInitData _initData; + const TileCacheProperties _cacheProperties; const PerformPreprocessing _preprocess; TileDepthTransform _depthTransform = { .scale = 0.f, .offset = 0.f }; diff --git a/modules/globebrowsing/src/tilecacheproperties.h b/modules/globebrowsing/src/tilecacheproperties.h new file mode 100644 index 0000000000..360d382946 --- /dev/null +++ b/modules/globebrowsing/src/tilecacheproperties.h @@ -0,0 +1,42 @@ +/***************************************************************************************** + * * + * 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_GLOBEBROWSING___TILE_CACHE_PROPERTIES___H__ +#define __OPENSPACE_MODULE_GLOBEBROWSING___TILE_CACHE_PROPERTIES___H__ + +#include + +namespace openspace::globebrowsing { + +struct TileCacheProperties { + bool enabled = false; + std::string compression; + std::string path; + int quality; + int blockSize; +}; + +} // namespace openspace::globebrowsing + +#endif // __OPENSPACE_MODULE_GLOBEBROWSING___TILE_CACHE_PROPERTIES___H__ diff --git a/modules/globebrowsing/src/tileprovider/defaulttileprovider.cpp b/modules/globebrowsing/src/tileprovider/defaulttileprovider.cpp index 44635e21e8..4dd907a078 100644 --- a/modules/globebrowsing/src/tileprovider/defaulttileprovider.cpp +++ b/modules/globebrowsing/src/tileprovider/defaulttileprovider.cpp @@ -48,10 +48,25 @@ namespace { "complete image if a single image is used" }; + constexpr openspace::properties::Property::PropertyInfo CompressionInfo = { + "Compression", + "Compression Algorithm", + "The compression algorithm to use for MRF cached tiles" + }; + + enum class [[codegen::stringify()]] Compression { + PNG = 0, + JPEG, + LERC + }; + struct [[codegen::Dictionary(DefaultTileProvider)]] Parameters { // User-facing name of this tile provider std::optional name; + // Identifier of the enclosing layer to which tiles are provided + std::optional identifier; + // The path to the file that is loaded by GDAL to produce tiles. Since GDAL // supports it, this can also be the textual representation of the contents of a // loading file @@ -70,6 +85,32 @@ namespace { // Determines if the tiles should be preprocessed before uploading to the GPU std::optional performPreProcessing; + struct CacheSettings { + // Specifies whether to use caching or not + std::optional enabled; + + // [[codegen::verbatim(CompressionInfo.description)]] + enum class [[codegen::map(Compression)]] Compression { + PNG = 0, + JPEG, + LERC + }; + + // The compression algorithm to use for cached tiles + std::optional compression; + + // The quality setting of the compression alogrithm, only valid for JPEG + std::optional quality [[codegen::inrange(0, 100)]]; + + // The block-size of the MRF cache + std::optional blockSize [[codegen::greater(0)]]; + }; + // Specifies the cache settings that should be applied to this layer + std::optional cacheSettings; + + // The name of the enclosing globe + std::optional globeName; + }; #include "defaulttileprovider_codegen.cpp" } // namespace @@ -105,17 +146,53 @@ DefaultTileProvider::DefaultTileProvider(const ghoul::Dictionary& dictionary) _performPreProcessing = _layerGroupID == layers::Group::ID::HeightLayers; _performPreProcessing = p.performPreProcessing.value_or(_performPreProcessing); + // Get the name of the layergroup to which this layer belongs + auto it = std::find_if( + layers::Groups.begin(), + layers::Groups.end(), + [id = _layerGroupID](const layers::Group& gi) { + return gi.id == id; + } + ); + auto layerGroup = it != layers::Groups.end() ? it->name : std::to_string(static_cast(_layerGroupID)); + + std::string identifier = p.identifier.value_or("unspecified"); + std::string enclosing = p.globeName.value_or("unspecified"); + + std::string path = fmt::format("{}/{}/{}/", enclosing, layerGroup, identifier); + + GlobeBrowsingModule& module = *global::moduleEngine->module(); + bool enabled = module.isMRFCachingEnabled(); + Compression compression = + _layerGroupID == layers::Group::ID::HeightLayers ? Compression::LERC : Compression::JPEG; + int quality = 75; + int blockSize = 1024; + if (p.cacheSettings.has_value()) { + enabled = p.cacheSettings->enabled.value_or(enabled); + if (p.cacheSettings->compression.has_value()) { + compression = codegen::map(*p.cacheSettings->compression); + } + quality = p.cacheSettings->quality.value_or(quality); + blockSize = p.cacheSettings->blockSize.value_or(blockSize); + } + + _cacheProperties.enabled = enabled; + _cacheProperties.path = path; + _cacheProperties.quality = quality; + _cacheProperties.blockSize = blockSize; + _cacheProperties.compression = codegen::toString(compression); + TileTextureInitData initData( tileTextureInitData(_layerGroupID, _padTiles, pixelSize) ); _tilePixelSize = initData.dimensions.x; - initAsyncTileDataReader(initData); + initAsyncTileDataReader(initData, _cacheProperties); addProperty(_filePath); addProperty(_tilePixelSize); } -void DefaultTileProvider::initAsyncTileDataReader(TileTextureInitData initData) { +void DefaultTileProvider::initAsyncTileDataReader(TileTextureInitData initData, TileCacheProperties cacheProperties) { ZoneScoped; _asyncTextureDataProvider = std::make_unique( @@ -123,6 +200,7 @@ void DefaultTileProvider::initAsyncTileDataReader(TileTextureInitData initData) std::make_unique( _filePath, initData, + cacheProperties, RawTileDataReader::PerformPreprocessing(_performPreProcessing) ) ); @@ -189,7 +267,8 @@ void DefaultTileProvider::update() { if (_asyncTextureDataProvider->shouldBeDeleted()) { initAsyncTileDataReader( - tileTextureInitData(_layerGroupID, _padTiles, _tilePixelSize) + tileTextureInitData(_layerGroupID, _padTiles, _tilePixelSize), + _cacheProperties ); } } diff --git a/modules/globebrowsing/src/tileprovider/defaulttileprovider.h b/modules/globebrowsing/src/tileprovider/defaulttileprovider.h index 60b96fe6bf..21b659296d 100644 --- a/modules/globebrowsing/src/tileprovider/defaulttileprovider.h +++ b/modules/globebrowsing/src/tileprovider/defaulttileprovider.h @@ -26,7 +26,7 @@ #define __OPENSPACE_MODULE_GLOBEBROWSING___TILEPROVIDER__DEFAULTTILEPROVIDER___H__ #include - +#include #include #include @@ -48,7 +48,7 @@ public: static documentation::Documentation Documentation(); private: - void initAsyncTileDataReader(TileTextureInitData initData); + void initAsyncTileDataReader(TileTextureInitData initData, TileCacheProperties cacheProperties); properties::StringProperty _filePath; properties::IntProperty _tilePixelSize; @@ -57,6 +57,7 @@ private: layers::Group::ID _layerGroupID = layers::Group::ID::Unknown; bool _performPreProcessing = false; bool _padTiles = true; + TileCacheProperties _cacheProperties; }; } // namespace openspace::globebrowsing diff --git a/openspace.cfg b/openspace.cfg index 686c9a106e..5ba0ee4aca 100644 --- a/openspace.cfg +++ b/openspace.cfg @@ -137,12 +137,9 @@ Paths = { ModuleConfigurations = { GlobeBrowsing = { - WMSCacheEnabled = false, - -- OfflineMode = true, - -- NoWarning = true, - WMSCacheLocation = "${BASE}/cache_gdal", - WMSCacheSize = 1024, -- in megabytes PER DATASET - TileCacheSize = 2048 -- for all globes (CPU and GPU memory) + TileCacheSize = 2048, -- for all globes (CPU and GPU memory) + MRFCacheEnabled = false, + MRFCacheLocation = "${BASE}/mrf_cache" }, Sync = { SynchronizationRoot = "${SYNC}", From 649442aca9b1ec11485271a05606a5011c7a3f31 Mon Sep 17 00:00:00 2001 From: Alexander Bock Date: Wed, 12 Apr 2023 08:47:52 +0200 Subject: [PATCH 30/31] Update SGCT repository --- apps/OpenSpace/ext/launcher/CMakeLists.txt | 5 ++--- apps/OpenSpace/ext/sgct | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/apps/OpenSpace/ext/launcher/CMakeLists.txt b/apps/OpenSpace/ext/launcher/CMakeLists.txt index b1c87bfe64..f7a465bd3c 100644 --- a/apps/OpenSpace/ext/launcher/CMakeLists.txt +++ b/apps/OpenSpace/ext/launcher/CMakeLists.txt @@ -113,9 +113,6 @@ target_include_directories( openspace-ui-launcher PUBLIC include - # @TODO: This should be handled in a better way - ../sgct/include - ../sgct/sgct/ext/glm ) target_link_libraries( openspace-ui-launcher @@ -126,6 +123,8 @@ target_link_libraries( Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Network + PRIVATE + sgct ) target_precompile_headers(openspace-ui-launcher PRIVATE diff --git a/apps/OpenSpace/ext/sgct b/apps/OpenSpace/ext/sgct index 61fe0fe3ef..05ed52d053 160000 --- a/apps/OpenSpace/ext/sgct +++ b/apps/OpenSpace/ext/sgct @@ -1 +1 @@ -Subproject commit 61fe0fe3efd67fc822f4442ea96837dcee5705b1 +Subproject commit 05ed52d0533b95954913a363499bb828512a6245 From aeb81eb05060d31d618add8b3f74862054ed5869 Mon Sep 17 00:00:00 2001 From: Micah Acinapura Date: Wed, 12 Apr 2023 11:00:44 -0400 Subject: [PATCH 31/31] disabled assets for profile start (#2590) --- data/profiles/asteroids.profile | 97 ++++++++++++++++++++++++++++++++- 1 file changed, 95 insertions(+), 2 deletions(-) diff --git a/data/profiles/asteroids.profile b/data/profiles/asteroids.profile index 3478a25104..251a241ab2 100644 --- a/data/profiles/asteroids.profile +++ b/data/profiles/asteroids.profile @@ -65,12 +65,105 @@ "url": "https://www.openspaceproject.com", "version": "1.0" }, + "properties": [ + { + "name": "Scene.sssb_transneptunian_object_asteroid.Renderable.Fade", + "type": "setPropertyValueSingle", + "value": "0" + }, + { + "name": "Scene.sssb_amor_asteroid.Renderable.Fade", + "type": "setPropertyValueSingle", + "value": "0" + }, + { + "name": "Scene.sssb_apollo_asteroid.Renderable.Fade", + "type": "setPropertyValueSingle", + "value": "0" + }, + { + "name": "Scene.sssb_aten_asteroid.Renderable.Fade", + "type": "setPropertyValueSingle", + "value": "0" + }, + { + "name": "Scene.sssb_atira_asteroid.Renderable.Fade", + "type": "setPropertyValueSingle", + "value": "0" + }, + { + "name": "Scene.sssb_centaur_asteroid.Renderable.Fade", + "type": "setPropertyValueSingle", + "value": "0" + }, + { + "name": "Scene.sssb_jupiter_trojan_asteroid.Renderable.Fade", + "type": "setPropertyValueSingle", + "value": "0" + }, + { + "name": "Scene.sssb_jupiter-family_comet.Renderable.Fade", + "type": "setPropertyValueSingle", + "value": "0" + }, + { + "name": "Scene.sssb_mars-crossing_asteroid.Renderable.Fade", + "type": "setPropertyValueSingle", + "value": "0" + }, + { + "name": "Scene.sssb_pha.Renderable.Fade", + "type": "setPropertyValueSingle", + "value": "0" + }, + { + "name": "Scene.sssb_outer_main_belt_asteroid.Renderable.Fade", + "type": "setPropertyValueSingle", + "value": "0" + }, + { + "name": "Scene.sssb_main_belt_asteroid.Renderable.Fade", + "type": "setPropertyValueSingle", + "value": "0" + }, + { + "name": "Scene.sssb_chiron-type_comet.Renderable.Fade", + "type": "setPropertyValueSingle", + "value": "0" + }, + { + "name": "Scene.sssb_encke-type_comet.Renderable.Fade", + "type": "setPropertyValueSingle", + "value": "0" + }, + { + "name": "Scene.sssb_halley-type_comet.Renderable.Fade", + "type": "setPropertyValueSingle", + "value": "0" + }, + { + "name": "Scene.sssb_inner_main_belt_asteroid.Renderable.Fade", + "type": "setPropertyValueSingle", + "value": "0" + }, + { + "name": "Scene.C2019Q4BorisovTrail.Renderable.Fade", + "type": "setPropertyValueSingle", + "value": "0" + }, + { + "name": "Scene.OumuamuaTrail.Renderable.Fade", + "type": "setPropertyValueSingle", + "value": "0" + } + ], "time": { + "is_paused": false, "type": "relative", "value": "-1d" }, "version": { "major": 1, - "minor": 0 + "minor": 2 } -} +} \ No newline at end of file