You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(4) |
Sep
|
Oct
|
Nov
|
Dec
|
---|
From: <ar...@us...> - 2006-08-17 19:06:38
|
Revision: 7 Author: aronb Date: 2006-08-17 12:06:34 -0700 (Thu, 17 Aug 2006) ViewCVS: http://svn.sourceforge.net/pydemeter/?rev=7&view=rev Log Message: ----------- - Add ability to show wireframe grid. Modified Paths: -------------- trunk/src/test/glut_example.py Modified: trunk/src/test/glut_example.py =================================================================== --- trunk/src/test/glut_example.py 2006-08-17 18:56:02 UTC (rev 6) +++ trunk/src/test/glut_example.py 2006-08-17 19:06:34 UTC (rev 7) @@ -22,7 +22,8 @@ camera = None cameraPosition = None # The "detail level" of the terrain - higher values will render faster but yield less visual quality -threshold = 30.0; +threshold = 30.0 +polygon_mode = 0 def init(): global terrain @@ -142,6 +143,8 @@ glutPostRedisplay() def key(ch, x, y): + global camera + global threshold # Adjust control velocities based on user's current execution speed CAMERA_SPEED = 100.0 # Meters per second CAMERA_ROTATE_SPEED = 0.5 # Radians per second @@ -164,12 +167,22 @@ camera.SetHoverElevation(camera.GetHoverElevation() - translateSpeed); elif '+' == ch: # Increase the detail threshold (make the terrain less detailed - worse looking but faster) - self.mThreshold += 0.5 - print "SAMPLE: Threshold = ", self.mThreshold + threshold += 5 + print "SAMPLE: Threshold = ", threshold elif '-' == ch: # Decrease the detail threshold (make the terrain more detailed - better looking but slower) - self.mThreshold -= 0.5 - print "SAMPLE: Threshold = ", self.mThreshold + threshold -= 5 + print "SAMPLE: Threshold = ", threshold + elif 'g' == ch: + global polygon_mode + polygon_mode = (polygon_mode+1)%3 + if 0 == polygon_mode: + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL) + elif 1 == polygon_mode: + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE) + else: + glPolygonMode(GL_FRONT_AND_BACK, GL_POINT) + elif ord(ch) == 27: # Escape sys.exit(0) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ar...@us...> - 2006-08-17 18:56:25
|
Revision: 6 Author: aronb Date: 2006-08-17 11:56:02 -0700 (Thu, 17 Aug 2006) ViewCVS: http://svn.sourceforge.net/pydemeter/?rev=6&view=rev Log Message: ----------- - Renaming the qt example. - Adding glut example. Added Paths: ----------- trunk/src/test/glut_example.py trunk/src/test/qt_example.py Removed Paths: ------------- trunk/src/test/hellogl.py Added: trunk/src/test/glut_example.py =================================================================== --- trunk/src/test/glut_example.py (rev 0) +++ trunk/src/test/glut_example.py 2006-08-17 18:56:02 UTC (rev 6) @@ -0,0 +1,205 @@ +#!/usr/bin/env python + +import os, sys +import demeter + +try: + from OpenGL.GL import * + from OpenGL.GLUT import * +except ImportError: + print "PyOpenGL must be installed to run this example." + sys.exit(1) + +if not os.environ.has_key("DEMETER_SAMPLE_DATA_PATH"): + print "You must set DEMETER_SAMPLE_DATA_PATH to the location of the sample data." + sys.exit(1) + +terrain = None +camera = None +cameraPosition = None + +terrain = None +camera = None +cameraPosition = None +# The "detail level" of the terrain - higher values will render faster but yield less visual quality +threshold = 30.0; + +def init(): + global terrain + global camera + global cameraPosition + try: + demeter.Settings.GetInstance().Initialize() + demeter.Settings.GetInstance().SetVerbose(True) + demeter.Settings.GetInstance().SetMediaPath(os.environ["DEMETER_SAMPLE_DATA_PATH"]); + demeter.Settings.GetInstance().SetUseVertexLocking(True) + demeter.Settings.GetInstance().SetUseNormals(False) + demeter.Settings.GetInstance().SetUseBorders(False) + + + demeter.Settings.GetInstance().SetDetailTextureRepeats((512.0 * 30.0) / 64.0) + demeter.Settings.GetInstance().SetTextureCellWidth(2048) + demeter.Settings.GetInstance().SetTextureCellHeight(2048) + demeter.Settings.GetInstance().SetTextureMaskWidth(2048) + demeter.Settings.GetInstance().SetTextureMaskHeight(2048) + demeter.Settings.GetInstance().SetTextureCompression(True) + + terrain = demeter.Terrain() + #demeter.LoadRawElevations(terrain,"/home/aronb/Source/demeter.4.0/DemeterSampleData/Raid.raw",513,513,30.0,0.015,False) + demeter.LoadRawElevations(terrain,"Raid.raw",513,513,30.0,0.015,False) + #demeter.SDLTextureLoader.GetInstance().LoadTerrainTexture("RaidTexture.png", terrain) + tex_loader = demeter.PILTextureLoader.PILTextureLoader() + #(width, height, data) = tex_loader.loadImage("/home/aronb/Source/demeter.4.0/DemeterSampleData/RaidTexture.png") + (width, height) = tex_loader.LoadTerrainTexture("/home/aronb/Source/demeter.4.0/DemeterSampleData/RaidTexture.png", terrain) + #(width, height) = tex_loader.LoadTerrainTexture("/home/aronb/Source/demeter.4.0/DemeterSampleData/arctica.png", terrain) + + tex_loader.LoadMasks(terrain, "/home/aronb/Source/demeter.4.0/DemeterSampleData/RaidMask.png", + "/home/aronb/Source/demeter.4.0/DemeterSampleData/granite19.png", + "/home/aronb/Source/demeter.4.0/DemeterSampleData/grassDetail.png", + "/home/aronb/Source/demeter.4.0/DemeterSampleData/road2.png") + print "Image [%s] [%s]" % (width, height) + except Exception, ex: + print "ERROR: ", ex + + try: + MAX_VIEW_DISTANCE = 8000.0 + SKY_RED = 0.5 + SKY_GREEN = 0.75 + SKY_BLUE = 1.0 + SKY_ALPHA = 1.0 + FOG_RED = SKY_RED + FOG_GREEN = SKY_GREEN + FOG_BLUE = SKY_BLUE + FOG_ALPHA = SKY_ALPHA + ScreenWidth = 800 + ScreenHeight = 600 + terrain.SetMaximumVisibleBlockSize(128) + # Setup 3D scene + # Vanilla OpenGL setup + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glViewport(0, 0, 800, 600) + glFrustum(-0.5, 0.5, -0.5, 0.5, 0.65, MAX_VIEW_DISTANCE); + glClearColor(SKY_RED, SKY_GREEN, SKY_BLUE, SKY_ALPHA); + glDisable(GL_NORMALIZE); + glEnable(GL_DEPTH_TEST); + glShadeModel(GL_SMOOTH); + # Setup fog + fogColor = [0, 0, 0, 0] + fogColor[0] = FOG_RED + fogColor[1] = FOG_GREEN + fogColor[2] = FOG_BLUE + fogColor[3] = FOG_ALPHA + glEnable(GL_FOG) + glFogf(GL_FOG_MODE, GL_LINEAR) + glFogfv(GL_FOG_COLOR, fogColor); + glFogf(GL_FOG_START, 100.0) + glFogf(GL_FOG_END, MAX_VIEW_DISTANCE - 100.0) + glHint(GL_FOG_HINT, GL_FASTEST) + + # Setup camera + cameraPosition = demeter.Vector() + cameraPosition.x = terrain.GetWidth() / 2.0 + cameraPosition.y = terrain.GetHeight() / 2.0 + cameraPosition.z = 50.0 + camera = demeter.Camera(terrain) + camera.SetPosition(cameraPosition.x, cameraPosition.y) + camera.SetHoverElevation(50.0) + except Exception, ex: + print "ERROR: ", ex + +def draw(): + global terrain + global camera + global cameraPosition + if camera is not None: + # Setup viewing transformation + camera.Update() + camPos = demeter.Vector() + camera.GetPosition(camPos) + terrain.SetCameraPosition(camPos.x,camPos.y) + if terrain is not None: + #Render the terrain + terrain.SetCameraPosition(0, 0) + terrain.SetDetailThreshold(threshold) + terrain.ModelViewMatrixChanged() + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) + try: + terrain.Render() + except Exception, ex: + print "EXCEPTION: ", ex + glutSwapBuffers() + +def reshape(width, height): + MAX_VIEW_DISTANCE = 8000.0 + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glViewport(0, 0, width, height) + glFrustum(-0.5, 0.5, -0.5, 0.5, 0.65, MAX_VIEW_DISTANCE); + glMatrixMode(GL_MODELVIEW) + +def idle(): + glutPostRedisplay() + +def key(ch, x, y): + # Adjust control velocities based on user's current execution speed + CAMERA_SPEED = 100.0 # Meters per second + CAMERA_ROTATE_SPEED = 0.5 # Radians per second + TimePerFrame = 0.03 + rotateSpeed = TimePerFrame * CAMERA_ROTATE_SPEED; + translateSpeed = TimePerFrame * CAMERA_SPEED; + + # Handle keyboard commands + if 'w' == ch: + camera.TranslateForward(translateSpeed); + elif 'x' == ch: + camera.TranslateBackward(translateSpeed); + elif 'a' == ch: + camera.TranslateLeft(translateSpeed); + elif 'd' == ch: + camera.TranslateRight(translateSpeed); + elif 'q' == ch: + camera.SetHoverElevation(camera.GetHoverElevation() + translateSpeed); + elif 'z' == ch: + camera.SetHoverElevation(camera.GetHoverElevation() - translateSpeed); + elif '+' == ch: + # Increase the detail threshold (make the terrain less detailed - worse looking but faster) + self.mThreshold += 0.5 + print "SAMPLE: Threshold = ", self.mThreshold + elif '-' == ch: + # Decrease the detail threshold (make the terrain more detailed - better looking but slower) + self.mThreshold -= 0.5 + print "SAMPLE: Threshold = ", self.mThreshold + elif ord(ch) == 27: # Escape + sys.exit(0) + +def special(): + pass +def visible(vis): + if vis == GLUT_VISIBLE: + glutIdleFunc(idle) + else: + glutIdleFunc(None) + +if __name__ == '__main__': + glutInit(sys.argv) + glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH) + + glutInitWindowPosition(0, 0) + glutInitWindowSize(800, 600) + glutCreateWindow("pyDemeter") + init() + + glutDisplayFunc(draw) + glutReshapeFunc(reshape) + glutKeyboardFunc(key) + glutSpecialFunc(special) + glutVisibilityFunc(visible) + glutIdleFunc(idle) + + if "-info" in sys.argv: + print "GL_RENDERER = ", glGetString(GL_RENDERER) + print "GL_VERSION = ", glGetString(GL_VERSION) + print "GL_VENDOR = ", glGetString(GL_VENDOR) + print "GL_EXTENSIONS = ", glGetString(GL_EXTENSIONS) + glutMainLoop() Property changes on: trunk/src/test/glut_example.py ___________________________________________________________________ Name: svn:executable + * Name: svn:eol-style + native Deleted: trunk/src/test/hellogl.py =================================================================== --- trunk/src/test/hellogl.py 2006-08-16 22:47:32 UTC (rev 5) +++ trunk/src/test/hellogl.py 2006-08-17 18:56:02 UTC (rev 6) @@ -1,241 +0,0 @@ -#!/usr/bin/env python - -"""PyQt4 port of the opengl/hellogl example from Qt v4.x""" - -import os -import sys -import math -from PyQt4 import QtCore, QtGui, QtOpenGL -import demeter - -try: - from OpenGL import GL -except ImportError: - app = QtGui.QApplication(sys.argv) - QtGui.QMessageBox.critical(None, "OpenGL hellogl", - "PyOpenGL must be installed to run this example.", - QtGui.QMessageBox.Ok | QtGui.QMessageBox.Default, - QtGui.QMessageBox.NoButton) - sys.exit(1) - -terrain = None -camera = None -cameraPosition = None - -class Window(QtGui.QWidget): - def __init__(self, parent=None): - QtGui.QWidget.__init__(self, parent) - - self.glWidget = GLWidget() - - - mainLayout = QtGui.QHBoxLayout() - mainLayout.addWidget(self.glWidget) - self.setLayout(mainLayout) - - self.setWindowTitle(self.tr("Hello GL")) - -class GLWidget(QtOpenGL.QGLWidget): - def __init__(self, parent=None): - QtOpenGL.QGLWidget.__init__(self, parent) - self.setFocusPolicy(QtCore.Qt.StrongFocus) - self.lastPos = QtCore.QPoint() - - # The "detail level" of the terrain - higher values will render faster but yield less visual quality - self.mThreshold = 30.0; - - - def keyPressEvent(self, event): - #global keymap - global camera - text = event.text() - if len(text) > 0: - ch = event.text().at(0).toAscii() - key = event.key() - - # Adjust control velocities based on user's current execution speed - CAMERA_SPEED = 100.0 # Meters per second - CAMERA_ROTATE_SPEED = 0.5 # Radians per second - TimePerFrame = 0.03 - rotateSpeed = TimePerFrame * CAMERA_ROTATE_SPEED; - translateSpeed = TimePerFrame * CAMERA_SPEED; - - # Handle keyboard commands - if 'w' == ch: - camera.TranslateForward(translateSpeed); - if 'x' == ch: - camera.TranslateBackward(translateSpeed); - if 'a' == ch: - camera.TranslateLeft(translateSpeed); - if 'd' == ch: - camera.TranslateRight(translateSpeed); - if 'q' == ch: - camera.SetHoverElevation(camera.GetHoverElevation() + translateSpeed); - if 'z' == ch: - camera.SetHoverElevation(camera.GetHoverElevation() - translateSpeed); - #if (pKeys[SDLK_ESCAPE]) - # continueRunning = false; - - if '+' == ch: - # Increase the detail threshold (make the terrain less detailed - worse looking but faster) - self.mThreshold += 0.5 - print "SAMPLE: Threshold = ", self.mThreshold - if '-' == ch: - # Decrease the detail threshold (make the terrain more detailed - better looking but slower) - self.mThreshold -= 0.5 - print "SAMPLE: Threshold = ", self.mThreshold - - if QtCore.Qt.Key_Escape == key: - QtGui.qApp.closeAllWindows() - - - #self.mManager.keyPress(ord(ch), 0, 0) - #elif keymap.has_key(event.key()): - # key = keymap[event.key()] - # self.mManager.keyPress(key,0,0) - self.updateGL() - - def minimumSizeHint(self): - return QtCore.QSize(50, 50) - - def sizeHint(self): - return QtCore.QSize(400, 400) - - hack = None - - def initializeGL(self): - global terrain - global camera - global cameraPosition - global hack - print "SAMPLE: OpenGL vendor: ", GL.glGetString(GL.GL_VENDOR) - print "SAMPLE: OpenGL extensions supported: ", GL.glGetString(GL.GL_EXTENSIONS) - try: - demeter.Settings.GetInstance().Initialize() - demeter.Settings.GetInstance().SetVerbose(True) - demeter.Settings.GetInstance().SetMediaPath(os.environ["DEMETER_SAMPLE_DATA_PATH"]); - demeter.Settings.GetInstance().SetUseVertexLocking(True) - demeter.Settings.GetInstance().SetUseNormals(False) - demeter.Settings.GetInstance().SetUseBorders(False) - - - demeter.Settings.GetInstance().SetDetailTextureRepeats((512.0 * 30.0) / 64.0) - demeter.Settings.GetInstance().SetTextureCellWidth(2048) - demeter.Settings.GetInstance().SetTextureCellHeight(2048) - demeter.Settings.GetInstance().SetTextureMaskWidth(2048) - demeter.Settings.GetInstance().SetTextureMaskHeight(2048) - demeter.Settings.GetInstance().SetTextureCompression(True) - - terrain = demeter.Terrain() - #demeter.LoadRawElevations(terrain,"/home/aronb/Source/demeter.4.0/DemeterSampleData/Raid.raw",513,513,30.0,0.015,False) - demeter.LoadRawElevations(terrain,"Raid.raw",513,513,30.0,0.015,False) - #demeter.SDLTextureLoader.GetInstance().LoadTerrainTexture("RaidTexture.png", terrain) - tex_loader = demeter.PILTextureLoader.PILTextureLoader() - #(width, height, data) = tex_loader.loadImage("/home/aronb/Source/demeter.4.0/DemeterSampleData/RaidTexture.png") - (width, height) = tex_loader.LoadTerrainTexture("/home/aronb/Source/demeter.4.0/DemeterSampleData/RaidTexture.png", terrain) - #(width, height) = tex_loader.LoadTerrainTexture("/home/aronb/Source/demeter.4.0/DemeterSampleData/arctica.png", terrain) - - tex_loader.LoadMasks(terrain, "/home/aronb/Source/demeter.4.0/DemeterSampleData/RaidMask.png", - "/home/aronb/Source/demeter.4.0/DemeterSampleData/granite19.png", - "/home/aronb/Source/demeter.4.0/DemeterSampleData/grassDetail.png", - "/home/aronb/Source/demeter.4.0/DemeterSampleData/road2.png") - print "Image [%s] [%s]" % (width, height) - except Exception, ex: - print "ERROR: ", ex - - try: - MAX_VIEW_DISTANCE = 8000.0 - SKY_RED = 0.5 - SKY_GREEN = 0.75 - SKY_BLUE = 1.0 - SKY_ALPHA = 1.0 - FOG_RED = SKY_RED - FOG_GREEN = SKY_GREEN - FOG_BLUE = SKY_BLUE - FOG_ALPHA = SKY_ALPHA - ScreenWidth = 800 - ScreenHeight = 600 - terrain.SetMaximumVisibleBlockSize(128) - # Setup 3D scene - # Vanilla OpenGL setup - GL.glMatrixMode(GL.GL_PROJECTION); - GL.glLoadIdentity(); - GL.glViewport(0, 0, self.width(), self.height()); - GL.glFrustum(-0.5, 0.5, -0.5, 0.5, 0.65, MAX_VIEW_DISTANCE); - GL.glClearColor(SKY_RED, SKY_GREEN, SKY_BLUE, SKY_ALPHA); - GL.glDisable(GL.GL_NORMALIZE); - GL.glEnable(GL.GL_DEPTH_TEST); - GL.glShadeModel(GL.GL_SMOOTH); - # Setup fog - fogColor = [0, 0, 0, 0] - fogColor[0] = FOG_RED - fogColor[1] = FOG_GREEN - fogColor[2] = FOG_BLUE - fogColor[3] = FOG_ALPHA - GL.glEnable(GL.GL_FOG) - GL.glFogf(GL.GL_FOG_MODE, GL.GL_LINEAR) - GL.glFogfv(GL.GL_FOG_COLOR, fogColor); - GL.glFogf(GL.GL_FOG_START, 100.0) - GL.glFogf(GL.GL_FOG_END, MAX_VIEW_DISTANCE - 100.0) - GL.glHint(GL.GL_FOG_HINT, GL.GL_FASTEST) - - # Setup camera - cameraPosition = demeter.Vector() - cameraPosition.x = terrain.GetWidth() / 2.0 - cameraPosition.y = terrain.GetHeight() / 2.0 - cameraPosition.z = 50.0 - camera = demeter.Camera(terrain) - camera.SetPosition(cameraPosition.x, cameraPosition.y) - camera.SetHoverElevation(50.0) - except Exception, ex: - print "ERROR: ", ex - - def paintGL(self): - global terrain - global camera - if camera is not None: - # Setup viewing transformation - camera.Update() - camPos = demeter.Vector() - camera.GetPosition(camPos) - terrain.SetCameraPosition(camPos.x,camPos.y) - if terrain is not None: - #Render the terrain - terrain.SetCameraPosition(0, 0) - terrain.SetDetailThreshold(self.mThreshold) - terrain.ModelViewMatrixChanged() - GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT) - try: - terrain.Render() - except Exception, ex: - print "EXCEPTION: ", ex - - - def resizeGL(self, width, height): - MAX_VIEW_DISTANCE = 8000.0 - GL.glMatrixMode(GL.GL_PROJECTION); - GL.glLoadIdentity(); - GL.glViewport(0, 0, width, height) - GL.glFrustum(-0.5, 0.5, -0.5, 0.5, 0.65, MAX_VIEW_DISTANCE); - GL.glMatrixMode(GL.GL_MODELVIEW) - - - def mousePressEvent(self, event): - self.lastPos = QtCore.QPoint(event.pos()) - - def mouseMoveEvent(self, event): - dx = event.x() - self.lastPos.x() - dy = event.y() - self.lastPos.y() - - self.lastPos = QtCore.QPoint(event.pos()) - -if __name__ == '__main__': - app = QtGui.QApplication(sys.argv) - window = Window() - window.show() - - if not os.environ.has_key("DEMETER_SAMPLE_DATA_PATH"): - exit(9) - - - sys.exit(app.exec_()) Copied: trunk/src/test/qt_example.py (from rev 3, trunk/src/test/hellogl.py) =================================================================== --- trunk/src/test/qt_example.py (rev 0) +++ trunk/src/test/qt_example.py 2006-08-17 18:56:02 UTC (rev 6) @@ -0,0 +1,241 @@ +#!/usr/bin/env python + +"""PyQt4 port of the opengl/hellogl example from Qt v4.x""" + +import os +import sys +import math +from PyQt4 import QtCore, QtGui, QtOpenGL +import demeter + +try: + from OpenGL import GL +except ImportError: + app = QtGui.QApplication(sys.argv) + QtGui.QMessageBox.critical(None, "OpenGL hellogl", + "PyOpenGL must be installed to run this example.", + QtGui.QMessageBox.Ok | QtGui.QMessageBox.Default, + QtGui.QMessageBox.NoButton) + sys.exit(1) + +terrain = None +camera = None +cameraPosition = None + +class Window(QtGui.QWidget): + def __init__(self, parent=None): + QtGui.QWidget.__init__(self, parent) + + self.glWidget = GLWidget() + + + mainLayout = QtGui.QHBoxLayout() + mainLayout.addWidget(self.glWidget) + self.setLayout(mainLayout) + + self.setWindowTitle(self.tr("Hello GL")) + +class GLWidget(QtOpenGL.QGLWidget): + def __init__(self, parent=None): + QtOpenGL.QGLWidget.__init__(self, parent) + self.setFocusPolicy(QtCore.Qt.StrongFocus) + self.lastPos = QtCore.QPoint() + + # The "detail level" of the terrain - higher values will render faster but yield less visual quality + self.mThreshold = 30.0; + + + def keyPressEvent(self, event): + #global keymap + global camera + text = event.text() + if len(text) > 0: + ch = event.text().at(0).toAscii() + key = event.key() + + # Adjust control velocities based on user's current execution speed + CAMERA_SPEED = 100.0 # Meters per second + CAMERA_ROTATE_SPEED = 0.5 # Radians per second + TimePerFrame = 0.03 + rotateSpeed = TimePerFrame * CAMERA_ROTATE_SPEED; + translateSpeed = TimePerFrame * CAMERA_SPEED; + + # Handle keyboard commands + if 'w' == ch: + camera.TranslateForward(translateSpeed); + if 'x' == ch: + camera.TranslateBackward(translateSpeed); + if 'a' == ch: + camera.TranslateLeft(translateSpeed); + if 'd' == ch: + camera.TranslateRight(translateSpeed); + if 'q' == ch: + camera.SetHoverElevation(camera.GetHoverElevation() + translateSpeed); + if 'z' == ch: + camera.SetHoverElevation(camera.GetHoverElevation() - translateSpeed); + #if (pKeys[SDLK_ESCAPE]) + # continueRunning = false; + + if '+' == ch: + # Increase the detail threshold (make the terrain less detailed - worse looking but faster) + self.mThreshold += 0.5 + print "SAMPLE: Threshold = ", self.mThreshold + if '-' == ch: + # Decrease the detail threshold (make the terrain more detailed - better looking but slower) + self.mThreshold -= 0.5 + print "SAMPLE: Threshold = ", self.mThreshold + + if QtCore.Qt.Key_Escape == key: + QtGui.qApp.closeAllWindows() + + + #self.mManager.keyPress(ord(ch), 0, 0) + #elif keymap.has_key(event.key()): + # key = keymap[event.key()] + # self.mManager.keyPress(key,0,0) + self.updateGL() + + def minimumSizeHint(self): + return QtCore.QSize(50, 50) + + def sizeHint(self): + return QtCore.QSize(400, 400) + + hack = None + + def initializeGL(self): + global terrain + global camera + global cameraPosition + global hack + print "SAMPLE: OpenGL vendor: ", GL.glGetString(GL.GL_VENDOR) + print "SAMPLE: OpenGL extensions supported: ", GL.glGetString(GL.GL_EXTENSIONS) + try: + demeter.Settings.GetInstance().Initialize() + demeter.Settings.GetInstance().SetVerbose(True) + demeter.Settings.GetInstance().SetMediaPath(os.environ["DEMETER_SAMPLE_DATA_PATH"]); + demeter.Settings.GetInstance().SetUseVertexLocking(True) + demeter.Settings.GetInstance().SetUseNormals(False) + demeter.Settings.GetInstance().SetUseBorders(False) + + + demeter.Settings.GetInstance().SetDetailTextureRepeats((512.0 * 30.0) / 64.0) + demeter.Settings.GetInstance().SetTextureCellWidth(2048) + demeter.Settings.GetInstance().SetTextureCellHeight(2048) + demeter.Settings.GetInstance().SetTextureMaskWidth(2048) + demeter.Settings.GetInstance().SetTextureMaskHeight(2048) + demeter.Settings.GetInstance().SetTextureCompression(True) + + terrain = demeter.Terrain() + #demeter.LoadRawElevations(terrain,"/home/aronb/Source/demeter.4.0/DemeterSampleData/Raid.raw",513,513,30.0,0.015,False) + demeter.LoadRawElevations(terrain,"Raid.raw",513,513,30.0,0.015,False) + #demeter.SDLTextureLoader.GetInstance().LoadTerrainTexture("RaidTexture.png", terrain) + tex_loader = demeter.PILTextureLoader.PILTextureLoader() + #(width, height, data) = tex_loader.loadImage("/home/aronb/Source/demeter.4.0/DemeterSampleData/RaidTexture.png") + (width, height) = tex_loader.LoadTerrainTexture("/home/aronb/Source/demeter.4.0/DemeterSampleData/RaidTexture.png", terrain) + #(width, height) = tex_loader.LoadTerrainTexture("/home/aronb/Source/demeter.4.0/DemeterSampleData/arctica.png", terrain) + + tex_loader.LoadMasks(terrain, "/home/aronb/Source/demeter.4.0/DemeterSampleData/RaidMask.png", + "/home/aronb/Source/demeter.4.0/DemeterSampleData/granite19.png", + "/home/aronb/Source/demeter.4.0/DemeterSampleData/grassDetail.png", + "/home/aronb/Source/demeter.4.0/DemeterSampleData/road2.png") + print "Image [%s] [%s]" % (width, height) + except Exception, ex: + print "ERROR: ", ex + + try: + MAX_VIEW_DISTANCE = 8000.0 + SKY_RED = 0.5 + SKY_GREEN = 0.75 + SKY_BLUE = 1.0 + SKY_ALPHA = 1.0 + FOG_RED = SKY_RED + FOG_GREEN = SKY_GREEN + FOG_BLUE = SKY_BLUE + FOG_ALPHA = SKY_ALPHA + ScreenWidth = 800 + ScreenHeight = 600 + terrain.SetMaximumVisibleBlockSize(128) + # Setup 3D scene + # Vanilla OpenGL setup + GL.glMatrixMode(GL.GL_PROJECTION); + GL.glLoadIdentity(); + GL.glViewport(0, 0, self.width(), self.height()); + GL.glFrustum(-0.5, 0.5, -0.5, 0.5, 0.65, MAX_VIEW_DISTANCE); + GL.glClearColor(SKY_RED, SKY_GREEN, SKY_BLUE, SKY_ALPHA); + GL.glDisable(GL.GL_NORMALIZE); + GL.glEnable(GL.GL_DEPTH_TEST); + GL.glShadeModel(GL.GL_SMOOTH); + # Setup fog + fogColor = [0, 0, 0, 0] + fogColor[0] = FOG_RED + fogColor[1] = FOG_GREEN + fogColor[2] = FOG_BLUE + fogColor[3] = FOG_ALPHA + GL.glEnable(GL.GL_FOG) + GL.glFogf(GL.GL_FOG_MODE, GL.GL_LINEAR) + GL.glFogfv(GL.GL_FOG_COLOR, fogColor); + GL.glFogf(GL.GL_FOG_START, 100.0) + GL.glFogf(GL.GL_FOG_END, MAX_VIEW_DISTANCE - 100.0) + GL.glHint(GL.GL_FOG_HINT, GL.GL_FASTEST) + + # Setup camera + cameraPosition = demeter.Vector() + cameraPosition.x = terrain.GetWidth() / 2.0 + cameraPosition.y = terrain.GetHeight() / 2.0 + cameraPosition.z = 50.0 + camera = demeter.Camera(terrain) + camera.SetPosition(cameraPosition.x, cameraPosition.y) + camera.SetHoverElevation(50.0) + except Exception, ex: + print "ERROR: ", ex + + def paintGL(self): + global terrain + global camera + if camera is not None: + # Setup viewing transformation + camera.Update() + camPos = demeter.Vector() + camera.GetPosition(camPos) + terrain.SetCameraPosition(camPos.x,camPos.y) + if terrain is not None: + #Render the terrain + terrain.SetCameraPosition(0, 0) + terrain.SetDetailThreshold(self.mThreshold) + terrain.ModelViewMatrixChanged() + GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT) + try: + terrain.Render() + except Exception, ex: + print "EXCEPTION: ", ex + + + def resizeGL(self, width, height): + MAX_VIEW_DISTANCE = 8000.0 + GL.glMatrixMode(GL.GL_PROJECTION); + GL.glLoadIdentity(); + GL.glViewport(0, 0, width, height) + GL.glFrustum(-0.5, 0.5, -0.5, 0.5, 0.65, MAX_VIEW_DISTANCE); + GL.glMatrixMode(GL.GL_MODELVIEW) + + + def mousePressEvent(self, event): + self.lastPos = QtCore.QPoint(event.pos()) + + def mouseMoveEvent(self, event): + dx = event.x() - self.lastPos.x() + dy = event.y() - self.lastPos.y() + + self.lastPos = QtCore.QPoint(event.pos()) + +if __name__ == '__main__': + app = QtGui.QApplication(sys.argv) + window = Window() + window.show() + + if not os.environ.has_key("DEMETER_SAMPLE_DATA_PATH"): + exit(9) + + + sys.exit(app.exec_()) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ar...@us...> - 2006-08-16 22:47:35
|
Revision: 5 Author: aronb Date: 2006-08-16 15:47:32 -0700 (Wed, 16 Aug 2006) ViewCVS: http://svn.sourceforge.net/pydemeter/?rev=5&view=rev Log Message: ----------- - Fix issues related to raw pointer ownership when calling TextureSet.AddTexture(texture). NOTE: Need to find a way to automate this in pyplusplus. This would not be an issue if Demeter would use shared_ptrs :( Modified Paths: -------------- trunk/src/gen_bindings.py Modified: trunk/src/gen_bindings.py =================================================================== --- trunk/src/gen_bindings.py 2006-08-16 22:38:08 UTC (rev 4) +++ trunk/src/gen_bindings.py 2006-08-16 22:47:32 UTC (rev 5) @@ -139,6 +139,7 @@ texture = demeter.class_("Texture") texture.include() +texture.held_type = 'std::auto_ptr<Demeter::Texture>' texture["GetBuffer"].exclude() texture_cell = demeter.class_("TextureCell") This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ar...@us...> - 2006-08-16 22:37:14
|
Revision: 3 Author: aronb Date: 2006-08-16 15:37:08 -0700 (Wed, 16 Aug 2006) ViewCVS: http://svn.sourceforge.net/pydemeter/?rev=3&view=rev Log Message: ----------- - Removing old qt code. Modified Paths: -------------- trunk/src/test/hellogl.py Modified: trunk/src/test/hellogl.py =================================================================== --- trunk/src/test/hellogl.py 2006-08-16 21:51:31 UTC (rev 2) +++ trunk/src/test/hellogl.py 2006-08-16 22:37:08 UTC (rev 3) @@ -28,54 +28,19 @@ self.glWidget = GLWidget() - self.xSlider = self.createSlider(QtCore.SIGNAL("xRotationChanged"), - self.glWidget.setXRotation) - self.ySlider = self.createSlider(QtCore.SIGNAL("yRotationChanged"), - self.glWidget.setYRotation) - self.zSlider = self.createSlider(QtCore.SIGNAL("zRotationChanged"), - self.glWidget.setZRotation) mainLayout = QtGui.QHBoxLayout() mainLayout.addWidget(self.glWidget) - mainLayout.addWidget(self.xSlider) - mainLayout.addWidget(self.ySlider) - mainLayout.addWidget(self.zSlider) self.setLayout(mainLayout) - self.xSlider.setValue(15 * 16) - self.ySlider.setValue(345 * 16) - self.zSlider.setValue(0 * 16) - self.setWindowTitle(self.tr("Hello GL")) - def createSlider(self, changedSignal, setterSlot): - slider = QtGui.QSlider(QtCore.Qt.Vertical) - - slider.setRange(0, 360 * 16) - slider.setSingleStep(16) - slider.setPageStep(15 * 16) - slider.setTickInterval(15 * 16) - slider.setTickPosition(QtGui.QSlider.TicksRight) - - self.glWidget.connect(slider, QtCore.SIGNAL("valueChanged(int)"), setterSlot) - self.connect(self.glWidget, changedSignal, slider, QtCore.SLOT("setValue(int)")) - - return slider - - class GLWidget(QtOpenGL.QGLWidget): def __init__(self, parent=None): QtOpenGL.QGLWidget.__init__(self, parent) self.setFocusPolicy(QtCore.Qt.StrongFocus) - self.object = 0 - self.xRot = 0 - self.yRot = 0 - self.zRot = 0 - self.lastPos = QtCore.QPoint() - self.trolltechGreen = QtGui.QColor.fromCmykF(0.40, 0.0, 1.0, 0.0) - self.trolltechPurple = QtGui.QColor.fromCmykF(0.39, 0.39, 0.0, 0.0) # The "detail level" of the terrain - higher values will render faster but yield less visual quality self.mThreshold = 30.0; @@ -130,52 +95,15 @@ # self.mManager.keyPress(key,0,0) self.updateGL() - def xRotation(self): - return self.xRot - - def yRotation(self): - return self.yRot - - def zRotation(self): - return self.zRot - def minimumSizeHint(self): return QtCore.QSize(50, 50) def sizeHint(self): return QtCore.QSize(400, 400) - def setXRotation(self, angle): - angle = self.normalizeAngle(angle) - if angle != self.xRot: - self.xRot = angle - self.emit(QtCore.SIGNAL("xRotationChanged"), angle) - self.updateGL() + hack = None - def setYRotation(self, angle): - angle = self.normalizeAngle(angle) - if angle != self.yRot: - self.yRot = angle - self.emit(QtCore.SIGNAL("yRotationChanged"), angle) - self.updateGL() - - def setZRotation(self, angle): - angle = self.normalizeAngle(angle) - if angle != self.zRot: - self.zRot = angle - self.emit(QtCore.SIGNAL("zRotationChanged"), angle) - self.updateGL() - def initializeGL(self): - #self.qglClearColor(self.trolltechPurple.dark()) - #self.object = self.makeObject() - #GL.glShadeModel(GL.GL_FLAT) - #GL.glEnable(GL.GL_DEPTH_TEST) - #GL.glEnable(GL.GL_CULL_FACE) - self.setupDemeter() - - hack = None - def setupDemeter(self): global terrain global camera global cameraPosition @@ -207,7 +135,7 @@ (width, height) = tex_loader.LoadTerrainTexture("/home/aronb/Source/demeter.4.0/DemeterSampleData/RaidTexture.png", terrain) #(width, height) = tex_loader.LoadTerrainTexture("/home/aronb/Source/demeter.4.0/DemeterSampleData/arctica.png", terrain) - hack = tex_loader.LoadMasks(terrain, "/home/aronb/Source/demeter.4.0/DemeterSampleData/RaidMask.png", + tex_loader.LoadMasks(terrain, "/home/aronb/Source/demeter.4.0/DemeterSampleData/RaidMask.png", "/home/aronb/Source/demeter.4.0/DemeterSampleData/granite19.png", "/home/aronb/Source/demeter.4.0/DemeterSampleData/grassDetail.png", "/home/aronb/Source/demeter.4.0/DemeterSampleData/road2.png") @@ -299,96 +227,8 @@ dx = event.x() - self.lastPos.x() dy = event.y() - self.lastPos.y() - if event.buttons() & QtCore.Qt.LeftButton: - self.setXRotation(self.xRot + 8 * dy) - self.setYRotation(self.yRot + 8 * dx) - elif event.buttons() & QtCore.Qt.RightButton: - self.setXRotation(self.xRot + 8 * dy) - self.setZRotation(self.zRot + 8 * dx) - self.lastPos = QtCore.QPoint(event.pos()) - def makeObject(self): - genList = GL.glGenLists(1) - GL.glNewList(genList, GL.GL_COMPILE) - - GL.glBegin(GL.GL_QUADS) - - x1 = +0.06 - y1 = -0.14 - x2 = +0.14 - y2 = -0.06 - x3 = +0.08 - y3 = +0.00 - x4 = +0.30 - y4 = +0.22 - - self.quad(x1, y1, x2, y2, y2, x2, y1, x1) - self.quad(x3, y3, x4, y4, y4, x4, y3, x3) - - self.extrude(x1, y1, x2, y2) - self.extrude(x2, y2, y2, x2) - self.extrude(y2, x2, y1, x1) - self.extrude(y1, x1, x1, y1) - self.extrude(x3, y3, x4, y4) - self.extrude(x4, y4, y4, x4) - self.extrude(y4, x4, y3, x3) - - Pi = 3.14159265358979323846 - NumSectors = 200 - - for i in range(NumSectors): - angle1 = (i * 2 * Pi) / NumSectors - x5 = 0.30 * math.sin(angle1) - y5 = 0.30 * math.cos(angle1) - x6 = 0.20 * math.sin(angle1) - y6 = 0.20 * math.cos(angle1) - - angle2 = ((i + 1) * 2 * Pi) / NumSectors - x7 = 0.20 * math.sin(angle2) - y7 = 0.20 * math.cos(angle2) - x8 = 0.30 * math.sin(angle2) - y8 = 0.30 * math.cos(angle2) - - self.quad(x5, y5, x6, y6, x7, y7, x8, y8) - - self.extrude(x6, y6, x7, y7) - self.extrude(x8, y8, x5, y5) - - GL.glEnd() - GL.glEndList() - - return genList - - def quad(self, x1, y1, x2, y2, x3, y3, x4, y4): - self.qglColor(self.trolltechGreen) - - GL.glVertex3d(x1, y1, -0.05) - GL.glVertex3d(x2, y2, -0.05) - GL.glVertex3d(x3, y3, -0.05) - GL.glVertex3d(x4, y4, -0.05) - - GL.glVertex3d(x4, y4, +0.05) - GL.glVertex3d(x3, y3, +0.05) - GL.glVertex3d(x2, y2, +0.05) - GL.glVertex3d(x1, y1, +0.05) - - def extrude(self, x1, y1, x2, y2): - self.qglColor(self.trolltechGreen.dark(250 + int(100 * x1))) - - GL.glVertex3d(x1, y1, +0.05) - GL.glVertex3d(x2, y2, +0.05) - GL.glVertex3d(x2, y2, -0.05) - GL.glVertex3d(x1, y1, -0.05) - - def normalizeAngle(self, angle): - while angle < 0: - angle += 360 * 16 - while angle > 360 * 16: - angle -= 360 * 16 - return angle - - if __name__ == '__main__': app = QtGui.QApplication(sys.argv) window = Window() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |