提交 0c061351 编写于 作者: 三月三net's avatar 三月三net

Python超人-宇宙模拟器

上级 61155d68
...@@ -10,7 +10,9 @@ from sim_scenes.fiction.transformed_planet import run_transformed_planet ...@@ -10,7 +10,9 @@ from sim_scenes.fiction.transformed_planet import run_transformed_planet
if __name__ == '__main__': if __name__ == '__main__':
run_transformed_planet( run_transformed_planet(
"mars.jpg", transformed_texture="mars.jpg",
# texture="mars.png",
with_clouds=True,
camera3d=True, camera3d=True,
transparent=False transparent=True
) )
...@@ -19,14 +19,18 @@ from ursina import camera ...@@ -19,14 +19,18 @@ from ursina import camera
import os import os
def run_transformed_planet(texture, with_clouds=True, camera3d=False, transparent=True): def run_transformed_planet(transformed_texture=None, texture=None, with_clouds=True, camera3d=False, transparent=True):
if transformed_texture is not None:
if transparent: if transparent:
texture = texture.replace(".jpg", "_trans.png") texture = transformed_texture.replace(".jpg", "_trans.png")
else:
texture = transformed_texture
texture = os.path.join("transformed", texture)
# 创建带有云层的地球 # 创建带有云层的地球
earth = Earth( earth = Earth(
texture=os.path.join("transformed", texture), texture=texture,
rotate_angle=-23.44, rotate_angle=0,
init_position=[0, 0, 0], init_position=[0, 0, 0],
init_velocity=[0, 0, 0], init_velocity=[0, 0, 0],
size_scale=1) size_scale=1)
...@@ -34,7 +38,7 @@ def run_transformed_planet(texture, with_clouds=True, camera3d=False, transparen ...@@ -34,7 +38,7 @@ def run_transformed_planet(texture, with_clouds=True, camera3d=False, transparen
if with_clouds: if with_clouds:
# 创建云层(texture纹理图使用了透明云层的图片,云层的 size_scale 要稍微比地球大一点) # 创建云层(texture纹理图使用了透明云层的图片,云层的 size_scale 要稍微比地球大一点)
clouds = Earth(name="云层", texture="transparent_clouds.png", clouds = Earth(name="云层", texture="transparent_clouds.png",
rotate_angle=-23.44, rotate_angle=0,
size_scale=1.001, parent=earth) size_scale=1.001, parent=earth)
bodies.append(clouds) bodies.append(clouds)
...@@ -65,6 +69,6 @@ if __name__ == '__main__': ...@@ -65,6 +69,6 @@ if __name__ == '__main__':
""" """
run_transformed_planet( run_transformed_planet(
"earth.jpg", "earth.jpg",
camera3d=True, camera3d=False,
transparent=False transparent=True
) )
...@@ -10,7 +10,8 @@ from sim_scenes.fiction.transformed_planet import run_transformed_planet ...@@ -10,7 +10,8 @@ from sim_scenes.fiction.transformed_planet import run_transformed_planet
if __name__ == '__main__': if __name__ == '__main__':
run_transformed_planet( run_transformed_planet(
"venus.jpg", # transformed_texture="venus.jpg",
texture="venus.jpg",
camera3d=True, camera3d=True,
transparent=False transparent=True
) )
textures/mars.png

319.6 KB | W: | H:

textures/mars.png

2.3 MB | W: | H:

textures/mars.png
textures/mars.png
textures/mars.png
textures/mars.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -135,8 +135,24 @@ def video_write(video, l_frames, r_frames): ...@@ -135,8 +135,24 @@ def video_write(video, l_frames, r_frames):
for index in range(min_index, max_index + 1): for index in range(min_index, max_index + 1):
rv = r_frames.get(index, None) rv = r_frames.get(index, None)
lv = l_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 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='') print(str(index) + ", ", end='')
merged_list = [np.concatenate((lv[i], sublist), axis=0) for i, sublist in enumerate(rv)] merged_list = [np.concatenate((lv[i], sublist), axis=0) for i, sublist in enumerate(rv)]
try: try:
...@@ -272,40 +288,21 @@ def make_3d_video(): ...@@ -272,40 +288,21 @@ def make_3d_video():
l_frames = {} l_frames = {}
print("开始录屏") print("开始录屏")
clear_frame_temp_files() 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() img = sim_window_screen_shot()
if img is None: if img is None:
print("\n模拟器窗口已关闭,退出录屏") return None
break
_3d_card = img[4:20, 3:20, ] _3d_card = img[4:20, 3:20, ]
_3d_card_p = _3d_card[10, 10,] _3d_card_p = _3d_card[10, 10,]
index = int(_3d_card_p[1]) + int(_3d_card_p[0]) index = int(_3d_card_p[1]) + int(_3d_card_p[0])
if index < args.start_index: # if index in r_frames.keys() and index in l_frames.keys():
if imageNum % args.fps == 0: # return False
print('X', end='')
continue
if index < last_index: if index < last_index:
index_base += (last_index + 1) 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 last_index = index
index = index + index_base index = index + index_base
...@@ -315,30 +312,45 @@ def make_3d_video(): ...@@ -315,30 +312,45 @@ def make_3d_video():
_3d_card_direct = "right" _3d_card_direct = "right"
if index not in r_frames.keys(): if index not in r_frames.keys():
r_frames[index] = img[:864, :768, ] r_frames[index] = img[:864, :768, ]
else:
return False
else: else:
_3d_card_color = "w" _3d_card_color = "w"
_3d_card_direct = "left" _3d_card_direct = "left"
if index not in l_frames.keys(): if index not in l_frames.keys():
l_frames[index] = img[:864, :768, ] l_frames[index] = img[:864, :768, ]
else:
# if is_blank_screen(img): return False
# if imageNum % args.fps == 0:
# print('x', end='')
#
# continue
if imageNum % args.fps == 0: if imageNum % args.fps == 0:
print('.', end='') print('.', end='')
# else:
# print(imageNum, end='')
imageNum += 1 imageNum += 1
return True
# frame = cv2.cvtColor(np.array(img), cv2.COLOR_RGB2BGR) while True:
# if imageNum < args.fps * args.total_time: if imageNum % 400 == 0:
# # img = img[:432,:768,] press_pause_key()
# # show_image(frame) for i in range(10):
# video.write(img) 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()
status = record_frame()
# img = sim_window_screen_shot()
if status is None:
print("\n模拟器窗口已关闭,退出录屏")
break
print("3D视频处理(完成索引:%s)" % completed_index) print("3D视频处理(完成索引:%s)" % completed_index)
handle_3d_video(video, l_frames, r_frames) handle_3d_video(video, l_frames, r_frames)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册