hkaMotionAnalyzerUtility.h
上传用户:yisoukefu
上传日期:2020-08-09
资源大小:39506k
文件大小:5k
源码类别:

其他游戏

开发平台:

Visual C++

  1. /* 
  2.  * 
  3.  * Confidential Information of Telekinesys Research Limited (t/a Havok). Not for disclosure or distribution without Havok's
  4.  * prior written consent. This software contains code, techniques and know-how which is confidential and proprietary to Havok.
  5.  * Level 2 and Level 3 source code contains trade secrets of Havok. Havok Software (C) Copyright 1999-2009 Telekinesys Research Limited t/a Havok. All Rights Reserved. Use of this software is subject to the terms of an end user license agreement.
  6.  * 
  7.  */
  8. #ifndef HK_MOTION_ANALYZER_UTILITY_H
  9. #define HK_MOTION_ANALYZER_UTILITY_H
  10. #include <Animation/Animation/MotionAnalysis/hkaFootStepTiming.h>
  11. #include <Animation/Animation/MotionAnalysis/hkaExpandAnimationUtility.h>
  12. class hkaMotionAnalyzerUtility
  13. {
  14. public:
  15. /// Tests if a bown is considered "down".  Results are OR'd into the result vector
  16. /// bone Bone index
  17. /// up Up vector
  18. /// positionTolerance Position tolerance in model units
  19. /// velocityTolerance Velocity tolerance in model units (distance units, per frame)
  20. /// animation Animation to analyze
  21. /// isDownInOut Frames in which foot is considered down will be set true, other values not changed
  22. static void HK_CALL analyzeBoneDowns( hkInt16 bone, const hkVector4& up, hkReal positionTolerance, hkReal velocityTolerance, const hkaExpandAnimationUtility& animation, bool logicalOR, hkArray< hkBool >& isDownInOut );
  23. static void HK_CALL getPosition( hkInt16 bone, const hkVector4& up, const hkaExpandAnimationUtility& animation, hkArray< hkReal >& positionOut );
  24. static void HK_CALL getVelocity( hkInt16 bone, const hkVector4& up, const hkaExpandAnimationUtility& animation, hkArray< hkReal >& velocityOut );
  25. static void HK_CALL arrayMaximum( const hkArray< hkReal >& a, const hkArray< hkReal >& b, hkArray< hkReal >& out );
  26. static void HK_CALL arrayMinimum( const hkArray< hkReal >& a, const hkArray< hkReal >& b, hkArray< hkReal >& out );
  27. /// Tests if a bown is in front of another bone
  28. /// boneA Bone index of front bone
  29. /// boneB Bone index of back bone
  30. /// forward Forward direction
  31. /// animation Animation to analyze
  32. /// isInFrontInOut Frames in which boneA is in front will be set true, other values not changed
  33. static void HK_CALL isInFrontOf( hkInt16 boneA, hkInt16 boneB, const hkVector4& forward, const hkaExpandAnimationUtility& animation, hkArray< hkBool >& isInFrontInOut );
  34. /// return The minimum of the forward and backward difference of a bone, projected into a plane
  35. /// bone Bone to analyze
  36. /// frame Frame to analyze at
  37. /// up Normal to the plane of projection
  38. /// animation Input animaiton
  39. static hkReal HK_CALL minimumPlanarDifference( hkInt16 bone, int frame, const hkVector4& up, const hkaExpandAnimationUtility& animation );
  40. /// Finds the maximum component of a bone's motion in a specified direction
  41. /// param bone Bone to consider
  42. /// param dir Direction to 
  43. static hkReal HK_CALL maxDotPerBone( hkInt16 bone, const hkVector4& dir, const hkaExpandAnimationUtility& animation );
  44. static hkReal HK_CALL minDotPerBone( hkInt16 bone, const hkVector4& dir, const hkaExpandAnimationUtility& animation );
  45. /// Computes the cyclic backward difference between positions at a given frame
  46. /// param bone Bone to analyze
  47. /// param aniamtion World space animation to analyze
  48. static hkVector4 HK_CALL backwardDifference( hkInt16 bone, int frame, const hkaExpandAnimationUtility& animation );
  49. /// Computes the cyclic forward difference between positions at a given frame
  50. /// param bone Bone to analyze
  51. /// param aniamtion World space animation to analyze
  52. static hkVector4 HK_CALL  forwardDifference( hkInt16 bone, int frame, const hkaExpandAnimationUtility& animation );
  53. /// return The index of the first frame in which the value changed to val
  54. /// param aniamtion World space animation to analyze
  55. /// param val Value
  56. static int getCyclicEventFrame( const hkArray< hkBool >& values, hkBool val );
  57. /// return The index of the first frame with value == val and cyclic previous != val
  58. static int findFirst( hkBool val, const hkArray< hkBool >& values );
  59. /// Find frames with value == val and cyclic previous != val
  60. static void findTransitions( hkBool val, const hkArray< hkBool >& values, hkArray< int >& framesOut );
  61. };
  62. #endif // HK_MOTION_ANALYZER_UTILITY_H
  63. /*
  64. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  65. * Confidential Information of Havok.  (C) Copyright 1999-2009
  66. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  67. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  68. * rights, and intellectual property rights in the Havok software remain in
  69. * Havok and/or its suppliers.
  70. * Use of this software for evaluation purposes is subject to and indicates
  71. * acceptance of the End User licence Agreement for this product. A copy of
  72. * the license is included with this software and is also available at www.havok.com/tryhavok.
  73. */