gpt4 book ai didi

python - 在 3D 空间中四处移动图像

转载 作者:行者123 更新时间:2023-11-28 21:28:37 24 4
gpt4 key购买 nike

我正在尝试在 python 中创建 Logo 可视化效果,并且我想在 3D 空间中制作大量图像的动画,以便图像始终“面向”屏幕中心,并且图像围绕某个固定路径移动。我之前用 python 使用 Vizard 做过这个,但是,我想在一个“免费”的跨平台庄园中执行此操作。

使用 pyglet 获取图像映射四边形句柄以便我可以操纵所述四边形的位置和方向的最快方式(阅读最短代码量)是什么?

最佳答案

以下是我能想到的最简单的代码,它允许我将图像定位在位置 (0, 0, -10):

#!/usr/bin/env python                                                           
import pyglet
from pyglet.gl import *

window = pyglet.window.Window()
glEnable(GL_DEPTH_TEST)

image = pyglet.image.load('imgs/appfolio.png')
texture = image.get_texture()
glEnable(texture.target)
glBindTexture(texture.target, texture.id)
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, image.width, image.height,
0, GL_RGBA, GL_UNSIGNED_BYTE,
image.get_image_data().get_data('RGBA', image.width * 4))

rect_w = float(image.width) / image.height
rect_h = 1

@window.event
def on_draw():
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
glLoadIdentity()
glTranslatef(0, 0, -10)
glBindTexture(texture.target, texture.id)
glBegin(GL_QUADS)
glTexCoord2f(0.0, 0.0); glVertex3f(-rect_w, -rect_h, 0.0)
glTexCoord2f(1.0, 0.0); glVertex3f( rect_w, -rect_h, 0.0)
glTexCoord2f(1.0, 1.0); glVertex3f( rect_w, rect_h, 0.0)
glTexCoord2f(0.0, 1.0); glVertex3f(-rect_w, rect_h, 0.0)
glEnd()

def on_resize(width, height):
glViewport(0, 0, width, height)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(65.0, width/float(height), 0.1, 1000.0)
glMatrixMode(GL_MODELVIEW)

window.on_resize = on_resize # we need to replace so can't use @window.event
pyglet.app.run()

我发现最困难的部分是必须替换 on_resize 函数才能按我预期的方式工作,因为默认的正交投影不起作用。

我找到了 Jess Hill's pyglet conversionNeHe tutorial on texture mapping最有帮助。

完整的 Logo 可视化代码可以在我刚刚写的标题为“Moving Images in 3D Space with Pyglet”的博客条目中找到。

关于python - 在 3D 空间中四处移动图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7681899/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com