1.2.1 New Features?

Is there a page or file that details the new features in depth?


Unfortunately not. The documentation tends to come sometime after the code. So here are the features:

  • lots of performance optimizations
  • Not much to say. Just watch it run faster.
  • a preliminary OSX port
  • there are forum threads by people discussing how to build it under OSX.
  • new modes for animation blending
  • easier partial-body animations
  • neither of these is documented yet.
  • more powerful shader-to-engine interface
  • this is documented fully, in the manual, under Cg shaders.
  • better support for rotating bodies in physics engine
  • not documented yet.
  • support for compressed model files
  • Pretty straightforward. Type “pzip foo.egg” to compress an egg file, “punzip foo.egg” to uncompress it. You can still load it when it’s compressed.
  • multiple render targets (ie, glDrawBuffers)
  • not documented, but there are two sample programs (cartoon variant and deferred shading) that use the feature.
  • support for stereo rendering
  • I seem to recall that David wrote a forum thread about this. Search the forums.
  • more complete API reference manual
  • See for yourself - the manual now documents the “import” statement you need to use the class, and it also documents all the enums defined in the class.
  • ability to control mipmaps explicitly
  • not documented.
  • better tools for debugging offscreen buffers
  • Take a look at the API reference manual for class BufferViewer. The bufferviewer is stored in “base.bufferViewer”. Some sample programs use it, too.
  • new sample programs
  • Specifically, “roaming ralph,” “cartoon variant,” and “fireflies”
  • a number of packpanda repairs
  • And, the packpanda manual page has been vastly improved.

“* new modes for animation blending” is what I was most curious about. Guess I’ll have to wait a bit. : )

What’s the benefit of compressed model files over bam? Smaller vs. faster?

“new modes for animation blending” means that the optional blendType parameter to Actor.enableBlend() now supports two additional options. Of course, this optional parameter was never much documented in the first place. :slight_smile:

The full set of available options to Actor.enableBlend(blendType = ?) are:

PartBundle.BTSingle - no blending is performed; the actor shows only one animation at a time. This is the initial, default behavior.

PartBundle.BTLinear - the result for each joint is a cell-by-cell numerical average of the input matrices, which results in each vertex being animated to the linear average of the various positions it would have been animated to in each source animation. This gives good results for blobby characters, but introduces a scale that tends to make limbs squash and stretch in unusual ways.

PartBundle.BTNormalizedLinear - as above, but the scale that was introduced is normalized out, and the scale component is blended and applied separately. This tends to be a good compromise on BTLinear. This is the default option if you use enableBlend() with no parameters.

PartBundle.BTComponentwise - all components of the transform are individually linearly interpolated, including H, P, and R. This produces good results, but since HPR are interpolated individually, sometimes a rotation goes the wrong way around. This is one of the new options.

PartBundle.BTComponentwiseQuat - all components are individually interpolated, as above, except the rotation, which is spherically interpolated as a quaternion instead of as individual HPR angles. This usually, but not always, solves the problem of rotation going the wrong way around. It is often at least as good choice as BTNormalizedLinear, and sometimes a better choice.

As for the compressed egg files, well, they’re neither smaller nor faster than bam files (and by the way, you can compress bam files too). But they still have the standard advantages that egg files have over bam files: they’re compatible with all versions of Panda, they can be converted to other forms, and (with some effort) they can be read or modified directly by a user. So for those applications, like demo programs, where an egg file is the most appropriate model format, now you can at least compress the egg file so it’s not quite as huge as it would have been otherwise.