Re: [PyOpenGL-Users] Modelview and projection matrices
Brought to you by:
mcfletch
From: Richard J. <ric...@op...> - 2002-01-05 23:03:39
|
On Sat, 5 Jan 2002 23:46, Jan Ekholm wrote: > Hi, > > I've been trying to implement some form of view frustum culling. I found > some interesting code on: > > http://www.markmorley.com/opengl/frustumculling.html > > The code is in C, so I need to translate it to Python. Central in that > approach is the use the current modelview and projection matrices. So I > get the using: > > projection = glGetFloatv ( GL_PROJECTION_MATRIX ) > modelview = glGetFloatv ( GL_MODELVIEW_MATRIX ) > > However, the Python versions return a [4][4] matrix, while the C versions > return a [16] array. The code on the page above uses a [16] array for all > indexing, so I'd like to translate the matrices I get from glGetFloatv to > arrays. Code (interchangeable python and C modules for frustum culling and octree storage) attached :) You can also get this code by downloading the tarball from http://goanna.adroit.net/~richard/ufo/ where there is some octree code that uses the frustum culling too. Note that since I discovered that the code is _significantly_ faster when it just draws _everything_ rather than tries to cull, the current ufo.py doesn't actually call the frustum or octree code. In a nutshell, define objects like the triangle object, stuff them into the octree with octree.insertPolygon or octree.insertObject for each of the object's bounding vertexes. The call octree.render with the frustum and it calls each of the appropriate sub-object's render() method. Note that I do _all_ my view projection manipulation in the projection matrix, so I don't include the modelview matrix. It's simple enough to un-comment the appropriate code though. Richard |