Browse Source

Merge pull request #38 from eswartz/pr-savemaps-lens

Allow passing custom lens to saveCubeMap/saveSphereMap
rdb 10 years ago
parent
commit
176606ef15
1 changed files with 12 additions and 4 deletions
  1. 12 4
      direct/src/showbase/ShowBase.py

+ 12 - 4
direct/src/showbase/ShowBase.py

@@ -2466,7 +2466,8 @@ class ShowBase(DirectObject.DirectObject):
     def saveCubeMap(self, namePrefix = 'cube_map_#.png',
                     defaultFilename = 0, source = None,
                     camera = None, size = 128,
-                    cameraMask = PandaNode.getAllCameraMask()):
+                    cameraMask = PandaNode.getAllCameraMask(),
+                    sourceLens = None):
 
         """
         Similar to screenshot(), this sets up a temporary cube map
@@ -2494,6 +2495,9 @@ class ShowBase(DirectObject.DirectObject):
             if camera == None:
                 camera = base.camera
 
+        if sourceLens == None:
+            sourceLens = base.camLens
+
         if hasattr(source, "getWindow"):
             source = source.getWindow()
 
@@ -2504,7 +2508,8 @@ class ShowBase(DirectObject.DirectObject):
 
         # Set the near and far planes from the default lens.
         lens = rig.find('**/+Camera').node().getLens()
-        lens.setNearFar(base.camLens.getNear(), base.camLens.getFar())
+
+        lens.setNearFar(sourceLens.getNear(), sourceLens.getFar())
 
         # Now render a frame to fill up the texture.
         rig.reparentTo(camera)
@@ -2525,7 +2530,7 @@ class ShowBase(DirectObject.DirectObject):
                       defaultFilename = 0, source = None,
                       camera = None, size = 256,
                       cameraMask = PandaNode.getAllCameraMask(),
-                      numVertices = 1000):
+                      numVertices = 1000, sourceLens = None):
         """
         This works much like saveCubeMap(), and uses the graphics
         API's hardware cube-mapping ability to get a 360-degree view
@@ -2550,6 +2555,9 @@ class ShowBase(DirectObject.DirectObject):
             if camera == None:
                 camera = base.camera
 
+        if sourceLens == None:
+            sourceLens = base.camLens
+
         if hasattr(source, "getWindow"):
             source = source.getWindow()
 
@@ -2568,7 +2576,7 @@ class ShowBase(DirectObject.DirectObject):
 
         # Set the near and far planes from the default lens.
         lens = rig.find('**/+Camera').node().getLens()
-        lens.setNearFar(base.camLens.getNear(), base.camLens.getFar())
+        lens.setNearFar(sourceLens.getNear(), sourceLens.getFar())
 
         # Set up the scene to convert the cube map.  It's just a
         # simple scene, with only the FisheyeMaker object in it.