RenderableSolarImagery

Inherits Renderable

A RenderableSolarImagery renders time-sequenced solar observations from spacecraft instruments as textured planes in 3D space. The renderable automatically displays the image corresponding to the current simulation time.

Multiple instruments are supported (e.g., AIA-171, AIA-193, EUVI-A-171), and the active instrument can be selected via the ActiveInstrument property.

For optimal performance, images are decoded asynchronously in the background and cached to disk. When changing time, the previous image remains visible until the new one is ready. The renderable also predicts and pre-loads nearby frames based on playback direction to ensure smooth playback.

The DownsamplingLevel property can be used to reduce image resolution for improved performance. A value of 0 uses full resolution, while higher values progressively reduce the resolution (1 = half, 2 = quarter, etc.).

Visual adjustments can be made via color mapping (transfer functions), gamma, and contrast controls. Coronagraph instruments can optionally display a frustum visualization.

Members

Name

Documentation

Type

Description

Optional

ImageDirectory

The root directory containing solar imagery organized by instrument. Each subdirectory represents an instrument and contains its observation images.

Directory

Value of type ‘Directory’

No

Contrast

Contrast of the current spacecraft imagery.

Double

Value of type ‘Double’

Yes

DimInAtmosphere

Decides if the object should be dimmed (i.e. faded out) when the camera is in the sunny part of an atmosphere.

Boolean

Value of type ‘Boolean’

Yes

DownsamplingLevel

Controls how much to downsample the original data (0 is original resolution).

Integer

Value of type ‘Integer’

Yes

EnableBorder

Enables border around the current spacecraft imagery.

Boolean

Value of type ‘Boolean’

Yes

Enabled

Determines whether this object will be visible or not.

Boolean

Value of type ‘Boolean’

Yes

EnableFrustum

Enables frustum around the current spacecraft imagery.

Boolean

Value of type ‘Boolean’

Yes

FaceMode

Specifies how the plane is rendered: front side only, with a solid backside, or textured on both sides.

String

In list { FrontOnly, Solid Back, Double Sided }

Yes

Gamma

Gamma of the current spacecraft imagery.

Double

Value of type ‘Double’

Yes

MoveFactor

Controls how close to the Sun to render the imagery.

Double

Value of type ‘Double’

Yes

Opacity

This value determines the opacity of this renderable. A value of 0 means completely transparent.

Double

In range: ( 0, 1)

Yes

PredictFramesAfter

Determines how many images to pre-fetch after the current image frame.

Integer

Value of type ‘Integer’

Yes

PredictFramesBefore

Determines how many images to pre-fetch before the current image frame.

Integer

Value of type ‘Integer’

Yes

RenderBinMode

A value that specifies if the renderable should be rendered in the Background, Opaque, Pre-/PostDeferredTransparency, Overlay, or Sticker rendering step.

String

In list { Background, Opaque, PreDeferredTransparent, Overlay, PostDeferredTransparent, Sticker }

Yes

StartInstrument

The instrument to display on startup (e.g., “AIA-171”). If not specified, the first available instrument is used.

String

Value of type ‘String’

Yes

Tag

A single tag or a list of tags that this renderable will respond to when setting properties.

Table, or String

Value of type ‘Table’, or Value of type ‘String’

Yes

Type

The type of the renderable.

String

Value of type ‘String’

Yes

VerboseMode

Output information about image decoding.

Boolean

Value of type ‘Boolean’

Yes

Inherited members from Renderable

Name

Documentation

Type

Description

Optional

DimInAtmosphere

Decides if the object should be dimmed (i.e. faded out) when the camera is in the sunny part of an atmosphere.

Boolean

Value of type ‘Boolean’

Yes

Enabled

Determines whether this object will be visible or not.

Boolean

Value of type ‘Boolean’

Yes

Opacity

This value determines the opacity of this renderable. A value of 0 means completely transparent.

Double

In range: ( 0, 1)

Yes

RenderBinMode

A value that specifies if the renderable should be rendered in the Background, Opaque, Pre-/PostDeferredTransparency, Overlay, or Sticker rendering step.

String

In list { Background, Opaque, PreDeferredTransparent, Overlay, PostDeferredTransparent, Sticker }

Yes

Tag

A single tag or a list of tags that this renderable will respond to when setting properties.

Table, or String

Value of type ‘Table’, or Value of type ‘String’

Yes

Type

The type of the renderable.

String

Value of type ‘String’

Yes

Asset Examples

 1local stereo_a = asset.require("scene/solarsystem/missions/stereo/stereo_a")
 2local coreKernels = asset.require("spice/core")
 3local kernels = asset.require("scene/solarsystem/missions/stereo/kernels")
 4
 5
 6
 7-- We use the Stereo position with an added rotation to stabilize the image and remove
 8-- any wobble effect since we don't have the CK kernels
 9local StereoPosition = {
10  Identifier = "STEREO_A_Position_Ecliptic",
11  Parent = stereo_a.Position.Identifier,
12  Transform = {
13    -- This rotation removes tiny wobbles and fixes the frame in place
14    Rotation = {
15      Type = "SpiceRotation",
16      SourceFrame = coreKernels.Frame.EclipJ2000,
17      DestinationFrame = coreKernels.Frame.Galactic
18    }
19  },
20  GUI = {
21    Name = "STEREO A Position",
22    Path = "/Solar System/Missions/STEREO A",
23    Description = [[The position of the STEREO-A spacecraft with an added rotation to
24      reduce wobble effects.]],
25    Hidden = true,
26    Focusable = false
27  }
28}
29
30local SolarImagery = {
31  Identifier = "SolarImagery_STEREO_A",
32  Parent = StereoPosition.Identifier,
33  TimeFrame = {
34    Type = "TimeFrameInterval",
35    Start = stereo_a.MissionBegin,
36    End = stereo_a.MissionEnd
37  },
38  Renderable = {
39    Type = "RenderableSolarImagery",
40    ImageDirectory = openspace.absPath("${SYNC_DYNAMIC}/solarbrowsing/stereo-a")
41  },
42  GUI = {
43    Name = "STEREO A Imagery",
44    Path = "/Solar System/Sun/Solar Imagery",
45    Description = [[Time-resolved solar imagery from NASA's Solar TErrestrial RElations
46      Observatory (STEREO-A). Images from multiple instruments can be browsed over time and
47      are projected onto a plane positioned relative to the Sun. Instrument-specific color
48      mappings help highlight different solar phenomena such as active regions, flares,
49      and coronal structures.]],
50      Focusable = false
51  }
52}
53
54
55asset.onInitialize(function ()
56  openspace.addSceneGraphNode(StereoPosition)
57  openspace.addSceneGraphNode(SolarImagery)
58end
59)
60
61asset.onDeinitialize(function ()
62  openspace.removeSceneGraphNode(SolarImagery)
63  openspace.removeSceneGraphNode(StereoPosition)
64end
65)
66
67asset.export("Imagery", SolarImagery)
68
69
70
71asset.meta = {
72  Name = "STEREO Solar Imagery",
73  Description = [[Time-resolved solar imagery from NASA's STEREO-A spacecraft,
74    showing the Sun in multiple wavelengths captured by its onboard instruments.]],
75  Author = "OpenSpace Team",
76  URL = "https://openspaceproject.com",
77  License = "MIT license"
78}