RenderableShadowCylinder

Inherits Renderable

Members

Name

Documentation

Type

Description

Optional

Aberration

This value determines the aberration method that is used to compute the shadow cylinder

String

In list { NONE, LT, LT+S, CN, CN+S }

No

Body

This value is the SPICE name of target body that is used as the shadow caster for the shadow cylinder

String

Value of type ‘String’

No

BodyFrame

This value is the SPICE name of the reference frame in which the shadow cylinder is expressed

String

Value of type ‘String’

No

LightSource

This value determines the SPICE name of the object that is used as the illuminator for computing the shadow cylinder

String

Value of type ‘String’

No

Observer

This value specifies the SPICE name of the object that is the observer of the shadow cylinder

String

Value of type ‘String’

No

TerminatorType

This value determines the type of the terminator that is used to calculate the shadow eclipse

String

In list { UMBRAL, PENUMBRAL }

No

NumberOfPoints

This value determines the number of control points that is used to construct the shadow geometry. The higher this number, the more detailed the shadow is, but it will have a negative impact on the performance

Integer

Value of type ‘Integer’

Yes

ShadowColor

This value determines the color that is used for the shadow cylinder

Color3

Value of type ‘Color3’

Yes

ShadowLength

This value determines the length of the shadow that is cast by the target object. The total distance of the shadow is equal to the distance from the target to the Sun multiplied with this value

Double

Value of type ‘Double’

Yes

Inherited members from Renderable

Name

Documentation

Type

Description

Optional

DimInAtmosphere

Enables/Disables if the object should be dimmed when the camera is in the sunny part of an atmosphere

Boolean

Value of type ‘Boolean’

Yes

Enabled

This setting 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

This value specifies if the renderable should be rendered in the Background,Opaque, Pre/PostDeferredTransparency, or Overlay rendering step

String

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

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

This tells the type of the renderable

String

Value of type ‘String’

Yes

Asset Examples

  1local transforms = asset.require("./transforms")
  2local sunTransforms = asset.require("scene/solarsystem/sun/transforms")
  3local kernels = asset.require("./kernels")
  4local coreKernels = asset.require("spice/core")
  5
  6
  7
  8local textures = asset.resource({
  9  Name = "Charon Textures",
 10  Type = "HttpSynchronization",
 11  Identifier = "charon_textures",
 12  Version = 3
 13})
 14
 15
 16local CharonRadius = 603500
 17
 18local CharonProjection = {
 19  Identifier = "CharonProjection",
 20  Parent = transforms.PlutoBarycenterAccurate.Identifier,
 21  Transform = {
 22    Translation = {
 23      Type = "SpiceTranslation",
 24      Target = kernels.ID.Charon,
 25      Observer = kernels.ID.PlutoBarycenter
 26    },
 27    Rotation = {
 28      Type = "SpiceRotation",
 29      SourceFrame = kernels.Frame.Charon,
 30      DestinationFrame = coreKernels.Frame.Galactic
 31    }
 32  },
 33  Renderable = {
 34    Type = "RenderablePlanetProjection",
 35    Radius = CharonRadius,
 36    Segments = 350,
 37    ColorTexturePaths = {
 38      textures .. "NH_Charon_mosaic.png",
 39      textures .. "NH_Charon_mosaic_8192.png"
 40    },
 41    HeightTexturePaths = {
 42      textures .. "NH_Charon_DTM.png",
 43      textures .. "NH_Charon_DTM_8192.png"
 44    },
 45    MeridianShift = true,
 46    Projection = {
 47      Observer = kernels.ID.NewHorizons,
 48      Target = kernels.ID.Charon,
 49      Aberration = "NONE",
 50      AspectRatio = 2,
 51      Instrument = {
 52        Name = kernels.Frame.Lorri,
 53        Method = "ELLIPSOID",
 54        Aberration = "NONE",
 55        Fovy = 0.2907,
 56        Aspect = 1,
 57        Near = 0.2,
 58        Far = 10000
 59      },
 60      PotentialTargets = {
 61        kernels.ID.Pluto,
 62        kernels.ID.Charon
 63      }
 64    }
 65  },
 66  GUI = {
 67    Path = "/Solar System/Dwarf Planets/Pluto",
 68    Name = "Charon Projection"
 69  }
 70}
 71
 72local CharonText = {
 73  Identifier = "CharonText",
 74  Parent = CharonProjection.Identifier,
 75  Transform = {
 76    Translation = {
 77      Type = "StaticTranslation",
 78      Position = { 0, -1000000.0, 0 }
 79    }
 80  },
 81  Renderable = {
 82    Type = "RenderablePlaneImageLocal",
 83    Size = 19952623.15,
 84    Origin = "Center",
 85    Billboard = true,
 86    Texture = textures .. "Charon-Text.png",
 87    BlendMode = "Additive"
 88  },
 89  GUI = {
 90    Name = "Charon Text",
 91    Path = "/Solar System/Dwarf Planets/Pluto"
 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  }
112}
113
114
115asset.onInitialize(function()
116  openspace.addSceneGraphNode(CharonProjection)
117  openspace.addSceneGraphNode(CharonText)
118  openspace.addSceneGraphNode(CharonShadow)
119end)
120
121asset.onDeinitialize(function()
122  openspace.removeSceneGraphNode(CharonShadow)
123  openspace.removeSceneGraphNode(CharonText)
124  openspace.removeSceneGraphNode(CharonProjection)
125end)
126
127asset.export(CharonProjection)
128asset.export(CharonText)
129asset.export(CharonShadow)