TimelineRotation
Inherits Rotation
Members
Name |
Documentation |
Type |
Description |
Optional |
---|---|---|---|---|
|
A table of keyframes, with keys formatted as YYYY-MM-DDTHH:MM:SS and values that are valid Rotation objects |
|
No |
|
|
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 |
|
Value of type ‘Boolean’ |
Yes |
Inherited members from Rotation
Name |
Documentation |
Type |
Description |
Optional |
---|---|---|---|---|
|
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 |
|
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 |
---|---|---|---|---|
|
|
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)