初探Havok后,和Physx的一点点比较

初探Havok后,和Physx的一点点比较
  博客又好久不更新了,今天上课拿手机正好查Havok的内容,突然发现Havok自从08年5月后对商业用和非商业用的 游戏开发者是免费的,(以前我一直以为是收费的,甚至不开放给非商业开发者-。-!!被Physx迷惑了,5555)如果是商业用途,价格低于10美金(也就是国内单机游戏的价格),你甚至不用和Intel打招呼就能直接用。高于10美刀的话,也只需要问Intel要个免费授权即可~0~
----------------------------分割线----------------------------
恩恩恩,我知道,我的题目是比较;鉴于我是个物理引擎小白(只“看”过physx),所以不一定能保证准确性,但我尽力保证比较客观的去比较两者。
安装:havok提供两个压缩包,一个是SDK库,还有一个是提供给美工的Behaivor Tool。Physx是一个SDK包,不过之前必须装一个SystemSoftware(我记得Physx的GPU加速只支持英伟达自家的显卡)
Samples:Havok的实例写的还是挺工整的,附带了基本的注释,基本能保证你明白哪块代码干嘛用的.

        
//  The cache size in bytes is equal to m_buckets * m_slots * m_chunkSize

        hkaDefaultChunkCacheCinfo cacheCinfo;
        cacheCinfo.m_numberOfCachePools 
=   2 ;
        cacheCinfo.m_cachePools.setSize( 
2  );
        cacheCinfo.m_cachePools[
0 =  cpCinfo[ 0 ];
        cacheCinfo.m_cachePools[
1 =  cpCinfo[ 1 ];

        
//  Create a cache only if the number of buckets is nonzero
        
//  Some variants of this demo do not use a cache.
        
//  N.B. This is the default chunk cache which is not threadsafe (but invokes no critical sections
        
//  so is fastest when used in a single threaded environment). For sharing a cache across
        
//  multiple threads, the Animation/Animation/Playback/Cache/Multithreaded/hkaMultithreadedChunkCache
        
//  class is provided - see also the Demo\StandAloneDemos\ConsoleExampleAnimationMT for an example use.
        m_cache  =  ( cpCinfo[ 0 ].m_buckets )  ?   new  hkaDefaultChunkCache( cacheCinfo ) : HK_NULL;
    }
相比Physx的代码就差一些,解释性的注释很少。
 1  _computeMostTouchedActor();
 2      NxVec3 relativeVelocity;
 3       if  (_mostTouchedActor  ==  NULL  ||   ! _mostTouchedActor -> isDynamic())
 4      {
 5          relativeVelocity  =  _bodyActor -> getLinearVelocity();
 6      }  else  {
 7          relativeVelocity  =  _bodyActor -> getLinearVelocity()  -  _mostTouchedActor -> getLinearVelocity();
 8      }
 9      NxQuat rotation  =  _bodyActor -> getGlobalOrientationQuat();
10      NxQuat global2Local;
11      _localVelocity  =  relativeVelocity;
12      rotation.inverseRotate(_localVelocity);
13       // printf("Velocity: %2.3f %2.3f %2.3f\n", _localVelocity.x, _localVelocity.y, _localVelocity.z);
文档和教程:API详细程度上粗看差不多,不过貌似Physx没有提供索引功能,而只有搜索;
教程上看,我个人更偏好Havok的教程,上面譬如车辆那部分,havok专门划了块Vehicle Kit来讲,里面把物理大概原理什么都讲了,而且带了很多解释图,我觉得这对初学者会很不错。
初探Havok后,和Physx的一点点比较_第1张图片

Physx的教程更多带的是实例的代码,里面的lesson就对应了一个小程序,不过觉得里面的解释相对havok较少,而且毕竟是word文档,看着比chm的累。。。
初探Havok后,和Physx的一点点比较_第2张图片
  我现在有这感觉,在国内而言Physx的名声比Havok要大。但似乎Havok更强大且更易用些。
  累了。。睡个午觉去

你可能感兴趣的:(初探Havok后,和Physx的一点点比较)