Python功能制作之简单的3D特效

需要导入的库:

pygame: 这是一个游戏开发库,用于创建多媒体应用程序,提供了处理图形、声音和输入的功能。

from pygame.locals import *: 导入pygame库中的常量和函数,用于处理事件和输入。

OpenGL.GL: 这是OpenGL的Python绑定库,用于编写和执行OpenGL代码。

OpenGL.GLUT: 这也是OpenGL的Python绑定库,用于提供与设备无关的窗口和交互功能。

random: 这是Python的内置模块,用于生成随机数。

math: 这是Python的内置模块,提供了数学函数的支持。

OpenGL.GLU: 这是OpenGL的Python绑定库,提供了一些OpenGL实用函数,如透视投影。

终端输入:

pip install pygame

pip install PyOpenGL

源码:

python 复制代码
import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLUT import *
from random import randint, uniform
import math
from OpenGL.GLU import gluPerspective

# 初始化Pygame
pygame.init()

# 窗口大小
width, height = 800, 600

# 初始化Pygame显示
pygame.display.set_mode((width, height), DOUBLEBUF|OPENGL)

# 透视投影设置
gluPerspective(45, (width/height), 0.1, 50.0)

# 初始摄像机位置
glTranslatef(0.0, 0.0, -5)

# 粒子类
class Particle:
    def __init__(self):
        self.x = 0
        self.y = 0
        self.z = 0
        self.size = uniform(0.01, 0.05)
        self.speed_x = uniform(-0.1, 0.1)
        self.speed_y = uniform(-0.1, 0.1)
        self.speed_z = uniform(0.1, 0.5)
        self.color = (uniform(0, 1), uniform(0, 1), uniform(0, 1))

    def update(self):
        self.x += self.speed_x
        self.y += self.speed_y
        self.z += self.speed_z

    def draw(self):
        glBegin(GL_POINTS)
        glColor3f(*self.color)
        glVertex3f(self.x, self.y, self.z)
        glEnd()

# 创建粒子列表
particles = [Particle() for _ in range(10000)]

# 主循环
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    glRotatef(1, 3, 1, 1)
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)

    # 绘制粒子
    for particle in particles:
        particle.update()
        particle.draw()

    pygame.display.flip()
    pygame.time.wait(30)

# 退出程序
pygame.quit()

效果:

一闪而释的效果:

相关推荐
AI原吾39 分钟前
掌握Python-uinput:打造你的输入设备控制大师
开发语言·python·apython-uinput
机器视觉知识推荐、就业指导40 分钟前
Qt/C++事件过滤器与控件响应重写的使用、场景的不同
开发语言·数据库·c++·qt
毕设木哥41 分钟前
25届计算机专业毕设选题推荐-基于python的二手电子设备交易平台【源码+文档+讲解】
开发语言·python·计算机·django·毕业设计·课程设计·毕设
珞瑜·42 分钟前
Matlab R2024B软件安装教程
开发语言·matlab
weixin_4554461743 分钟前
Python学习的主要知识框架
开发语言·python·学习
孤寂大仙v1 小时前
【C++】STL----list常见用法
开发语言·c++·list
D11_1 小时前
Pandas缺失值处理
python·机器学习·数据分析·numpy·pandas
花生了什么树~.2 小时前
python基础知识(四)--if语句,for\while循环
python
她似晚风般温柔7892 小时前
Uniapp + Vue3 + Vite +Uview + Pinia 分商家实现购物车功能(最新附源码保姆级)
开发语言·javascript·uni-app
咩咩大主教2 小时前
C++基于select和epoll的TCP服务器
linux·服务器·c语言·开发语言·c++·tcp/ip·io多路复用