Imagination PowerVR SDK Blog

Animating model with broken normals in PVRShaman



We’ve created an animating model in Maya which, when exported and viewed in PVRShaman, does not render correctly: portions of the mesh are displayed with incorrect normals.

In Maya, the model renders perfectly.  When exported without animation, it also renders well in PVRShaman.  When exported with animation, only then do we see a problem with the normals (as betrayed by the incorrectly-lit polys).

The model is skinned (maximum of 4 verts per poly).

Here’s some other data -
Maya 2009
Exporter version 1.11 Build
PVRShaman version 1.6 (SDK Build

The ‘hard edges’ seen on the body are in error - the darkened areas either side of the body centre represent polys whose normals are incorrect.

Here are the export options we’re using:

If anyone has any idea what can be going wrong here, please help!

Tragnarion wrote:
The model is skinned (maximum of 4 verts per poly).

Sorry, I meant to write "maximum of 4 bones per vert".... slowly being driven crazy here trying to export it properly.

Just to add - changing the "Max simultaneous matrices" setting in the exporter also leads to all sorts of different strange effects, when I wouldn't expect it to make any difference to how the model renders at all (other than from an efficiency point of view).  Does this shed any further light on the problem?




I can't see anything wrong with your settings. If possible could you send your Maya scene and .pod file to so we can take a look.







Thanks for your files. It has turned out to be a bug in PVRShaman which will be fixed for our next release. The .pod file should display correctly in your own applications.






Thanks for confirming this Scott.

Now all that remains is to figure out why it’s not rendering correctly in our iPhone app Angry

Tragnarion wrote:
Thanks for confirming this Scott.

Now all that remains is to figure out why it's not rendering correctly in our iPhone app Angry


In what way is it not rendering correctly? Have you tried using a max of 3 bone influences per vertex and setting "Max simultaneous matrices" to 9?


Yes, we’re in the process right now of altering the model to use max 3 bones/vert, after reaching the conclusion that this was probably the maximum number supported by the iPhone hardware.  If all goes well, I’ll let you know and we can put this thread to sleep :slight_smile:

One thing that I’m finding a little frustrating (particularly coming from a background of working on Sony/Nintendo consoles) is that it’s really hard to find solid technical specs of the iPhone graphics hardware anywhere.  Are you aware of any place I can find this kind of information, e.g. raw texture layouts, texture cache info, vertex/index cache info, VRAM size (is there VRAM?), timings, this kind of thing.  At the moment, creating raw textures is a process of trial-and-error (e.g. is it RGBA or ABGR or ARGB etc etc), and attempting to optimise graphics performance is an entirely random process of “try this, see if it makes any difference”.

I know this is probably something to be taken up with Apple, but they are irritatingly cagey about ‘opening up the black box’!

Anyway, thanks for your reply - it’s good to have my suspicions confirmed once again.


I’m afraid we’re unable to comment on the graphics hardware in the iPhone without an NDA.


Also, just in case you weren't aware we have a document in our SDKs called "POWERVR 3D Application Development Recommendations" that contains a set of golden rules to get the best performance out of our hardware.

Scott2009-07-23 10:19:11