Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Python_超人
宇宙模拟器
提交
540bbe04
宇宙模拟器
项目概览
Python_超人
/
宇宙模拟器
通知
19
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
宇宙模拟器
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
540bbe04
编写于
7月 26, 2023
作者:
三月三net
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Python超人-宇宙模拟器
上级
af6c0d96
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
42 addition
and
76 deletion
+42
-76
sim_scenes/earth/earth_3d.py
sim_scenes/earth/earth_3d.py
+6
-50
sim_scenes/fiction/transformed_mars_ani_3d.py
sim_scenes/fiction/transformed_mars_ani_3d.py
+5
-10
sim_scenes/fiction/transformed_planet.py
sim_scenes/fiction/transformed_planet.py
+2
-7
sim_scenes/func.py
sim_scenes/func.py
+6
-0
sim_scenes/solar_system/hd_mercury_3d.py
sim_scenes/solar_system/hd_mercury_3d.py
+5
-7
simulators/ursina/entities/camera3d.py
simulators/ursina/entities/camera3d.py
+17
-2
simulators/ursina/entities/ursina_player.py
simulators/ursina/entities/ursina_player.py
+1
-0
未找到文件。
sim_scenes/earth/earth_3d.py
浏览文件 @
540bbe04
...
...
@@ -7,13 +7,8 @@
# python_version :3.8
# ==============================================================================
from
bodies
import
Earth
from
common.consts
import
SECONDS_PER_HOUR
,
SECONDS_PER_DAY
,
AU
from
sim_scenes.func
import
ursina_run
,
camera_look_at
,
create_3d_card
from
simulators.ursina.entities.body_timer
import
TimeData
from
simulators.ursina.entities.camera3d
import
Camera3d
from
simulators.ursina.ursina_config
import
UrsinaConfig
from
simulators.ursina.ursina_event
import
UrsinaEvent
from
ursina
import
camera
from
common.consts
import
SECONDS_PER_HOUR
from
sim_scenes.func
import
ursina_run
if
__name__
==
'__main__'
:
"""
...
...
@@ -34,54 +29,15 @@ if __name__ == '__main__':
bodies
=
[
earth
,
clouds
]
# camera.camera_pos = "right"
# camera_l2r = 0.002 * AU * UrsinaConfig.SCALE_FACTOR
#
#
# def switch_position():
# if camera.camera_pos == "right": # 摄像机右眼
# camera.world_position[0] -= 2 * camera_l2r
# camera.camera_pos = "left"
# elif camera.camera_pos == "left": # 摄像机左眼
# camera.world_position[0] += 2 * camera_l2r
# camera.camera_pos = "right"
#
#
# camera.switch_position = switch_position
init_pos
=
(
1.45
*
earth
.
radius
*
UrsinaConfig
.
SCALE_FACTOR
,
0
,
-
30000
*
UrsinaConfig
.
SCALE_FACTOR
)
Camera3d
.
init
(
init_pos
)
# def on_ready():
#
# Camera3d.init_on_ready(init_pos)
# earth.camera3d = Camera3d()
# earth.camera3d.position = (1.45 * earth.radius * UrsinaConfig.SCALE_FACTOR,
# 0,
# -30000 * UrsinaConfig.SCALE_FACTOR)
#
# # camera_look_at(earth, rotation_z=0)
# # camera.fov = 40
# earth._3d_card = create_3d_card()
# def on_before_evolving(evolve_args):
# Camera3d.exec_on_before_evolving(evolve_args)
# earth._3d_card.switch_color()
# earth.camera3d.switch_position()
# if earth._3d_card.switch_flag == 1:
# evolve_args["evolve_dt"] = 0.0
# 订阅事件后,上面的函数功能才会起作用
# # 运行前会触发 on_ready
# UrsinaEvent.on_ready_subscription(on_ready)
# UrsinaEvent.on_before_evolving_subscription(Camera3d.exec_on_before_evolving)
# 3D摄像机初始化
from
simulators.ursina.entities.camera3d
import
Camera3d
Camera3d
.
init
()
# 使用 ursina 查看的运行效果
# 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹
# position = 左-右+、上+下-、前+后-
ursina_run
(
bodies
,
SECONDS_PER_HOUR
/
2
,
# position=(1.2 * earth.radius, 0, -30000),
position
=
(
0
,
0
,
0
),
position
=
(
1.45
*
earth
.
radius
,
0
,
-
30000
),
show_grid
=
False
,
show_camera_info
=
False
,
show_control_info
=
False
,
...
...
sim_scenes/fiction/transformed_mars_ani_3d.py
浏览文件 @
540bbe04
...
...
@@ -35,9 +35,9 @@ def create_satellites():
for
i
,
info
in
enumerate
(
satellite_infos
):
# Satellite Satellite2
satellite
=
Satellite2
(
name
=
f
'卫星
{
i
+
1
}
'
,
mass
=
4.4e10
,
size_scale
=
2e2
,
color
=
(
255
,
200
,
0
),
init_position
=
info
[
"position"
],
init_velocity
=
info
[
"velocity"
])
size_scale
=
2e2
,
color
=
(
255
,
200
,
0
),
init_position
=
info
[
"position"
],
init_velocity
=
info
[
"velocity"
])
# info["satellite"] = satellite
satellites
.
append
(
satellite
)
return
satellites
...
...
@@ -83,13 +83,8 @@ def transformed_mars_ani(transformed_texture=None, texture=None, camera3d=False)
bodies
=
bodies
+
satellites
bodies
.
append
(
clouds
)
init_pos
=
(
1.80
*
mars
.
radius
,
0
,
-
38000
)
if
camera3d
:
init_pos
=
np
.
array
(
init_pos
)
*
UrsinaConfig
.
SCALE_FACTOR
Camera3d
.
init
(
init_pos
)
init_pos
=
(
0
,
0
,
0
)
Camera3d
.
init
()
def
on_ready
():
# 为了较好的立体效果,可以增加太阳光线,光线指向火星(target=mars)
...
...
@@ -147,7 +142,7 @@ def transformed_mars_ani(transformed_texture=None, texture=None, camera3d=False)
# 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹
# position = 左-右+、上+下-、前+后-
ursina_run
(
bodies
,
SECONDS_PER_HOUR
/
2
,
position
=
init_pos
,
position
=
(
1.80
*
mars
.
radius
,
0
,
-
38000
)
,
show_grid
=
False
,
show_camera_info
=
False
,
show_control_info
=
False
,
...
...
sim_scenes/fiction/transformed_planet.py
浏览文件 @
540bbe04
...
...
@@ -43,19 +43,14 @@ def run_transformed_planet(transformed_texture=None, texture=None, with_clouds=T
bodies
.
append
(
clouds
)
init_pos
=
(
1.45
*
earth
.
radius
,
0
,
-
30000
)
if
camera3d
:
init_pos
=
np
.
array
(
init_pos
)
*
UrsinaConfig
.
SCALE_FACTOR
Camera3d
.
init
(
init_pos
)
init_pos
=
(
0
,
0
,
0
)
Camera3d
.
init
()
# 使用 ursina 查看的运行效果
# 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹
# position = 左-右+、上+下-、前+后-
ursina_run
(
bodies
,
SECONDS_PER_HOUR
/
2
,
position
=
init_pos
,
position
=
(
1.45
*
earth
.
radius
,
0
,
-
30000
)
,
show_grid
=
False
,
show_camera_info
=
False
,
show_control_info
=
False
,
...
...
sim_scenes/func.py
浏览文件 @
540bbe04
...
...
@@ -154,6 +154,12 @@ def ursina_run(bodies,
for
body
in
body_sys
.
bodies
:
body
.
show_name
=
True
from
simulators.ursina.entities.camera3d
import
Camera3d
if
Camera3d
.
is_ready
and
position
!=
(
0
,
0
,
0
):
from
simulators.ursina.ursina_config
import
UrsinaConfig
Camera3d
.
o
.
init_position
=
np
.
array
(
position
)
*
UrsinaConfig
.
SCALE_FACTOR
position
=
(
0
,
0
,
0
)
if
save_as_json
is
not
None
:
try
:
body_sys
.
save_to_json
(
save_as_json
,
{
"dt"
:
dt
,
"position"
:
position
,
...
...
sim_scenes/solar_system/hd_mercury_3d.py
浏览文件 @
540bbe04
...
...
@@ -9,8 +9,6 @@
from
bodies
import
Mercury
from
common.consts
import
SECONDS_PER_WEEK
,
SECONDS_PER_DAY
from
sim_scenes.func
import
ursina_run
from
simulators.ursina.entities.camera3d
import
Camera3d
from
simulators.ursina.ursina_config
import
UrsinaConfig
if
__name__
==
'__main__'
:
"""
...
...
@@ -22,14 +20,14 @@ if __name__ == '__main__':
size_scale
=
1
,
show_name
=
False
)
]
mercury
=
bodies
[
0
]
init_pos
=
(
2.0
*
mercury
.
radius
*
UrsinaConfig
.
SCALE_FACTOR
,
0
,
-
14000
*
UrsinaConfig
.
SCALE_FACTOR
)
Camera3d
.
init
(
init_pos
)
# 3D摄像机初始化
from
simulators.ursina.entities.camera3d
import
Camera3d
Camera3d
.
init
()
# 使用 ursina 查看的运行效果
# 常用快捷键: P:运行和暂停 O:重新开始 I:显示天体轨迹
# position = 左-右+、上+下-、前+后-
ursina_run
(
bodies
,
SECONDS_PER_DAY
,
position
=
(
0
,
0
,
0
),
ursina_run
(
bodies
,
SECONDS_PER_DAY
,
position
=
(
2.0
*
mercury
.
radius
,
0
,
-
1400
0
),
# cosmic_bg="textures/cosmic1.jpg",
view_closely
=
0.001
)
simulators/ursina/entities/camera3d.py
浏览文件 @
540bbe04
...
...
@@ -6,7 +6,8 @@
# link :https://gitcode.net/pythoncr/
# python_version :3.8
# ==============================================================================
from
ursina
import
Entity
,
camera
import
numpy
as
np
from
ursina
import
Entity
,
camera
,
Vec3
from
common.consts
import
AU
from
sim_scenes.func
import
create_3d_card
...
...
@@ -20,6 +21,7 @@ class OCamera:
class
Camera3d
(
Entity
):
o
=
OCamera
()
is_ready
=
False
def
__init__
(
self
,
**
kwargs
):
super
().
__init__
()
...
...
@@ -43,7 +45,9 @@ class Camera3d(Entity):
pass
@
staticmethod
def
init
(
init_pos
):
def
init
(
init_pos
=
None
):
Camera3d
.
is_ready
=
True
def
on_ready
():
Camera3d
.
init_on_ready
(
init_pos
)
...
...
@@ -52,13 +56,24 @@ class Camera3d(Entity):
@
staticmethod
def
init_on_ready
(
position
):
if
hasattr
(
Camera3d
.
o
,
"init_position"
):
position
=
Camera3d
.
o
.
init_position
elif
position
is
None
:
position
=
camera
.
position
else
:
position
=
np
.
array
(
position
)
*
UrsinaConfig
.
SCALE_FACTOR
Camera3d
.
o
.
camera3d
=
Camera3d
()
Camera3d
.
o
.
camera3d
.
position
=
position
Camera3d
.
o
.
_3d_card
=
create_3d_card
()
@
staticmethod
def
exec_on_before_evolving
(
evolve_args
):
Camera3d
.
o
.
_3d_card
.
switch_color
()
Camera3d
.
o
.
camera3d
.
switch_position
()
if
Camera3d
.
o
.
_3d_card
.
switch_flag
==
1
:
evolve_args
[
"evolve_dt"
]
=
0.0
# if isinstance(camera.parent, Camera3d):
# camera.position = Vec3(0, 0, 0)
simulators/ursina/entities/ursina_player.py
浏览文件 @
540bbe04
...
...
@@ -40,6 +40,7 @@ class UrsinaPlayer(FirstPersonController):
self
.
position
=
Vec3
(
pos
[
0
],
pos
[
1
],
pos
[
2
])
# 将摄像机位置设置为 x=0、y=1、z=0 的位置
camera
.
position
=
Vec3
(
pos
[
0
],
pos
[
1
],
pos
[
2
])
# camera.player = self
# self.x = 90
# self.position = Vec3(pos[0], pos[1], pos[2])
# 将摄像机的观察角度绕 x 轴旋转 45 度,绕 y 轴旋转 0 度,绕 z 轴旋转 0 度
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录