mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-02-28 16:09:46 -06:00
Add the JUICE mission (#2155)
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
width 10
|
||||
lower 0.0
|
||||
upper 1.0
|
||||
|
||||
mappingkey 0.0 60 38 164 255
|
||||
mappingkey 0.083 106 43 167 255
|
||||
mappingkey 0.166 173 54 110 255
|
||||
mappingkey 0.332 253 64 40 255
|
||||
mappingkey 0.415 234 117 6 255
|
||||
mappingkey 0.498 230 169 16 255
|
||||
mappingkey 0.664 236 236 159 255
|
||||
mappingkey 0.830 251 251 235 255
|
||||
mappingkey 0.915 255 255 255 255
|
||||
mappingkey 1.0 255 255 255 255
|
||||
@@ -0,0 +1,52 @@
|
||||
local transforms = asset.require('./transforms')
|
||||
|
||||
local data = asset.syncedResource({
|
||||
Type = "HttpSynchronization",
|
||||
Name = "Ganymede Plane Simulations",
|
||||
Identifier = "juice_ganymede_fieldlines",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
|
||||
local magnetosphere = {
|
||||
Identifier = "GanymedeMagnetosphere",
|
||||
Parent = transforms.GPHIO.Identifier,
|
||||
Renderable = {
|
||||
Type = "RenderableFieldlinesSequence",
|
||||
SourceFolder = data,
|
||||
LineWidth = 1.0,
|
||||
InputFileType = "Json",
|
||||
ColorMethod = "By Quantity",
|
||||
ColorQuantity = 0,
|
||||
ColorTableRanges = { { 62.556353386366766, 1665.5534182835445 } },
|
||||
ColorTablePaths = { asset.localResource("CMR-illuminance2.txt") },
|
||||
Color = { 1.0, 0.725, 0.75, 0.8 }
|
||||
},
|
||||
GUI = {
|
||||
Name = "Ganymede Magnetosphere",
|
||||
Path = "/Solar System/Missions/Juice/Fieldlines",
|
||||
Description = "Fieldlines showing a simulation of the magnetic fields around Ganymede"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.addSceneGraphNode(magnetosphere)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.removeSceneGraphNode(magnetosphere)
|
||||
end)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = "Static fieldline representation of Ganymede's magnetic field",
|
||||
Version = "1.0",
|
||||
Description = [[
|
||||
Showing a single timestep of the magnetic fieldlines around Ganymede in the GPHIO
|
||||
coordinate system
|
||||
]],
|
||||
Author = "OpenSpace Team",
|
||||
URL = "http://openspaceproject.com",
|
||||
License = "MIT license"
|
||||
}
|
||||
9
data/assets/scene/solarsystem/missions/juice/fov.asset
Normal file
9
data/assets/scene/solarsystem/missions/juice/fov.asset
Normal file
@@ -0,0 +1,9 @@
|
||||
asset.require('./fov/gala')
|
||||
asset.require('./fov/janus')
|
||||
asset.require('./fov/jmc')
|
||||
asset.require('./fov/majis')
|
||||
asset.require('./fov/navcam')
|
||||
asset.require('./fov/rime')
|
||||
asset.require('./fov/startracker')
|
||||
asset.require('./fov/swi')
|
||||
asset.require('./fov/uvs')
|
||||
59
data/assets/scene/solarsystem/missions/juice/fov/gala.asset
Normal file
59
data/assets/scene/solarsystem/missions/juice/fov/gala.asset
Normal file
@@ -0,0 +1,59 @@
|
||||
local transforms = asset.require('../transforms')
|
||||
local kernels = asset.require('../kernels')
|
||||
|
||||
|
||||
local Gala = {
|
||||
Identifier = "JuiceGala",
|
||||
Parent = transforms.Juice.Identifier,
|
||||
TimeFrame = {
|
||||
Type = "TimeFrameInterval",
|
||||
Start = "2031 JUL 02 00:00:00.000",
|
||||
End = "2035 OCT 05 00:00:00.000"
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "JUICE",
|
||||
Frame = "JUICE_GALA_RXT",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "JUICE_GALA_RXT",
|
||||
Method = "CIRCLE",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
AlwaysDrawFov = true,
|
||||
PotentialTargets = { "JUPITER", "CALLISTO", "EUROPA", "GANYMEDE", "IO" },
|
||||
FrameConversions = {}
|
||||
},
|
||||
GUI = {
|
||||
Name = "Gala FOV",
|
||||
Path = "/Solar System/Missions/Juice/Instruments",
|
||||
Description = "The field-of-view for the Ganymede Laster Altimeter (GALA) instrument."
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
asset.onInitialize(function()
|
||||
-- Circle shapes are currently not supported
|
||||
openspace.addSceneGraphNode(Gala)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.removeSceneGraphNode(Gala)
|
||||
end)
|
||||
|
||||
asset.export(Gala)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = "GALA",
|
||||
Version = "1.0",
|
||||
Description = [[
|
||||
Shows the field-view for the Ganymede Laser Altimeter (GALA) instrument onboard Juice,
|
||||
measuring a 2.5D heightfield of Ganymede and Europa. See
|
||||
https://elib.dlr.de/94264/1/JUICE%20GALA%20-%20Design%20Overview%20v04.pdf for more
|
||||
information.
|
||||
]],
|
||||
Author = "OpenSpace Team",
|
||||
URL = "http://openspaceproject.com",
|
||||
License = "MIT license"
|
||||
}
|
||||
63
data/assets/scene/solarsystem/missions/juice/fov/janus.asset
Normal file
63
data/assets/scene/solarsystem/missions/juice/fov/janus.asset
Normal file
@@ -0,0 +1,63 @@
|
||||
local transforms = asset.require('../transforms')
|
||||
local kernels = asset.require('../kernels')
|
||||
|
||||
|
||||
local Janus = {
|
||||
Identifier = "JuiceJanus",
|
||||
Parent = transforms.Juice.Identifier,
|
||||
TimeFrame = {
|
||||
Type = "TimeFrameInterval",
|
||||
Start = "2031 JUL 02 00:00:00.000",
|
||||
End = "2035 OCT 05 00:00:00.000"
|
||||
},
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
Position = { 0.44, 0.33, 0.9 }
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "JUICE",
|
||||
Frame = "JUICE_JANUS",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "JUICE_JANUS",
|
||||
Method = "RECTANGLE",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
AlwaysDrawFov = true,
|
||||
PotentialTargets = { "JUPITER", "CALLISTO", "EUROPA", "GANYMEDE", "IO" },
|
||||
FrameConversions = {}
|
||||
},
|
||||
GUI = {
|
||||
Name = "Janus FOV",
|
||||
Path = "/Solar System/Missions/Juice/Instruments",
|
||||
Description = "The field-of-view for the JANUS instrument onboard Juice"
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.addSceneGraphNode(Janus)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.removeSceneGraphNode(Janus)
|
||||
end)
|
||||
|
||||
asset.export(Janus)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = "Janus",
|
||||
Version = "1.0",
|
||||
Description = [[
|
||||
Shows the field-view for the Jovis Amorum ac Natorum Undique Scrutator (JANUS)
|
||||
instrument onboard Juice, which is the camera operating in visible wavelengths. See
|
||||
https://elib.dlr.de/90175/1/2094.pdf for more information.
|
||||
]],
|
||||
Author = "OpenSpace Team",
|
||||
URL = "http://openspaceproject.com",
|
||||
License = "MIT license"
|
||||
}
|
||||
90
data/assets/scene/solarsystem/missions/juice/fov/jmc.asset
Normal file
90
data/assets/scene/solarsystem/missions/juice/fov/jmc.asset
Normal file
@@ -0,0 +1,90 @@
|
||||
local transforms = asset.require('../transforms')
|
||||
local kernels = asset.require('../kernels')
|
||||
|
||||
|
||||
local JMC1 = {
|
||||
Identifier = "JuiceJMC1",
|
||||
Parent = transforms.Juice.Identifier,
|
||||
TimeFrame = {
|
||||
Type = "TimeFrameInterval",
|
||||
Start = "2031 JUL 02 00:00:00.000",
|
||||
End = "2035 OCT 05 00:00:00.000"
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "JUICE",
|
||||
Frame = "JUICE_JMC-1",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "JUICE_JMC-1",
|
||||
Method = "RECTANGLE",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
AlwaysDrawFov = true,
|
||||
PotentialTargets = { "JUPITER", "CALLISTO", "EUROPA", "GANYMEDE", "IO" },
|
||||
FrameConversions = {}
|
||||
},
|
||||
GUI = {
|
||||
Name = "JUICE_JMC-1 FOV",
|
||||
Path = "/Solar System/Missions/Juice/Instruments",
|
||||
Description = "The field-of-views for the Juice Monitoring cameras"
|
||||
}
|
||||
}
|
||||
|
||||
local JMC2 = {
|
||||
Identifier = "JuiceJMC2",
|
||||
Parent = transforms.Juice.Identifier,
|
||||
TimeFrame = {
|
||||
Type = "TimeFrameInterval",
|
||||
Start = "2031 JUL 02 00:00:00.000",
|
||||
End = "2035 OCT 05 00:00:00.000"
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "JUICE",
|
||||
Frame = "JUICE_JMC-2",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "JUICE_JMC-2",
|
||||
Method = "RECTANGLE",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
AlwaysDrawFov = true,
|
||||
PotentialTargets = { "JUPITER", "CALLISTO", "EUROPA", "GANYMEDE", "IO" },
|
||||
FrameConversions = {}
|
||||
},
|
||||
GUI = {
|
||||
Name = "JUICE_JMC-2 FOV",
|
||||
Path = "/Solar System/Missions/Juice/Instruments",
|
||||
Description = "The field-of-views for the Juice Monitoring cameras"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.addSceneGraphNode(JMC1)
|
||||
openspace.addSceneGraphNode(JMC2)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.removeSceneGraphNode(JMC2)
|
||||
openspace.removeSceneGraphNode(JMC1)
|
||||
end)
|
||||
|
||||
asset.export(JMC1)
|
||||
asset.export(JMC2)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = "JMC",
|
||||
Version = "1.0",
|
||||
Description = [[
|
||||
Shows the field-view for the Juice Monitoring Cameras (JMC) onboard Juice, which
|
||||
provide status information about the deployment of various Juice systems, like the
|
||||
solar array, antenna, etc. See https://microcameras.space/project/juice/ for more
|
||||
information.
|
||||
]],
|
||||
Author = "OpenSpace Team",
|
||||
URL = "http://openspaceproject.com",
|
||||
License = "MIT license"
|
||||
}
|
||||
256
data/assets/scene/solarsystem/missions/juice/fov/majis.asset
Normal file
256
data/assets/scene/solarsystem/missions/juice/fov/majis.asset
Normal file
@@ -0,0 +1,256 @@
|
||||
local transforms = asset.require('../transforms')
|
||||
local kernels = asset.require('../kernels')
|
||||
|
||||
|
||||
local MajisVisnir = {
|
||||
Identifier = "JuiceMajisVisnir",
|
||||
Parent = transforms.Juice.Identifier,
|
||||
TimeFrame = {
|
||||
Type = "TimeFrameInterval",
|
||||
Start = "2031 JUL 02 00:00:00.000",
|
||||
End = "2035 OCT 05 00:00:00.000"
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "JUICE",
|
||||
Frame = "JUICE_MAJIS_VISNIR",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "JUICE_MAJIS_VISNIR",
|
||||
Method = "RECTANGLE",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
AlwaysDrawFov = true,
|
||||
PotentialTargets = { "JUPITER", "CALLISTO", "EUROPA", "GANYMEDE", "IO" },
|
||||
FrameConversions = {}
|
||||
},
|
||||
GUI = {
|
||||
Name = "Majis Visnir FOV",
|
||||
Path = "/Solar System/Missions/Juice/Instruments",
|
||||
Description = [[
|
||||
The field-of-view for the Moon and Jupiter Imaging Spectrometer measuring in the
|
||||
visible and near-infrared spectra (0.4-1.9 um and 1.5-5.7 um).
|
||||
]]
|
||||
}
|
||||
}
|
||||
|
||||
local MajisVisnirB2 = {
|
||||
Identifier = "JuiceMajisVisnirB2",
|
||||
Parent = transforms.Juice.Identifier,
|
||||
TimeFrame = {
|
||||
Type = "TimeFrameInterval",
|
||||
Start = "2031 JUL 02 00:00:00.000",
|
||||
End = "2035 OCT 05 00:00:00.000"
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "JUICE",
|
||||
Frame = "JUICE_MAJIS_VISNIR_B2",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "JUICE_MAJIS_VISNIR_B2",
|
||||
Method = "RECTANGLE",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
AlwaysDrawFov = true,
|
||||
PotentialTargets = { "JUPITER", "CALLISTO", "EUROPA", "GANYMEDE", "IO" },
|
||||
FrameConversions = {}
|
||||
},
|
||||
GUI = {
|
||||
Name = "Majis Visnir B2 FOV",
|
||||
Path = "/Solar System/Missions/Juice/Instruments"
|
||||
}
|
||||
}
|
||||
|
||||
local MajisVisnirB4 = {
|
||||
Identifier = "JuiceMajisVisnirB4",
|
||||
Parent = transforms.Juice.Identifier,
|
||||
TimeFrame = {
|
||||
Type = "TimeFrameInterval",
|
||||
Start = "2031 JUL 02 00:00:00.000",
|
||||
End = "2035 OCT 05 00:00:00.000"
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "JUICE",
|
||||
Frame = "JUICE_MAJIS_VISNIR_B4",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "JUICE_MAJIS_VISNIR_B4",
|
||||
Method = "RECTANGLE",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
AlwaysDrawFov = true,
|
||||
PotentialTargets = { "JUPITER", "CALLISTO", "EUROPA", "GANYMEDE", "IO" },
|
||||
FrameConversions = {}
|
||||
},
|
||||
GUI = {
|
||||
Name = "Majis Visnir B4 FOV",
|
||||
Path = "/Solar System/Missions/Juice/Instruments"
|
||||
}
|
||||
}
|
||||
|
||||
local MajisIr = {
|
||||
Identifier = "JuiceMajisIr",
|
||||
Parent = transforms.Juice.Identifier,
|
||||
TimeFrame = {
|
||||
Type = "TimeFrameInterval",
|
||||
Start = "2031 JUL 02 00:00:00.000",
|
||||
End = "2035 OCT 05 00:00:00.000"
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "JUICE",
|
||||
Frame = "JUICE_MAJIS_IR",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "JUICE_MAJIS_IR",
|
||||
Method = "RECTANGLE",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
AlwaysDrawFov = true,
|
||||
PotentialTargets = { "JUPITER", "CALLISTO", "EUROPA", "GANYMEDE", "IO" },
|
||||
FrameConversions = {}
|
||||
},
|
||||
GUI = {
|
||||
Name = "Majis IR FOV",
|
||||
Path = "/Solar System/Missions/Juice/Instruments"
|
||||
}
|
||||
}
|
||||
|
||||
local MajisIrB2 = {
|
||||
Identifier = "JuiceMajisIrB2",
|
||||
Parent = transforms.Juice.Identifier,
|
||||
TimeFrame = {
|
||||
Type = "TimeFrameInterval",
|
||||
Start = "2031 JUL 02 00:00:00.000",
|
||||
End = "2035 OCT 05 00:00:00.000"
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "JUICE",
|
||||
Frame = "JUICE_MAJIS_IR_B2",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "JUICE_MAJIS_IR_B2",
|
||||
Method = "RECTANGLE",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
AlwaysDrawFov = true,
|
||||
PotentialTargets = { "JUPITER", "CALLISTO", "EUROPA", "GANYMEDE", "IO" },
|
||||
FrameConversions = {}
|
||||
},
|
||||
GUI = {
|
||||
Name = "Majis IR B2 FOV",
|
||||
Path = "/Solar System/Missions/Juice/Instruments"
|
||||
}
|
||||
}
|
||||
|
||||
local MajisIrB4 = {
|
||||
Identifier = "JuiceMajisIrB4",
|
||||
Parent = transforms.Juice.Identifier,
|
||||
TimeFrame = {
|
||||
Type = "TimeFrameInterval",
|
||||
Start = "2031 JUL 02 00:00:00.000",
|
||||
End = "2035 OCT 05 00:00:00.000"
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "JUICE",
|
||||
Frame = "JUICE_MAJIS_IR_B4",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "JUICE_MAJIS_IR_B4",
|
||||
Method = "RECTANGLE",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
AlwaysDrawFov = true,
|
||||
PotentialTargets = { "JUPITER", "CALLISTO", "EUROPA", "GANYMEDE", "IO" },
|
||||
FrameConversions = {}
|
||||
},
|
||||
GUI = {
|
||||
Name = "Majis IR B4 FOV",
|
||||
Path = "/Solar System/Missions/Juice/Instruments"
|
||||
}
|
||||
}
|
||||
|
||||
local Majis = {
|
||||
Identifier = "JuiceMajis",
|
||||
Parent = transforms.Juice.Identifier,
|
||||
TimeFrame = {
|
||||
Type = "TimeFrameInterval",
|
||||
Start = "2031 JUL 02 00:00:00.000",
|
||||
End = "2035 OCT 05 00:00:00.000"
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "JUICE",
|
||||
Frame = "JUICE_MAJIS",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "JUICE_MAJIS",
|
||||
Method = "RECTANGLE",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
AlwaysDrawFov = true,
|
||||
PotentialTargets = { "JUPITER", "CALLISTO", "EUROPA", "GANYMEDE", "IO" },
|
||||
FrameConversions = {}
|
||||
},
|
||||
GUI = {
|
||||
Name = "Majis FOV",
|
||||
Path = "/Solar System/Missions/Juice/Instruments",
|
||||
Description = [[
|
||||
The field-of-view for the Moon and Jupiter Imaging Spectrometer measuring in the
|
||||
visible and near-infrared spectra (0.4-1.9 um and 1.5-5.7 um).
|
||||
]]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
asset.onInitialize(function()
|
||||
-- We are only adding the main version of this instrument as a scene graph node. Other
|
||||
-- versions are defined in the available SPICE kernels, but not a lot of information is
|
||||
-- accessible about them. We don't want to remove them entirely as they might prove
|
||||
-- useful to some users though
|
||||
|
||||
-- openspace.addSceneGraphNode(MajisVisnir)
|
||||
-- openspace.addSceneGraphNode(MajisVisnirB2)
|
||||
-- openspace.addSceneGraphNode(MajisVisnirB4)
|
||||
-- openspace.addSceneGraphNode(MajisIr)
|
||||
-- openspace.addSceneGraphNode(MajisIrB2)
|
||||
-- openspace.addSceneGraphNode(MajisIrB4)
|
||||
openspace.addSceneGraphNode(Majis)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.removeSceneGraphNode(Majis)
|
||||
-- openspace.removeSceneGraphNode(MajisIrB4)
|
||||
-- openspace.removeSceneGraphNode(MajisIrB2)
|
||||
-- openspace.removeSceneGraphNode(MajisIr)
|
||||
-- openspace.removeSceneGraphNode(MajisVisnirB4)
|
||||
-- openspace.removeSceneGraphNode(MajisVisnirB2)
|
||||
-- openspace.removeSceneGraphNode(MajisVisnir)
|
||||
end)
|
||||
|
||||
-- asset.export(MajisVisnir)
|
||||
-- asset.export(MajisVisnirB2)
|
||||
-- asset.export(MajisVisnirB4)
|
||||
-- asset.export(MajisIr)
|
||||
-- asset.export(MajisIrB2)
|
||||
-- asset.export(MajisIrB4)
|
||||
asset.export(Majis)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = "Majis",
|
||||
Version = "1.0",
|
||||
Description = [[
|
||||
Shows the field-view for the Moon and Jupiter Imaging Spectrometer (MAJIS) onboard
|
||||
Juice, which is going to take spectroscopic measurements of the Jovian moons and
|
||||
Jupiter. See https://www.hou.usra.edu/meetings/lpsc2014/pdf/2493.pdf for more
|
||||
information.
|
||||
]],
|
||||
Author = "OpenSpace Team",
|
||||
URL = "http://openspaceproject.com",
|
||||
License = "MIT license"
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
local transforms = asset.require('../transforms')
|
||||
local kernels = asset.require('../kernels')
|
||||
|
||||
|
||||
local NavCam = {
|
||||
Identifier = "JuiceNavCam",
|
||||
Parent = transforms.Juice.Identifier,
|
||||
TimeFrame = {
|
||||
Type = "TimeFrameInterval",
|
||||
Start = "2031 JUL 02 00:00:00.000",
|
||||
End = "2035 OCT 05 00:00:00.000"
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "JUICE",
|
||||
Frame = "JUICE_NAVCAM-1",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "JUICE_NAVCAM-1",
|
||||
Method = "RECTANGLE",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
AlwaysDrawFov = true,
|
||||
PotentialTargets = { "JUPITER", "CALLISTO", "EUROPA", "GANYMEDE", "IO" },
|
||||
FrameConversions = {}
|
||||
},
|
||||
GUI = {
|
||||
Name = "NavCam FOV",
|
||||
Path = "/Solar System/Missions/Juice/Instruments",
|
||||
Description = "The camera onboard Juice used to navigate by the stars"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.addSceneGraphNode(NavCam)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.removeSceneGraphNode(NavCam)
|
||||
end)
|
||||
|
||||
asset.export(NavCam)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = "NavCam",
|
||||
Version = "1.0",
|
||||
Description = [[
|
||||
Shows the field-view for the navigational camera (NavCam) onboard Juice, which is used
|
||||
to measure the location of Juice. See
|
||||
https://www.spiedigitallibrary.org/proceedings/Download?urlId=10.1117%2F12.2536086
|
||||
for more information.
|
||||
]],
|
||||
Author = "OpenSpace Team",
|
||||
URL = "http://openspaceproject.com",
|
||||
License = "MIT license"
|
||||
}
|
||||
93
data/assets/scene/solarsystem/missions/juice/fov/rime.asset
Normal file
93
data/assets/scene/solarsystem/missions/juice/fov/rime.asset
Normal file
@@ -0,0 +1,93 @@
|
||||
local transforms = asset.require('../transforms')
|
||||
local kernels = asset.require('../kernels')
|
||||
|
||||
|
||||
-- Circle shapes are not support
|
||||
local RimeBase = {
|
||||
Identifier = "JuiceRimeBase",
|
||||
Parent = transforms.Juice.Identifier,
|
||||
TimeFrame = {
|
||||
Type = "TimeFrameInterval",
|
||||
Start = "2031 JUL 02 00:00:00.000",
|
||||
End = "2035 OCT 05 00:00:00.000"
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "JUICE",
|
||||
Frame = "JUICE_RIME_BASE",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "JUICE_RIME_BASE",
|
||||
Method = "CIRCLE",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
AlwaysDrawFov = true,
|
||||
PotentialTargets = { "JUPITER", "CALLISTO", "EUROPA", "GANYMEDE", "IO" },
|
||||
FrameConversions = {}
|
||||
},
|
||||
GUI = {
|
||||
Name = "Rime Base FOV",
|
||||
Path = "/Solar System/Missions/Juice/Instruments",
|
||||
Description = "The location of the base for the RIME instrument onboard Juice."
|
||||
}
|
||||
}
|
||||
|
||||
-- Circle shapes are not supported
|
||||
local Rime = {
|
||||
Identifier = "JuiceRime",
|
||||
Parent = transforms.Juice.Identifier,
|
||||
TimeFrame = {
|
||||
Type = "TimeFrameInterval",
|
||||
Start = "2031 JUL 02 00:00:00.000",
|
||||
End = "2035 OCT 05 00:00:00.000"
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "JUICE",
|
||||
Frame = "JUICE_RIME",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "JUICE_RIME",
|
||||
Method = "CIRCLE",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
AlwaysDrawFov = true,
|
||||
PotentialTargets = { "JUPITER", "CALLISTO", "EUROPA", "GANYMEDE", "IO" },
|
||||
FrameConversions = {}
|
||||
},
|
||||
GUI = {
|
||||
Name = "Rime FOV",
|
||||
Path = "/Solar System/Missions/Juice/Instruments",
|
||||
Description = "The location of the RIME instrument onboard Juice."
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.addSceneGraphNode(Rime)
|
||||
openspace.addSceneGraphNode(RimeBase)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.removeSceneGraphNode(RimeBase)
|
||||
openspace.removeSceneGraphNode(Rime)
|
||||
end)
|
||||
|
||||
asset.export(Rime)
|
||||
asset.export(RimeBase)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = "RIME",
|
||||
Version = "1.0",
|
||||
Description = [[
|
||||
Shows the field-view for the Radar for Icy Moons Exploration (RIME) onboard Juice,
|
||||
which is a ground-penetrating radar meant to measure the subsurface structure of the
|
||||
ice surrounding the icy Galilean moons of up to 9 km. See
|
||||
https://www.spacetech-i.com/products/mechanisms/juice-rime-antenna for more
|
||||
information.
|
||||
]],
|
||||
Author = "OpenSpace Team",
|
||||
URL = "http://openspaceproject.com",
|
||||
License = "MIT license"
|
||||
}
|
||||
@@ -0,0 +1,121 @@
|
||||
local transforms = asset.require('../transforms')
|
||||
local kernels = asset.require('../kernels')
|
||||
|
||||
|
||||
local StarOh1 = {
|
||||
Identifier = "JuiceStarOH1",
|
||||
Parent = transforms.Juice.Identifier,
|
||||
TimeFrame = {
|
||||
Type = "TimeFrameInterval",
|
||||
Start = "2031 JUL 02 00:00:00.000",
|
||||
End = "2035 OCT 05 00:00:00.000"
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "JUICE",
|
||||
Frame = "JUICE_STR-OH1",
|
||||
RGB = { 0.0, 0.0, 0.0 },
|
||||
Instrument = {
|
||||
Name = "JUICE_STR-OH1",
|
||||
Method = "RECTANGLE",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
AlwaysDrawFov = true,
|
||||
PotentialTargets = { "JUPITER", "CALLISTO", "EUROPA", "GANYMEDE", "IO" },
|
||||
FrameConversions = {}
|
||||
},
|
||||
GUI = {
|
||||
Name = "Star Tracker OH1 FOV",
|
||||
Path = "/Solar System/Missions/Juice/Instruments",
|
||||
Description = "The first head of the Hydra star tracking system"
|
||||
}
|
||||
}
|
||||
|
||||
local StarOh2 = {
|
||||
Identifier = "JuiceStarOH2",
|
||||
Parent = transforms.Juice.Identifier,
|
||||
TimeFrame = {
|
||||
Type = "TimeFrameInterval",
|
||||
Start = "2031 JUL 02 00:00:00.000",
|
||||
End = "2035 OCT 05 00:00:00.000"
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "JUICE",
|
||||
Frame = "JUICE_STR-OH2",
|
||||
RGB = { 0.0, 0.0, 0.0 },
|
||||
Instrument = {
|
||||
Name = "JUICE_STR-OH2",
|
||||
Method = "RECTANGLE",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
AlwaysDrawFov = true,
|
||||
PotentialTargets = { "JUPITER", "CALLISTO", "EUROPA", "GANYMEDE", "IO" },
|
||||
FrameConversions = {}
|
||||
},
|
||||
GUI = {
|
||||
Name = "Star Tracker OH2 FOV",
|
||||
Path = "/Solar System/Missions/Juice/Instruments",
|
||||
Description = "The second head of the Hydra star tracking system"
|
||||
}
|
||||
}
|
||||
|
||||
local StarOh3 = {
|
||||
Identifier = "JuiceStarOH3",
|
||||
Parent = transforms.Juice.Identifier,
|
||||
TimeFrame = {
|
||||
Type = "TimeFrameInterval",
|
||||
Start = "2031 JUL 02 00:00:00.000",
|
||||
End = "2035 OCT 05 00:00:00.000"
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "JUICE",
|
||||
Frame = "JUICE_STR-OH3",
|
||||
RGB = { 0.0, 0.0, 0.0 },
|
||||
Instrument = {
|
||||
Name = "JUICE_STR-OH3",
|
||||
Method = "RECTANGLE",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
AlwaysDrawFov = true,
|
||||
PotentialTargets = { "JUPITER", "CALLISTO", "EUROPA", "GANYMEDE", "IO" },
|
||||
FrameConversions = {}
|
||||
},
|
||||
GUI = {
|
||||
Name = "Star Tracker OH3 FOV",
|
||||
Path = "/Solar System/Missions/Juice/Instruments",
|
||||
Description = "The third head of the Hydra star tracking system"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.addSceneGraphNode(StarOh1)
|
||||
openspace.addSceneGraphNode(StarOh2)
|
||||
openspace.addSceneGraphNode(StarOh3)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.removeSceneGraphNode(StarOh3)
|
||||
openspace.removeSceneGraphNode(StarOh2)
|
||||
openspace.removeSceneGraphNode(StarOh1)
|
||||
end)
|
||||
|
||||
asset.export(StarOh1)
|
||||
asset.export(StarOh2)
|
||||
asset.export(StarOh3)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = "Star Tracker",
|
||||
Version = "1.0",
|
||||
Description = [[
|
||||
Shows the field-view for the three headed "Hydra" star trackers onboard Juice, which
|
||||
is measuring the location of stars and comparing them to their known locations in
|
||||
order to determine the position of Juice relative to the celestial sphere.
|
||||
]],
|
||||
Author = "OpenSpace Team",
|
||||
URL = "http://openspaceproject.com",
|
||||
License = "MIT license"
|
||||
}
|
||||
142
data/assets/scene/solarsystem/missions/juice/fov/swi.asset
Normal file
142
data/assets/scene/solarsystem/missions/juice/fov/swi.asset
Normal file
@@ -0,0 +1,142 @@
|
||||
local transforms = asset.require('../transforms')
|
||||
local kernels = asset.require('../kernels')
|
||||
|
||||
|
||||
-- Circle shapes are not support
|
||||
local SwiCh2 = {
|
||||
Identifier = "JuiceSwiCH2",
|
||||
Parent = transforms.Juice.Identifier,
|
||||
TimeFrame = {
|
||||
Type = "TimeFrameInterval",
|
||||
Start = "2031 JUL 02 00:00:00.000",
|
||||
End = "2035 OCT 05 00:00:00.000"
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "JUICE",
|
||||
Frame = "JUICE_SWI_CH2",
|
||||
RGB = { 0.0, 0.0, 0.0 },
|
||||
Instrument = {
|
||||
Name = "JUICE_SWI_CH2",
|
||||
Method = "CIRCLE",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
AlwaysDrawFov = true,
|
||||
PotentialTargets = { "JUPITER", "CALLISTO", "EUROPA", "GANYMEDE", "IO" },
|
||||
FrameConversions = {}
|
||||
},
|
||||
GUI = {
|
||||
Name = "SWI CH2 FOV",
|
||||
Path = "/Solar System/Missions/Juice/Instruments"
|
||||
}
|
||||
}
|
||||
|
||||
local SwiFull = {
|
||||
Identifier = "JuiceSwiFull",
|
||||
Parent = transforms.Juice.Identifier,
|
||||
TimeFrame = {
|
||||
Type = "TimeFrameInterval",
|
||||
Start = "2031 JUL 02 00:00:00.000",
|
||||
End = "2035 OCT 05 00:00:00.000"
|
||||
},
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
-- These translations are eyeballed based on the existing model
|
||||
Position = { 0.465, -0.1, 0.95 }
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "JUICE",
|
||||
Frame = "JUICE_SWI_FULL",
|
||||
RGB = { 0.0, 0.0, 0.0 },
|
||||
Instrument = {
|
||||
Name = "JUICE_SWI_FULL",
|
||||
Method = "RECTANGLE",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
AlwaysDrawFov = true,
|
||||
PotentialTargets = { "JUPITER", "CALLISTO", "EUROPA", "GANYMEDE", "IO" },
|
||||
FrameConversions = {}
|
||||
},
|
||||
GUI = {
|
||||
Name = "SWI Full FOV",
|
||||
Path = "/Solar System/Missions/Juice/Instruments",
|
||||
Description = "The field-of-view for the full SWI instrument onboard Juice."
|
||||
}
|
||||
}
|
||||
|
||||
-- This frame throws an error as the JUICE_SWI_FULL_GCO500 is not a recognized frame in
|
||||
-- the kernel set version 5
|
||||
local SwiFullGCO500 = {
|
||||
Identifier = "JuiceSwiFullGCO500",
|
||||
Parent = transforms.Juice.Identifier,
|
||||
TimeFrame = {
|
||||
Type = "TimeFrameInterval",
|
||||
Start = "2031 JUL 02 00:00:00.000",
|
||||
End = "2035 OCT 05 00:00:00.000"
|
||||
},
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
-- These translations are eyeballed based on the existing model
|
||||
Position = { 0.465, -0.1, 0.95 }
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "JUICE",
|
||||
Frame = "JUICE_SWI_FULL_GCO500",
|
||||
RGB = { 0.0, 0.0, 0.0 },
|
||||
Instrument = {
|
||||
Name = "JUICE_SWI_FULL_GCO500",
|
||||
Method = "RECTANGLE",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
AlwaysDrawFov = true,
|
||||
PotentialTargets = { "JUPITER", "CALLISTO", "EUROPA", "GANYMEDE", "IO" },
|
||||
FrameConversions = {}
|
||||
},
|
||||
GUI = {
|
||||
Name = "SWI Full GCO500 FOV",
|
||||
Path = "/Solar System/Missions/Juice/Instruments"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
asset.onInitialize(function()
|
||||
-- We are only adding the main version of this instrument as a scene graph node. Other
|
||||
-- versions are defined in the available SPICE kernels, but not a lot of information is
|
||||
-- accessible about them. We don't want to remove them entirely as they might prove
|
||||
-- useful to some users though
|
||||
|
||||
-- openspace.addSceneGraphNode(SwiCh2)
|
||||
-- openspace.addSceneGraphNode(SwiFullGCO500)
|
||||
openspace.addSceneGraphNode(SwiFull)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.removeSceneGraphNode(SwiFull)
|
||||
-- openspace.removeSceneGraphNode(SwiFullGCO500)
|
||||
-- openspace.removeSceneGraphNode(SwiCh2)
|
||||
end)
|
||||
|
||||
-- asset.export(SwiCh2)
|
||||
asset.export(SwiFull)
|
||||
-- asset.export(SwiFullGCO500)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = "SWI",
|
||||
Version = "1.0",
|
||||
Description = [[
|
||||
Shows the field-view for the Submillimetre Wave Instrument (SWI), which is measuring
|
||||
the chemistry, meteorology, and structure of Jupiters middle atmosphere as well as the
|
||||
habitability of the Galilean moons. See
|
||||
https://www.mps.mpg.de/planetary-science/juice-swi for more information.
|
||||
]],
|
||||
Author = "OpenSpace Team",
|
||||
URL = "http://openspaceproject.com",
|
||||
License = "MIT license"
|
||||
}
|
||||
58
data/assets/scene/solarsystem/missions/juice/fov/uvs.asset
Normal file
58
data/assets/scene/solarsystem/missions/juice/fov/uvs.asset
Normal file
@@ -0,0 +1,58 @@
|
||||
local transforms = asset.require('../transforms')
|
||||
local kernels = asset.require('../kernels')
|
||||
|
||||
|
||||
local UVS = {
|
||||
Identifier = "JuiceUVS",
|
||||
Parent = transforms.Juice.Identifier,
|
||||
TimeFrame = {
|
||||
Type = "TimeFrameInterval",
|
||||
Start = "2031 JUL 02 00:00:00.000",
|
||||
End = "2035 OCT 05 00:00:00.000"
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableFov",
|
||||
Body = "JUICE",
|
||||
Frame = "JUICE_UVS",
|
||||
RGB = { 0.8, 0.7, 0.7 },
|
||||
Instrument = {
|
||||
Name = "JUICE_UVS",
|
||||
Method = "POLYGON",
|
||||
Aberration = "NONE"
|
||||
},
|
||||
AlwaysDrawFov = true,
|
||||
PotentialTargets = { "JUPITER", "CALLISTO", "EUROPA", "GANYMEDE", "IO" },
|
||||
FrameConversions = {}
|
||||
},
|
||||
GUI = {
|
||||
Name = "UVS FOV",
|
||||
Path = "/Solar System/Missions/Juice/Instruments",
|
||||
Description = "The field-of-view for the UVS instrument onboard Juice"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.addSceneGraphNode(UVS)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.removeSceneGraphNode(UVS)
|
||||
end)
|
||||
|
||||
asset.export(UVS)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = "UVS",
|
||||
Version = "1.0",
|
||||
Description = [[
|
||||
Shows the field-view for the Ultraviolet Spectograph (UVS), which is measuring the
|
||||
composition, chemistry, structure, and variability of Europa's atmopshere. See
|
||||
https://www.lpi.usra.edu/opag/meetings/aug2015/presentations/day-1/8_b_retherford.pdf
|
||||
for more information.
|
||||
]],
|
||||
Author = "OpenSpace Team",
|
||||
URL = "http://openspaceproject.com",
|
||||
License = "MIT license"
|
||||
}
|
||||
84
data/assets/scene/solarsystem/missions/juice/kernels.asset
Normal file
84
data/assets/scene/solarsystem/missions/juice/kernels.asset
Normal file
@@ -0,0 +1,84 @@
|
||||
local kernels = asset.syncedResource({
|
||||
Name = "JUICE Kernels",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "juice_kernels",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
-- From the crema 5.0b23_1 meta kernel
|
||||
-- + GPHIO from Ronan
|
||||
local Kernels = {
|
||||
kernels .. "juice_sc_sat_crema_5_0b23_1_default_f20160326_v01.bc",
|
||||
kernels .. "juice_sc_sat_crema_5_0b23_1_comms_f20160326_v01.bc",
|
||||
kernels .. "juice_sc_sat_crema_5_0b23_1_conjctn_f20160326_v01.bc",
|
||||
kernels .. "juice_sc_sat_crema_5_0b23_1_flybys_f20160326_v01.bc",
|
||||
kernels .. "juice_lpbooms_f20160326_v01.bc",
|
||||
kernels .. "juice_magboom_f20160326_v03.bc",
|
||||
kernels .. "juice_mga_zero_f20160326_v02.bc",
|
||||
kernels .. "juice_majis_scan_zero_f20160326_v02.bc",
|
||||
kernels .. "juice_swi_scan_zero_f20160326_v02.bc",
|
||||
kernels .. "juice_sa_crema_5_0b23_1_default_f20160326_v01.bc",
|
||||
|
||||
kernels .. "juice_v26.tf",
|
||||
kernels .. "juice_sci_v10.tf",
|
||||
kernels .. "juice_ops_v07.tf",
|
||||
kernels .. "juice_dsk_surfaces_v05.tf",
|
||||
kernels .. "juice_roi_v02.tf",
|
||||
kernels .. "gphio.tf",
|
||||
kernels .. "rssd0002.tf",
|
||||
kernels .. "earth_topo_050714.tf",
|
||||
kernels .. "earthfixediau.tf",
|
||||
kernels .. "estrack_v04.tf",
|
||||
|
||||
kernels .. "juice_gala_v03.ti",
|
||||
kernels .. "juice_janus_v06.ti",
|
||||
kernels .. "juice_jmc_v02.ti",
|
||||
kernels .. "juice_majis_v05.ti",
|
||||
kernels .. "juice_navcam_v01.ti",
|
||||
kernels .. "juice_pep_v10.ti",
|
||||
kernels .. "juice_radem_v00.ti",
|
||||
kernels .. "juice_rime_v04.ti",
|
||||
kernels .. "juice_rpwi_v02.ti",
|
||||
kernels .. "juice_str_v01.ti",
|
||||
kernels .. "juice_swi_v07.ti",
|
||||
kernels .. "juice_uvs_v03.ti",
|
||||
kernels .. "juice_aux_v01.ti",
|
||||
|
||||
kernels .. "de-403-masses.tpc",
|
||||
kernels .. "gm_de431.tpc",
|
||||
kernels .. "juice_jup006.tpc",
|
||||
kernels .. "juice_roi_v01.tpc",
|
||||
|
||||
kernels .. "juice_fict_20160326_v03.tsc",
|
||||
kernels .. "juice_step_20160326_v03.tsc",
|
||||
|
||||
kernels .. "juice_struct_v13.bsp",
|
||||
kernels .. "juice_cog_v00.bsp",
|
||||
kernels .. "juice_roi_v02.bsp",
|
||||
kernels .. "mar085_20200101_20400101.bsp",
|
||||
kernels .. "earthstns_fx_050714.bsp",
|
||||
kernels .. "estrack_v04.bsp",
|
||||
kernels .. "jup310_20200101_20500101.bsp",
|
||||
kernels .. "jup343_20200101_20500101.bsp",
|
||||
kernels .. "de432s.bsp",
|
||||
kernels .. "noe-5-2017-gal-a-reduced_20200101_20380902.bsp",
|
||||
|
||||
kernels .. "juice_mat_crema_5_0b23_1_20230405_20351005_v01.bsp",
|
||||
}
|
||||
|
||||
asset.export("Kernels", Kernels)
|
||||
|
||||
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = "Spice Kernels for the Juice Mission",
|
||||
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
|
||||
]],
|
||||
Author = "OpenSpace Team",
|
||||
URL = "http://openspaceproject.com",
|
||||
License = "MIT license"
|
||||
}
|
||||
75
data/assets/scene/solarsystem/missions/juice/model.asset
Normal file
75
data/assets/scene/solarsystem/missions/juice/model.asset
Normal file
@@ -0,0 +1,75 @@
|
||||
local sunTransforms = asset.require('scene/solarsystem/sun/transforms')
|
||||
local transforms = asset.require('./transforms')
|
||||
|
||||
|
||||
local model = asset.syncedResource({
|
||||
Name = "JUICE Model",
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = "juice_models",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local JuiceModel = {
|
||||
Identifier = "JuiceModel",
|
||||
Parent = transforms.Juice.Identifier,
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "StaticTranslation",
|
||||
-- Offset numbers found by eyeballing
|
||||
Position = { 4.5, 0.0, -1.0 }
|
||||
},
|
||||
Rotation = {
|
||||
Type = "StaticRotation",
|
||||
Rotation = { math.pi / 2.0, 0.0, 0.0 }
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderableModel",
|
||||
Body = "JUICE",
|
||||
GeometryFile = model .. "juice.fbx",
|
||||
ModelScale = "Centimeter",
|
||||
LightSources = {
|
||||
{
|
||||
Type = "SceneGraphLightSource",
|
||||
Identifier = "Sun",
|
||||
Node = sunTransforms.SolarSystemBarycenter.Identifier,
|
||||
Intensity = 0.6
|
||||
},
|
||||
{
|
||||
Identifier = "Camera",
|
||||
Type = "CameraLightSource",
|
||||
Intensity = 0.4,
|
||||
Enabled = false
|
||||
}
|
||||
}
|
||||
},
|
||||
GUI = {
|
||||
Name = "Juice Model",
|
||||
Path = "/Solar System/Missions/Juice",
|
||||
Description = "The model of the JUICE spacecraft"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.addSceneGraphNode(JuiceModel)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.removeSceneGraphNode(JuiceModel)
|
||||
end)
|
||||
|
||||
asset.export(JuiceModel)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = "Juice Model",
|
||||
Version = "1.0",
|
||||
Description = [[
|
||||
The model of the JUICE spacecraft. The model file was taken from
|
||||
https://www.cosmos.esa.int/web/esac-cmso/scifleet.
|
||||
]],
|
||||
Author = "OpenSpace Team",
|
||||
URL = "http://openspaceproject.com",
|
||||
License = "MIT license"
|
||||
}
|
||||
355
data/assets/scene/solarsystem/missions/juice/plane.asset
Normal file
355
data/assets/scene/solarsystem/missions/juice/plane.asset
Normal file
@@ -0,0 +1,355 @@
|
||||
local transforms = asset.require('./transforms')
|
||||
|
||||
-- Datasets created using the script found at:
|
||||
-- https://github.com/OpenSpace/scripts/tree/master/juice-gphio-image-conversion
|
||||
local data = asset.syncedResource({
|
||||
Type = "HttpSynchronization",
|
||||
Name = "Ganymede Plane Simulations",
|
||||
Identifier = "juice_ganymede_plane_cuts",
|
||||
Version = 1
|
||||
})
|
||||
|
||||
|
||||
local GanymedeRadius = 2634 * 1000
|
||||
-- Size value from the original dataset provided by Ronan
|
||||
local Size = 4.114 * GanymedeRadius
|
||||
|
||||
local xy_n = {
|
||||
Identifier = "Ganymede_Plane_XY_N",
|
||||
Parent = transforms.GPHIO.Identifier,
|
||||
Renderable = {
|
||||
Type = "RenderablePlaneImageLocal",
|
||||
Size = Size,
|
||||
Texture = data .. "XY-n.png",
|
||||
Enabled = false
|
||||
},
|
||||
GUI = {
|
||||
Name = "Ganymede XY Plane N",
|
||||
Path = "/Solar System/Missions/Juice/Plane",
|
||||
Description = "A cut plane in Ganymede's XY plane showing the number of particles"
|
||||
}
|
||||
}
|
||||
|
||||
local xy_t = {
|
||||
Identifier = "Ganymede_Plane_XY_T",
|
||||
Parent = transforms.GPHIO.Identifier,
|
||||
Renderable = {
|
||||
Type = "RenderablePlaneImageLocal",
|
||||
Size = Size,
|
||||
Texture = data .. "XY-T.png",
|
||||
Enabled = false
|
||||
},
|
||||
GUI = {
|
||||
Name = "Ganymede XY Plane T",
|
||||
Path = "/Solar System/Missions/Juice/Plane",
|
||||
Description = "A cut plane in Ganymede's XY plane showing the temperature"
|
||||
}
|
||||
}
|
||||
|
||||
local xy_u = {
|
||||
Identifier = "Ganymede_Plane_XY_U",
|
||||
Parent = transforms.GPHIO.Identifier,
|
||||
Renderable = {
|
||||
Type = "RenderablePlaneImageLocal",
|
||||
Size = Size,
|
||||
Texture = data .. "XY-U.png",
|
||||
Enabled = false
|
||||
},
|
||||
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
|
||||
magnetic field]]
|
||||
}
|
||||
}
|
||||
|
||||
local xy_utot = {
|
||||
Identifier = "Ganymede_Plane_XY_Utot",
|
||||
Parent = transforms.GPHIO.Identifier,
|
||||
Renderable = {
|
||||
Type = "RenderablePlaneImageLocal",
|
||||
Size = Size,
|
||||
Texture = data .. "XY-Utot.png",
|
||||
Enabled = false
|
||||
},
|
||||
GUI = {
|
||||
Name = "Ganymede XY Plane U_tot",
|
||||
Path = "/Solar System/Missions/Juice/Plane",
|
||||
Description = [[A cut plane in Ganymede's XY plane showing the X, Y, and Z components
|
||||
of the magnetic field mapped to the RGB components.]]
|
||||
}
|
||||
}
|
||||
|
||||
local xy_ux = {
|
||||
Identifier = "Ganymede_Plane_XY_Ux",
|
||||
Parent = transforms.GPHIO.Identifier,
|
||||
Renderable = {
|
||||
Type = "RenderablePlaneImageLocal",
|
||||
Size = Size,
|
||||
Texture = data .. "XY-Ux.png",
|
||||
Enabled = false
|
||||
},
|
||||
GUI = {
|
||||
Name = "Ganymede XY Plane Ux",
|
||||
Path = "/Solar System/Missions/Juice/Plane",
|
||||
Description = [[A cut plane in Ganymede's XY plane showing the X component of
|
||||
Ganymede's magnetic field]]
|
||||
}
|
||||
}
|
||||
|
||||
local xy_uy = {
|
||||
Identifier = "Ganymede_Plane_XY_Uy",
|
||||
Parent = transforms.GPHIO.Identifier,
|
||||
Renderable = {
|
||||
Type = "RenderablePlaneImageLocal",
|
||||
Size = Size,
|
||||
Texture = data .. "XY-Uy.png",
|
||||
Enabled = false
|
||||
},
|
||||
GUI = {
|
||||
Name = "Ganymede XY Plane Uy",
|
||||
Path = "/Solar System/Missions/Juice/Plane",
|
||||
Description = [[A cut plane in Ganymede's XY plane showing the Y component of
|
||||
Ganymede's magnetic field]]
|
||||
}
|
||||
}
|
||||
|
||||
local xy_uz = {
|
||||
Identifier = "Ganymede_Plane_XY_Uz",
|
||||
Parent = transforms.GPHIO.Identifier,
|
||||
Renderable = {
|
||||
Type = "RenderablePlaneImageLocal",
|
||||
Size = Size,
|
||||
Texture = data .. "XY-Uz.png",
|
||||
Enabled = false
|
||||
},
|
||||
GUI = {
|
||||
Name = "Ganymede XY Plane Uz",
|
||||
Path = "/Solar System/Missions/Juice/Plane",
|
||||
Description = [[A cut plane in Ganymede's XY plane showing the Z component of
|
||||
Ganymede's magnetic field]]
|
||||
}
|
||||
}
|
||||
|
||||
local xz_n = {
|
||||
Identifier = "Ganymede_Plane_XZ_N",
|
||||
Parent = transforms.GPHIO.Identifier,
|
||||
Transform = {
|
||||
Rotation = {
|
||||
Type = "StaticRotation",
|
||||
Rotation = { -math.pi/2, 0.0, 0.0 }
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderablePlaneImageLocal",
|
||||
Size = Size,
|
||||
Texture = data .. "XZ-n.png",
|
||||
Enabled = false
|
||||
},
|
||||
GUI = {
|
||||
Name = "Ganymede XZ Plane N",
|
||||
Path = "/Solar System/Missions/Juice/Plane",
|
||||
Description = "A cut plane in Ganymede's XZ plane showing the number of particles"
|
||||
}
|
||||
}
|
||||
|
||||
local xz_t = {
|
||||
Identifier = "Ganymede_Plane_XZ_T",
|
||||
Parent = transforms.GPHIO.Identifier,
|
||||
Transform = {
|
||||
Rotation = {
|
||||
Type = "StaticRotation",
|
||||
Rotation = { -math.pi/2, 0.0, 0.0 }
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderablePlaneImageLocal",
|
||||
Size = Size,
|
||||
Texture = data .. "XZ-T.png",
|
||||
Enabled = false
|
||||
},
|
||||
GUI = {
|
||||
Name = "Ganymede XZ Plane T",
|
||||
Path = "/Solar System/Missions/Juice/Plane",
|
||||
Description = "A cut plane in Ganymede's XZ plane showing the temperature"
|
||||
}
|
||||
}
|
||||
|
||||
local xz_u = {
|
||||
Identifier = "Ganymede_Plane_XZ_U",
|
||||
Parent = transforms.GPHIO.Identifier,
|
||||
Transform = {
|
||||
Rotation = {
|
||||
Type = "StaticRotation",
|
||||
Rotation = { -math.pi/2, 0.0, 0.0 }
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderablePlaneImageLocal",
|
||||
Size = Size,
|
||||
Texture = data .. "XZ-U.png",
|
||||
Enabled = false
|
||||
},
|
||||
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
|
||||
magnetic field]]
|
||||
}
|
||||
}
|
||||
|
||||
local xz_utot = {
|
||||
Identifier = "Ganymede_Plane_XZ_Utot",
|
||||
Parent = transforms.GPHIO.Identifier,
|
||||
Transform = {
|
||||
Rotation = {
|
||||
Type = "StaticRotation",
|
||||
Rotation = { -math.pi/2, 0.0, 0.0 }
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderablePlaneImageLocal",
|
||||
Size = Size,
|
||||
Texture = data .. "XZ-Utot.png",
|
||||
Enabled = false
|
||||
},
|
||||
GUI = {
|
||||
Name = "Ganymede XZ Plane U_tot",
|
||||
Path = "/Solar System/Missions/Juice/Plane",
|
||||
Description = [[A cut plane in Ganymede's XZ plane showing the X, Y, and Z components
|
||||
of the magnetic field mapped to the RGB components.]]
|
||||
}
|
||||
}
|
||||
|
||||
local xz_ux = {
|
||||
Identifier = "Ganymede_Plane_XZ_Ux",
|
||||
Parent = transforms.GPHIO.Identifier,
|
||||
Transform = {
|
||||
Rotation = {
|
||||
Type = "StaticRotation",
|
||||
Rotation = { -math.pi/2, 0.0, 0.0 }
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderablePlaneImageLocal",
|
||||
Size = Size,
|
||||
Texture = data .. "XZ-Ux.png",
|
||||
Enabled = false
|
||||
},
|
||||
GUI = {
|
||||
Name = "Ganymede XZ Plane Ux",
|
||||
Path = "/Solar System/Missions/Juice/Plane",
|
||||
Description = [[A cut plane in Ganymede's XZ plane showing the X component of
|
||||
Ganymede's magnetic field]]
|
||||
}
|
||||
}
|
||||
|
||||
local xz_uy = {
|
||||
Identifier = "Ganymede_Plane_XZ_Uy",
|
||||
Parent = transforms.GPHIO.Identifier,
|
||||
Transform = {
|
||||
Rotation = {
|
||||
Type = "StaticRotation",
|
||||
Rotation = { -math.pi/2, 0.0, 0.0 }
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderablePlaneImageLocal",
|
||||
Size = Size,
|
||||
Texture = data .. "XZ-Uy.png",
|
||||
Enabled = false
|
||||
},
|
||||
GUI = {
|
||||
Name = "Ganymede XZ Plane Uy",
|
||||
Path = "/Solar System/Missions/Juice/Plane",
|
||||
Description = [[A cut plane in Ganymede's XZ plane showing the Y component of
|
||||
Ganymede's magnetic field]]
|
||||
}
|
||||
}
|
||||
|
||||
local xz_uz = {
|
||||
Identifier = "Ganymede_Plane_XZ_Uz",
|
||||
Parent = transforms.GPHIO.Identifier,
|
||||
Transform = {
|
||||
Rotation = {
|
||||
Type = "StaticRotation",
|
||||
Rotation = { -math.pi/2, 0.0, 0.0 }
|
||||
}
|
||||
},
|
||||
Renderable = {
|
||||
Type = "RenderablePlaneImageLocal",
|
||||
Size = Size,
|
||||
Texture = data .. "XZ-Uz.png",
|
||||
Enabled = false
|
||||
},
|
||||
GUI = {
|
||||
Name = "Ganymede XZ Plane Uz",
|
||||
Path = "/Solar System/Missions/Juice/Plane",
|
||||
Description = [[A cut plane in Ganymede's XZ plane showing the Z component of
|
||||
Ganymede's magnetic field]]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.addSceneGraphNode(xy_n)
|
||||
openspace.addSceneGraphNode(xy_t)
|
||||
openspace.addSceneGraphNode(xy_u)
|
||||
openspace.addSceneGraphNode(xy_utot)
|
||||
openspace.addSceneGraphNode(xy_ux)
|
||||
openspace.addSceneGraphNode(xy_uy)
|
||||
openspace.addSceneGraphNode(xy_uz)
|
||||
|
||||
openspace.addSceneGraphNode(xz_n)
|
||||
openspace.addSceneGraphNode(xz_t)
|
||||
openspace.addSceneGraphNode(xz_u)
|
||||
openspace.addSceneGraphNode(xz_utot)
|
||||
openspace.addSceneGraphNode(xz_ux)
|
||||
openspace.addSceneGraphNode(xz_uy)
|
||||
openspace.addSceneGraphNode(xz_uz)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.removeSceneGraphNode(xz_uz)
|
||||
openspace.removeSceneGraphNode(xz_uy)
|
||||
openspace.removeSceneGraphNode(xz_ux)
|
||||
openspace.removeSceneGraphNode(xz_utot)
|
||||
openspace.removeSceneGraphNode(xz_u)
|
||||
openspace.removeSceneGraphNode(xz_t)
|
||||
openspace.removeSceneGraphNode(xz_n)
|
||||
|
||||
openspace.removeSceneGraphNode(xy_uz)
|
||||
openspace.removeSceneGraphNode(xy_uy)
|
||||
openspace.removeSceneGraphNode(xy_ux)
|
||||
openspace.removeSceneGraphNode(xy_utot)
|
||||
openspace.removeSceneGraphNode(xy_u)
|
||||
openspace.removeSceneGraphNode(xy_t)
|
||||
openspace.removeSceneGraphNode(xy_n)
|
||||
end)
|
||||
|
||||
asset.export(xy_n)
|
||||
asset.export(xy_t)
|
||||
asset.export(xy_u)
|
||||
asset.export(xy_utot)
|
||||
asset.export(xy_ux)
|
||||
asset.export(xy_uy)
|
||||
asset.export(xy_uz)
|
||||
asset.export(xz_n)
|
||||
asset.export(xz_t)
|
||||
asset.export(xz_u)
|
||||
asset.export(xz_utot)
|
||||
asset.export(xz_ux)
|
||||
asset.export(xz_uy)
|
||||
asset.export(xz_uz)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = "Ganymede Cut Planes",
|
||||
Version = "1.0",
|
||||
Description = [[
|
||||
Cutplane visualizations of Ganymede's magnetic field as prepared by Ronan Modolo.
|
||||
]],
|
||||
Author = "OpenSpace Team",
|
||||
URL = "http://openspaceproject.com",
|
||||
License = "MIT license"
|
||||
}
|
||||
4
data/assets/scene/solarsystem/missions/juice/trail.asset
Normal file
4
data/assets/scene/solarsystem/missions/juice/trail.asset
Normal file
@@ -0,0 +1,4 @@
|
||||
asset.require('./trails/earth')
|
||||
asset.require('./trails/ganymede')
|
||||
asset.require('./trails/jupiter')
|
||||
asset.require('./trails/ssb')
|
||||
@@ -0,0 +1,49 @@
|
||||
local earthTransforms = asset.require('scene/solarsystem/planets/earth/transforms')
|
||||
local kernels = asset.require('../kernels')
|
||||
|
||||
|
||||
local JuiceTrailEarth = {
|
||||
Identifier = "JuiceTrailEarth",
|
||||
Parent = earthTransforms.EarthBarycenter.Identifier,
|
||||
Renderable = {
|
||||
Type = "RenderableTrailTrajectory",
|
||||
Translation = {
|
||||
Type = "SpiceTranslation",
|
||||
Target = "JUICE",
|
||||
Observer = "EARTH BARYCENTER",
|
||||
Kernels = kernels.Kernels
|
||||
},
|
||||
Color = { 0.30, 0.70, 0.20 },
|
||||
StartTime = "2023 APR 05 12:00:00.000",
|
||||
EndTime = "2033 JUN 04 02:51:00.546",
|
||||
SampleInterval = 3600
|
||||
},
|
||||
GUI = {
|
||||
Name = "Juice Trail (Earth)",
|
||||
Path = "/Solar System/Missions/Juice",
|
||||
Description = "Juice's trajectory relative to the Earth barycenter"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.addSceneGraphNode(JuiceTrailEarth)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.removeSceneGraphNode(JuiceTrailEarth)
|
||||
end)
|
||||
|
||||
asset.export(JuiceTrailEarth)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = "Juice trajectory relative to the Earth barycenter",
|
||||
Version = "1.0",
|
||||
Description = [[
|
||||
The trajectory of the Juice spacecraft relative to the Earth barycenter
|
||||
]],
|
||||
Author = "OpenSpace Team",
|
||||
URL = "http://openspaceproject.com",
|
||||
License = "MIT license"
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
local transforms = asset.require('../transforms')
|
||||
local kernels = asset.require('../kernels')
|
||||
|
||||
|
||||
local JuiceTrailGanymede = {
|
||||
Identifier = "JuiceTrailGanymede",
|
||||
Parent = transforms.GanymedePosition.Identifier,
|
||||
Renderable = {
|
||||
Type = "RenderableTrailTrajectory",
|
||||
Translation = {
|
||||
Type = "SpiceTranslation",
|
||||
Target = "JUICE",
|
||||
Observer = "GANYMEDE",
|
||||
Kernels = kernels.Kernels
|
||||
},
|
||||
Color = { 0.70, 0.770, 0.35 },
|
||||
StartTime = "2034 DEC 01 00:00:00.000",
|
||||
EndTime = "2035 OCT 05 00:00:00.000",
|
||||
SampleInterval = 600
|
||||
},
|
||||
GUI = {
|
||||
Name = "Juice Trail (Ganymede)",
|
||||
Path = "/Solar System/Missions/Juice",
|
||||
Description = "Juice's trajectory relative to Ganymede"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.addSceneGraphNode(JuiceTrailGanymede)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.removeSceneGraphNode(JuiceTrailGanymede)
|
||||
end)
|
||||
|
||||
asset.export(JuiceTrailGanymede)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = "Juice trajectory relative to Ganymede",
|
||||
Version = "1.0",
|
||||
Description = [[
|
||||
The trajectory of the Juice spacecraft relative to Ganymede
|
||||
]],
|
||||
Author = "OpenSpace Team",
|
||||
URL = "http://openspaceproject.com",
|
||||
License = "MIT license"
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
local jupiterTransforms = asset.require('scene/solarsystem/planets/jupiter/transforms')
|
||||
local kernels = asset.require('../kernels')
|
||||
|
||||
|
||||
local JuiceTrailJupiter = {
|
||||
Identifier = "JuiceTrailJupiter",
|
||||
Parent = jupiterTransforms.JupiterBarycenter.Identifier,
|
||||
Renderable = {
|
||||
Type = "RenderableTrailTrajectory",
|
||||
Translation = {
|
||||
Type = "SpiceTranslation",
|
||||
Target = "JUICE",
|
||||
Observer = "JUPITER BARYCENTER",
|
||||
Kernels = kernels.Kernels
|
||||
},
|
||||
Color = { 0.70, 0.370, 0.45 },
|
||||
StartTime = "2031 JUL 02 00:00:00.000",
|
||||
EndTime = "2035 OCT 05 00:00:00.000",
|
||||
SampleInterval = 3600
|
||||
},
|
||||
GUI = {
|
||||
Name = "Juice Trail (Jupiter)",
|
||||
Path = "/Solar System/Missions/Juice",
|
||||
Description = "Juice's trajectory relative to Jupiter"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.addSceneGraphNode(JuiceTrailJupiter)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.removeSceneGraphNode(JuiceTrailJupiter)
|
||||
end)
|
||||
|
||||
asset.export(JuiceTrailJupiter)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = "Juice trajectory relative to Jupiter",
|
||||
Version = "1.0",
|
||||
Description = [[
|
||||
The trajectory of the Juice spacecraft relative to Jupiter
|
||||
]],
|
||||
Author = "OpenSpace Team",
|
||||
URL = "http://openspaceproject.com",
|
||||
License = "MIT license"
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
local sunTransforms = asset.require('scene/solarsystem/sun/transforms')
|
||||
local kernels = asset.require('../kernels')
|
||||
|
||||
|
||||
local JuiceTrail = {
|
||||
Identifier = "JuiceTrail",
|
||||
Parent = sunTransforms.SolarSystemBarycenter.Identifier,
|
||||
Renderable = {
|
||||
Type = "RenderableTrailTrajectory",
|
||||
Translation = {
|
||||
Type = "SpiceTranslation",
|
||||
Target = "JUICE",
|
||||
Observer = "SSB",
|
||||
Kernels = kernels.Kernels
|
||||
},
|
||||
Color = { 0.85, 0.85, 0.85 },
|
||||
StartTime = "2023 APR 05 12:00:00.000",
|
||||
EndTime = "2035 OCT 05 00:00:00.000",
|
||||
SampleInterval = 3600
|
||||
},
|
||||
GUI = {
|
||||
Name = "Juice Trail",
|
||||
Path = "/Solar System/Missions/Juice",
|
||||
Description = "Juice's trajectory relative to the solar system's barycenter"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.addSceneGraphNode(JuiceTrail)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.removeSceneGraphNode(JuiceTrail)
|
||||
end)
|
||||
|
||||
asset.export(JuiceTrail)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = "Juice trajectory relative to the solar system's barycenter",
|
||||
Version = "1.0",
|
||||
Description = [[
|
||||
The trajectory of the Juice spacecraft relative to the solar system's barycenter
|
||||
]],
|
||||
Author = "OpenSpace Team",
|
||||
URL = "http://openspaceproject.com",
|
||||
License = "MIT license"
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
local jupiterTransforms = asset.require('scene/solarsystem/planets/jupiter/transforms')
|
||||
local kernels = asset.require('./kernels')
|
||||
|
||||
|
||||
local Juice = {
|
||||
Identifier = "Juice",
|
||||
Parent = jupiterTransforms.JupiterBarycenter.Identifier,
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "SpiceTranslation",
|
||||
Target = "JUICE",
|
||||
Observer = "JUPITER BARYCENTER",
|
||||
Kernels = kernels.Kernels
|
||||
},
|
||||
Rotation = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "JUICE_SPACECRAFT",
|
||||
DestinationFrame = "GALACTIC",
|
||||
Kernels = kernels.Kernels
|
||||
},
|
||||
},
|
||||
GUI = {
|
||||
Name = "Juice",
|
||||
Path = "/Solar System/Missions/Juice",
|
||||
Description = "The position of Juice in the reference frame of Jupiter"
|
||||
}
|
||||
}
|
||||
|
||||
local GanymedePosition = {
|
||||
Identifier = "GanymedePosition",
|
||||
Parent = jupiterTransforms.JupiterBarycenter.Identifier,
|
||||
Transform = {
|
||||
Translation = {
|
||||
Type = "SpiceTranslation",
|
||||
Target = "GANYMEDE",
|
||||
Observer = "JUPITER BARYCENTER",
|
||||
Kernels = kernels.Kernels
|
||||
}
|
||||
},
|
||||
GUI = {
|
||||
Path = "/Solar System/Planets/Jupiter/Moons",
|
||||
Description = "Ganymede's position relative to Jupiter as an inertial reference frame"
|
||||
}
|
||||
}
|
||||
|
||||
local GPHIO = {
|
||||
Identifier = "GPHIO",
|
||||
Parent = GanymedePosition.Identifier,
|
||||
Transform = {
|
||||
Rotation = {
|
||||
Type = "SpiceRotation",
|
||||
SourceFrame = "GPHIO",
|
||||
DestinationFrame = "GALACTIC",
|
||||
Kernels = kernels.Kernels
|
||||
}
|
||||
},
|
||||
GUI = {
|
||||
Name = "GPHIO",
|
||||
Path = "/Solar System/Missions/Juice",
|
||||
Description = [[A rotating coordinate system called Ganymede Phi-Omega (G_PHI_O). The
|
||||
X axis is pointing in the direction of corotational flow (System III flow), Z is
|
||||
parallel to the Jovian spin axis (Omega), and Y completes the right handed set. The
|
||||
basis vectors are fixed at the time of Ganymede closest approach (2000-12-28
|
||||
08:25:28)]]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.addSceneGraphNode(Juice)
|
||||
openspace.addSceneGraphNode(GanymedePosition)
|
||||
openspace.addSceneGraphNode(GPHIO)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.removeSceneGraphNode(GPHIO)
|
||||
openspace.removeSceneGraphNode(GanymedePosition)
|
||||
openspace.removeSceneGraphNode(Juice)
|
||||
end)
|
||||
|
||||
asset.export(Juice)
|
||||
asset.export(GanymedePosition)
|
||||
asset.export(GPHIO)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = "Transformations for the JUICE mission profile",
|
||||
Version = "1.0",
|
||||
Description = [[
|
||||
Contains all of the base transformations necessary for the JUICE mission in the Jovian
|
||||
system
|
||||
]],
|
||||
Author = "OpenSpace Team",
|
||||
URL = "http://openspaceproject.com",
|
||||
License = "MIT license"
|
||||
}
|
||||
123
data/profiles/juice.profile
Normal file
123
data/profiles/juice.profile
Normal file
@@ -0,0 +1,123 @@
|
||||
{
|
||||
"additional_scripts": [
|
||||
""
|
||||
],
|
||||
"assets": [
|
||||
"base",
|
||||
"scene/solarsystem/missions/juice/fieldlines",
|
||||
"scene/solarsystem/missions/juice/fov/janus",
|
||||
"scene/solarsystem/missions/juice/fov/navcam",
|
||||
"scene/solarsystem/missions/juice/model",
|
||||
"scene/solarsystem/missions/juice/plane",
|
||||
"scene/solarsystem/missions/juice/trail",
|
||||
"scene/solarsystem/planets/earth/earth"
|
||||
],
|
||||
"camera": {
|
||||
"altitude": 9220000000.0,
|
||||
"anchor": "Jupiter",
|
||||
"latitude": -7.1689,
|
||||
"longitude": -173.3037,
|
||||
"type": "goToGeo"
|
||||
},
|
||||
"delta_times": [
|
||||
1.0,
|
||||
5.0,
|
||||
30.0,
|
||||
60.0,
|
||||
300.0,
|
||||
1800.0,
|
||||
3600.0,
|
||||
43200.0,
|
||||
86400.0,
|
||||
604800.0,
|
||||
1209600.0,
|
||||
2592000.0,
|
||||
5184000.0,
|
||||
7776000.0,
|
||||
15552000.0,
|
||||
31536000.0,
|
||||
63072000.0,
|
||||
157680000.0,
|
||||
315360000.0,
|
||||
630720000.0
|
||||
],
|
||||
"mark_nodes": [
|
||||
"Earth",
|
||||
"Juice",
|
||||
"Jupiter",
|
||||
"Ganymede"
|
||||
],
|
||||
"meta": {
|
||||
"author": "OpenSpace Team",
|
||||
"description": "Juice profile that visualizes the currently best known trajectory for the JUICE mission the Jupiter and its moons. See https://sci.esa.int/documents/33960/35865/1567260128466-JUICE_Red_Book_i1.0.pdf for more information about the JUICE mission. Currently, only the Janus and NavCam instruments are included in this profile, but the other instruments are available for a custom profile. Some of these are not behaving correctly, which will be addressed later.",
|
||||
"license": "MIT License",
|
||||
"name": "Juice",
|
||||
"url": "https://www.openspaceproject.com",
|
||||
"version": "1.0"
|
||||
},
|
||||
"properties": [
|
||||
{
|
||||
"name": "NavigationHandler.OrbitalNavigator.MinimumAllowedDistance",
|
||||
"type": "setPropertyValueSingle",
|
||||
"value": "0.0"
|
||||
},
|
||||
{
|
||||
"name": "Scene.JuiceTrailEarth.Renderable.Enabled",
|
||||
"type": "setPropertyValueSingle",
|
||||
"value": "false"
|
||||
},
|
||||
{
|
||||
"name": "Scene.JuiceTrailJupiter.Renderable.Enabled",
|
||||
"type": "setPropertyValueSingle",
|
||||
"value": "true"
|
||||
},
|
||||
{
|
||||
"name": "Scene.JuiceTrailGanymede.Renderable.Enabled",
|
||||
"type": "setPropertyValueSingle",
|
||||
"value": "false"
|
||||
},
|
||||
{
|
||||
"name": "Scene.GanymedeMagnetosphere.Renderable.DomainEnabled",
|
||||
"type": "setPropertyValueSingle",
|
||||
"value": "false"
|
||||
},
|
||||
{
|
||||
"name": "Scene.JuiceTrail.Renderable.Enabled",
|
||||
"type": "setPropertyValueSingle",
|
||||
"value": "false"
|
||||
},
|
||||
{
|
||||
"name": "Scene.GanymedeMagnetosphere.Renderable.LineWidth",
|
||||
"type": "setPropertyValueSingle",
|
||||
"value": "2.0"
|
||||
},
|
||||
{
|
||||
"name": "Scene.GanymedeMagnetosphere.Renderable.Flow.ParticleSize",
|
||||
"type": "setPropertyValueSingle",
|
||||
"value": "25.000000"
|
||||
},
|
||||
{
|
||||
"name": "Scene.GanymedeMagnetosphere.Renderable.Flow.ParticleSpacing",
|
||||
"type": "setPropertyValueSingle",
|
||||
"value": "40"
|
||||
},
|
||||
{
|
||||
"name": "Scene.GanymedeMagnetosphere.Renderable.Flow.Speed",
|
||||
"type": "setPropertyValueSingle",
|
||||
"value": "150.000000"
|
||||
},
|
||||
{
|
||||
"name": "Scene.GanymedeMagnetosphere.Renderable.FlowEnabled",
|
||||
"type": "setPropertyValueSingle",
|
||||
"value": "true"
|
||||
}
|
||||
],
|
||||
"time": {
|
||||
"type": "absolute",
|
||||
"value": "2031-08-01T03:01:30"
|
||||
},
|
||||
"version": {
|
||||
"major": 1,
|
||||
"minor": 1
|
||||
}
|
||||
}
|
||||
@@ -270,6 +270,7 @@ void RenderablePlane::render(const RenderData& data, RendererTasks&) {
|
||||
glDepthMask(false);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
|
||||
}
|
||||
glDisable(GL_CULL_FACE);
|
||||
|
||||
glBindVertexArray(_quad);
|
||||
glDrawArrays(GL_TRIANGLES, 0, 6);
|
||||
|
||||
@@ -550,9 +550,6 @@ fls::Model stringToModel(std::string str) {
|
||||
|
||||
bool RenderableFieldlinesSequence::loadJsonStatesIntoRAM() {
|
||||
fls::Model model = stringToModel(_modelStr);
|
||||
if (model == fls::Model::Invalid) {
|
||||
return false;
|
||||
}
|
||||
for (const std::string& filePath : _sourceFiles) {
|
||||
FieldlinesState newState;
|
||||
const bool loadedSuccessfully = newState.loadStateFromJson(
|
||||
@@ -1079,6 +1076,12 @@ void RenderableFieldlinesSequence::update(const UpdateData& data) {
|
||||
if (!_hasBeenUpdated) {
|
||||
updateVertexPositionBuffer();
|
||||
}
|
||||
|
||||
if (_states[_activeStateIndex].nExtraQuantities() > 0) {
|
||||
_shouldUpdateColorBuffer = true;
|
||||
_shouldUpdateMaskingBuffer = true;
|
||||
}
|
||||
|
||||
_hasBeenUpdated = true;
|
||||
}
|
||||
else {
|
||||
|
||||
Reference in New Issue
Block a user