Pythonに興味津々な僕は日々思いついたことに手を出しています。フレームワークのDjangoFlaskもそう。

ある日はふと「PythonでOpenGLって使えるのかな?」と思って調べてみたらある!本当にPythonはライブラリが豊富なんですね。

というわけで、PyOpenGLを使ってみて僕が学んだことをまとめます。結果としては動きはしましたが、「?」な部分もあるという状態です。

開発環境

  • OS1:macOS Sierra 10.12.3
  • OS2:Ubuntu 16.04.2 LTS on Parallels Desktop
  • Anaconda Python 3.6 version
  • PyOpenGL 3.1.0

PyOpenGLのインストール

$ pip install PyOpenGL PyOpenGL_accelerate

$ pip install PyOpenGL-Demo
※デモファイルをインストールしたい場合

なお、デモファイルの動作を確認する前にコピーさせていただいたソースがあり、動作確認をしたときに謎なことが。

参考:pyOpenGLを使って分子動力学を可視化 – Python in the box

macOSで動作確認

謎の赤線

macOSのVisual Studio Codeで赤ラインだらけ。flake8やpylintが検知したエラーです。ひーーーって叫びたくなります。

でも実際には動くんですよ。

「なんで?エラー出てるのに動くの?そういうもんなの?それでいいの?なんでいいの?」ですよ。

加えて、プロセスを止めるためにctrl+cしたら、Terminalにたぶん良くはない状況が映し出されてる。

ここまでで気づいたこと

  • PyOpenGLは「pip3」でインストールすべきだったのか?(Macには2.6/2.7が入っているからpipと入力しただけでは2系として動いているとの情報あり)
  • ではpip3ってどうやってインストールするの?
  • もしかして2to3でpyOpenGLをコンバートする必要があるの?

よくよく考えてみると、pipはPython3系のAnacondaに組み込まれています。「conda list」と入力すると出てきますし、「python -V」や「which python」と入力してもAnacondaのそれを指し示します。

ということは、pipと入力しても2系で動くとは考えにくい。

Ubuntuで動作確認

謎の赤線なし

次に仮想環境内のUbuntuでも同じことをやってみました。こっちならどうなるんだろう、という疑問からです。すると・・・

「GULTがない!」

と怒られる。

ナニソレ?

GLUTとはOpenGLを使う上でOSのなにがしを整えるものらしい。JavaのVMみたいなものですかね。調べてみたらfreeglut3を発見したので、それをインストールすることに。

$ sudo apt-get install freeglut3 freeglut3-dev

結果、無事に動いたうえにVisual Studio Codeの赤ラインが綺麗さっぱりなくなった!スッキリ!

ここまででわかったこと

「macOSでもGULTを整えればよいのではないか?」ということ。

早速以下を参考に調べてみましたがPythonで使うためにどうこうするではなくて、今の僕では結果としてよくわからずのまま試合終了です。

参考:GLUTによる「手抜き」OpenGL入門

とはいえ、このままスッキリしないままでいるのもいやなので、本家のデモであるPyOpenGL-Demoを動かしてみることにしました。

ところが、PyOpenGLはPython2系で書かれているようで動かないというね。ちくちょー!

諦めきれない僕は次に、Python2系のソースコードを3系にコンバートしてくれる「2to3」というツールをPyOpenGLにかけてみました。

さぁどうだ!?

ダメだー!!

・・・というところで力尽きました。スッキリできなかった。

おわりに

PyOpenGLを使ってみようとして戦った数時間の軌跡をまとめるとこちら。

  1. まだまだPython2系で動くライブラリが豊富という状況なんですねチクショウめ!
  2. Anacondaのpipでインストールしたパッケージは全てAnaconda配下にまとめられて分かりやすい。
  3. pipには2系と3系がある。
  4. pipコマンドのオプション。
  5. ついでにbrewコマンドのオプション。(なんでこの流れになったのか思い出せない)
  6. 2to3は良いんだか悪いんだか判断できない。
  7. GLUTというOpenGLを各環境で動かすためのなにがしがある。
  8. デモは動かせなかったけど、そのためにとった行動の一つ一つが僕には楽しい、ということ。

2系と3系の差にはしてやられましたが、僕の中で何も進んでいないかというとそうでもないんですよ。

デイル・ドーテン著「仕事は楽しいかね?」に登場するすごいおじさん、マックス・エルモアが言っています。

『試してみるところに失敗はない』

やることに意味があります。たとえそれがダメだったとしても、それで元いた位置に戻るかと言えばそうじゃないんです。

告知:Pythonもくもく会 in Knower(s)

スッキリしなかった僕がスッキリさせるためにやる(だけが理由ではありませんが笑)「Pythonもくもく会」を松本市のコワーキングスペースKnower(s)で開催!

【長野・松本藩】第3回 Pythonもくもく会 – connpass

  • 日時:2017年3月26日(日)14:00〜17:00
  • 場所:長野県松本市のコワーキングスペースKnower(s)
  • 参加費用:500円
  • 持ち物:PC、書籍など各自の勉強に必要なもの

一緒にもくもくすることで刺激になります!ご参加お待ちしています!

書籍紹介

created by Rinker
¥4,180 (2024/04/20 11:04:43時点 Amazon調べ-詳細)
created by Rinker
オライリー・ジャパン
¥7,480 (2024/04/20 11:04:44時点 Amazon調べ-詳細)

編集後記

2017年4月:PyOpenGLが使えるようになりました!

2019年2月:環境構築手順を新たに整理しました!

この記事を書いた人

花村貴史|Takashi Hanamura

◆Photographer|木漏れ日や水、空が魅せるきらきらが好き|写真を通じて「やさしい世界」を伝えてゆく ◆Software Engineer|Private: Go/C++/WebGL|Work: SAP/SAC

写真素材note発売中

継続課金マガジンで販売しています。ブログに載せるもOK、壁紙に設定するもOK、使い方は自由です。フリー素材も良いけれど、人と被りたくないという方に人気です。

人物写真|Photo Session

お話しながらのポートレイト撮影です。「今」そして「これから」のあなたにフォーカスして撮影します。SNSやサイト用のプロフィール写真に。

イベント写真|Photo Shooting

「友達と楽しんでいる」「セミナーで講演している」「パーティーを主催している」など、皆さんが大切な時間を過ごしている瞬間をスナップします。