Solve bug that cause some vertices to be misplaced in MultiModelGeometry and calculate MVP matrix for renderable model in double precision
@@ -7,7 +7,7 @@ return {
|
||||
Body = "SUN",
|
||||
Geometry = {
|
||||
Type = "MultiModelGeometry",
|
||||
GeometryFile = "models/NewHorizonsCleanModel.obj",
|
||||
GeometryFile = "models/OSIRIS-REx GSFC Animation/OSIRIS-REx GSFC Animation/OREXE1.obj",
|
||||
Magnification = 4,
|
||||
},
|
||||
Textures = {
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
"2019/01/27 10:42:00.000" "2019/01/27 15:12:00.000"
|
||||
"2019/02/03 10:43:00.000" "2019/02/03 15:13:00.000"
|
||||
"2019/02/10 11:05:00.000" "2019/02/10 15:35:00.000"
|
||||
"2019/02/17 10:43:00.000" "2019/02/17 15:13:00.000"
|
||||
"2019/02/24 10:22:00.000" "2019/02/24 14:52:00.000"
|
||||
"2019/03/03 10:01:00.000" "2019/03/03 14:31:00.000"
|
||||
"2019/03/10 10:01:00.000" "2019/03/10 14:31:00.000"
|
||||
@@ -1,173 +0,0 @@
|
||||
"2019/04/16 12:03:15.000" "2019/04/16 12:03:15.800"
|
||||
"2019/04/16 12:03:25.000" "2019/04/16 12:03:25.800"
|
||||
"2019/04/16 12:03:35.000" "2019/04/16 12:03:35.800"
|
||||
"2019/04/16 12:03:45.000" "2019/04/16 12:03:45.800"
|
||||
"2019/04/16 12:03:55.000" "2019/04/16 12:03:55.800"
|
||||
"2019/04/16 12:04:05.000" "2019/04/16 12:04:05.800"
|
||||
"2019/04/16 12:04:15.000" "2019/04/16 12:04:15.800"
|
||||
"2019/04/16 12:04:53.000" "2019/04/16 12:04:53.800"
|
||||
"2019/04/16 12:05:03.000" "2019/04/16 12:05:03.800"
|
||||
"2019/04/16 12:05:13.000" "2019/04/16 12:05:13.800"
|
||||
"2019/04/16 12:05:23.000" "2019/04/16 12:05:23.800"
|
||||
"2019/04/16 12:05:33.000" "2019/04/16 12:05:33.800"
|
||||
"2019/04/16 12:05:43.000" "2019/04/16 12:05:43.800"
|
||||
"2019/04/16 12:05:53.000" "2019/04/16 12:05:53.800"
|
||||
"2019/04/16 12:06:03.000" "2019/04/16 12:06:03.800"
|
||||
"2019/04/16 12:06:13.000" "2019/04/16 12:06:13.800"
|
||||
"2019/04/16 12:06:23.000" "2019/04/16 12:06:23.800"
|
||||
"2019/04/16 12:07:13.000" "2019/04/16 12:07:13.800"
|
||||
"2019/04/16 12:07:23.000" "2019/04/16 12:07:23.800"
|
||||
"2019/04/16 12:07:33.000" "2019/04/16 12:07:33.800"
|
||||
"2019/04/16 12:07:43.000" "2019/04/16 12:07:43.800"
|
||||
"2019/04/16 12:07:53.000" "2019/04/16 12:07:53.800"
|
||||
"2019/04/16 12:08:03.000" "2019/04/16 12:08:03.800"
|
||||
"2019/04/16 12:08:13.000" "2019/04/16 12:08:13.800"
|
||||
"2019/04/16 12:08:23.000" "2019/04/16 12:08:23.800"
|
||||
"2019/04/16 12:08:33.000" "2019/04/16 12:08:33.800"
|
||||
"2019/04/16 12:08:43.000" "2019/04/16 12:08:43.800"
|
||||
"2019/04/16 12:09:34.000" "2019/04/16 12:09:34.800"
|
||||
"2019/04/16 12:09:44.000" "2019/04/16 12:09:44.800"
|
||||
"2019/04/16 12:09:54.000" "2019/04/16 12:09:54.800"
|
||||
"2019/04/16 12:10:04.000" "2019/04/16 12:10:04.800"
|
||||
"2019/04/16 12:10:14.000" "2019/04/16 12:10:14.800"
|
||||
"2019/04/16 12:10:24.000" "2019/04/16 12:10:24.800"
|
||||
"2019/04/16 12:10:34.000" "2019/04/16 12:10:34.800"
|
||||
"2019/04/16 12:10:44.000" "2019/04/16 12:10:44.800"
|
||||
"2019/04/16 12:10:54.000" "2019/04/16 12:10:54.800"
|
||||
"2019/04/16 12:11:04.000" "2019/04/16 12:11:04.800"
|
||||
"2019/04/16 12:11:51.000" "2019/04/16 12:11:51.800"
|
||||
"2019/04/16 12:12:01.000" "2019/04/16 12:12:01.800"
|
||||
"2019/04/16 12:12:11.000" "2019/04/16 12:12:11.800"
|
||||
"2019/04/16 12:12:21.000" "2019/04/16 12:12:21.800"
|
||||
"2019/04/16 12:12:31.000" "2019/04/16 12:12:31.800"
|
||||
"2019/04/16 12:12:41.000" "2019/04/16 12:12:41.800"
|
||||
"2019/04/16 12:12:51.000" "2019/04/16 12:12:51.800"
|
||||
"2019/04/16 12:13:01.000" "2019/04/16 12:13:01.800"
|
||||
"2019/04/16 12:13:56.000" "2019/04/16 12:13:56.800"
|
||||
"2019/04/16 12:14:06.000" "2019/04/16 12:14:06.800"
|
||||
"2019/04/16 12:14:16.000" "2019/04/16 12:14:16.800"
|
||||
"2019/04/16 12:14:26.000" "2019/04/16 12:14:26.800"
|
||||
"2019/04/16 12:14:36.000" "2019/04/16 12:14:36.800"
|
||||
"2019/04/16 12:14:46.000" "2019/04/16 12:14:46.800"
|
||||
"2019/04/16 12:14:56.000" "2019/04/16 12:14:56.800"
|
||||
"2019/04/16 12:15:06.000" "2019/04/16 12:15:06.800"
|
||||
"2019/04/16 12:15:40.000" "2019/04/16 12:15:40.800"
|
||||
"2019/04/16 12:15:50.000" "2019/04/16 12:15:50.800"
|
||||
"2019/04/16 12:16:00.000" "2019/04/16 12:16:00.800"
|
||||
"2019/04/16 12:16:10.000" "2019/04/16 12:16:10.800"
|
||||
"2019/04/16 12:16:20.000" "2019/04/16 12:16:20.800"
|
||||
"2019/04/16 17:49:37.000" "2019/04/16 17:49:37.800"
|
||||
"2019/04/16 17:49:47.000" "2019/04/16 17:49:47.800"
|
||||
"2019/04/16 17:49:57.000" "2019/04/16 17:49:57.800"
|
||||
"2019/04/16 17:50:07.000" "2019/04/16 17:50:07.800"
|
||||
"2019/04/16 17:50:17.000" "2019/04/16 17:50:17.800"
|
||||
"2019/04/16 17:50:27.000" "2019/04/16 17:50:27.800"
|
||||
"2019/04/16 17:50:37.000" "2019/04/16 17:50:37.800"
|
||||
"2019/04/16 17:50:47.000" "2019/04/16 17:50:47.800"
|
||||
"2019/04/16 17:50:57.000" "2019/04/16 17:50:57.800"
|
||||
"2019/04/16 17:51:07.000" "2019/04/16 17:51:07.800"
|
||||
"2019/04/16 17:51:17.000" "2019/04/16 17:51:17.800"
|
||||
"2019/04/16 17:51:27.000" "2019/04/16 17:51:27.800"
|
||||
"2019/04/16 17:51:37.000" "2019/04/16 17:51:37.800"
|
||||
"2019/04/16 17:51:47.000" "2019/04/16 17:51:47.800"
|
||||
"2019/04/16 17:52:48.000" "2019/04/16 17:52:48.800"
|
||||
"2019/04/16 17:52:58.000" "2019/04/16 17:52:58.800"
|
||||
"2019/04/16 17:53:08.000" "2019/04/16 17:53:08.800"
|
||||
"2019/04/16 17:53:18.000" "2019/04/16 17:53:18.800"
|
||||
"2019/04/16 17:53:28.000" "2019/04/16 17:53:28.800"
|
||||
"2019/04/16 17:53:38.000" "2019/04/16 17:53:38.800"
|
||||
"2019/04/16 17:53:48.000" "2019/04/16 17:53:48.800"
|
||||
"2019/04/16 17:53:58.000" "2019/04/16 17:53:58.800"
|
||||
"2019/04/16 17:54:08.000" "2019/04/16 17:54:08.800"
|
||||
"2019/04/16 17:54:18.000" "2019/04/16 17:54:18.800"
|
||||
"2019/04/16 17:54:28.000" "2019/04/16 17:54:28.800"
|
||||
"2019/04/16 17:54:38.000" "2019/04/16 17:54:38.800"
|
||||
"2019/04/16 17:54:48.000" "2019/04/16 17:54:48.800"
|
||||
"2019/04/16 17:55:35.000" "2019/04/16 17:55:35.800"
|
||||
"2019/04/16 17:55:45.000" "2019/04/16 17:55:45.800"
|
||||
"2019/04/16 17:55:55.000" "2019/04/16 17:55:55.800"
|
||||
"2019/04/16 17:56:05.000" "2019/04/16 17:56:05.800"
|
||||
"2019/04/16 17:56:15.000" "2019/04/16 17:56:15.800"
|
||||
"2019/04/16 17:56:25.000" "2019/04/16 17:56:25.800"
|
||||
"2019/04/16 17:56:35.000" "2019/04/16 17:56:35.800"
|
||||
"2019/04/16 17:56:45.000" "2019/04/16 17:56:45.800"
|
||||
"2019/04/16 17:56:55.000" "2019/04/16 17:56:55.800"
|
||||
"2019/04/16 17:57:05.000" "2019/04/16 17:57:05.800"
|
||||
"2019/04/16 17:57:15.000" "2019/04/16 17:57:15.800"
|
||||
"2019/04/16 17:57:25.000" "2019/04/16 17:57:25.800"
|
||||
"2019/04/16 17:57:35.000" "2019/04/16 17:57:35.800"
|
||||
"2019/04/16 17:57:45.000" "2019/04/16 17:57:45.800"
|
||||
"2019/04/16 17:57:55.000" "2019/04/16 17:57:55.800"
|
||||
"2019/04/16 17:58:05.000" "2019/04/16 17:58:05.800"
|
||||
"2019/04/16 17:58:15.000" "2019/04/16 17:58:15.800"
|
||||
"2019/04/16 17:58:48.000" "2019/04/16 17:58:48.800"
|
||||
"2019/04/16 17:58:58.000" "2019/04/16 17:58:58.800"
|
||||
"2019/04/16 17:59:08.000" "2019/04/16 17:59:08.800"
|
||||
"2019/04/16 17:59:18.000" "2019/04/16 17:59:18.800"
|
||||
"2019/04/16 17:59:28.000" "2019/04/16 17:59:28.800"
|
||||
"2019/04/16 17:59:38.000" "2019/04/16 17:59:38.800"
|
||||
"2019/04/16 17:59:48.000" "2019/04/16 17:59:48.800"
|
||||
"2019/04/16 17:59:58.000" "2019/04/16 17:59:58.800"
|
||||
"2019/04/16 18:00:08.000" "2019/04/16 18:00:08.800"
|
||||
"2019/04/16 18:00:18.000" "2019/04/16 18:00:18.800"
|
||||
"2019/04/16 18:00:28.000" "2019/04/16 18:00:28.800"
|
||||
"2019/04/16 18:00:38.000" "2019/04/16 18:00:38.800"
|
||||
"2019/04/16 18:01:41.000" "2019/04/16 18:01:41.800"
|
||||
"2019/04/16 18:01:51.000" "2019/04/16 18:01:51.800"
|
||||
"2019/04/16 18:02:01.000" "2019/04/16 18:02:01.800"
|
||||
"2019/04/16 18:02:11.000" "2019/04/16 18:02:11.800"
|
||||
"2019/04/16 18:02:21.000" "2019/04/16 18:02:21.800"
|
||||
"2019/04/16 18:02:31.000" "2019/04/16 18:02:31.800"
|
||||
"2019/04/16 18:02:41.000" "2019/04/16 18:02:41.800"
|
||||
"2019/04/16 18:02:51.000" "2019/04/16 18:02:51.800"
|
||||
"2019/04/16 18:03:01.000" "2019/04/16 18:03:01.800"
|
||||
"2019/04/16 18:03:11.000" "2019/04/16 18:03:11.800"
|
||||
"2019/04/16 18:03:21.000" "2019/04/16 18:03:21.800"
|
||||
"2019/04/30 21:02:07.000" "2019/04/30 21:02:07.800"
|
||||
"2019/04/30 21:02:17.000" "2019/04/30 21:02:17.800"
|
||||
"2019/04/30 21:02:27.000" "2019/04/30 21:02:27.800"
|
||||
"2019/04/30 21:02:37.000" "2019/04/30 21:02:37.800"
|
||||
"2019/04/30 21:02:47.000" "2019/04/30 21:02:47.800"
|
||||
"2019/04/30 21:02:57.000" "2019/04/30 21:02:57.800"
|
||||
"2019/04/30 21:03:07.000" "2019/04/30 21:03:07.800"
|
||||
"2019/04/30 21:03:17.000" "2019/04/30 21:03:17.800"
|
||||
"2019/04/30 21:03:27.000" "2019/04/30 21:03:27.800"
|
||||
"2019/04/30 21:03:37.000" "2019/04/30 21:03:37.800"
|
||||
"2019/04/30 21:03:47.000" "2019/04/30 21:03:47.800"
|
||||
"2019/04/30 21:03:57.000" "2019/04/30 21:03:57.800"
|
||||
"2019/04/30 21:04:42.000" "2019/04/30 21:04:42.800"
|
||||
"2019/04/30 21:04:52.000" "2019/04/30 21:04:52.800"
|
||||
"2019/04/30 21:05:02.000" "2019/04/30 21:05:02.800"
|
||||
"2019/04/30 21:05:12.000" "2019/04/30 21:05:12.800"
|
||||
"2019/04/30 21:05:22.000" "2019/04/30 21:05:22.800"
|
||||
"2019/04/30 21:05:32.000" "2019/04/30 21:05:32.800"
|
||||
"2019/04/30 21:05:42.000" "2019/04/30 21:05:42.800"
|
||||
"2019/04/30 21:05:52.000" "2019/04/30 21:05:52.800"
|
||||
"2019/04/30 21:06:02.000" "2019/04/30 21:06:02.800"
|
||||
"2019/04/30 21:06:12.000" "2019/04/30 21:06:12.800"
|
||||
"2019/04/30 21:06:22.000" "2019/04/30 21:06:22.800"
|
||||
"2019/04/30 21:06:32.000" "2019/04/30 21:06:32.800"
|
||||
"2019/04/30 21:07:04.000" "2019/04/30 21:07:04.800"
|
||||
"2019/04/30 21:07:14.000" "2019/04/30 21:07:14.800"
|
||||
"2019/04/30 21:07:24.000" "2019/04/30 21:07:24.800"
|
||||
"2019/04/30 21:07:34.000" "2019/04/30 21:07:34.800"
|
||||
"2019/04/30 21:07:44.000" "2019/04/30 21:07:44.800"
|
||||
"2019/04/30 21:07:54.000" "2019/04/30 21:07:54.800"
|
||||
"2019/04/30 21:08:04.000" "2019/04/30 21:08:04.800"
|
||||
"2019/04/30 21:08:14.000" "2019/04/30 21:08:14.800"
|
||||
"2019/04/30 21:08:24.000" "2019/04/30 21:08:24.800"
|
||||
"2019/04/30 21:08:34.000" "2019/04/30 21:08:34.800"
|
||||
"2019/04/30 21:08:44.000" "2019/04/30 21:08:44.800"
|
||||
"2019/04/30 21:08:54.000" "2019/04/30 21:08:54.800"
|
||||
"2019/04/30 21:09:04.000" "2019/04/30 21:09:04.800"
|
||||
"2019/04/30 21:09:14.000" "2019/04/30 21:09:14.800"
|
||||
"2019/04/30 21:09:24.000" "2019/04/30 21:09:24.800"
|
||||
"2019/04/30 21:10:13.000" "2019/04/30 21:10:13.800"
|
||||
"2019/04/30 21:10:23.000" "2019/04/30 21:10:23.800"
|
||||
"2019/04/30 21:10:33.000" "2019/04/30 21:10:33.800"
|
||||
"2019/04/30 21:10:43.000" "2019/04/30 21:10:43.800"
|
||||
"2019/04/30 21:10:53.000" "2019/04/30 21:10:53.800"
|
||||
"2019/04/30 21:11:03.000" "2019/04/30 21:11:03.800"
|
||||
"2019/04/30 21:11:13.000" "2019/04/30 21:11:13.800"
|
||||
"2019/04/30 21:11:23.000" "2019/04/30 21:11:23.800"
|
||||
"2019/04/30 21:11:33.000" "2019/04/30 21:11:33.800"
|
||||
@@ -1,110 +0,0 @@
|
||||
"2019/05/25 03:57:58.000" "2019/05/25 03:57:58.800"
|
||||
"2019/05/25 03:58:08.000" "2019/05/25 03:58:08.800"
|
||||
"2019/05/25 03:58:18.000" "2019/05/25 03:58:18.800"
|
||||
"2019/05/25 03:58:28.000" "2019/05/25 03:58:28.800"
|
||||
"2019/05/25 03:58:38.000" "2019/05/25 03:58:38.800"
|
||||
"2019/05/25 03:58:48.000" "2019/05/25 03:58:48.800"
|
||||
"2019/05/25 03:58:58.000" "2019/05/25 03:58:58.800"
|
||||
"2019/05/25 03:59:08.000" "2019/05/25 03:59:08.800"
|
||||
"2019/05/25 04:00:14.000" "2019/05/25 04:00:14.800"
|
||||
"2019/05/25 04:00:24.000" "2019/05/25 04:00:24.800"
|
||||
"2019/05/25 04:00:34.000" "2019/05/25 04:00:34.800"
|
||||
"2019/05/25 04:00:44.000" "2019/05/25 04:00:44.800"
|
||||
"2019/05/25 04:00:54.000" "2019/05/25 04:00:54.800"
|
||||
"2019/05/25 04:01:04.000" "2019/05/25 04:01:04.800"
|
||||
"2019/05/25 04:01:14.000" "2019/05/25 04:01:14.800"
|
||||
"2019/05/25 04:01:24.000" "2019/05/25 04:01:24.800"
|
||||
"2019/05/25 04:01:34.000" "2019/05/25 04:01:34.800"
|
||||
"2019/05/25 04:01:44.000" "2019/05/25 04:01:44.800"
|
||||
"2019/05/25 04:01:54.000" "2019/05/25 04:01:54.800"
|
||||
"2019/05/25 04:02:04.000" "2019/05/25 04:02:04.800"
|
||||
"2019/05/25 04:02:14.000" "2019/05/25 04:02:14.800"
|
||||
"2019/05/25 04:03:05.000" "2019/05/25 04:03:05.800"
|
||||
"2019/05/25 04:03:15.000" "2019/05/25 04:03:15.800"
|
||||
"2019/05/25 04:03:25.000" "2019/05/25 04:03:25.800"
|
||||
"2019/05/25 04:03:35.000" "2019/05/25 04:03:35.800"
|
||||
"2019/05/25 04:03:45.000" "2019/05/25 04:03:45.800"
|
||||
"2019/05/25 04:03:55.000" "2019/05/25 04:03:55.800"
|
||||
"2019/05/25 04:04:05.000" "2019/05/25 04:04:05.800"
|
||||
"2019/05/25 04:04:15.000" "2019/05/25 04:04:15.800"
|
||||
"2019/05/25 04:04:25.000" "2019/05/25 04:04:25.800"
|
||||
"2019/05/25 04:04:35.000" "2019/05/25 04:04:35.800"
|
||||
"2019/05/25 04:04:45.000" "2019/05/25 04:04:45.800"
|
||||
"2019/05/25 04:04:55.000" "2019/05/25 04:04:55.800"
|
||||
"2019/05/25 04:05:05.000" "2019/05/25 04:05:05.800"
|
||||
"2019/05/25 04:05:15.000" "2019/05/25 04:05:15.800"
|
||||
"2019/05/25 04:05:25.000" "2019/05/25 04:05:25.800"
|
||||
"2019/05/25 04:06:19.000" "2019/05/25 04:06:19.800"
|
||||
"2019/05/25 04:06:29.000" "2019/05/25 04:06:29.800"
|
||||
"2019/05/25 04:06:39.000" "2019/05/25 04:06:39.800"
|
||||
"2019/05/25 04:06:49.000" "2019/05/25 04:06:49.800"
|
||||
"2019/05/25 04:06:59.000" "2019/05/25 04:06:59.800"
|
||||
"2019/05/25 04:07:09.000" "2019/05/25 04:07:09.800"
|
||||
"2019/05/25 04:07:19.000" "2019/05/25 04:07:19.800"
|
||||
"2019/05/25 04:07:29.000" "2019/05/25 04:07:29.800"
|
||||
"2019/05/25 04:07:39.000" "2019/05/25 04:07:39.800"
|
||||
"2019/05/25 04:07:49.000" "2019/05/25 04:07:49.800"
|
||||
"2019/05/25 04:07:59.000" "2019/05/25 04:07:59.800"
|
||||
"2019/05/25 04:08:09.000" "2019/05/25 04:08:09.800"
|
||||
"2019/05/25 04:08:19.000" "2019/05/25 04:08:19.800"
|
||||
"2019/05/25 04:08:29.000" "2019/05/25 04:08:29.800"
|
||||
"2019/05/25 04:08:39.000" "2019/05/25 04:08:39.800"
|
||||
"2019/05/25 04:08:49.000" "2019/05/25 04:08:49.800"
|
||||
"2019/05/25 04:08:59.000" "2019/05/25 04:08:59.800"
|
||||
"2019/05/25 04:09:47.000" "2019/05/25 04:09:47.800"
|
||||
"2019/05/25 04:09:57.000" "2019/05/25 04:09:57.800"
|
||||
"2019/05/25 04:10:07.000" "2019/05/25 04:10:07.800"
|
||||
"2019/05/25 04:10:17.000" "2019/05/25 04:10:17.800"
|
||||
"2019/05/25 04:10:27.000" "2019/05/25 04:10:27.800"
|
||||
"2019/05/25 04:10:37.000" "2019/05/25 04:10:37.800"
|
||||
"2019/05/25 04:10:47.000" "2019/05/25 04:10:47.800"
|
||||
"2019/05/25 04:10:57.000" "2019/05/25 04:10:57.800"
|
||||
"2019/05/25 04:11:07.000" "2019/05/25 04:11:07.800"
|
||||
"2019/05/25 04:11:17.000" "2019/05/25 04:11:17.800"
|
||||
"2019/05/25 04:11:27.000" "2019/05/25 04:11:27.800"
|
||||
"2019/05/25 04:11:37.000" "2019/05/25 04:11:37.800"
|
||||
"2019/05/25 04:11:47.000" "2019/05/25 04:11:47.800"
|
||||
"2019/05/25 04:11:57.000" "2019/05/25 04:11:57.800"
|
||||
"2019/05/25 04:12:07.000" "2019/05/25 04:12:07.800"
|
||||
"2019/05/25 04:12:17.000" "2019/05/25 04:12:17.800"
|
||||
"2019/05/25 04:12:27.000" "2019/05/25 04:12:27.800"
|
||||
"2019/05/25 04:13:28.000" "2019/05/25 04:13:28.800"
|
||||
"2019/05/25 04:13:38.000" "2019/05/25 04:13:38.800"
|
||||
"2019/05/25 04:13:48.000" "2019/05/25 04:13:48.800"
|
||||
"2019/05/25 04:13:58.000" "2019/05/25 04:13:58.800"
|
||||
"2019/05/25 04:14:08.000" "2019/05/25 04:14:08.800"
|
||||
"2019/05/25 04:14:18.000" "2019/05/25 04:14:18.800"
|
||||
"2019/05/25 04:14:28.000" "2019/05/25 04:14:28.800"
|
||||
"2019/05/25 04:14:38.000" "2019/05/25 04:14:38.800"
|
||||
"2019/05/25 04:14:48.000" "2019/05/25 04:14:48.800"
|
||||
"2019/05/25 04:14:58.000" "2019/05/25 04:14:58.800"
|
||||
"2019/05/25 04:15:08.000" "2019/05/25 04:15:08.800"
|
||||
"2019/05/25 04:15:18.000" "2019/05/25 04:15:18.800"
|
||||
"2019/05/25 04:15:28.000" "2019/05/25 04:15:28.800"
|
||||
"2019/05/25 04:15:38.000" "2019/05/25 04:15:38.800"
|
||||
"2019/05/25 04:15:48.000" "2019/05/25 04:15:48.800"
|
||||
"2019/05/25 04:15:58.000" "2019/05/25 04:15:58.800"
|
||||
"2019/05/25 04:17:00.000" "2019/05/25 04:17:00.800"
|
||||
"2019/05/25 04:17:10.000" "2019/05/25 04:17:10.800"
|
||||
"2019/05/25 04:17:20.000" "2019/05/25 04:17:20.800"
|
||||
"2019/05/25 04:17:30.000" "2019/05/25 04:17:30.800"
|
||||
"2019/05/25 04:17:40.000" "2019/05/25 04:17:40.800"
|
||||
"2019/05/25 04:17:50.000" "2019/05/25 04:17:50.800"
|
||||
"2019/05/25 04:18:00.000" "2019/05/25 04:18:00.800"
|
||||
"2019/05/25 04:18:10.000" "2019/05/25 04:18:10.800"
|
||||
"2019/05/25 04:18:20.000" "2019/05/25 04:18:20.800"
|
||||
"2019/05/25 04:18:30.000" "2019/05/25 04:18:30.800"
|
||||
"2019/05/25 04:18:40.000" "2019/05/25 04:18:40.800"
|
||||
"2019/05/25 04:18:50.000" "2019/05/25 04:18:50.800"
|
||||
"2019/05/25 04:19:00.000" "2019/05/25 04:19:00.800"
|
||||
"2019/05/25 04:19:59.000" "2019/05/25 04:19:59.800"
|
||||
"2019/05/25 04:20:09.000" "2019/05/25 04:20:09.800"
|
||||
"2019/05/25 04:20:19.000" "2019/05/25 04:20:19.800"
|
||||
"2019/05/25 04:20:29.000" "2019/05/25 04:20:29.800"
|
||||
"2019/05/25 04:20:39.000" "2019/05/25 04:20:39.800"
|
||||
"2019/05/25 04:20:49.000" "2019/05/25 04:20:49.800"
|
||||
"2019/05/25 04:20:59.000" "2019/05/25 04:20:59.800"
|
||||
"2019/05/25 04:21:09.000" "2019/05/25 04:21:09.800"
|
||||
"2019/05/25 04:21:19.000" "2019/05/25 04:21:19.800"
|
||||
"2019/05/25 04:21:29.000" "2019/05/25 04:21:29.800"
|
||||
"2019/05/25 04:21:39.000" "2019/05/25 04:21:39.800"
|
||||
@@ -1 +0,0 @@
|
||||
"2019/05/25 03:57:58.000" "2019/05/25 04:21:40.000"
|
||||
@@ -1,128 +0,0 @@
|
||||
local BENNU_BODY = "2101955"
|
||||
local OSIRIS_REX_BODY = "OSIRIS-REX"
|
||||
|
||||
return {
|
||||
------------------------
|
||||
-- Bennu --
|
||||
------------------------
|
||||
{
|
||||
Name = "Bennu2",
|
||||
Parent = "SolarSystemBarycenter",
|
||||
|
||||
Ephemeris = {
|
||||
Type = "Spice",
|
||||
Body = BENNU_BODY,
|
||||
-- Reference = "ECLIPJ2000",
|
||||
Reference = "GALACTIC",
|
||||
Observer = "SUN",
|
||||
},
|
||||
|
||||
Renderable = {
|
||||
Frame = "IAU_BENNU",
|
||||
Body = BENNU_BODY,
|
||||
|
||||
Type = "RenderableGlobe",
|
||||
Radii = {275.0, 275.0, 246.0},
|
||||
SegmentsPerPatch = 64,
|
||||
TextureInitData = {
|
||||
ColorTextureMinimumSize = 1024,
|
||||
OverlayMinimumSize = 1024,
|
||||
HeightMapMinimumSize = 64,
|
||||
},
|
||||
Textures = {
|
||||
ColorTextures = {
|
||||
{
|
||||
Type = "SingleImage",
|
||||
Name = "Basic",
|
||||
FilePath = "../debugglobe/textures/test_tile.png",
|
||||
Enabled = true,
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
GuiName = "/Solar/Bennu"
|
||||
},
|
||||
|
||||
{
|
||||
Name = "BennuTrail",
|
||||
Parent = "SolarSystemBarycenter",
|
||||
Renderable = {
|
||||
Type = "RenderableTrail",
|
||||
Body = BENNU_BODY,
|
||||
Frame = "GALACTIC",
|
||||
Observer = "SUN",
|
||||
RGB = { 0.4, 0.0, 0.7},
|
||||
TropicalOrbitPeriod = 436.649,
|
||||
EarthOrbitRatio = 1.3559, -- worst parameter I've ever seen
|
||||
DayLength = 4.288 -- why this for a path??
|
||||
},
|
||||
GuiName = "/Solar/BennuTrail"
|
||||
},
|
||||
|
||||
|
||||
------------------------
|
||||
-- Osiris Rex --
|
||||
------------------------
|
||||
{
|
||||
Name = "OsirisRex",
|
||||
Parent = "SolarSystemBarycenter",
|
||||
Renderable = {
|
||||
Type = "RenderablePlanet",
|
||||
Frame = "GALACTIC",
|
||||
Body = OSIRIS_REX_BODY,
|
||||
|
||||
Type = "RenderableGlobe",
|
||||
Radii = {15.0, 15.0, 15.0},
|
||||
SegmentsPerPatch = 64,
|
||||
TextureInitData = {
|
||||
ColorTextureMinimumSize = 1024,
|
||||
OverlayMinimumSize = 1024,
|
||||
HeightMapMinimumSize = 64,
|
||||
},
|
||||
Textures = {
|
||||
ColorTextures = {
|
||||
{
|
||||
Type = "SingleImage",
|
||||
Name = "Basic",
|
||||
FilePath = "../debugglobe/textures/test_tile.png",
|
||||
Enabled = true,
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Ephemeris = {
|
||||
Type = "Spice",
|
||||
Body = OSIRIS_REX_BODY,
|
||||
-- Reference = "ECLIPJ2000",
|
||||
Reference = "GALACTIC",
|
||||
Observer = "SUN",
|
||||
},
|
||||
|
||||
GuiName = "/Solar/OsirisRex"
|
||||
},
|
||||
|
||||
{
|
||||
Name = "OsirisRexPath",
|
||||
Parent = "SolarSystemBarycenter",
|
||||
Renderable = {
|
||||
Type = "RenderablePath",
|
||||
Body = OSIRIS_REX_BODY,
|
||||
Frame = "GALACTIC",
|
||||
Observer = "SUN",
|
||||
RGB = { 0.8, 0.8, 0.2},
|
||||
TimeSteps = 900,
|
||||
Textures = {
|
||||
Type = "simple",
|
||||
Color = "textures/glare_blue.png",
|
||||
-- need to add different texture
|
||||
},
|
||||
DrawLine = true,
|
||||
|
||||
StartTime = "2016 SEP 8 12:00:00",
|
||||
EndTime = "2022 OCT 17 12:00:00"
|
||||
},
|
||||
GuiName = "/Solar/OsirisRexTrail"
|
||||
},
|
||||
}
|
||||
|
Before Width: | Height: | Size: 159 KiB |
|
Before Width: | Height: | Size: 2.4 MiB |
|
Before Width: | Height: | Size: 645 KiB |
|
Before Width: | Height: | Size: 810 KiB |
|
Before Width: | Height: | Size: 3.1 MiB |
|
Before Width: | Height: | Size: 3.6 MiB |
|
Before Width: | Height: | Size: 8.9 KiB |
@@ -38,7 +38,7 @@ public:
|
||||
Ephemeris(const ghoul::Dictionary& dictionary);
|
||||
virtual ~Ephemeris();
|
||||
virtual bool initialize();
|
||||
virtual const psc& position() const = 0;
|
||||
virtual const glm::dvec3& position() const = 0;
|
||||
virtual const glm::dmat3& worldRotationMatrix() const = 0;
|
||||
virtual void update(const UpdateData& data);
|
||||
|
||||
|
||||
@@ -76,8 +76,8 @@ public:
|
||||
void setParent(SceneGraphNode* parent);
|
||||
//bool abandonChild(SceneGraphNode* child);
|
||||
|
||||
const psc& position() const;
|
||||
psc worldPosition() const;
|
||||
const glm::dvec3& position() const;
|
||||
glm::dvec3 worldPosition() const;
|
||||
|
||||
const glm::dmat3& worldRotationMatrix() const;
|
||||
|
||||
@@ -104,7 +104,7 @@ public:
|
||||
private:
|
||||
bool sphereInsideFrustum(const psc& s_pos, const PowerScaledScalar& s_rad, const Camera* camera);
|
||||
|
||||
psc calculateWorldPosition() const;
|
||||
glm::dvec3 calculateWorldPosition() const;
|
||||
|
||||
std::vector<SceneGraphNode*> _children;
|
||||
SceneGraphNode* _parent;
|
||||
@@ -118,7 +118,8 @@ private:
|
||||
bool _boundingSphereVisible;
|
||||
PowerScaledScalar _boundingSphere;
|
||||
|
||||
psc _worldPositionCached;
|
||||
//psc _worldPositionCached;
|
||||
glm::dvec3 _worldPositionCached;
|
||||
};
|
||||
|
||||
} // namespace openspace
|
||||
|
||||
@@ -46,8 +46,12 @@ struct UpdateData {
|
||||
|
||||
struct RenderData {
|
||||
const Camera& camera;
|
||||
// psc position to be removed in favor of the double precision position
|
||||
// Now both are here due to dependencies of the psc position
|
||||
psc position;
|
||||
bool doPerformanceMeasurement;
|
||||
glm::dvec3 positionVec3;
|
||||
|
||||
};
|
||||
|
||||
struct RaycasterTask {
|
||||
|
||||
@@ -73,7 +73,7 @@ SpiceEphemeris::SpiceEphemeris(const ghoul::Dictionary& dictionary)
|
||||
}
|
||||
}
|
||||
|
||||
const psc& SpiceEphemeris::position() const {
|
||||
const glm::dvec3& SpiceEphemeris::position() const {
|
||||
return _position;
|
||||
}
|
||||
|
||||
@@ -103,8 +103,11 @@ void SpiceEphemeris::update(const UpdateData& data) {
|
||||
// "GALACTIC", "NONE", _time, position, lightTime);
|
||||
//}
|
||||
//
|
||||
_position = psc::CreatePowerScaledCoordinate(position.x, position.y, position.z);
|
||||
_position[3] += 3;
|
||||
|
||||
|
||||
//_position = psc::CreatePowerScaledCoordinate(position.x, position.y, position.z);
|
||||
//_position[3] += 3;
|
||||
_position = position * glm::pow(10.0, 3.0);
|
||||
}
|
||||
|
||||
} // namespace openspace
|
||||
@@ -34,14 +34,14 @@ namespace openspace {
|
||||
class SpiceEphemeris : public Ephemeris {
|
||||
public:
|
||||
SpiceEphemeris(const ghoul::Dictionary& dictionary);
|
||||
virtual const psc& position() const;
|
||||
virtual const glm::dvec3& position() const;
|
||||
virtual const glm::dmat3& worldRotationMatrix() const;
|
||||
void update(const UpdateData& data) override;
|
||||
|
||||
private:
|
||||
std::string _targetName;
|
||||
std::string _originName;
|
||||
psc _position;
|
||||
glm::dvec3 _position;
|
||||
glm::dmat3 _worldRotationMatrix;
|
||||
bool _kernelsLoadedSuccessfully;
|
||||
//std::string _ghosting;
|
||||
|
||||
@@ -31,19 +31,19 @@ namespace {
|
||||
namespace openspace {
|
||||
|
||||
StaticEphemeris::StaticEphemeris(const ghoul::Dictionary& dictionary)
|
||||
: _position(0.f, 0.f, 0.f, 0.f)
|
||||
: _position(0.f, 0.f, 0.f)
|
||||
{
|
||||
const bool hasPosition = dictionary.hasKeyAndValue<glm::vec4>(KeyPosition);
|
||||
if (hasPosition) {
|
||||
glm::vec4 tmp;
|
||||
glm::dvec4 tmp;
|
||||
dictionary.getValue(KeyPosition, tmp);
|
||||
_position = tmp;
|
||||
_position = tmp.xyz() * glm::pow(10.0, tmp.w);
|
||||
}
|
||||
}
|
||||
|
||||
StaticEphemeris::~StaticEphemeris() {}
|
||||
|
||||
const psc& StaticEphemeris::position() const {
|
||||
const glm::dvec3& StaticEphemeris::position() const {
|
||||
return _position;
|
||||
}
|
||||
|
||||
|
||||
@@ -34,11 +34,11 @@ public:
|
||||
StaticEphemeris(const ghoul::Dictionary& dictionary
|
||||
= ghoul::Dictionary());
|
||||
virtual ~StaticEphemeris();
|
||||
virtual const psc& position() const;
|
||||
virtual const glm::dvec3& position() const;
|
||||
virtual const glm::dmat3& worldRotationMatrix() const;
|
||||
virtual void update(const UpdateData& data) override;
|
||||
private:
|
||||
psc _position;
|
||||
glm::dvec3 _position;
|
||||
};
|
||||
|
||||
} // namespace openspace
|
||||
|
||||
@@ -74,9 +74,9 @@ namespace openspace {
|
||||
);
|
||||
|
||||
Vertex vv;
|
||||
//memcpy(vv.location, v.location, sizeof(GLfloat) * 3);
|
||||
memcpy(vv.location, glm::value_ptr(p.vec4()), sizeof(GLfloat) * 4);
|
||||
//vv.location[3] = 1.0;
|
||||
memcpy(vv.location, v.location, sizeof(GLfloat) * 3);
|
||||
vv.location[3] = 1.0;
|
||||
//memcpy(vv.location, glm::value_ptr(p.vec4()), sizeof(GLfloat) * 4);
|
||||
memcpy(vv.tex, v.tex, sizeof(GLfloat) * 2);
|
||||
memcpy(vv.normal, v.normal, sizeof(GLfloat) * 3);
|
||||
_vertices.push_back(vv);
|
||||
|
||||
@@ -199,23 +199,20 @@ void RenderableModel::render(const RenderData& data) {
|
||||
}
|
||||
|
||||
// Calculate variables to be used as uniform variables in shader
|
||||
glm::dvec3 bodyPosition = data.position.dvec3();
|
||||
glm::dvec3 bodyPosition = data.positionVec3;
|
||||
|
||||
// Model transform and view transform needs to be in double precision
|
||||
glm::dmat4 modelTransform =
|
||||
glm::translate(glm::dmat4(1.0), bodyPosition) * // Translation
|
||||
glm::dmat4(_stateMatrix); // Rotation
|
||||
glm::dmat4 modelViewTransform = data.camera.combinedViewMatrix() * modelTransform;
|
||||
glm::vec3 cameraDirectionWorldSpace = data.camera.viewDirectionWorldSpace();
|
||||
glm::vec3 directionToSun = glm::normalize(_sunPosition.vec3() - glm::vec3(bodyPosition));
|
||||
glm::vec3 directionToSunViewSpace = glm::mat3(data.camera.combinedViewMatrix()) * directionToSun;
|
||||
|
||||
_programObject->setUniform("cameraDirectionWorldSpace", cameraDirectionWorldSpace);
|
||||
_programObject->setUniform("transparency", _alpha);
|
||||
_programObject->setUniform("directionToSunViewSpace", directionToSunViewSpace);
|
||||
_programObject->setUniform("modelViewTransform", glm::mat4(modelViewTransform));
|
||||
_programObject->setUniform("projectionTransform", data.camera.projectionMatrix());
|
||||
_programObject->setUniform("viewTransform", glm::mat4(data.camera.combinedViewMatrix()));
|
||||
_programObject->setUniform("performShading", _performShading);
|
||||
_programObject->setUniform("fading", _fading);
|
||||
|
||||
|
||||
@@ -34,8 +34,8 @@ uniform sampler2D texture1;
|
||||
// Input from the vertex shader
|
||||
in vec2 vs_st;
|
||||
in vec3 vs_normalViewSpace;
|
||||
in vec3 vs_cameraDirectionViewSpace;
|
||||
in vec4 vs_position;
|
||||
in vec4 vs_positionCameraSpace;
|
||||
in vec4 vs_positionScreenSpace;
|
||||
|
||||
#include "PowerScaling/powerScaling_fs.hglsl"
|
||||
#include "fragment.glsl"
|
||||
@@ -43,18 +43,19 @@ in vec4 vs_position;
|
||||
Fragment getFragment() {
|
||||
vec4 textureSample = texture(texture1, vs_st);
|
||||
|
||||
vec3 colorDiffuse = textureSample.rgb;
|
||||
vec3 colorSpecular = vec3(1);
|
||||
vec3 diffuseAlbedo = textureSample.rgb;
|
||||
vec3 specularAlbedo = vec3(1);
|
||||
|
||||
vec3 color;
|
||||
|
||||
if (performShading) {
|
||||
// Some of these values could be passed in as uniforms
|
||||
vec3 lightColorAmbient = vec3(1);
|
||||
vec3 lightColor = vec3(1);
|
||||
|
||||
vec3 n = normalize(vs_normalViewSpace);
|
||||
vec3 l = directionToSunViewSpace;
|
||||
vec3 c = normalize(vs_cameraDirectionViewSpace);
|
||||
vec3 c = normalize(vs_positionCameraSpace.xyz);
|
||||
vec3 r = reflect(l, n);
|
||||
|
||||
float ambientIntensity = 0.2;
|
||||
@@ -63,23 +64,23 @@ Fragment getFragment() {
|
||||
|
||||
float diffuseCosineFactor = dot(n,l);
|
||||
float specularCosineFactor = dot(c,r);
|
||||
float specularPower = 10;
|
||||
float specularPower = 100;
|
||||
|
||||
vec3 ambient = ambientIntensity * lightColorAmbient * colorDiffuse;
|
||||
vec3 diffuse = specularIntensity * lightColor * colorDiffuse * max(diffuseCosineFactor, 0);
|
||||
vec3 specular = specularIntensity * lightColor * colorSpecular * pow(max(specularCosineFactor, 0), specularPower);
|
||||
vec3 ambientColor = ambientIntensity * lightColorAmbient * diffuseAlbedo;
|
||||
vec3 diffuseColor = specularIntensity * lightColor * diffuseAlbedo * max(diffuseCosineFactor, 0);
|
||||
vec3 specularColor = specularIntensity * lightColor * specularAlbedo * pow(max(specularCosineFactor, 0), specularPower);
|
||||
|
||||
color = ambient + diffuse + specular;
|
||||
color = ambientColor + diffuseColor + specularColor;
|
||||
}
|
||||
else {
|
||||
color = colorDiffuse;
|
||||
color = diffuseAlbedo;
|
||||
}
|
||||
|
||||
float alpha = fading * transparency;
|
||||
|
||||
Fragment frag;
|
||||
frag.color = vec4(color, alpha);
|
||||
frag.depth = vs_position.w;
|
||||
frag.depth = vs_positionScreenSpace.w;
|
||||
|
||||
return frag;
|
||||
}
|
||||
|
||||
@@ -31,7 +31,6 @@ layout(location = 2) in vec3 in_normal;
|
||||
|
||||
// Uniforms
|
||||
uniform mat4 modelViewTransform;
|
||||
uniform mat4 viewTransform;
|
||||
uniform mat4 projectionTransform;
|
||||
|
||||
uniform vec3 cameraDirectionWorldSpace;
|
||||
@@ -41,22 +40,22 @@ uniform float _magnification;
|
||||
// Outputs
|
||||
out vec2 vs_st;
|
||||
out vec3 vs_normalViewSpace;
|
||||
out vec3 vs_cameraDirectionViewSpace;
|
||||
out vec4 vs_position;
|
||||
out vec4 vs_positionScreenSpace;
|
||||
out vec4 vs_positionCameraSpace;
|
||||
|
||||
#include "PowerScaling/powerScaling_vs.hglsl"
|
||||
|
||||
void main() {
|
||||
vec4 position = in_position;
|
||||
position.xyz *= pow(10, _magnification);
|
||||
vec4 positionViewSpace = modelViewTransform * position;
|
||||
vec4 positionClipSpace = projectionTransform * positionViewSpace;
|
||||
vs_positionCameraSpace = modelViewTransform * position;
|
||||
vec4 positionClipSpace = projectionTransform * vs_positionCameraSpace;
|
||||
|
||||
// Write output
|
||||
vs_st = in_st;
|
||||
vs_position = z_normalization(positionClipSpace);
|
||||
gl_Position = vs_position;
|
||||
vs_positionScreenSpace = z_normalization(positionClipSpace);
|
||||
gl_Position = vs_positionScreenSpace;
|
||||
|
||||
// The normal transform should be the transposed inverse of the model transform?
|
||||
vs_normalViewSpace = normalize(mat3(modelViewTransform) * in_normal);
|
||||
vs_cameraDirectionViewSpace = normalize(mat3(viewTransform) * cameraDirectionWorldSpace);
|
||||
}
|
||||
@@ -361,7 +361,7 @@ std::string RenderablePlaneProjection::findClosestTarget(double currentTime) {
|
||||
found = SpiceManager::ref().isTargetInFieldOfView(targetBody, _spacecraft, _instrument, SpiceManager::FieldOfViewMethod::Ellipsoid, {}, currentTime);
|
||||
if (found){
|
||||
targets.push_back(node->name()); // get name from propertyOwner
|
||||
distance = (node->worldPosition() - spacecraftPos).length();
|
||||
distance = (psc::CreatePowerScaledCoordinate(node->worldPosition().x, node->worldPosition().y, node->worldPosition().z) - spacecraftPos).length();
|
||||
if (distance < min)
|
||||
closestTarget = targetBody;
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ return {
|
||||
-- Scene = "${SCENE}/dawn.scene",
|
||||
-- Scene = "${SCENE}/newhorizons.scene",
|
||||
Scene = "${SCENE}/osirisrex.scene",
|
||||
--Scene = "${SCENE}/debugmodel.scene",
|
||||
|
||||
Paths = {
|
||||
SGCT = "${BASE_PATH}/config/sgct",
|
||||
|
||||
@@ -707,7 +707,7 @@ void InteractionHandler::resetCameraDirection() {
|
||||
LINFO("Setting camera direction to point at focus node.");
|
||||
|
||||
glm::dquat rotation = _camera->rotationQuaternion();
|
||||
glm::dvec3 focusPosition = focusNode()->worldPosition().dvec3();
|
||||
glm::dvec3 focusPosition = focusNode()->worldPosition();
|
||||
glm::dvec3 cameraPosition = _camera->positionVec3();
|
||||
glm::dvec3 lookUpVector = _camera->lookUpVectorWorldSpace();
|
||||
|
||||
|
||||
@@ -150,7 +150,7 @@ InteractionMode::~InteractionMode() {
|
||||
|
||||
void InteractionMode::setFocusNode(SceneGraphNode* focusNode) {
|
||||
_focusNode = focusNode;
|
||||
_previousFocusNodePosition = _focusNode->worldPosition().dvec3();
|
||||
_previousFocusNodePosition = _focusNode->worldPosition();
|
||||
_previousFocusNodeRotation = glm::quat_cast(_focusNode->worldRotationMatrix());
|
||||
}
|
||||
|
||||
@@ -296,7 +296,7 @@ void OrbitalInteractionMode::updateCameraStateFromMouseStates(Camera& camera) {
|
||||
dvec3 camPos = camera.positionVec3();
|
||||
|
||||
// Follow focus nodes movement
|
||||
dvec3 centerPos = _focusNode->worldPosition().dvec3();
|
||||
dvec3 centerPos = _focusNode->worldPosition();
|
||||
dvec3 focusNodeDiff = centerPos - _previousFocusNodePosition;
|
||||
_previousFocusNodePosition = centerPos;
|
||||
camPos += focusNodeDiff;
|
||||
@@ -417,7 +417,7 @@ void GlobeBrowsingInteractionMode::updateCameraStateFromMouseStates(Camera& came
|
||||
|
||||
// Read the current state of the camera and focusnode
|
||||
dvec3 camPos = camera.positionVec3();
|
||||
dvec3 centerPos = _focusNode->worldPosition().dvec3();
|
||||
dvec3 centerPos = _focusNode->worldPosition();
|
||||
|
||||
// Follow focus nodes movement
|
||||
dvec3 focusNodeDiff = centerPos - _previousFocusNodePosition;
|
||||
|
||||
@@ -173,7 +173,7 @@ bool SceneGraphNode::deinitialize() {
|
||||
void SceneGraphNode::update(const UpdateData& data) {
|
||||
_worldPositionCached = calculateWorldPosition();
|
||||
UpdateData newUpdateData = data;
|
||||
newUpdateData.position = worldPosition().dvec3();
|
||||
newUpdateData.position = worldPosition();
|
||||
if (_ephemeris) {
|
||||
if (data.doPerformanceMeasurement) {
|
||||
glFinish();
|
||||
@@ -246,9 +246,9 @@ void SceneGraphNode::evaluate(const Camera* camera, const psc& parentPosition) {
|
||||
}
|
||||
|
||||
void SceneGraphNode::render(const RenderData& data, RendererTasks& tasks) {
|
||||
const psc thisPosition = _worldPositionCached;
|
||||
const psc thisPositionPSC = psc::CreatePowerScaledCoordinate(_worldPositionCached.x, _worldPositionCached.y, _worldPositionCached.z);
|
||||
|
||||
RenderData newData = {data.camera, thisPosition, data.doPerformanceMeasurement};
|
||||
RenderData newData = {data.camera, thisPositionPSC, data.doPerformanceMeasurement, _worldPositionCached};
|
||||
|
||||
_performanceRecord.renderTime = 0;
|
||||
if (_renderableVisible && _renderable->isVisible() && _renderable->isReady() && _renderable->isEnabled()) {
|
||||
@@ -273,8 +273,8 @@ void SceneGraphNode::render(const RenderData& data, RendererTasks& tasks) {
|
||||
}
|
||||
|
||||
void SceneGraphNode::postRender(const RenderData& data) {
|
||||
const psc thisPosition = _worldPositionCached;
|
||||
RenderData newData = { data.camera, thisPosition, data.doPerformanceMeasurement };
|
||||
const psc thisPosition = psc::CreatePowerScaledCoordinate(_worldPositionCached.x, _worldPositionCached.y, _worldPositionCached.z);
|
||||
RenderData newData = { data.camera, thisPosition, data.doPerformanceMeasurement, _worldPositionCached};
|
||||
|
||||
_performanceRecord.renderTime = 0;
|
||||
if (_renderableVisible && _renderable->isVisible() && _renderable->isReady() && _renderable->isEnabled()) {
|
||||
@@ -314,12 +314,12 @@ void SceneGraphNode::addChild(SceneGraphNode* child) {
|
||||
// return false;
|
||||
//}
|
||||
|
||||
const psc& SceneGraphNode::position() const
|
||||
const glm::dvec3& SceneGraphNode::position() const
|
||||
{
|
||||
return _ephemeris->position();
|
||||
}
|
||||
|
||||
psc SceneGraphNode::worldPosition() const
|
||||
glm::dvec3 SceneGraphNode::worldPosition() const
|
||||
{
|
||||
return _worldPositionCached;
|
||||
}
|
||||
@@ -329,7 +329,7 @@ const glm::dmat3& SceneGraphNode::worldRotationMatrix() const
|
||||
return _ephemeris->worldRotationMatrix();
|
||||
}
|
||||
|
||||
psc SceneGraphNode::calculateWorldPosition() const {
|
||||
glm::dvec3 SceneGraphNode::calculateWorldPosition() const {
|
||||
// recursive up the hierarchy if there are parents available
|
||||
if (_parent) {
|
||||
return _ephemeris->position() + _parent->calculateWorldPosition();
|
||||
|
||||