Panda3D 1.10 Migration Notes
This document attempts to collect the potentially breaking changes in 1.10, to assist in upgrading existing codebases.


  • The default unit is now assumed to be 1 metre for each Panda unit. Using a different unit can be accomplished by setting a scale on the AudioManager.


  • The runtime distribution, web plug-in, pdeploy and all related matters have been removed and are no longer supported.  The new deployment path is deploy-ng.
  • packpanda and eggcacher have been removed.  You can still invoke the eggcacher using python -m direct.directscripts.eggcacher.
  • The default location for the config files on Linux and FreeBSD is now $XDG_CONFIG_HOME/panda3d, where $XDG_CONFIG_HOME defaults to ~/.config.
  • The default location for the model-cache on Linux and FreeBSD is now $XDG_CACHE_HOME/panda3d, where $XDG_CACHE_HOME defaults to ~/.cache.  The previous location was ~/.panda3d/cache.
  • The ppremake build system and genPyCode have been removed.
  • win-extras (smartroom/BeyondQuestion, serial, JOD, phidgets) have been removed from the Windows SDK.

Model pipeline

  • bam2egg no longer inserts a vestigial extra root group representing the ModelNode, in order for the bam2egg and egg2bam commands to become reversible.
  • Support for Autodesk Maya versions below 5.0 has been dropped.

Python API

  • Calls to run() should be replaced with  Not doing this causes a deprecation warning.
  • pandac.PandaModules has been deprecated (but not removed).  It is easily replaced by importing from panda3d.core, panda3d.egg, etc.
  • The vestigial DisplayRegionBase class has been removed.
  • The temp-hpr-fix and empty-node-path Config.prc settings have been removed.
  • The direct.http and direct.extensions packages have been removed.
  • Python classes that inherit from NodePath (or Actor) should not define members named name, children, sort, or parent.  This can result in cryptic errors.
  • Dual inheriting from FSM and PandaNode will give cryptic errors.  But inheriting Python classes from PandaNode is probably a bad idea to begin with.
  • downcastTo*() methods have been removed, as they are deprecated and completely unnecessary.
  • Exposed actor joint nodes now are parented to the Character node that is a child of the root actor node.  See #221.
  • CollisionTube has been renamed to CollisionCapsule, but an alias remains for compatibility.
  • get_config_showbase() is no longer available from; you can replace it with from direct.showbase import DConfig as config


  • The behaviour of the p3d_Color vertex attribute input has changed.  This input now defaults to the ColorAttrib-specified color if an explicit color has been specified on the model.
  • The default ColorAttrib mode is now T_vertex, to make the behaviour of the shader generator and fixed-function pipeline consistent.  Note that set_color_off applies a ColorAttrib with T_vertex mode.
  • The ColorAttrib mode T_off now actually disables vertex colors in the fixed-function pipeline.
  • When opening an offscreen buffer, if you don’t request any specific colour bits, you may end up getting a framebuffer that only renders the red channel.  You must make sure to explicitly request a certain number of framebuffer bits in each channel using something like set_rgba_bits(8, 8, 8, 0).  (This call is also available in 1.9.)
  • The default alpha blending mode for M_alpha has changed.  This has been done to avoid squaring the alpha value so that the result of rendering can be blended as a premultiplied texture.  To restore the old mode, enable the old-alpha-blend Config.prc variable.
  • The shader generator now supports multiple normal maps.  If you had multiple normal maps applied to a model and expected only one of them to take effect, you may notice a change in behaviour.
  • The default interocular distance for shadow cameras is now 0.  If you were relying on the default IOD to apply to shadow cameras, you must now set their IOD explicitly.
  • Matrix palette-based vertex blending has been removed.  Instead, hardware vertex animation is implemented via the shader generator, or with custom shaders.
  • The ShaderGenerator behaviour for the M_blend TextureStage mode changed to be consistent with the fixed-function pipeline.


  • Support for OpenSSL versions before 0.9.7 has been dropped.
  • At least ffmpeg 1.1 (or libav 9.20) is required. (libavcodec must be 54.35.1, libavformat 54.20.4, libavutil 52.3.0)
  • At least GCC 4.8 is now required to compile Panda3D (or equivalent clang version).  On Windows, using a compiler older than MSVC 2015 is deprecated.
  • PhysX is deprecated and not enabled by default.
  • libRocket is deprecated and not provided for Python 3 builds.
  • FFTW is deprecated and not enabled by default.


  • We have switched the codebase to enable C++11 features.  On Linux / macOS, you should now add the -std=gnu++11 flag to compile correctly.
  • The following header files have been renamed, so any #include statements will need to be replaced:
  • config_util.hconfig_putil.h
  • config_pstats.hconfig_pstatclient.h
  • config_pfm.hconfig_pfmprogs.h
  • collisionTube.hcollisionCapsule.h