TimelineRotation

Inherits Rotation

Members

Name

Documentation

Type

Description

Optional

Keyframes

A table of keyframes, with keys formatted as YYYY-MM-DDTHH:MM:SS and values that are valid Rotation objects

Table

Table parameters

No

ShouldInterpolate

If this value is set to ‘true’, an interpolation is applied between the given keyframes. If this value is set to ‘false’, the interpolation is not applied

Boolean

Value of type ‘Boolean’

Yes

Inherited members from Rotation

Name

Documentation

Type

Description

Optional

Type

The type of the rotation that is described in this element. The available types of rotations depend on the configuration of the application and can be written to disk on application startup into the FactoryDocumentation

String

Must name a valid Rotation type

No

Table parameters for Keyframes

A table of keyframes, with keys formatted as YYYY-MM-DDTHH:MM:SS and values that are valid Rotation objects

  • Optional: No

Name

Documentation

Type

Description

Optional

*

Table

Rotation

No

Asset Examples

  1asset.require("../actions")
  2asset.require("./actions")
  3local sun = asset.require("scene/solarsystem/sun/transforms")
  4local moonTransforms = asset.require("scene/solarsystem/planets/earth/moon/moon")
  5local descentKeyframes = asset.require("./lem_descent")
  6local descentRotationKeyframes = asset.require("./lem_descent_rotation")
  7local kernels = asset.require("./kernels")
  8local coreKernels = asset.require("spice/core")
  9
 10
 11
 12local models = asset.resource({
 13  Name = "Apollo Models",
 14  Type = "HttpSynchronization",
 15  Identifier = "apollo_11_models",
 16  Version = 1
 17})
 18
 19local lemModel = asset.resource({
 20  Name = "Apollo Lem Models",
 21  Type = "HttpSynchronization",
 22  Identifier = "apollo_lem_model",
 23  Version = 4
 24})
 25
 26
 27--landing - 1969-07-20T20:17:40
 28
 29local Apollo11Position = {
 30  Identifier = "Apollo11Position",
 31  Parent = moonTransforms.Moon.Identifier,
 32  TimeFrame = {
 33    Type = "TimeFrameInterval",
 34    Start = "1969 JUL 19 19:38:29.183",
 35    End = "1969 JUL 22 04:55:35.183"
 36  },
 37  Transform = {
 38    Translation = {
 39      Type = "SpiceTranslation",
 40      Target = kernels.ID.Apollo11,
 41      Observer = coreKernels.ID.Moon,
 42      Frame = kernels.ID.MoonME
 43    }
 44  },
 45  GUI = {
 46    Name = "Apollo 11",
 47    Path = "/Solar System/Missions/Apollo/11",
 48    Hidden = true
 49  }
 50}
 51
 52local Apollo11Model = {
 53  Identifier = "Apollo11",
 54  Parent = Apollo11Position.Identifier,
 55  TimeFrame = {
 56    Type = "TimeFrameInterval",
 57    Start = "1969 JUL 19 19:38:29.183",
 58    End = "1969 JUL 22 04:55:35.183"
 59  },
 60  Transform = {
 61    Scale = {
 62      Type = "StaticScale",
 63      Scale = 20.0
 64    }
 65  },
 66  Renderable = {
 67    Type = "RenderableModel",
 68    GeometryFile = models .. "Apollo_CSM_shrunk_rotated_xy_double_size.obj",
 69    LightSources = {
 70      sun.LightSource,
 71      {
 72        Identifier = "Camera",
 73        Type = "CameraLightSource",
 74        Intensity = 0.5
 75      }
 76    }
 77  },
 78  GUI = {
 79    Name = "Apollo 11 CSM",
 80    Path = "/Solar System/Missions/Apollo/11"
 81  }
 82}
 83
 84local Apollo11MoonTrail = {
 85  Identifier = "Apollo11MoonTrail",
 86  Parent = moonTransforms.Moon.Identifier,
 87  Renderable = {
 88    Type = "RenderableTrailTrajectory",
 89    Enabled = false,
 90    Translation = {
 91      Type = "SpiceTranslation",
 92      Target = kernels.ID.Apollo11,
 93      Observer = coreKernels.ID.Moon,
 94      Frame = coreKernels.Frame.Moon
 95    },
 96    Color = { 0.180000,0.510000,0.750000 },
 97    StartTime = "1969 JUL 19 19:38:29.183",
 98    EndTime = "1969 JUL 22 04:55:35.183",
 99    SampleInterval = 60,
100    EnableFade = false
101  },
102  GUI = {
103    Name = "Apollo 11 Moon Orbits",
104    Path = "/Solar System/Missions/Apollo/11"
105  }
106}
107
108
109local lemTranslation = {
110  Type = "TimelineTranslation",
111  Keyframes = {
112    -- 20:14:30 is an arbitrary cutoff, but last 4 minutes data in descentKeyframes
113    -- begins at 20:14:40. Due to linear interpolation, we will get
114    -- a 10s linear transition to the location where the descentKeyframes start.
115    ["1969 JUL 20 20:14:30"] = {
116      Type = "SpiceTranslation",
117      Target = kernels.ID.Apollo11LEM,
118      Observer = coreKernels.ID.Moon,
119      Frame = coreKernels.Frame.Moon
120    },
121    ["1969 JUL 20 20:14:40"] = {
122      Type = "TimelineTranslation",
123      Keyframes = descentKeyframes.keyframes
124    }
125  }
126}
127
128local lemRotation = {
129  Type = "TimelineRotation",
130  Keyframes = descentRotationKeyframes.keyframes
131}
132
133
134
135local Apollo11LemTrail = {
136  Identifier = "Apollo11LemTrail",
137  Parent = moonTransforms.Moon.Identifier,
138  Renderable = {
139    Type = "RenderableTrailTrajectory",
140    Enabled = false,
141    Translation = lemTranslation,
142    Color = { 0.780000,0.940000,0.340000 },
143    StartTime = "1969 JUL 20 19:10:25.183",
144    EndTime = "1969 JUL 20 20:17:46.183",
145    SampleInterval = 2,
146    EnableFade = false
147  },
148  GUI = {
149    Name = "Apollo 11 Lunar Lander Trail",
150    Path = "/Solar System/Missions/Apollo/11"
151  }
152}
153
154local Apollo11LemPosition = {
155  Identifier = "Apollo11LemPosition",
156  Parent = moonTransforms.Moon.Identifier,
157  TimeFrame = {
158    Type = "TimeFrameInterval",
159    Start = "1969 JUL 20 19:10:25.183"
160  },
161  Transform = {
162    Translation = lemTranslation,
163    Rotation = lemRotation
164  },
165  GUI = {
166    Name = "Apollo 11 Lunar Lander Position",
167    Path = "/Solar System/Missions/Apollo/11"
168  }
169}
170--landing - 1969-07-20T20:17:40
171
172local Apollo11LemDescentModel = {
173  Identifier = "Apollo11LemDescentModel",
174  Parent = Apollo11LemPosition.Identifier,
175  TimeFrame = {
176    Type = "TimeFrameInterval",
177    Start = "1969 JUL 19 19:38:29.183",
178    End = "1969 JUL 20 20:17:40.0"
179  },
180  Transform = {
181    Scale = {
182      Type = "StaticScale",
183      Scale = 0.24
184    }
185  },
186  Renderable = {
187    Type = "RenderableModel",
188    GeometryFile = lemModel .. "lmremoved.obj",
189    SpecularIntensity = 0.0,
190    RotationVector = { 273.750, 28.0, 309.85 },
191    LightSources = {
192      sun.LightSource,
193      {
194        Identifier = "Camera",
195        Type = "CameraLightSource",
196        Intensity = 0.5
197      }
198    }
199  },
200  GUI = {
201    Name = "Apollo 11 Descent Lem",
202    Path = "/Solar System/Missions/Apollo/11"
203  }
204}
205
206local Apollo11LemLandedModel = {
207  Identifier = "Apollo11LemLandedModel",
208  Parent = Apollo11LemPosition.Identifier,
209  TimeFrame = {
210    Type = "TimeFrameInterval",
211    Start = "1969 JUL 20 20:17:40.0"
212  },
213  Transform = {
214    Scale = {
215      Type = "StaticScale",
216      Scale = 0.24
217    }
218  },
219  Renderable = {
220    Type = "RenderableModel",
221    GeometryFile = lemModel .. "LM-2_ver2clean.obj",
222    SpecularIntensity = 0.0,
223    RotationVector = { 273.750, 28.0, 309.85 },
224    LightSources = {
225      sun.LightSource,
226      {
227        Identifier = "Camera",
228        Type = "CameraLightSource",
229        Intensity = 0.5
230      }
231    }
232  },
233  GUI = {
234    Name = "Apollo 11 Landed Lem",
235    Path = "/Solar System/Missions/Apollo/11"
236  }
237}
238
239
240asset.onInitialize(function()
241  openspace.addSceneGraphNode(Apollo11Position)
242  openspace.addSceneGraphNode(Apollo11LemPosition)
243  openspace.addSceneGraphNode(Apollo11Model)
244  openspace.addSceneGraphNode(Apollo11LemDescentModel)
245  openspace.addSceneGraphNode(Apollo11LemLandedModel)
246  openspace.addSceneGraphNode(Apollo11MoonTrail)
247  openspace.addSceneGraphNode(Apollo11LemTrail)
248end)
249
250asset.onDeinitialize(function()
251  openspace.removeSceneGraphNode(Apollo11LemTrail)
252  openspace.removeSceneGraphNode(Apollo11MoonTrail)
253  openspace.removeSceneGraphNode(Apollo11LemLandedModel)
254  openspace.removeSceneGraphNode(Apollo11LemDescentModel)
255  openspace.removeSceneGraphNode(Apollo11Model)
256  openspace.removeSceneGraphNode(Apollo11LemPosition)
257  openspace.removeSceneGraphNode(Apollo11Position)
258end)
259
260asset.export(Apollo11Position)
261asset.export(Apollo11LemPosition)
262asset.export(Apollo11Model)
263asset.export(Apollo11LemDescentModel)
264asset.export(Apollo11LemLandedModel)
265asset.export(Apollo11MoonTrail)
266asset.export(Apollo11LemTrail)