视线跟踪设置

最終更新: 2020年1月30日

这里将说明如何使模型的视线跟踪鼠标光标。

概述

为了设置视线跟踪,Cubism SDK中使用了一个名为Lookat的组件。

SDK中包含一个使用了该组件的名为[LookAt]的范例场景,因此请同时参考。
这是一个通过视线跟踪围绕模型头部的GameObject位置的范例。
/Assets/Live2D/Cubism/Samples/Lookat

要设置Lookat,请执行以下三项操作。

  1. 附加管理Lookat的组件
  2. 指定要跟踪的参数
  3. 设置视线跟踪对象

附加管理Lookat的组件

将管理视线跟踪、名为CubismLookController的组件附加到作为模型根的GameObject上。

CubismLookController有四个设置项目。

– Blend Mode:设置如何将视线跟踪时波动的值应用到参数。可以设置以下三项。

Mutiply:正片叠底到当前设置的值。
Additive:加算到当前设置的值。
Override:覆盖当前设置的值。

– Center:在这里设置作为跟踪座标中心的GameObject。
中心是设置的GameObject的Bounds中心。
Center中设置的是[模型]/Drawables/下的GameObject。
如果此项目没有设置任何内容,则使用附加CubismLookController的GameObject的中心。

– Damping:跟踪对象所需的时间。值越小,跟踪速度越快。

– Target:设置视线跟踪的目标。稍后将描述细节。

此次,请将Blend Mode设置为[Override]。

指定要跟踪的参数

在[模型]/Parameters/下,置入了管理该模型参数的GameObject。
另外,这个GameObject中设置的名称就是参数的ID。
这些与您可以使用CubismModel.Parameters()获得的内容相同。

从该参数用GameObject中,将名为CubismLookParameter的组件附加到希望跟踪的ID。

如果CubismLookParameter附加到参数用GameObject上,则上述CubismLookController将参考它并跟踪它。

CubismLookParameter有两个设置项目。

– Axis:指定将设置参数视为哪个轴的变换。例如,如果指定了X,它将根据Target的X轴的值进行计算并设置。

– Factor:设置要乘以计算值的数值。由于计算结果的值在−1~+1的范围内,
根据参数,增加或减少范围、或者反转+和-可能更自然。

设置视线跟踪对象

最后,准备要跟踪的对象。

在CubismLookController组件的[Target]中,设置实装[ICubismLookTarget]接口的组件。

根据目标设置,可以设置特定条件,例如将对象设置为视线跟踪到鼠标光标或GameObject的位置,或者使其仅在拖动时跟踪等。

创建一个名为“CubismLookTarget”的C#脚本并重写代码如下:
这里将跟踪被拖动鼠标的座标。

using Live2D.Cubism.Framework.LookAt;
using UnityEngine;

public class CubismLookTarget : MonoBehaviour, ICubismLookTarget
{
    public Vector3 GetPosition()
    {
        if(!Input.GetMouseButton(0))
        {
            return Vector3.zero;
        }

        var targetPosition = Input.mousePosition;

        targetPosition = (Camera.main.ScreenToViewportPoint(targetPosition) * 2) - Vector3.one;

        return targetPosition;
    }


    public bool IsActive()
    {
        return true;
    }
}

创建一个空的GameObject并附加CubismLookTarget。

选择模型并将上面创建的GameObject从Inspector视图拖放到CubismLookController的[Target]。

这样就完成了设置。

运行场景并使用鼠标左键拖动Game视图以跟踪模型的视线。

请问这篇文章对您有帮助吗?
关于本报道,敬请提出您的意见及要求。