Solve bug that cause some vertices to be misplaced in MultiModelGeometry and calculate MVP matrix for renderable model in double precision

This commit is contained in:
Kalle Bladin
2016-08-02 19:14:52 -04:00
parent 93d661bfc6
commit 4e0bbe2da0
31 changed files with 63 additions and 4675 deletions

View File

@@ -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 = {

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -1 +0,0 @@
"2019/05/25 03:57:58.000" "2019/05/25 04:21:40.000"

View File

@@ -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"
},
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 645 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 810 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

View File

@@ -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);

View File

@@ -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

View File

@@ -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 {

View File

@@ -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

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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);

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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);
}

View File

@@ -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;
}

View File

@@ -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",

View File

@@ -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();

View File

@@ -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;

View File

@@ -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();