mieki256's diary



2021/09/30(木) [n年前の日記]

#1 [python] Pygame + PyOpenGL で teapot が描画できない

Python + 2Dゲーム制作ライブラリ Pygame の復習を兼ねて、昔書いたスクリプトを動かして確認していたのだけど。Pyagme + 3D描画ライブラリ PyOpenGL を使ったスクリプト上で teapot の描画ができない ―― glutWireTeapot() や glutSolidTeapot() がエラーを出すことに気づいた。

環境は、Windows10 x64 21H1 + Python 3.9.5 x64 + pygame 2.0.1 + PyOpenGL 3.1.5 + PyOpenGL-accelerate 3.1.5。
> python -VV
Python 3.9.5 (tags/v3.9.5:0a7dcbd, May  3 2021, 17:27:52) [MSC v.1928 64 bit (AMD64)]

> pip list | grep -e pygame -e PyOpenGL
pygame              2.0.1
PyOpenGL            3.1.5
PyOpenGL-accelerate 3.1.5

動かなかったスクリプトは以下。

_01_teapot_on_pygame.py

以下のようなエラーメッセージが出る。
> python 01_teapot_on_pygame.py
pygame 2.0.1 (SDL 2.0.14, Python 3.9.5)
Hello from the pygame community. https://www.pygame.org/contribute.html
Traceback (most recent call last):
  File "D:\home\prg\python\_test_sample\pygame_opengl\01_teapot_on_pygame.py", line 102, in <module>
    glutWireTeapot(1.0)   # wireframe
OSError: exception: access violation reading 0x0000000000000034

ちなみに、昔のバージョン、Python 2.7.18 x86 + pygame 2.0.1 + PyOpenGL 3.1.0 + PyOpenGL-accelerate 3.1.0 なら、ちゃんと動く。ウインドウ内に teapot が表示される。
> python -V
Python 2.7.18

> pip list | grep -e pygame -e PyOpenGL
pygame              2.0.1
PyOpenGL            3.1.0
PyOpenGL-accelerate 3.1.0

解決方法は今のところ不明。

PyOpenGLのインストールについて。 :

Windows上で PyOpenGL を使おうとして、pip でネット経由のインストールを ―― pip install PyOpenGL でインストールしたら、GLUT関連が動かなくてハマった。別途 glut*.dll 等が必要になると思うのだけど、どの版を入手して、どこに置けばいいのやら。

以下のサイトから非公式版の .whl を入手してインストールすれば、すんなり動いてくれる。

_Python Extension Packages for Windows - Christoph Gohlke

今回、Python 3.9.5 x64上で使いたかったので、以下をDLしてインストールした。
  • PyOpenGL-3.1.5-cp39-cp39-win_amd64.whl
  • PyOpenGL_accelerate-3.1.5-cp39-cp39-win_amd64.whl
pip install PyOpenGL-3.1.5-cp39-cp39-win_amd64.whl
pip install PyOpenGL_accelerate-3.1.5-cp39-cp39-win_amd64.whl

ちなみに、Python 3.9.xインストールフォルダ\Lib\site-packages\OpenGL\DLLS\ 以下に、freeglut64.vc15.dll、gle64.vc15.dll、glut64.vc15.dll が入っている模様。

Python 2.7.18 上では、以下を実行してインストールした。
  • PyOpenGL-3.1.0.win32-py2.7.exe
  • PyOpenGL-accelerate-3.1.0.win32-py2.7.exe
ただ、今回は上記ファイルをHDDの中から発掘してインストールしたけれど、このバージョンのセットアップファイルは、今では入手できない気がする…。一応、置いとくか…。本来は最新版をインストールすれば済むはずだけど…。

_pyopengl_310_win32_py27_setup.zip

PyOpenGLだけなら問題無し。 :

PyOpenGL のバージョンが上がったことで teapot 関係の機能が削除されたのではと疑ったりもしたけれど、pygame と組み合わせず、PyOpenGL だけを使った場合は teapot もフツーに描画できた。以下は動作したスクリプト。

_teapot_draw.py

ということで、Pygame と PyOpenGL を組み合わせて、かつ、今現在のバージョンで動かした時だけ teapotの描画が何故かできないという…。

でもまあ、teapot描画を何かしら実用的なアレコレで使うかと言えば、そういうわけでもないし…。大体は、サンプルスクリプトの一例として使う場合がほとんどだから…。

そもそも、Pygame と PyOpenGL を組み合わせて使う場面自体がほとんど無いのではないかという気もするし…。こういう状態でも、実害は皆無かもしれず。

#2 [anime] 「オッドタクシー」最終回を視聴

BSテレ東で放送されてたアニメ。最終回を視聴。

最初のうちは「何だろう、このアニメ」と、ジャンルも掴めないまま眺めてたけど、最後まで見たら、めちゃくちゃ面白かった…。設定からして、アニメ、もしくは漫画でしか実現できない作品かもしれないなと。実写でこの見た目は無理だろう…。一見するとほんわか動物アニメのように思ってしまうだろうけど、内容というか構成が…。いやはや、素晴らしい。

それにしても、説明が難しい作品だなと。どこを説明してもネタバレになってしまいそう。とにかく最後まで見てほしい、見れば面白さが分かる、としか言えない…。

そういえば、テレ東系のアニメにしては珍しく、BSテレ東で全国放送されたアニメなのだな…。テレ東のアニメって、滅多にBSでは放送しない印象があったけれど、さすがにこの作品は、CM映像だのPV映像だのをいくら見せても、誰からも注目されないと判断したのかなと…。本編を見なきゃ何が面白いのか全然分からないアニメだもんな…。

あまりに面白かったので、ネット配信されてるオーディオドラマとやらも全部聞いてしまった。ボールペンってそういうことか…。なるほどなあ…。となると、ますます本編のラストが…。これまでの展開を考えると、まあ、そうなるよなあ…。

以上、1 日分です。

過去ログ表示

Prev - 2021/09 - Next
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project