每个 Cubism SDK 的比较

[最近更新时间:2022/02/16]

  Cubism SDK for Unity Cubism SDK for Native Cubism SDK for Web
口罩分享 共享 CubismMaskController 指定的 MaskTexture 使用在模型内共享的蒙版纹理 和左边一样
口罩数量 默认情况下可以使用64个掩码 默认情况下可以使用36个掩码
* 通过启用高清蒙版可以解除限制。
有关详细信息,请参阅“掩膜预处理方法(Native)”。
默认情况下可以使用36个掩码
如何取口罩 蒙版大小是固定的
由一个正方形组成,该正方形可以包含要遮罩的一侧
自动调整大小
带有一个可以包含可以被遮罩的边的矩形
完全配置为面罩形状
和左边一样
如何绘制 绘制顺序(升序和降序),Z值(升序和降序) 绘制顺序升序 和左边一样
OW暂停功能 有(R11beta1~) 和左边一样
OW表情功能 有(R11beta1~) 和左边一样
运动管理 将 Unity 的 motion3.json 转换为 AnimationClip 和
使用 Mecanim
使用 Cubism SDK for Native 使用 Cubism SDK for Web 来实现
SDK语言 C # C++ Type Script
Live2D 放置 在图形用户界面上 在代码上 和左边一样
输出平台 Windows, macOS, iOS, Android, WebGL,
PlayStation 4, Nintendo Switch
Windows, macOS, Linux, iOS, Android,
PlayStation 4, Nintendo Switch
网页浏览器

 

掩模特性的差异

Cubism SDK for Unity

在 Unity 中,遮罩图片共享以 CubismMaskController 指定的 MaskTexture 为单位进行共享。
可以创建多个MaskTexture,即使模型是同一类型,如果MaskTexture指定不同,它们也会分开使用。
您不能在单个模型中使用多个 MaskTexture。

 

可以通过变更 Mask Texture 的 Subdivisions 项来变更每个纹理处理的遮罩数量。
Subdivisions 的值是每个轴处理的掩码数,处理的掩码数变化如下表所示。

Subdivisions 1 2 3 4 5
口罩数量 4 16 64 256 1024

默认情况下,没有根据处理的蒙版数量调整细分的功能。
使用需要精细遮罩的模型时要小心。

 

上图是Unity中使用的Gloabal Mask Texture的Render Texture与模型的绘制。
右下的黑色部分是绘制的Render Texture,从左下到上的顺序如下。

Mark1的眼睛,Mark1的眼睛,Mark1的嘴巴,名牌眼镜,
大师的右眼,大师的左眼,Mark2的眼睛,Mark2的眼睛,
Mark2的嘴

 

合并从同一图形网格生成的蒙版。
它不是查看用于掩码的编号,而是将其与实例化的 Drawable 对象进行比较。
因此,即使模型数据相同,如果存在多个实例,掩码也会被实例数所消耗。

当达到遮罩的上限时,遮罩将应用于整个表面,并且显示从执行时最慢的注册顺序消失。

此外,因为它的形状像一个正方形,包括要掩蔽的一侧,所以它具有即使在大的图形网格上用小的图形网格进行掩蔽时也不太可能变形的特性。

 

* 制作 AssetBundle 的注意事项

有一个规范是 Gloabal Mask Texture 的 Render Texture 转换为 Asset Bundle 时不释放。
要防止内存泄漏,请参阅教程“使用 AssetBundles 中的模型时的内存泄漏及其解决方法”

 

Cubism SDK for Native, Cubism SDK for Web

Cubism SDK for Native 和 Cubism SDK for Web 中的掩码在每个模型的开头都准备好了。
详见“口罩前处理方法”

由于 Cubism SDK for Native 对于每个模型只有模型中的绘制顺序的绘制功能,因此每个模型都进行了蒙版共享。
与 Unity 一样,相同的蒙版被合并。仅通过可绘制编号进行比较。
最多可处理36个蒙版,大小根据蒙版数量自动调整。

 

上图是 Cubism SDK for Native 的裁剪纹理水平图。(使用 Cubism SDK for Web 可以获得类似的结果)
请注意,与 Cubism SDK for Unity 不同,Cubism SDK for Native 和 Cubism SDK for Web 是上下颠倒的,颜色较深的会绘制蒙版。
绘制了马克的右眼、左眼和嘴巴。

 

与 Unity 的 Cubism SDK 不同,它生成为包含蒙版边的矩形,因此不受相邻蒙版缓冲区的影响。
因此,在分割数多的情况下,在大的图形网格被小掩模覆盖的模型中,掩模区域可能被压碎并且可能影响绘制结果。
将小蒙版应用于多个图形网格时也是如此。
如果掩码区域被压碎,可以通过增加掩码缓冲区的大小来改善。
(参考:掩码缓冲区的动态调整大小)

Cubism SDK for Native 还可以使用高清蒙版来换取性能。
有关启用高清蒙版的信息,请参阅“蒙版预处理方法(Native)#将蒙版处理切换为高清方法”。

 

图纸订单管理

Cubism SDK for Unity

在 Cubism SDK for Unity 中,绘制顺序由 Unity 函数和脚本管理。

有四种方法。主要有两种方法。

・ Z 调整 (Back To Front Z, Front To Back Z)

是通过在模型中移动Drawable的Z位置,通过Z排序来修正绘制顺序的方法。
如果相机设定为透视或模型的 Tramsform 旋转,则显示可能会失真。
如果将其旋转180 度,则绘制顺序将颠倒。
所有 Drawable 的绘制顺序都是相同的。

・订单调整(Back To Front Order,Front To Back Order)

是一种通过逐个移位来修正模型中Drawable的绘制顺序的方法。
显示不会受到相机设定或模型旋转的干扰。即使在背面,对相机的绘制顺序也是相同的。
如果 CubismRenderController 的 Order In Layer 对每个模型都不够用,
绘制顺序混杂,会处于精细切换的状态。
如果 DrawCall 增加或显示位置被覆盖,则显示可能与 Drawable 混合。

相反,您可以通过在模型的绘图中插入 Unity 对象等来使其看起来像拥有一个对象。

 

Cubism SDK for Native, Cubism SDK for Web

在 Cubism SDK for Native 和 Cubism SDK for Web 中,绘制顺序是按照与模型关联的 Renderer 的内容排序的。

显示不会在模型之间混合。
在模型之间,最先绘制的显示在后面。

 

运动管理

在 Cubism SDK for Unity 中,运动管理使用两种类型执行,Mecanim 是一个 Unity 函数,“Cubism MotionController”是一个附加到使用 Unity 的 Playable API 的 SDK 的组件。
Mecanim 允许您在图形环境中直观地设计运动组合。
使用 CubismMotionController,您可以播放脚本中的所有动作,而无需担心状态。

在 Cubism SDK for Native 和 Cubism SDK for Web 中,运动管理由 Live2D 端的 SDK 执行。
虽然会直接用代码进行操作,但也可以通过暂停功能等类似于 Cubism 2.1的形式进行操作。

SDK 制作动画的差异请参考“SDK 制作动画的差异”

 

© 2010 - 2022 Live2D Inc.