模型显示位置、放大/缩小比例操作

[最后更新时间:2020/01/30]

由于 Live2D 使用多边形进行绘制,所以它在绘制时使用类似于3DCG 的矩阵。
本文介绍如何在 Cubism SDK 示例程序中使用矩阵。
它不包括矩阵本身的描述。

 

概述

在 Cubism SDK 上计算矩阵时,使用 CubismMatrix44 或继承它的类。

CubismMatrix44 包含一个 4 * 4 矩阵的数组。
数组中元素的顺序基于OpenGL。

CubismMatrix44 及其继承类不支持旋转、Z 轴移动或放大/缩小比例操作。

但是如果在传递给渲染器的时候转换成GMatrix44,就可以通过第三方的矩阵计算库进行处理。

 

CubismMatrix44

获取矩阵的数组

要获取 CubismMatrix44 中矩阵的数组,请在 Native 上使用 CubismMatrix44 :: GetArray () 并在 Web 上使用 CubismMatrix44.getAray ()。

CubismMatrix44::GetArray() 和 CubismMatrix44.getAray() 用于获取要传递给渲染器的矩阵数组。

 

 

为矩阵设定一个数组

要使用外部生成的矩阵覆盖 CubismMatrix44 中的矩阵数组,请在 Native 上使用 CubismMatrix44 :: SetMatrix () 并在 Web 上使用 CubismMatrix44.setMatrix ()。

 

 

移动显示位置

在 Native 上使用 CubismMatrix44::Translate() 或 CubismMatrix44::TranslateRelative(),在 Web 上使用 CubismMatrix44.translate() 或 CubismMatrix44.translateRelative() 来平移显示位置。

参数设定的所有坐标都在屏幕坐标系中。

CubismMatrix44::Translate(), CubismMatrix44.translate() 用参数覆盖当前坐标。
CubismMatrix44::TranslateRelative() 和 CubismMatrix44.translateRelative() 相对于当前坐标平移参数的量。

 

 

放大/缩小显示倍率

在 Native 上使用 CubismMatrix44::Scale() 或 CubismMatrix44::ScaleRelative(),在 Web 上使用 CubismMatrix44.scale() 或 CubismMatrix44.scaleRelative() 进行放大和缩小。

CubismMatrix44::Scale(), CubismMatrix44.scale() 用一个参数覆盖当前的显示倍率。
CubismMatrix44::ScaleRelative(), CubismMatrix44.scaleRelative() 设定当前显示相对于参数值的倍率。

如果倍率设定为1,它将是模型的原始大小。

 

 

获取坐标

要获取矩阵变换的坐标,请在 Native 上使用 CubismMatrix44::TransformX()、CubismMatrix44::TransformY(),在 Web 上使用 CubismMatrix44.transformX()、CubismMatrix44.transformY()。

用于从模型在局部坐标系中的顶点坐标获取屏幕上的位置。

 

要获得由矩阵逆变换的坐标,请在 Native 上使用 CubismMatrix44 :: InvertTransformX ()、CubismMatrix44 :: InvertTransformY (),在 Web 上使用 CubismMatrix44.invertTransformX ()、CubismMatrix44.invertTransformY ()。

用于从碰撞检测等屏幕坐标系中输入的坐标获取模型局部坐标系中的坐标。

 

 

矩阵到矩阵计算

要计算矩阵,请在 Native 上使用 CubismMatrix44 :: Multiply () 和 CubismMatrix44 :: MultiplyByMatrix (),在 Web 上使用 CubismMatrix44.multiply () 和 CubismMatrix44.multiplyByMatrix ()。

 

 

CubismModelMatrix

它是一个继承 CubismMatrix44 的类。
目的是设定模型坐标,显示位置可以从侧面或中心点设定,显示倍率可以通过高宽控制。

Cubism SDK 示例在屏幕上显示 Cubism 模型的画布高度。

 

实例生成

CubismModelMatrix 在实例化时需要设定模型的画布大小。

 

 

应用model3.json的布局

模型布局信息可以在 model3.json 中描述。
如果要使用它来设定模型的位置和缩放比例,请在 Native 上使用 CubismModelMatrix::SetupFromLayout(),在 Web 上使用 CubismModelMatrix.setupFromLayout()。

 

 

模型显示位置操作

在 CubismModelMatrix 中,您可以根据画布的每一边或中心设定坐标。

 

 

模型显示尺寸操作

CubismModelMatrix 允许您在保持模型纵横比的同时控制缩放比例。

 

 

 

 

CubismViewMatrix

它是一个继承 CubismMatrix44 的类。
它旨在通过变更相机的位置或缩放来使用。

Cubism SDK 示例根据绘图范围的大小创建一个矩阵。

CubismViewMatrix中处理的变换矩阵应该是平行投影。

 

相机运动

移动相机(屏幕)时,在 Native 上使用 CubismViewMatrix::AdjustTranslate(),在 Web 上使用 CubismViewMatrix.adjustTranslate()。
作为参数传递的移动量是屏幕坐标。

 

 

相机放大和缩小

在 Native 上使用 CubismViewMatrix::AdjustScale() 和在 Web 上使用 CubismViewMatrix.adjustScale() 来使用相机的倍率进行缩放。
围绕传递给第一个和第二个参数的坐标进行缩放。

© 2010 - 2022 Live2D Inc.