diff --git a/sim_scenes/science/speed_of_light_3d.py b/sim_scenes/science/speed_of_light_3d.py index 7809fe513c65c7a63941f0ecc5bda9cd825f8cd9..4e2f3016c63f17ba09a25808b789d27093e73574 100644 --- a/sim_scenes/science/speed_of_light_3d.py +++ b/sim_scenes/science/speed_of_light_3d.py @@ -29,6 +29,8 @@ init = SpeedOfLightInit(camera_follow_light) # 创建太阳系天体(忽略质量,引力无效,初速度全部为0) bodies = create_solar_system_bodies(ignore_mass=True, init_velocity=[0, 0, 0]) +earth = bodies[3] +earth.rotate_angle = -23.44 jupiter, saturn, uranus, neptune = bodies[6:10] for big_body in [jupiter, saturn, uranus, neptune]: @@ -41,13 +43,13 @@ for idx, body in enumerate(bodies): # if idx > 0: # body.init_position[0] = body.diameter * body.size_scale # body.init_position[1] = -body.radius * body.size_scale / 10 - body.rotation_speed *= 20 + body.rotation_speed *= 55 -if len(sys.argv) > 1: - camera_pos = sys.argv[1].replace("_", "") -else: - camera_pos = "left" - camera_pos = "right" +# if len(sys.argv) > 1: +# camera_pos = sys.argv[1].replace("_", "") +# else: +# camera_pos = "left" +camera_pos = "right" print("camera_pos:", camera_pos) camera_l2r = 0.002 * AU diff --git a/tools/sim_video_3d_cap.bat b/tools/sim_video_3d_cap.bat index 7146e8e687022543ed4a0df5098272a2eacca1fa..242151478d488fb5cee8922e836cffb922e5dcb9 100644 --- a/tools/sim_video_3d_cap.bat +++ b/tools/sim_video_3d_cap.bat @@ -17,9 +17,9 @@ CALL conda activate %env% %DISK% cd %SimFilePath% -start python -m %SimFileName% %3 +start python -m %SimFileName% cd %SimDir%\tools -python -m sim_video_3d_cap_ext --save_name=%SimFileName%%param3%.mp4 +python -m sim_video_3d_cap_ext --save_name=%SimFileName%.mp4 %param3% diff --git a/tools/sim_video_3d_cap_ext.py b/tools/sim_video_3d_cap_ext.py index 78de7fb8b91b9111703ee03ed025bc7e2536be9b..f9e78ef31076d93f625b8521d2bee761080af28c 100644 --- a/tools/sim_video_3d_cap_ext.py +++ b/tools/sim_video_3d_cap_ext.py @@ -31,10 +31,15 @@ def get_args(): parser.add_argument('--fps', type=int, default=30, help='frame per second') parser.add_argument('--total_time', type=int, default=10000000, help='video total time') parser.add_argument('--save_name', type=str, default='video.mp4', help='save file name') + parser.add_argument('--start_index', type=int, default=-1, help='start_index') # parser.add_argument('--screen_type', default=0, type=int, choices=[0, 1], help='1: full screen, 0: region screen') args = parser.parse_args() print("total_time:", args.total_time) print("fps:", args.fps) + + print("start_index:", args.start_index) + if args.start_index > 0: + args.save_name = args.save_name + ("_%s" % args.start_index) print("save_name:", args.save_name) return args @@ -232,13 +237,17 @@ def get_frame_temp_data(): def press_pause_key(): - KEY_P = win32api.VkKeyScan('P') - win32api.PostMessage(window_handle, win32con.WM_KEYDOWN, KEY_P, 0x00190001) + try: + KEY_P = win32api.VkKeyScan('P') + win32api.PostMessage(window_handle, win32con.WM_KEYDOWN, KEY_P, 0x00190001) + return True # win32api.PostMessage(window_handle, win32api.VkKeyScan('P'), 0x0001 | 0x0008 | 0x0010 | 0x0020, 0) # win32api.PostMessage(0xFFFFFFF6, win32api.VkKeyScan('P'), 0x0001 | 0x0008 | 0x0010 | 0x0020, 0) # win32api.PostMessage(window_handle, win32con.WM_KEYDOWN, win32api.VkKeyScan('P'), 0) # 发送F9键 # win32api.PostMessage(window_handle, win32con.WM_KEYUP, win32con.VK_F9, 0) - pass + except Exception as e: + print(str(e)) + return False def make_3d_video(): @@ -255,7 +264,8 @@ def make_3d_video(): video = create_video(args, img.shape[0], img.shape[1]) imageNum = 0 index_base = 0 - last_index = 0 + last_index = 0 # 最后一个index + completed_index = 0 # 最后完成的 index r_frames = {} l_frames = {} print("开始录屏") @@ -270,6 +280,11 @@ def make_3d_video(): _3d_card_p = _3d_card[10, 10,] index = int(_3d_card_p[1]) + int(_3d_card_p[0]) + if index < args.start_index: + if imageNum % args.fps == 0: + print('X', end='') + continue + if imageNum % 100 == 0: press_pause_key() create_frame_temp_files(index + index_base, l_frames, r_frames) @@ -291,7 +306,7 @@ def make_3d_video(): last_index = index index = index + index_base - + completed_index = index if _3d_card_p[2] < 100: _3d_card_color = "b" _3d_card_direct = "right" @@ -322,6 +337,7 @@ def make_3d_video(): # # show_image(frame) # video.write(img) + print("3D视频处理(完成索引:%s)" % completed_index) handle_3d_video(video, l_frames, r_frames) print("视频保存中")