当前位置: 首页 > news >正文

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

源码:

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 = 0self.y = 0self.z = 0self.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_xself.y += self.speed_yself.z += self.speed_zdef 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 = FalseglRotatef(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()

效果:

一闪而释的效果:

 

http://www.lryc.cn/news/134510.html

相关文章:

  • leetcode-5-最长回文串
  • 二、Oracle 数据库安装集
  • 【Python】Python中的常用函数及用法
  • 基于JavaEE的ssm公司员工信息管理系统的设计与实现
  • cornerstoneJS加载图片(base、矩阵)
  • 3.Trunc截断函数用法
  • 腾讯云 CODING 荣获 TiD 质量竞争力大会 2023 软件研发优秀案例
  • VSCode如何为远程安装预设(固定)扩展
  • 一文解析HTTP与HTTPS,它们的区别和联系
  • Faster RCNN网络数据流总结
  • 拒绝摆烂!C语言练习打卡第五天
  • 关于LambdaQueryWrapper.or()导致错误
  • Day17-Node后端身份认证-JWT
  • onvif中imaging setting图像画质总结!
  • not in效率低(MYSQL的Not IN、not EXISTS如何优化)
  • 微信小程序拉起支付报: 调用支付JSAPI缺少参数: total_fee
  • Thinkphp6 如何 生成二维码
  • 01.机器学习引言
  • 结构型(二) - 桥接模式
  • 多维时序 | MATLAB实现WOA-CNN-GRU-Attention多变量时间序列预测
  • C#与西门子PLC1500的ModbusTcp服务器通信1--项目背景
  • Socks5代理与IP代理:网络安全与爬虫之道
  • 苹果电脑怎么录屏?步骤详解,看到就是赚到
  • vb毕业生管理系统设计与实现
  • WPF入门到精通:4.页面增删改查及调用接口(待完善)
  • 容器和云原生(三):kubernetes搭建与使用
  • spring boot集成jasypt 并 实现自定义加解密
  • Qt文件系统操作和文件的读写
  • MME: A Comprehensive Evaluation Benchmark for Multimodal Large Language Models
  • 学习开发振弦采集模块的注意事项