• InteractiveFoliageActor
    • 概述
    • 简单的设置
    • 简单的材质设置
    • 高级的材质设置
    • 弹簧物理设置
    • 限制
    • 性能影响
    • 问题解决

概述


InteractiveFoliageActor是自QA_APPROVED_BUILD_DEC_2009版本之后的一种新的actor类型。它是一种可以接收推力或射击力并且可以把这些力应用到弹簧系统中的高效的静态网格物体,弹簧系统会把力的作用结果反馈到FoliageNormalizedRotationAxisAndAngle(植被的法线旋转轴及角度 节点中。这个节点可以连入到WorldPositionOffset(世界位置偏移量)中使得网格物体产生动画,这个操作会带来较小的性能消耗。

简单的设置


简单的材质设置


您所需要做的一切就是设置并运行影响WorldPositionOffset(世界位置偏移)量FoliageNormalizedRotationAxisAndAngle(植被的法线旋转轴及角度)。请使用RotationAboutAxis(围绕轴旋转)节点来围绕这个坐标轴来旋转对象。

SimpleSetup.jpg

对Object World Position(对象世界位置)所作的减法处理是为了移动那个在世界空间中向下旋转的点。设置好这些后,现在您可以把一个矮树丛推开,并且一旦您停止向该矮树丛施加力,它将会弹回到原来的位置。

NotPushingCropped.jpg PushingCropped.jpg

当然,屏幕截图不能很好地播放动画,所以这些视频可以更好地显示结果。
WalkingThroughFields.mp4
Explosions.mp4

高级的材质设置


您可以修改插入到RotateAboutAxis中的Angle (角度)来使得旋转以不同的状况来影响网格物体的各个部分。比如,您可以在顶点颜色中保存一个权重来控制颜色的硬度,并使用它来衰减角度。还有一个 FoliageImpulseDirection节点,它提供了粗略的弹力偏移量,即从弹簧的中心到仿真弹簧位置之间的向量。如果您不想使用旋转进行动画那么这可能是有用的。

作为示例,这里是通过使用来自顶点颜色的偏移量的材质来改变网格物体的不同部分的旋转轴。

AdvancedSetup.jpg

上面材质的Custom(自定义)节点是:

AdvancedSetup2.jpg

这里是正在运转中的材质的视频。注意观察当您接触它时网格物体的不同部分是如何按照不同的方向旋转的。当您想在您接触这些植被时它们不是按照指定的方向运动而是任意地到处运动时,那么这种植被类型是有用的。

AdvancedAnimation.mp4

请一定要把这个植被类型和一些环境风动画结合使用来获得最佳的效果。 WindDirectionAndSpeed(风的方向及速度)节点对于调整对象之间的风的动画是有用的。

弹簧物理设置


每个InteractiveFoliageActor都有一些设置,让您来控制弹簧的行为。比如,当您的角色接触弹簧但弹簧没有产生足够的运动时,则可以增加FoliageTouchImpulseScale(植被的接触冲力比例)。

SpringSettings.jpg

  • FoliageDamageImpulseScale(植被的伤害冲力的缩放比例) – 缩放伤害事件所带来的力的大小。
  • FoliageDamping(植被阻尼) – 决定了弹簧在震荡过程中所丢失的能量。这个力类似于空气摩擦。
  • FoliageStiffness(植被硬度) – 决定了向弹簧的中施加的力的强度。
  • FoliageStiffnessQuadratic – 和FoliageStiffness一样,但是这个力的强度随着到弹簧中心的距离呈二次方增长。这个力用于阻止弹簧由于接触力或伤害力而超过某个特定的点。
  • FoliageTouchImpulseScale – 缩放接触事件所施加的力。
  • MaxDamageImpulse – 区间限定所应用的每个最大伤害力的大小。
  • MaxForce – 区间限定每次更新所应用的组合力的大小。
  • MaxTouchImpulse – 区间限定每次应用的接触力的大小。

没有办法在编辑器中预览弹簧的行为,所以重现弹簧的行为的最好的办法就是创建一个小的测试关卡,然后跳转到PIE中来测试它和InteractiveFoliageActor的交互作用。

限制


  • 目前InteractiveFoliageActor阻止射弹武器,因为它还没有遵循PassThroughDamage(通过伤害)。
  • 因为动画使用了WorldPositionOffset(世界位置偏移量),所以所有关于它的限制都同样应用。InteractiveFoliageActor提供了仅可视化的效果。

性能影响


InteractiveFoliageActor对性能消耗只有非常小的影响。它们是具有预计算光照的静态网格物体,而且静态网格物体是渲染最快的网格物体类型。唯一的不同是,InteractiveFoliageActor具有一个碰撞圆柱体,它在碰撞八叉树中,用于接收Touch和TakeDamage事件。InteractiveFoliageActor可以用于您已经在之前放置了植被静态网格物体的任何地方。

问题解决


请在游戏中使用’show collision(显示碰撞)’来查看 InteractiveFoliageActor的碰撞圆柱体,该碰撞圆柱体用于计算应用到那个actor上的力。

您可以简化材质来把FoliageImpulseDirection插入到Emissive(自发光)通道中,来调试当您接触它时方向是否改变。

如果您的actors不会受到爆炸的影响,那么请确保它们actor的Location(位置)在地面的上面。爆炸在应用伤害之前会对每个actor的Location(位置)进行线性检测。您可以通过在编辑器中选择平移控件并找到该控件的位置来查看actor的位置。您可以通过把PrePivot(在Display类别的下面)应用到actor上来把Location(位置)移动到网格物体上更高的地方,然后把网格物体平移回来进行弥补。

来源: UDK | InteractiveFoliageActorCH