视线跟踪设置
最終更新: 2020年1月30日
这里将说明如何使模型的视线跟踪鼠标光标。
概述
为了设置视线跟踪,Cubism SDK中使用了一个名为Lookat的组件。
SDK中包含一个使用了该组件的名为[LookAt]的范例场景,因此请同时参考。
这是一个通过视线跟踪围绕模型头部的GameObject位置的范例。
/Assets/Live2D/Cubism/Samples/Lookat
要设置Lookat,请执行以下三项操作。
- 附加管理Lookat的组件
- 指定要跟踪的参数
- 设置视线跟踪对象
附加管理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视图以跟踪模型的视线。