UDN
Search public documentation:

HitMaskCH
English Translation
日本語訳
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 主页 > 粒子 & 效果 > 贴花 > 击中蒙板组件

击中蒙板组件


概述


HitMask 设计目的是使用一个贴图在人物身上创建贴花效果。

HitMask 可以渲染为一个贴图,它的 UV 坐标与 skeletalmesh(骨架网格物体)的世界位置匹配,这样您就可以使用该蒙板进行过滤,例如,枪伤或任何其他效果。 如果您为世界位置提供了参数,那么它会找到匹配的 UV 坐标并在坐标周围渲染白色圆圈。

实现方法


该步骤会描述如何为您的游戏实现该功能。

向 Actor 添加分量

SceneCapture2DHitMaskComponent 是负责渲染为纹理的一个分量。该分量需要附加到 pawn 或骨架网格物体 actor。

      // 向 actor 添加击中蒙板
      Begin Object Class=SceneCapture2DHitMaskComponent Name=HitMaskComp
      End Object
      HitMaskComponent=HitMaskComp
      Components.Add(HitMaskComp)

根据 Actor 创建材质

除非您想要所有角色共享同一个贴图,否则您可能要创建贴图并将其作为 Hit Mask Component(击中蒙板分量)的渲染目标。

    // 创建 64x64 的蒙板材质
      MaskTexture = class'TextureRenderTarget2D'.static.Create(64, 64, PF_G8, MakeLinearColor(0, 0, 0, 1));

      if ( MaskTexture!=none )
      {
            // 使用该材质更新 HitMaskComponent
            HitMaskComponent.SetCaptureTargetTexture( MaskTexture );
      }

向材质添加蒙板

这会将一个圆圈添加到 MaskWorldLocation 的世界位置,其 Radius(半径)的大小与正常测试与否无关。

HitMaskComponent.SetCaptureParameters(MaskWorldLocation, Radius, MaskStartLocation, FALSE); // 发送捕获参数

如果您不想要在着色器中进行任何方向测试,那么不需要 MaskStartLocation。 例如,如果您想要在角色胸部创建击中伤口,那么在没有击中的地方您不需要渲染角色背后的蒙板,尽管它在半径范围内。 MaskStartLocation 表示初始点,而且最后参数 TRUE(真)将会进行击中正常测试。

如果是 FALSE(假),正常测试将不会进行,而且它只会在世界位置周围创建球体。

由于您不想要在两个地方创建同一个东西,所以会将其创建为 U 非镜像(V 镜像)。

如何为您的角色进行设置


现在,您要将该贴图用于您的角色材质。

Texture Parameter(贴图参数)

在您的材质中,创建可以在游戏中进行替换的贴图参数。这将会作为我们要创建的目标贴图。

TextureParameter.jpg

现在,您需要非镜像该贴图。由于我们在渲染它时会非镜像 U,请确保您也的确有可以供 Unmirror U(非镜像 U)采样的贴图。

UnmirrorUCheck.jpg

在代码中替换贴图参数

现在,是该将蒙板贴图设置为参数的时候了,所以

      // 获得第一个参数
      MIC = Mesh.CreateAndSetMaterialInstanceConstant(0); // 您想要替换的材质
      if ( MIC != none &&  MaskTexture!=none )
      {
            // 将新的贴图设置为 FilterMask 参数
            MIC.SetTextureParameterValue('FilterMask', MaskTexture); // use this texture to be used by your material
      }

参数


  • MaterialIndex : 要渲染哪一部分材质?
  • ForceLOD : 如果值为 -1,请使用当前的 LOD。
  • HitMaskCullDistance : 剔除距离。如果比这个距离远,那么将不会进行测试

淡入淡出相关变量

您可以过一会儿使它淡出。它是调整参数。

  • FadingStartTimeSinceHit : 最后一次击中后淡入淡出开始时间。默认情况下是 10 秒。如果是 -1,那么它是无极限。如果不断击中,那么它将会停止淡入淡出。
  • FadingPercentage : 要应用的颜色 % - 范围从 0 到 1
  • FadingDurationTime : 自从淡入淡出开始淡入淡出持续时间 - 以秒为单位
  • FadingIntervalTime : 淡入淡出时间间隔 - 以秒为单位

限制


这是在人物上创建贴花的,但是在您要创建的形状方面有所限制。它会在这个点的周围创建淡入淡出圆圈。 默认情况下,它也只非镜像 U。所以,如果您有分隔符可以镜像 V,那么它可以在两边同时复制蒙板。解决这个问题很容易,但是如果您不使用所有部分,可能会浪费内存。