|
|
@@ -51,10 +51,16 @@ glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient)
|
|
|
glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse)
|
|
|
glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular)
|
|
|
|
|
|
-# 设置视角
|
|
|
+# 设置投影矩阵(透视投影)
|
|
|
+glMatrixMode(GL_PROJECTION)
|
|
|
+glLoadIdentity()
|
|
|
gluPerspective(45, (width/height), 0.1, 50.0)
|
|
|
-# 移动相机
|
|
|
-glTranslatef(0.0, 0.0, -5)
|
|
|
+
|
|
|
+# 设置模型视图矩阵
|
|
|
+glMatrixMode(GL_MODELVIEW)
|
|
|
+glLoadIdentity()
|
|
|
+# 移动相机(现在在主循环中每帧设置)
|
|
|
+# glTranslatef(0.0, 0.0, -5)
|
|
|
|
|
|
def build_directory_tree(root_path, max_depth=3, max_children_per_node=30):
|
|
|
# 递归扫描目录树
|
|
|
@@ -182,12 +188,18 @@ blinking_nodes = set()
|
|
|
file_content_cache = {}
|
|
|
blink_start_time = pygame.time.get_ticks()
|
|
|
|
|
|
+# 旋转控制变量
|
|
|
+rotation_angle = 0.0
|
|
|
+
|
|
|
# 主循环
|
|
|
running = True
|
|
|
while running:
|
|
|
# 获取当前时间(用于闪烁效果)
|
|
|
current_time = pygame.time.get_ticks()
|
|
|
|
|
|
+ # 更新旋转角度(每10秒旋转一圈)
|
|
|
+ rotation_angle = (current_time * 0.036) % 360.0
|
|
|
+
|
|
|
# 检查剪贴板内容是否变化(如果剪贴板功能可用)
|
|
|
if clipboard_available:
|
|
|
if current_time - clipboard_check_time > 1000: # 每秒检查一次
|
|
|
@@ -251,6 +263,11 @@ while running:
|
|
|
# 清除屏幕
|
|
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
|
|
|
|
|
|
+ # 重置模型视图矩阵并设置相机位置
|
|
|
+ glLoadIdentity()
|
|
|
+ glTranslatef(0.0, 0.0, -5) # 相机向后移动
|
|
|
+ glRotatef(rotation_angle, 0.0, 1.0, 0.0) # 绕竖直中线/Y轴旋转
|
|
|
+
|
|
|
# 目录树可视化
|
|
|
ball_radius = 0.0667 # 节点球的半径(原来的1/3)
|
|
|
|