Imagination PowerVR SDK Blog

Blender GEO Skinned Animation?

pvrshaman

#1





Hello,



I am building a game, I have seen forum posts stating that in August 2011 GEO will run in the new friendly version of Blender.



However for the time being I am living in 2.49b (I used to try and use
Collada2POD to convert my models into .pod format but then I learnt that
doesn't handle skinned animation correctly).



I have seen old lists stating that:

1 - 'Export options->Geometry' not functional: Geometry will always exported.


2 - 'Geometry options->Triangle sorting method' not implemented.


3 - 'Geometry options->Interleave vectors' not implemented.'


4 - Skinning done with envelopes is not supported.


5 - Exported camera position is not correct.


6 - Post-export command-line not functional on Windows.


7 - User Interface not using common interface.




However so long as I can produce indexed skinned animations I can
develop content ready to be re-exported in August more efficiently and I
can get to work on other things putting this issue to bed. Which leads
me to the point of this thread. I have created several 1000polygon
shapes with as many as 18 bones (max 4 per vertex) and had them partially animate
correctly. So I went to basics with a simple shape with two bones and a
simple configuration.



Here is the simple model showing its skeleton twisting the shape in x-ray mode, every vertex is painted by at least one bone.

Good%20Model

[Larger Image: http://postimage.org/image/hw21knms/]

Below is the bi-product of my model going through the exporter with skinned animation into PVRShaman. The result is similar with many various tweaks to the exporters settings. Even with the complex meshes only some vertices always stretch into 0 or stretch into infinity like someone is stencil buffering them from zero toward the shapes centre. PVRShaman still animated the mesh correctly despite this warping.

Model%20After%20GEO%20Exporter

[Larger Image: http://postimage.org/image/312ig8890/]

You can click for a larger image [Edit: no you cant so I added in links for that], for those not that interested there are some massive numbers on some vertex positions and other values such as the tangents shown in the image causing the model to warp off into a seemingly
infinitely far away distance.

When I load these models into my engine my "draw skinned mesh" runs
through fine but nothing is visibly drawn. My engine can display the
ChameleonMan so I am not overly worried by this as I haven't spent
lengths of time examining why I cannot see the messed up results, it
might just be my cameras configuration.

Long story short I would like to know IF before the end of August there is any pipeline that will get a version of Blender to produce a correctly functioning skinned animation of any level of complexity that I can use. If there is not then I will switch my priority to getting other shaders prepared and just use Chameleon man as a place holder for validating my engines capability to draw skinned meshes. Can anyone verify that the August update will bring the capacity to get correctly scaled and transformed animated models from Blender to POD if it is not possible now?

I assumed if it was not possible to produce skinned animation in Blender that the User Guide would have had a warning message under section 1.7 to give the heads up. I remember reading information stating that "Some" models need tweaks to get their matrices to export correctly but this is affecting every model I touch.

Is there or will there be a cure? I am happy to share that tiny scene if I appear to be the only one experiencing trouble. In fact here is a copy for anyone interested in testing my end of the stick http://www.2shared.com/file/8mjyH1by/finalattempt.html

Please help me stop my project from tanking, skeletal animations are a key component! My only alternative is to checkout the going rate of modellers who have expensive tools that can do the job for me.

Many Thanks
EnlightenedOne







EnlightenedOne2011-07-12 13:35:16

#2

Hi,

I tried the blend file you have submitted and it works fine for me. Could you please send the pod file that was generated as a result of using that plugin on your system (send it please to devtech@imgtec.com) ?

Regards,



#3

Sure here are some technical specs also.
Blender 2.49b
Mac OS X V 10.6.8

Up to date exporter script… I just looked in the script to find a version number and it says blender 248. That is likely to be the problem can’t believe I missed that.

Anyway here is a link to the broken file if your interested: http://www.2shared.com/file/6rHc-CCp/untitled.html

I am going to get 248 up and get the same scene going and see if the problem is solved and I have brought the issue upon myself!

Will keep you posted asap
EnlightenedOne




#4

Run with 248a with no change in results. Here is the log from Terminal:

Loading library:  /Applications/blender.app/Contents/MacOS/.blender/scripts/libPVRGeoPOD.dylib
No texture exported
Adding Armature Bones , armatureID= 0
chainsOFBones to be added:  PoseBone "Base"
Adding Bone:  Base  ID= 1  parentID= 0
Bone global matrix:  [1.000000, 0.000000, 0.000000, 0.000000](matrix [row 0])
[0.000000, -0.000000, 1.000000, 0.000000](matrix [row 1])
[0.000000, -1.000000, -0.000000, 0.000000](matrix [row 2])
[-0.000000, 0.000000, 0.005456, 1.000000](matrix [row 3])
Bone local matrix:  [1.000000, 0.000000, 0.000000, 0.000000](matrix [row 0])
[0.000000, -0.000000, 1.000000, 0.000000](matrix [row 1])
[0.000000, -1.000000, -0.000000, 0.000000](matrix [row 2])
[-0.000000, 0.000000, 0.005456, 1.000000](matrix [row 3])
Node adding: Name=Base ID=1 parentID=0
chainsOFBones to be added:  PoseBone "Tip"
Adding Bone:  Tip  ID= 2  parentID= 1
Bone global matrix:  [-0.999990, -0.000000, 0.004484, 0.000000](matrix [row 0])
[0.004484, 0.000001, 0.999990, 0.000000](matrix [row 1])
[-0.000000, 1.000000, -0.000001, 0.000000](matrix [row 2])
[-0.000000, -0.000000, 1.014521, 1.000000](matrix [row 3])
Bone local matrix:  [-0.999990, 0.004484, -0.000000, 0.000000](matrix [row 0])
[0.004484, 0.999990, -0.000001, 0.000000](matrix [row 1])
[0.000000, -0.000001, -1.000000, 0.000000](matrix [row 2])
[-0.000000, 1.009065, -0.000000, 1.000000](matrix [row 3])
Node adding: Name=Tip ID=2 parentID=1
Warning: Export of Envelopes based skinning not implemented!
Node adding: Name=Armature ID=0 parentID=-1
Obiekt:  Cube
Exporting mapping channels
Object(Mesh):  Cube  Skinning exported
Node adding: Name=Cube ID=3 parentID=-1
ePODPoint:  0
Node adding: Name=Lamp ID=4 parentID=-1
Node adding: Name=Camera ID=5 parentID=-1
obj:  Cube  id= 3
obj:  Camera  id= 5
obj:  Tip  id= 2
obj:  Lamp  id= 4
obj:  Base  id= 1
obj:  Armature  id= 0
Writing POD file to: /Users/DomS/untitled.pod
Export completed
Saved session recovery to /tmp/quit.blend

Blender quit

Opened the new file hoping it would have a different result but the output is a carbon copy of the warped model from 249b. Could this be a mac issue perhaps?





#5

I have emailed the file listed above to the address you requested with a link to this forum post and my name and alias so you know who it is from. Thanks for your help, I will attempt to run the exporter on Windows 7 machine to see if it is an OS issue.


#6

Hi,

Thanks for additional data. I was able to reproduce the problem. The issue appears when there is skinning and "export as matrices" checked. I will be looking at it soon ( BRN33989).

Regards,


< ="trans" ="return onViewSubmit" method="post" name="View" ="tmtrack.dll?View">












#7

I assumed that was required for animation data to function although I am not certain of what it does, what does exporting as matrices do? All the other options are somewhat self explanatory but matrices are required for any kind of 3D transformation, is it a matter of multiple meshes being translated to different coordinates in the pod scene? I wont need that functionality as all my objects wont share one .pod file. I was able to confirm your completely right I have a working animated model in PVRShaman!

Thank you for your help I am very grateful!

EnlightenedOne


#8

You can export animations as series of Vector3 (position),Vector3(scale),Quaternion(rotation) or you can export them as matrices.





Either will work but matrices take more space and it is much harder to do any sort of interpolation/blending - they are useful for some rare transforms but normally non-matrix based PODs are way to go.






#9

Excellent I have the funny looking animated textured model working on the iOS!
Thank you for the help provided Cool