From 2abb063e90eaf9ad9d641d420f7f5f2bdfa58348 Mon Sep 17 00:00:00 2001 From: march3 Date: Fri, 1 Dec 2023 15:15:34 +0800 Subject: [PATCH] =?UTF-8?q?Python=E8=B6=85=E4=BA=BA-=E5=AE=87=E5=AE=99?= =?UTF-8?q?=E6=A8=A1=E6=8B=9F=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sim_scenes/featured/wormhole_sim_v2.py | 85 ++++++++++++++++++++++---- 1 file changed, 73 insertions(+), 12 deletions(-) diff --git a/sim_scenes/featured/wormhole_sim_v2.py b/sim_scenes/featured/wormhole_sim_v2.py index d91d963..fd343b4 100644 --- a/sim_scenes/featured/wormhole_sim_v2.py +++ b/sim_scenes/featured/wormhole_sim_v2.py @@ -74,14 +74,16 @@ class WormholeSim(UniverseSimScenes): # around_acc_speed: int = -1.5 wormhole_infos = [ - {"name": "我们宇宙", "position": [D, 0, -D], "rotation_y": 100, "around_direction": "right", - "camera_forward_speed": 0, "around_max_count": 300, "camera_target_max_speed": 1000, + {"name": "我们宇宙", "position": [D, 0, -D], "rotation_y": 100, "around_direction": "left", + "camera_forward_speed": 0, "around_max_count": 200, "camera_target_max_speed": 1000, + "around_max_speed": -300, "around_min_speed": 150, "camera_max_speed": 2200, "camera_target_init_speed": 5}, - {"name": "宇宙1", "position": [D, 0, D], "rotation_z": 0, "around_acc_speed": -2, - "around_min_speed": 150, "camera_forward_speed": -0.2, "around_max_count": 600}, - {"name": "宇宙2", "position": [- D, -D, D], "around_direction": "up", "around_max_count": 400}, - {"name": "宇宙3", "position": [- D, 0, -D], "around_max_count": 600}, + {"name": "宇宙1", "position": [D, 0, D], "rotation_z": 0, "around_acc_speed": -2, "around_direction": "left", + "around_min_speed": 150, "camera_forward_speed": -0.4, "around_max_speed": -300, "around_max_count": 600}, + {"name": "宇宙2", "position": [- D, -D, D], "around_direction": "up", "camera_forward_speed": -0.1, + "around_max_speed": -300, "around_max_count": 400}, + {"name": "宇宙3", "position": [- D, 0, -D], "around_max_count": 500}, {"name": "宇宙4", "position": [-D, D, D], "around_direction": "left", "around_max_count": 400}, {"name": "宇宙5", "position": [- D, -D, D], "around_direction": "up", "around_max_count": 600}, # {"position": [D, -D, D]}, @@ -132,7 +134,7 @@ class WormholeSim(UniverseSimScenes): # init_position=[D, 0, -D], init_position=[0, D * 1.15, -D * 2.05], init_velocity=[0, 0, 0], - texture="core_valaga_clas_light.jpg", + # texture="core_valaga_clas_light.jpg", # size_scale=self.SIZE_SCALE * 1e3 size_scale=self.SIZE_SCALE * 0.5e3 ).set_ignore_gravity(True).set_light_disable(True) @@ -181,8 +183,22 @@ class WormholeSim(UniverseSimScenes): [-D(), -D(), D()], [-D(), -D(), -D()], [D(), D(), D()], [D(), D(), -D()], [D(), -D(), D()], [D(), -D(), -D()], [-D(), D(), D()], [-D(), D(), -D()], - [-D(), -D(), D()], [-D(), -D(), -D()] - , + [-D(), -D(), D()], [-D(), -D(), -D()], + [D(), D(), D()], [D(), D(), -D()], [D(), -D(), D()], + [D(), -D(), -D()], [-D(), D(), D()], [-D(), D(), -D()], + [-D(), -D(), D()], [-D(), -D(), -D()], + [D(), D(), D()], [D(), D(), -D()], [D(), -D(), D()], + [D(), -D(), -D()], [-D(), D(), D()], [-D(), D(), -D()], + [-D(), -D(), D()], [-D(), -D(), -D()], + [D(), D(), D()], [D(), D(), -D()], [D(), -D(), D()], + [D(), -D(), -D()], [-D(), D(), D()], [-D(), D(), -D()], + [-D(), -D(), D()], [-D(), -D(), -D()], + [D(), D(), D()], [D(), D(), -D()], [D(), -D(), D()], + [D(), -D(), -D()], [-D(), D(), D()], [-D(), D(), -D()], + [-D(), -D(), D()], [-D(), -D(), -D()], + [D(), D(), D()], [D(), D(), -D()], [D(), -D(), D()], + [D(), -D(), -D()], [-D(), D(), D()], [-D(), D(), -D()], + [-D(), -D(), D()], [-D(), -D(), -D()], [D(), D(), D()], [D(), D(), -D()], [D(), -D(), D()], [D(), -D(), -D()], [-D(), D(), D()], [-D(), D(), -D()], [-D(), -D(), D()], [-D(), -D(), -D()] @@ -248,8 +264,8 @@ class WormholeSim(UniverseSimScenes): self.target_idx = 0 for u in self.universes: - self.scale_down(u) u.planet.enabled = False + self.scale_down(u) self.last_universe = self.current_universe self.current_universe = self.universes[self.current_idx] @@ -465,10 +481,55 @@ class WormholeSim(UniverseSimScenes): c.update = c_blink # self.camera_target + def change_shader(self): + from ursina import Shader + shader = Shader('my_shader') + # 编写着色器代码 + shader.vert = """ + #version 330 core + + layout (location = 0) in vec3 position; + layout (location = 1) in vec2 uv; + + out vec2 frag_uv; + + void main() { + gl_Position = vec4(position, 1.0); + frag_uv = uv; + } + """ + + shader.frag = """ + #version 330 core + + in vec2 frag_uv; + + out vec4 color; + + uniform float u_time; + + void main() { + float time = u_time * 0.05; + float radius = 0.5; + float angle = time * 3.1415926535897932384626433832795; + float x = radius * cos(angle); + float y = radius * sin(angle); + vec2 uv = vec2(x, y) + frag_uv; + color = vec4(uv, 0.0, 1.0); + } + """ + self.target_universe.planet.shader = shader + def on_timer_changed(self, time_data): - self.target_universe.planet.rotation_y -= 0.5 + + self.target_universe.planet.rotation_y -= 0.3 + + # self.change_shader() + + # self.target_universe.planet.texture_scale -= 0.05 if self.last_universe is not None: - self.last_universe.planet.rotation_y += 0.3 + self.last_universe.planet.rotation_y += 0.2 + camera_look_at(self.camera_target, rotation_z=0) # camera.rotation_x -= 2 -- GitLab