test_armat.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import Blender
  2. import os.path
  3. def PrintMatR( matrix ):
  4. for i in range(0, 4):
  5. print "[",
  6. for j in range(0, 4):
  7. f = round( matrix[j][i], 5)
  8. if f >= 0 :
  9. print " %04f" % f,
  10. else:
  11. print "%04f" % f,
  12. print "]"
  13. print "\n\n----"
  14. path = "c:\\src\\VisualC++\\gmdl_3d_format\\models\\"
  15. if not os.path.exists( path ):
  16. path = "c:\\data\\projects\\VisualC++\\gmdl_3d_format\\models\\"
  17. file = open( path+"matrices.txt", "w" )
  18. obj = Blender.Object.GetSelected()[0]
  19. frames_num = obj.getAction().getFrameNumbers()[ len(obj.getAction().getFrameNumbers())-1 ]
  20. for frame in (1, 20, 27):
  21. Blender.Set( "curframe", frame )
  22. Blender.Redraw()
  23. print "FRAME ", frame
  24. file.write( "------------------- FRAME %d ----------------\n" % frame )
  25. pb_names = obj.getPose().bones.keys()
  26. for pb_nam in pb_names:
  27. pb = obj.getPose().bones[ pb_nam ]
  28. file.write( "BONE \"%s\"\n" % pb_nam )
  29. file.write( "HEAD " )
  30. for i in range( 3 ):
  31. file.write( "%f " % pb.head[i] )
  32. file.write( "\n" )
  33. file.write( "TAIL " )
  34. for i in range( 3 ):
  35. file.write( "%f " % pb.tail[i] )
  36. file.write( "\n" )
  37. file.write( "LOC " )
  38. for i in range( 3 ):
  39. file.write( "%f " % pb.loc[i] )
  40. file.write( "\n" )
  41. for i in range(0, 4):
  42. for j in range(0, 4):
  43. file.write( "%f " % pb.localMatrix[j][i] )
  44. file.write( "\n" )
  45. file.write( "\n" )
  46. file.close()