diff --git a/sim_scenes/fiction/transformed_mars_3d.py b/sim_scenes/fiction/transformed_mars_3d.py index 39f016d0aa408890f1b98db7fef8f5faaa5ad2ee..e1a472768afc33b74536a8c9b7df15ec35756922 100644 --- a/sim_scenes/fiction/transformed_mars_3d.py +++ b/sim_scenes/fiction/transformed_mars_3d.py @@ -10,7 +10,9 @@ from sim_scenes.fiction.transformed_planet import run_transformed_planet if __name__ == '__main__': run_transformed_planet( - "mars.jpg", + transformed_texture="mars.jpg", + # texture="mars.png", + with_clouds=True, camera3d=True, - transparent=False + transparent=True ) diff --git a/sim_scenes/fiction/transformed_planet.py b/sim_scenes/fiction/transformed_planet.py index 8a961315c8f55751531f6a4bff129f3d7bdba903..a1ff4e551786e532be18045498faf51c68630d6c 100644 --- a/sim_scenes/fiction/transformed_planet.py +++ b/sim_scenes/fiction/transformed_planet.py @@ -19,14 +19,18 @@ from ursina import camera import os -def run_transformed_planet(texture, with_clouds=True, camera3d=False, transparent=True): - if transparent: - texture = texture.replace(".jpg", "_trans.png") +def run_transformed_planet(transformed_texture=None, texture=None, with_clouds=True, camera3d=False, transparent=True): + if transformed_texture is not None: + if transparent: + texture = transformed_texture.replace(".jpg", "_trans.png") + else: + texture = transformed_texture + texture = os.path.join("transformed", texture) # 创建带有云层的地球 earth = Earth( - texture=os.path.join("transformed", texture), - rotate_angle=-23.44, + texture=texture, + rotate_angle=0, init_position=[0, 0, 0], init_velocity=[0, 0, 0], size_scale=1) @@ -34,7 +38,7 @@ def run_transformed_planet(texture, with_clouds=True, camera3d=False, transparen if with_clouds: # 创建云层(texture纹理图使用了透明云层的图片,云层的 size_scale 要稍微比地球大一点) clouds = Earth(name="云层", texture="transparent_clouds.png", - rotate_angle=-23.44, + rotate_angle=0, size_scale=1.001, parent=earth) bodies.append(clouds) @@ -65,6 +69,6 @@ if __name__ == '__main__': """ run_transformed_planet( "earth.jpg", - camera3d=True, - transparent=False + camera3d=False, + transparent=True ) diff --git a/sim_scenes/fiction/transformed_venus_3d.py b/sim_scenes/fiction/transformed_venus_3d.py index 1cccdbfae04b2ddb2e14bd26fa75f19ea8c7100c..93b8e2e53e63bb31cda94bdce24d1587294ded51 100644 --- a/sim_scenes/fiction/transformed_venus_3d.py +++ b/sim_scenes/fiction/transformed_venus_3d.py @@ -10,7 +10,8 @@ from sim_scenes.fiction.transformed_planet import run_transformed_planet if __name__ == '__main__': run_transformed_planet( - "venus.jpg", + # transformed_texture="venus.jpg", + texture="venus.jpg", camera3d=True, - transparent=False + transparent=True ) diff --git a/textures/mars.png b/textures/mars.png index c8d18e48f9f1cb8d49ce3bbeec7c5c42da594680..8cbbca0c5ae3d8c2212edce550fa55d1027d0280 100644 Binary files a/textures/mars.png and b/textures/mars.png differ diff --git a/textures/mars2.png b/textures/mars2.png new file mode 100644 index 0000000000000000000000000000000000000000..67aa556c9f5b69342b677aaa47619562ef26b7eb Binary files /dev/null and b/textures/mars2.png differ diff --git a/tools/sim_video_3d_cap_ext.py b/tools/sim_video_3d_cap_ext.py index b0c267423be6f136ef548511c05335106cf9ee17..83b649be8be2af3435d6eaee8471decb583fb101 100644 --- a/tools/sim_video_3d_cap_ext.py +++ b/tools/sim_video_3d_cap_ext.py @@ -135,8 +135,24 @@ def video_write(video, l_frames, r_frames): for index in range(min_index, max_index + 1): rv = r_frames.get(index, None) lv = l_frames.get(index, None) - if rv is None or lv is None: + if rv is None and lv is None: + print('[' + str(index) + "], ", end='') continue + if rv is None: + rv = r_frames.get(index-1, None) + if rv is None: + rv = r_frames.get(index + 1, None) + if rv is None: + print('[R:'+str(index) + "], ", end='') + continue + if lv is None: + lv = l_frames.get(index-1, None) + if lv is None: + lv = l_frames.get(index + 1, None) + if lv is None: + print('[L:' + str(index) + "], ", end='') + continue + print(str(index) + ", ", end='') merged_list = [np.concatenate((lv[i], sublist), axis=0) for i, sublist in enumerate(rv)] try: @@ -272,40 +288,21 @@ def make_3d_video(): l_frames = {} print("开始录屏") clear_frame_temp_files() - while True: - if imageNum % 400 == 0: - press_pause_key() - create_frame_temp_files(completed_index, l_frames, r_frames) - r_frames.clear() - l_frames.clear() - r_frames = {} - l_frames = {} - press_pause_key() + def record_frame(): + nonlocal imageNum, last_index, index_base, completed_index img = sim_window_screen_shot() - if img is None: - print("\n模拟器窗口已关闭,退出录屏") - break - + return None _3d_card = img[4:20, 3:20, ] _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 index in r_frames.keys() and index in l_frames.keys(): + # return False if index < last_index: index_base += (last_index + 1) - # press_pause_key() - # create_frame_temp_files(index + index_base, l_frames, r_frames) - # r_frames.clear() - # l_frames.clear() - # r_frames = {} - # l_frames = {} - # press_pause_key() last_index = index index = index + index_base @@ -315,30 +312,45 @@ def make_3d_video(): _3d_card_direct = "right" if index not in r_frames.keys(): r_frames[index] = img[:864, :768, ] + else: + return False else: _3d_card_color = "w" _3d_card_direct = "left" if index not in l_frames.keys(): l_frames[index] = img[:864, :768, ] - - # if is_blank_screen(img): - # if imageNum % args.fps == 0: - # print('x', end='') - # - # continue + else: + return False if imageNum % args.fps == 0: print('.', end='') - # else: - # print(imageNum, end='') imageNum += 1 + return True + + while True: + if imageNum % 400 == 0: + press_pause_key() + for i in range(10): + status = record_frame() + # print("status:", status, i) + if not status: + break + time.sleep(0.01) + create_frame_temp_files(completed_index, l_frames, r_frames) + r_frames.clear() + l_frames.clear() + r_frames = {} + l_frames = {} + press_pause_key() - # frame = cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR) - # if imageNum < args.fps * args.total_time: - # # img = img[:432,:768,] - # # show_image(frame) - # video.write(img) + status = record_frame() + + # img = sim_window_screen_shot() + + if status is None: + print("\n模拟器窗口已关闭,退出录屏") + break print("3D视频处理(完成索引:%s)" % completed_index) handle_3d_video(video, l_frames, r_frames)