Question about making mirror by cube mapping

I want to make a mirror in my game.
Here is my code.

def __init__(self):
    ShowBase.__init__(self)
    # tempnode = NodePath(PandaNode("temp node"))
    # tempnode.setShaderAuto()
    # self.cam.node().setInitialState(tempnode.getState())
    # self.render.setShaderAuto()

    self.cam.setPos(0, -6, 1)

    self.player = Actor()
    self.player.loadModel("Models/akai")
    self.player.reparentTo(self.render)
    # self.player.loadAnims({"Idle": "Models/idle"})
    # self.player.loop("Idle")
    self.player.loadAnims({"Walk": "Models/walk"})
    self.player.loop("Walk")

    self.world = self.loader.loadModel('environment')
    self.world.setPos(0, 0, -.05)
    self.world.reparentTo(self.render)

    self.refPanel = self.loader.loadModel('Models/plane')
    self.refPanel.reparentTo(self.render)
    self.refPanel.setPos(0, 10, 0)
    self.rig = NodePath('rig')
    self.buffer = self.win.makeCubeMap('env', 2048, self.rig)
    self.rig.reparentTo(self.refPanel)

    self.refPanel.setTexGen(TextureStage.getDefault(),
                            TexGenAttrib.MWorldCubeMap)
    self.refPanel.setTexture(self.buffer.getTexture())

The reflection has no problem.
But it seems that the image in the mirror is too big.
And…the image in the mirror seems get a little distortion.
Any help please?

Just like this.
It seems that the size of image in mirror can be affected by the distance between model and camera.

Hi SoNewBee,

Apologies if you’ve moved on, but if someone else finds this thread this might be of use.
I’ve recently stumbled upon this MirrorDemo.py in the Panda3D GitHub Repo which might be useful for you. :slight_smile:

It seems to take a slightly different approach to yours, but perhaps can be adapted into your project.

1 Like