RenderableShadowCylinder
Inherits Renderable
Displays a shadow cylinder behind a planetary body. Given the SPICE name of a planetary body and an observer, it will show a cylinder extending behind the body away from the observer to highlight the areas of space from which the observer is occluded by the body. A concrete example is using the Sun as the observer, in which case the shadow cylinder indicates the areas in which there is darkness.
Members
Name |
Documentation |
Type |
Description |
Optional |
|---|---|---|---|---|
|
The aberration method that is used for computing the shadow cylinder. The options are “NONE”, “LT” (Light Time), “LT + S” (Light Time Stellar), “CN” (Converged Newtonian), and “CN + S” (Converged Newtonian Stellar). |
|
In list { NONE, LT, LT+S, CN, CN+S } |
No |
|
The SPICE name of target body that is used as the shadow caster. |
|
Value of type ‘String’ |
No |
|
The SPICE name of the reference frame in which the shadow cylinder is expressed. |
|
Value of type ‘String’ |
No |
|
The SPICE name of the object that is used as the illuminator for computing the shadow cylinder. |
|
An identifier string. May not contain ‘.’, spaces, newlines, or tabs |
No |
|
The SPICE name of the object that is the observer. |
|
Value of type ‘String’ |
No |
|
Determines the type of terminator to use for calculating the shadow eclipse. |
|
In list { UMBRAL, PENUMBRAL } |
No |
|
Decides if the object should be dimmed (i.e. faded out) when the camera is in the sunny part of an atmosphere. |
|
Value of type ‘Boolean’ |
Yes |
|
Determines whether this object will be visible or not. |
|
Value of type ‘Boolean’ |
Yes |
|
The number of control points used for constructing the shadow geometry. The higher this number, the more detailed the shadow is, but it will have a negative impact on the performance. |
|
Greater or equal to: 0 |
Yes |
|
This value determines the opacity of this renderable. A value of 0 means completely transparent. |
|
In range: ( 0, 1) |
Yes |
|
A value that specifies if the renderable should be rendered in the Background, Opaque, Pre-/PostDeferredTransparency, Overlay, or Sticker rendering step. |
|
In list { Background, Opaque, PreDeferredTransparent, Overlay, PostDeferredTransparent, Sticker } |
Yes |
|
The color used for the shadow cylinder. |
|
Value of type ‘Color3’ |
Yes |
|
A factor that controls the length of the shadow that is cast by the target object. The total length of the shadow is equal to the distance from the target to the light source multiplied with this value. |
|
Value of type ‘Double’ |
Yes |
|
A single tag or a list of tags that this renderable will respond to when setting properties. |
|
Value of type ‘Table’, or Value of type ‘String’ |
Yes |
|
The type of the renderable. |
|
Value of type ‘String’ |
Yes |
Inherited members from Renderable
Name |
Documentation |
Type |
Description |
Optional |
|---|---|---|---|---|
|
Decides if the object should be dimmed (i.e. faded out) when the camera is in the sunny part of an atmosphere. |
|
Value of type ‘Boolean’ |
Yes |
|
Determines whether this object will be visible or not. |
|
Value of type ‘Boolean’ |
Yes |
|
This value determines the opacity of this renderable. A value of 0 means completely transparent. |
|
In range: ( 0, 1) |
Yes |
|
A value that specifies if the renderable should be rendered in the Background, Opaque, Pre-/PostDeferredTransparency, Overlay, or Sticker rendering step. |
|
In list { Background, Opaque, PreDeferredTransparent, Overlay, PostDeferredTransparent, Sticker } |
Yes |
|
A single tag or a list of tags that this renderable will respond to when setting properties. |
|
Value of type ‘Table’, or Value of type ‘String’ |
Yes |
|
The type of the renderable. |
|
Value of type ‘String’ |
Yes |
Asset Examples
1local transforms = asset.require("./transforms")
2local kernels = asset.require("./kernels")
3local coreKernels = asset.require("spice/core")
4
5
6
7local textures = asset.resource({
8 Name = "Charon Textures",
9 Type = "HttpSynchronization",
10 Identifier = "charon_textures",
11 Version = 3
12})
13
14
15local CharonRadius = 603500
16
17local CharonProjection = {
18 Identifier = "CharonProjection",
19 Parent = transforms.PlutoBarycenterAccurate.Identifier,
20 Transform = {
21 Translation = {
22 Type = "SpiceTranslation",
23 Target = kernels.ID.Charon,
24 Observer = kernels.ID.PlutoBarycenter
25 },
26 Rotation = {
27 Type = "SpiceRotation",
28 SourceFrame = kernels.Frame.Charon,
29 DestinationFrame = coreKernels.Frame.Galactic
30 }
31 },
32 Renderable = {
33 Type = "RenderablePlanetProjection",
34 Radius = CharonRadius,
35 Segments = 350,
36 ColorTexturePaths = {
37 textures .. "NH_Charon_mosaic.png",
38 textures .. "NH_Charon_mosaic_8192.png"
39 },
40 HeightTexturePaths = {
41 textures .. "NH_Charon_DTM.png",
42 textures .. "NH_Charon_DTM_8192.png"
43 },
44 MeridianShift = true,
45 Projection = {
46 Observer = kernels.ID.NewHorizons,
47 Target = kernels.ID.Charon,
48 Aberration = "NONE",
49 AspectRatio = 2,
50 Instrument = {
51 Name = kernels.Frame.Lorri,
52 Method = "ELLIPSOID",
53 Aberration = "NONE",
54 Fovy = 0.2907,
55 Aspect = 1,
56 Near = 0.2,
57 Far = 10000
58 },
59 PotentialTargets = {
60 kernels.ID.Pluto,
61 kernels.ID.Charon
62 }
63 }
64 },
65 GUI = {
66 Path = "/Solar System/Dwarf Planets/Pluto",
67 Name = "Charon Projection"
68 }
69}
70
71local CharonText = {
72 Identifier = "CharonText",
73 Parent = CharonProjection.Identifier,
74 Transform = {
75 Translation = {
76 Type = "StaticTranslation",
77 Position = { 0, -1000000.0, 0 }
78 }
79 },
80 Renderable = {
81 Type = "RenderablePlaneImageLocal",
82 Size = 19952623.15,
83 Origin = "Center",
84 Billboard = true,
85 Texture = textures .. "Charon-Text.png",
86 BlendMode = "Additive"
87 },
88 GUI = {
89 Name = "Charon Text",
90 Path = "/Solar System/Dwarf Planets/Pluto",
91 Focusable = false
92 }
93}
94
95local CharonShadow = {
96 Identifier = "CharonShadow",
97 Parent = CharonProjection.Identifier,
98 Renderable = {
99 Type = "RenderableShadowCylinder",
100 Opacity = 0.25,
101 TerminatorType = "PENUMBRAL",
102 LightSource = coreKernels.ID.Sun,
103 Observer = kernels.ID.NewHorizons,
104 Body = kernels.ID.Charon,
105 BodyFrame = kernels.Frame.Charon,
106 Aberration = "NONE"
107 },
108 GUI = {
109 Name = "Charon Shadow",
110 Path = "/Solar System/Dwarf Planets/Pluto",
111 Focusable = false
112 }
113}
114
115
116asset.onInitialize(function()
117 openspace.addSceneGraphNode(CharonProjection)
118 openspace.addSceneGraphNode(CharonText)
119 openspace.addSceneGraphNode(CharonShadow)
120end)
121
122asset.onDeinitialize(function()
123 openspace.removeSceneGraphNode(CharonShadow)
124 openspace.removeSceneGraphNode(CharonText)
125 openspace.removeSceneGraphNode(CharonProjection)
126end)
127
128asset.export(CharonProjection)
129asset.export(CharonText)
130asset.export(CharonShadow)