人工知能に関する断創録

このブログでは人工知能のさまざまな分野について調査したことをまとめています(更新停止: 2019年12月31日)

PyOpenGL

2008年目標(2008/1/1)になっていたOpenGLの勉強を始めた。3Dは以前DirectXをやっていたことがあったが、あまりに難しくて挫折したことがある・・・今はPCをMacにしてしまったこともあり、DirectXは使えないので代わりにOpenGLを使うことにした。OpenGLはさまざまな言語から使うラッパーがあるのでOpenGLのPythonラッパーであるPyOpenGLを調べている。PythonラッパーといってもOpenGLのコマンド名はほとんどそのまま。たとえば、OpenGLのバイブル(またの名を赤本)に出てくるC言語のhello.cをPythonで書くと下のようになる。

import sys
from OpenGL.GL import *
from OpenGL.GLUT import *

def display():
    glClear(GL_COLOR_BUFFER_BIT)
    
    # draw white polygon
    glColor3f(1.0, 1.0, 1.0)
    glBegin(GL_POLYGON)
    glVertex3f(0.25, 0.25, 0.0)
    glVertex3f(0.75, 0.25, 0.0)
    glVertex3f(0.75, 0.75, 0.0)
    glVertex3f(0.25, 0.75, 0.0)
    glEnd()
    glFlush()

def init():
    # select clearing color
    glClearColor(0.0, 0.0, 0.0, 0.0)
    
    # initialize viewing values
    glMatrixMode(GL_PROJECTION)
    glLoadIdentity()
    glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0)

def main():
    glutInit(sys.argv)
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB)
    glutInitWindowSize(250, 250)
    glutInitWindowPosition(100, 100)
    glutCreateWindow("hello")
    init()
    glutDisplayFunc(display)
    glutMainLoop()

if __name__ == "__main__":
    main()

関数名はC言語とまったく同じ!ネットにあるC言語のソースも簡単にPythonに翻訳できる。

あと3次元モデリングツールであるBlenderというソフトの使い方もちょっとずつ勉強を始めた。すごく複雑なソフトでまともなオブジェクトが作れるまでどれくらいかかるのかわからないけれどスライムくらい作れるようになりたいな(笑)3次元のゲームプログラミングはまったく未知の領域なので何だか楽しくなってきた。次元が1個増えるだけでプログラミング方法がこんなに変わるんだなぁ。とりあえずの目標は3次元Boids(Appletあり)!

OpenGLプログラミングガイド 原著第5版

OpenGLプログラミングガイド 原著第5版