Changeset 1317

Show
Ignore:
Timestamp:
07/15/08 04:39:26 (5 months ago)
Author:
ArcRiley
Message:

Ticket #929 :

  • rearranged widgets.Projector → bodies.Camera → scenes.Scene API
  • Landscape (and eventually Space, etc) can now set a different zFar
  • eventually support many other neat tricks, too!
Location:
trunk/pysoy
Files:
9 modified

Legend:

Unmodified
Added
Removed
  • trunk/pysoy/examples/AnimBlock.py

    r1299 r1317  
    1111 
    1212lava = soy.transports.File('media/lava.soy')['gimp'] 
    13 lava.animate=(.5,0,0) 
     13lava.animate=(.125,0,0) 
    1414dot3 = soy.transports.File('media/fieldstone-dot3.soy')['gimp'] 
     15dot3.animate=(.25,0,0) 
    1516colors = { 
    1617  'Marble' : (soy.materials.Textured(colormap=lava, bumpmap=dot3), 
  • trunk/pysoy/include/soy.bodies.pxd

    r1305 r1317  
    1818# $Id$ 
    1919 
     20cimport gl 
    2021cimport ode 
    2122cimport soy._internals 
     
    8687cdef class Camera (Body) : 
    8788  cdef int                      _wire 
    88   cdef float                    _fovy 
    8989  cdef int                      _rpt 
    9090  cdef double                   _rtimes[16] 
     91  cdef gl.GLdouble              _fovy 
     92  cdef gl.GLdouble              _znear 
     93  cdef gl.GLdouble              _zfar 
    9194  # WindowLoop functions 
    92   cdef void                     _project                 ( self )        #nogil 
     95  cdef void                     _project                 ( self, 
     96                                                           gl.GLdouble ) #nogil 
    9397 
    9498 
  • trunk/pysoy/include/soy.scenes.pxd

    r1314 r1317  
    7070  cdef double                     _time 
    7171  # _coreloop methods 
    72   cdef void                       _render         ( self ) 
     72  cdef void                       _render         ( self,  
     73                                                    gl.GLdouble, gl.GLdouble,  
     74                                                    gl.GLdouble, gl.GLdouble ) 
    7375  cdef int                        _steps          ( self )                nogil 
    7476  cdef void                       _callback       ( self,  
  • trunk/pysoy/include/soy.widgets.pxd

    r1253 r1317  
    6868  cdef soy.bodies.Camera               _camera 
    6969  cdef int                             _connected 
    70   cdef float                           _znear 
    71   cdef float                           _zfar 
  • trunk/pysoy/src/bodies/Camera.pym

    r1274 r1317  
    3838    cdef int _i 
    3939    self._fovy = 45.0 
     40    self._znear  = 1.0 
     41    self._zfar   = 100.0 
    4042    self.mass = 0 
    4143    self._wire = wireframe 
     
    112114  # 
    113115 
    114   cdef void _project(self) : 
     116  cdef void _project(self, gl.GLdouble _aspect) : 
    115117    cdef gl.GLfloat  _mtx[16] 
    116118    # 
     
    136138    # 
    137139    # Now we apply an inverse matrix to translate to the Scene's origin 
     140    gl.glMatrixMode(gl.GL_MODELVIEW) 
     141    gl.glLoadIdentity() 
    138142    _mtx[0]  = self._rotation[0] 
    139143    _mtx[1]  = self._rotation[1] 
     
    154158    gl.glLoadMatrixf(_mtx) 
    155159    gl.glTranslatef(-self._position[0], -self._position[1], -self._position[2]) 
    156     self._scene._render() 
     160    self._scene._render(self._fovy, _aspect, self._znear, self._zfar) 
    157161    # 
    158162    # Framerate calc 
  • trunk/pysoy/src/scenes/Landscape.pym

    r1316 r1317  
    151151 
    152152 
    153   cdef void _render(self) : 
     153  cdef void _render(self, gl.GLdouble _fovy,  gl.GLdouble _aspect, 
     154                          gl.GLdouble _znear, gl.GLdouble _zfar) : 
     155    # 
     156    # Setup projection matrix 
     157    gl.glMatrixMode(gl.GL_PROJECTION) 
     158    gl.glLoadIdentity() 
     159    gl.gluPerspective(_fovy, _aspect, _znear, 1000.0) 
    154160    if self._buffer: 
    155161      py.PyMem_Free(self._elementArray) # The arrays are in Vram so lets free it in system mem 
     
    171177                       gl.GL_UNSIGNED_SHORT, <Face*> 0) 
    172178    gl.glBindBufferARB(gl.GL_ARRAY_BUFFER_ARB, 0) 
    173      
    174     Scene._render(self) 
     179    # 
     180    # Render the rest of the scene normally     
     181    Scene._render(self, _fovy, _aspect, _znear, _zfar) 
    175182""" 
    176183 
  • trunk/pysoy/src/scenes/Planar.pym

    r1224 r1317  
    178178  # 
    179179 
    180   cdef void _render(self) : 
    181     #gl.glDisable(gl.GL_DEPTH_BUFFER) 
     180  cdef void _render(self, gl.GLdouble _fovy,  gl.GLdouble _aspect, 
     181                          gl.GLdouble _znear, gl.GLdouble _zfar) : 
     182    # 
     183    # Setup projection matrix 
     184    gl.glMatrixMode(gl.GL_PROJECTION) 
     185    gl.glLoadIdentity() 
     186    gl.gluPerspective(_fovy, _aspect, _znear, _zfar) 
     187 
    182188    self._material._coreBind() 
    183189     
     
    195201    #gl.glPopMatrix() 
    196202    self._material._coreUnBind() 
    197     Scene._render(self) 
     203    Scene._render(self, _fovy, _aspect, _znear, _zfar) 
    198204    #gl.glEnable(gl.GL_DEPTH_BUFFER) 
    199205 
  • trunk/pysoy/src/scenes/Scene.pym

    r1279 r1317  
    124124 
    125125 
    126   cdef void _render(self) : 
     126  cdef void _render(self, gl.GLdouble _fovy,  gl.GLdouble _aspect, 
     127                          gl.GLdouble _znear, gl.GLdouble _zfar) : 
    127128    cdef int _i 
     129    # 
     130    # Setup projection matrix 
     131    gl.glMatrixMode(gl.GL_PROJECTION) 
     132    gl.glLoadIdentity() 
     133    gl.gluPerspective(_fovy, _aspect, _znear, _zfar) 
    128134    # 
    129135    # Setup scene-level rendering 
  • trunk/pysoy/src/widgets/Projector.pym

    r1244 r1317  
    3838    else : 
    3939      self._connected = 0 
    40     self._znear  = 1.0 
    41     self._zfar   = 100.0 
     40 
    4241 
    4342  ############################################################################ 
     
    5554      _aspect = (<float> self._width) / (<float> self._height)     
    5655    gl.glViewport(self._xpos, self._ypos, self._width, self._height) 
    57     gl.glMatrixMode(gl.GL_PROJECTION) 
    58     gl.glLoadIdentity() 
    59     gl.gluPerspective(self._camera._fovy, _aspect, self._znear, self._zfar) 
    60     gl.glMatrixMode(gl.GL_MODELVIEW) 
    61     gl.glLoadIdentity() 
    62     self._camera._project() 
     56    self._camera._project(_aspect) 
    6357 
    6458  ############################################################################