[{"data":1,"prerenderedAt":261},["ShallowReactive",2],{"page-动画-1":3,"page-count-动画":260},[4],{"id":5,"title":6,"body":7,"date":236,"description":13,"extension":237,"meta":238,"navigation":241,"path":253,"seo":254,"stem":255,"tags":256,"__hash__":259},"blogs\u002F_legacy\u002F2015\u002F2015-01-29-ue4%e5%8a%a8%e7%94%bb%e5%8a%9f%e8%83%bd%e6%95%b4%e7%90%86.md","UE4动画功能整理",{"type":8,"value":9,"toc":232},"minimark",[10,14,17,23,26,31,34,39,50,55,58,63,72,77,86,91,94,101,106,109,114,117,122,125,131,136,139,145,150,153,159,162,168,175,180,183,189,192,198,201,206,209,223,226,229],[11,12,13],"p",{},"工欲善其事必先利其器，最近一段开始了对UE4动画功能的系统性整理和学习。好在现在UE4的文档中文化已经开始了，有的文档是中文的，读起来也轻松很多。",[11,15,16],{},"当前使用的UE4版本为4.6.1。",[11,18,19],{},[20,21,22],"strong",{},"AnimBlueprints",[11,24,25],{},"动画蓝图分为通常的事件图表和专有的动画蓝图两种，其中动画蓝图主要负责通过读取到的变量进行相应的动画播放。事件图表则是负责更新数值和状态变量。",[11,27,28],{},[20,29,30],{},"Animation Composite",[11,32,33],{},"动画合成的作用是将多个动画进行组合变成新的合成动画，对于经常性的会进行序列播放的动画将其整合成一个进行管理和使用比较方便。",[11,35,36],{},[20,37,38],{},"Skeletal Controls",[11,40,41,42,49],{},"骨骼控制可以实现在动画播放的过程中精确到单个骨骼的播放控制，这样可以使得代码对动画的播放拥有更多的灵活性。操作相对简单，可以在使用到时参考",[43,44,48],"a",{"href":45,"rel":46},"https:\u002F\u002Fdocs.unrealengine.com\u002Flatest\u002FCHN\u002FEngine\u002FAnimation\u002FNodeReference\u002FSkeletalControls\u002Findex.html",[47],"nofollow","文档","。",[11,51,52],{},[20,53,54],{},"Physics-Based Animation",[11,56,57],{},"基于物理的动画，可以对骨架中的部分骨骼开启物理模拟。不过要正常的打开物理模拟需要为物体指定物理资源。",[11,59,60],{},[20,61,62],{},"IK",[11,64,65,66,71],{},"IK的作用相信玩过相关游戏的童鞋都比较清楚，简单的来说就是用脚来控制大腿的感觉。通过脚、手的位置来逆向的沿着骨架调整动画。其作用是让动画变得更加真实，和骨骼控制相配合即可。需要用到时参照",[43,67,70],{"href":68,"rel":69},"https:\u002F\u002Fdocs.unrealengine.com\u002Flatest\u002FCHN\u002FEngine\u002FAnimation\u002FIKSetups\u002Findex.html",[47],"官方的示例","即可。",[11,73,74],{},[20,75,76],{},"Animation Retargeting",[11,78,79,80,85],{},"就是将动画共享给其他模型，减少动画制作的成本。主要分为两种形式，一种是在骨骼相同的模型之间使用相同的动画。另一种是通过Rig这个中间件使得骨骼结构不同的模型得以使用共享的动画。Rig的原理类似于对骨骼进行映射，相对的同骨骼架构本身就是可以共享动画的。这个部分相对简单，需要实际应用时参照",[43,81,84],{"href":82,"rel":83},"https:\u002F\u002Fdocs.unrealengine.com\u002Flatest\u002FINT\u002FEngine\u002FAnimation\u002FAnimHowTo\u002FRetargeting\u002Findex.html",[47],"官方文档","操作即可。",[11,87,88],{},[20,89,90],{},"Animation Notifications",[11,92,93],{},"动画通知可以使得我们在动画播放的某个阶段进行声音的播放、粒子系统的演出或者触发事件接口。",[11,95,96],{},[97,98],"img",{"alt":99,"src":100},"PlayParticleEffectNotify.png","http:\u002F\u002Fdocs.unrealengine.com\u002Flatest\u002Fimages\u002FEngine\u002FAnimation\u002FSequences\u002FNotifies\u002FPlayParticleEffectNotify.jpg",[11,102,103],{},[20,104,105],{},"Animation Curves",[11,107,108],{},"通过曲线来对变形动画动画的数值进行更改和控制。",[11,110,111],{},[20,112,113],{},"AnimMontage",[11,115,116],{},"Montage的主要功能是动画的管理和组织，通过将放置于slot中的一个或多个动画在sections中重组，可以让代码更好的对动画播放进行控制。同时Montage还提供了section播放时的分支点功能，分支点的功能和动画通知事件类似，区别之处在于分支点是同步的。因此分支点在时间上将会更加精确，同时也更加消耗系统资源。AnimMontage的一个重要作用之一，就是通过Slot的形式给予了代码层对AnimGraph的动画播放的控制权限。",[11,118,119],{},[20,120,121],{},"Root Motion",[11,123,124],{},"根骨骼的功能是为会产生移动的动画提供锁定。例如美术资源的动画是包含位移的情况，直接应用这个动画就会导致角色的碰撞检测实体和显示的物体之间的分离。官方的演示图片很直观的展示了这个问题：",[11,126,127],{},[97,128],{"alt":129,"src":130},"","http:\u002F\u002Fdocs.unrealengine.com\u002Flatest\u002Fimages\u002FEngine\u002FAnimation\u002FRootMotion\u002FHammerSlam_NoRootMotion_Wall.gif",[11,132,133],{},[20,134,135],{},"Blend Space",[11,137,138],{},"动画混合可以将两个或多个动画混合起来，通过调整暴露出来的值来调节混合的程度。例如当速度小于100时播放行走动画，当速度大于300时播放奔跑动画。而在100~300之间则播放行走和奔跑动画的混合。而如果进一步的混合向左、向右和向后的行走和奔跑动画的话，就可以轻松的实现八方向行走动画了",[11,140,141],{},[97,142],{"alt":143,"src":144},"image","\u002Fwp-content\u002Fuploads\u002F2015\u002F01\u002Fimage_thumb.png",[11,146,147],{},[20,148,149],{},"Additive Animations",[11,151,152],{},"UE4可以在动画混合时将动画单独指定给某个骨骼以及其所有的子节点。这样以来就可以实现只给上半身播放特定的动画，而人物可以进行行走、下蹲或者站立不受其影响。其核心的部分是Layered blend per bone结点：",[11,154,155],{},[97,156],{"alt":157,"src":158},"Animations16.png","http:\u002F\u002Fdocs.unrealengine.com\u002Flatest\u002Fimages\u002FEngine\u002FAnimation\u002FAnimHowTo\u002FAdditiveAnimations\u002FAnimations16.jpg",[11,160,161],{},"在其属性LayerSetup中进行指定：",[11,163,164],{},[97,165],{"alt":166,"src":167},"Animations18.png","http:\u002F\u002Fdocs.unrealengine.com\u002Flatest\u002Fimages\u002FEngine\u002FAnimation\u002FAnimHowTo\u002FAdditiveAnimations\u002FAnimations18.jpg",[11,169,170,171,49],{},"就可以实现只将射击动画传递到上半身。详细的实现可参照",[43,172,48],{"href":173,"rel":174},"https:\u002F\u002Fdocs.unrealengine.com\u002Flatest\u002FINT\u002FEngine\u002FAnimation\u002FAnimHowTo\u002FAdditiveAnimations\u002Findex.html",[47],[11,176,177],{},[20,178,179],{},"Aim Offset",[11,181,182],{},"Aim Offset是用来实现多方向瞄准的动画混合。和其他的动画混合一样，需要提供面向各个方向瞄准的动画作为blend的基础。官方的示例中演示了如何从动画中通过删除帧数来生成这些动画的过程。",[11,184,185],{},[97,186],{"alt":187,"src":188},"AimOffset22.png","http:\u002F\u002Fdocs.unrealengine.com\u002Flatest\u002Fimages\u002FEngine\u002FAnimation\u002FAnimHowTo\u002FAimOffset\u002FAimOffset22.jpg",[11,190,191],{},"得到上面那些动画之后，给每一个动画指定Additive Settings为正射的动画即可新建Aim Offset了。",[11,193,194],{},[97,195],{"alt":196,"src":197},"AimOffset30.png","http:\u002F\u002Fdocs.unrealengine.com\u002Flatest\u002Fimages\u002FEngine\u002FAnimation\u002FAnimHowTo\u002FAimOffset\u002FAimOffset30.jpg",[11,199,200],{},"操作模式是blend通用的。",[11,202,203],{},[20,204,205],{},"Socket",[11,207,208],{},"通过在骨骼上附加Socket，可以使得额外的物体可以附加在骨骼上。",[11,210,211,215,219],{},[97,212],{"alt":213,"src":214},"AttachActorToActor.png","http:\u002F\u002Fdocs.unrealengine.com\u002Flatest\u002Fimages\u002FEngine\u002FContent\u002FTypes\u002FSkeletalMeshes\u002FSockets\u002FAttachActorToActor.jpg",[97,216],{"alt":217,"src":218},"AttachActorToComponent.png","http:\u002F\u002Fdocs.unrealengine.com\u002Flatest\u002Fimages\u002FEngine\u002FContent\u002FTypes\u002FSkeletalMeshes\u002FSockets\u002FAttachActorToComponent.jpg",[97,220],{"alt":221,"src":222},"AttachTo.png","http:\u002F\u002Fdocs.unrealengine.com\u002Flatest\u002Fimages\u002FEngine\u002FContent\u002FTypes\u002FSkeletalMeshes\u002FSockets\u002FAttachTo.jpg",[11,224,225],{},"可以在游戏逻辑中通过蓝图进行附加操作，也可以直接在编辑其中进行附加以检测或改变模型的外观。",[227,228],"hr",{},[11,230,231],{},"总体而言，UE4提供的动画工具都是比较直观明了的。主要的概念也就上面总结的这些，有需要具体使用时再详细的参照文档进行实现。操作过两三遍之后应该就能熟练掌握了。",{"title":129,"searchDepth":233,"depth":234,"links":235},2,3,[],"2015-01-29","md",{"layout":239,"status":240,"published":241,"author":242,"author_login":243,"author_email":244,"author_url":245,"wordpress_id":246,"wordpress_url":247,"date_gmt":248,"excerpt":249},"post","publish",true,{"display_name":243,"login":243,"email":244,"url":245},"chaoshikari","chaoshikari@gmail.com","\u002F",1112,"\u002F\u002F?p=1112","2015-01-29 15:29:53 +0000",{"type":8,"value":250},[251],[11,252,13],{},"\u002F2015-01-29-ue4动画功能整理",{"title":6,"description":13},"_legacy\u002F2015\u002F2015-01-29-ue4%e5%8a%a8%e7%94%bb%e5%8a%9f%e8%83%bd%e6%95%b4%e7%90%86",[257,258],"UE4","动画","lCLJ6vtXPL1lcQosSeqM4r_dSDjfw8YRuZ9Rn4Yckt4",1,1788763181046]