"Tutorial 3" est un exemple de jugement de contact. La visualisation est PyOpenGL. -La configuration de PyOpenGL est requise. -Comme il s'agit d'OpenGL, il existe de nombreuses descriptions de code de visualisation car il s'agit de 3D.
C'était un peu difficile. ・ Https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopengl J'ai obtenu "PyOpenGL-3.1.5-cp38-cp38-win_amd64.whl" et l'ai installé avec pip. → Le didacticiel 3 fonctionne normalement.
"Tutorial 3" a déménagé. J'ai ajouté une routine d'enregistrement d'image pour créer un film GIF. (Utilisez un oreiller)
・ La valeur du point de vue a été modifiée par rapport au code d'origine.
Produit un groupe d'images PNG et une vidéo GIF sous forme de fichier. Seule la pièce supplémentaire sera placée sur ↓.
Comment utiliser: -Installez "Oreiller". -Créer deux dossiers courants "img" et "gif" à l'avance avant l'exécution. -Appeler la routine supplémentaire "capture ()" après la ligne d'origine 231 "glutSwapBuffers ()". ・ De même, ligne 220, appelez "export_movie ()" devant "sys.exit (0)"
Générer un instantané à partir de PyOpenGL/sauvegarder
from PIL import Image
from PIL import ImageOps
step=-1
intvl = 10
imgs = []
def capture():
global step
step += 1
if step % intvl != 0:
return
pad_step = '{0:04d}'.format(step)
print( pad_step )
savepath = "img/tutorial3_"+pad_step+".png "
width = glutGet(GLUT_WINDOW_WIDTH)
height = glutGet(GLUT_WINDOW_HEIGHT)
glReadBuffer(GL_FRONT)
glPixelStorei(GL_UNPACK_ALIGNMENT, 1)
data = glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE)
#image = Image.fromstring("RGBA", (width, height), data)
image = Image.frombytes("RGBA", (width, height), data)
image = ImageOps.flip(image)
image.save( savepath )
imgs.append( image )
Routine d'enregistrement de vidéo GIF
def export_movie():
if not imgs:
return
imgs[0].save('gif/tutorial3.gif'
, save_all=True
, append_images=imgs[1:]
, optimize=False
, duration=100 #40
, loop=0)
Recommended Posts