spherical display advice needed (fisheye rendering)

I looked in the ShowBase source code to see what saveSphereMap actually does. Turns out it’s pretty simple; here is a complete but simple example:

from panda3d.core import *
from direct.showbase.ShowBase import ShowBase

size = 512
numVertices = 1000

base = ShowBase()

# Load a simple scene.
env = loader.loadModel("environment")
env.reparentTo(base.render)

# Now make the cube map buffer.
rig = base.camera.attachNewNode("rig")
buffer = base.win.makeCubeMap("test", size, rig)
assert buffer

fm = FisheyeMaker('card')
fm.setNumVertices(numVertices)
fm.setSquareInscribed(1, 1.1)
fm.setReflection(True)
card = base.render2d.attachNewNode(fm.generate())
card.setTexture(buffer.getTexture())

# Disable the scene render on the normal 'render' graph.
base.win.getDisplayRegion(1).setActive(False)

base.run()

This attaches to base.camera which you can just point upward as you wish.

You may want to change the setReflection flag depending on whether you want an inverted or a regular view.

As for customizing the camera positions: sure, you can change the individual positions of the cameras that makeCubeMap attaches to the rig, although I’m not sure how you could get a continuous image with the set-up you described.