gluLookAtをglLoadMatrixで置き換えてみる
レンダラにカメラ位置を渡すのに便利なように、カメラの位置を行列で保持することにした。
もともと、
gluLookAt(pos[0], pos[1], pos[2], target[0], target[1], target[2], up[0], up[1], up[2])
としていたのを
大間違いしていたことが判明。以下、直しました(5/15)
glGetFloat(GL_MODELVIEW_MATRIX)で見ながら直したので多分大丈夫w
z=normalize(pos-target) x=normalize(numpy.cross(up, z)) y=normalize(numpy.cross(z, x)) distance=norm(target-pos) m=numpy.array(( (x[0], y[0], z[0], 0), (x[1], y[1], z[1], 0), (x[2], y[2], z[2], 0), (0, 0, -distance, 1.0), ), 'f') glLoadMatrixf(m)
でほぼ同等。
OpenGLの行列の並びが列・行なのに注意しる。