找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8939|回复: 0

[教程] Live2D Cubism (个人翻译) 附 Cubism SDK 度盘

[复制链接]
发表于 2021-1-6 21:08:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 Nepteus 于 2021-1-7 18:49 编辑

写在前面
Ren'Py 的7.4.0正式版终于发布了,终于内置 Live2D 支持了。然而,中文文档关于 Live2D 还没有更新,闲来无事,我就翻译了一下。

原版文档: https://www.renpy.org/doc/html/live2d.html

国内下载 Cubism SDK 有点困难,这里,我提供一个百度云分享:
链接: https://pan.baidu.com/s/1DN-FDxd2ZmfNxYUrQQUgoA
提取码: 25jq

目录
Live2D Cubism
Live2D Cubism 是一个使2D图像动画化的系统,像是视觉小说中的角色精灵(sprite)。这些图像放在一系列图层中,例如,一层是瞳孔和虹膜、一层是眼白、一层是眉毛等等。
Live2D 软件可以将网格关联到每一层,并按照参数使网格变形。 Live2D 软件允许你创建动作或表情文件,使参数随时间变化。
Ren'Py 的 Live2D 部分采用 Live2D 产生的文件,来定义 Ren'Py 中显示的动画。 Ren'Py 处理动作和表情文件并定义参数值,传递给 Cubism SDK for Native。 Cubism SDK for Native 返回要显示的网格列表。然后, Ren'Py 渲染网格,最终得到屏幕上的 Live2D 角色。
Ren'Py 支持 Cubism 3 和 Cubism 4 格式的 Live2D 动画。它支持表情和动作的回放。
警告
x86_64 安卓平台不支持 Live2D,缺少一个DLL。可能无法在安卓模拟器或 ChromeOS 上运行。
网页端不支持 Live2D。
在 iOS 上 安装 Live2D 需要手动复制静态库到你的 iOS 工程。
安装 Live2D
使用 Live2D 之前,你需要从 Live2D 网站下载并安装 Cubism SDK for Native。请注意,如果你的作品年收入超过一定程度,你可能需要购买使用 Live2D 的许可证。
下载完 Live2D 之后,你可以从 Ren'Py 的启动器安装它。打开“设置”,然后点击“安装库”。将 CubismSdkForNative-4-r.1.zip 文件放到 Ren'Py SDK 目录下,该目录可以用安装库界面右下的按钮打开。然后点击“安装 Live2D Cubism SDK for Native”。很快, Live2D 就安装好了。
Opt in to GL2
使用 Live2D,需要选择基于模型的渲染器,通过加入行:
define config.gl2 = True
到你的游戏。每一个游戏都要这么做。
定义动画
Live2D 动画使用 Live2D 可显示组件和 image 语句定义:
Live2D(filename, zoom=None, top=0.0, base=1.0, height=1.0, alias={}, loop=False, fade=None, seamless=None, attribute_function=None, attribute_filter=None, **properties)
此可显示组件显示 Live2D 动画。
filename
这可以是一个定义 Live2D 动画的 model3.json 文件,也可以是含有动画的目录。后一种情况,采用目录的最后一个组分,并加上 .model3.json 来寻找文件。
例如, "Resources/Hiyori" 和 "Resources/Hiyori/Hiyori.model3.json" 是等价的。
zoom
如果不为 None,则应用 zoom 系数。它优先于 topbase
top
The top of the image, for sizing purposes. This is a fraction of the image, with 0.0 being the top and 1.0 the bottom.
base
The bottom of the image, for sizing purposes. This is a fraction of the image, with 0.0 being the top and 1.0 being the bottom. This also becomes the default value of yanchor.
height
The height that the image is scaled to. This is a fraction of the virtual height of the screen.
loop
如果为 True,则最后的动作应该循环;否则不循环。
alias
将别名映射到动作或表情的字典。
fade
True 启动动作渐弱, False 关闭,而 None 使用 _live2d_fade 的值。
nonexclusive
如果不为 None,这应该是非排他性表情的名称列表。表情默认排他,同一时间只显示一个表情。列表中任意数量的非排他性表情可以与一个排他性表情同时显示。
seamless
这决定无缝循环是否使用。无缝循环单个动作在循环之间的衰减。这可以是 True 以始终启用无缝循环,或是 False 以始终关闭,或是要循环的动作集合。
attribute_function
如果不为 None,则是一个函数,使用一个属性元组,并返回另一个属性元组。用于替换属性,仅出于显示考虑——返回的属性不用于显示图像。函数应该确保最多给出一个属性对应一个表情。
attribute_filter
如果不为 None,则是一个函数,使用一个属性元组,并返回另一个属性元组。用于过滤相互冲突的非排他性属性。属性按最近请求排序,当发生冲突时,前面的属性获胜。
attribute_functionattribute_filter 的不同是前者一般用于计算替换——存在两个属性,则将其中一个替换为第三个;而后者用于解决属性之间的冲突,一群属性中只有一个是有效的。
只有 filename 要按位置给出,其他所有参数应该作为关键字参数给出。
aliasfadenonexclusiveseamlessattribute_functionattribute_filter 在所有共享 filename 的 Live2D 对象之间共享,因此只需要提供一次。
Live2D 可显示组件应该赋予 image 语句:
image hiyori = Live2D("Resources/Hiyori", base=.6)
也可以定义属性,定义不同的缩放系数非常有用。
image hiyori close = Live2D("Resources/Hiyori", base=.6)image hiyori far = Live2D("Resources/Hiyori", base=.9)使用动画
常用的显示 Live2D 图像的方式是使用 show 语句。除了成为 image 语句一部分的属性,还可以使用表情和动作名。
一些例子:
show natori exp_00 mtn_01show hiyori m10show hiyori m10 m01
这些使用 Cubism SDK 样品中找到的默认名。动作和表情名来自 Live2D 文件,并强制小写,如果以 model3.json 文件名开头(没有目录或扩展名),后接下划线,则移除前缀。(例如, "Hiyori_Motion01" 变成 motion01。)
最多使用一个排他性表情,同时可以给定任意数量的非排他性表情和动作。当一个以上动作被给定,这些动作按顺序播放,若 loop 为 True,则循环最后一个动作。因此可以在一个动作结束后,接一个空闲动画。每个动作只出现一次,除非给动作创建多个别名。
有两个特殊的属性 null 和 still。 null 属性意味着不应用排他性表情,给出角色默认表情。 still 动作停止所有动作。
非排他性表情持续到使用否定属性移除:
show hiyori -wave缩放
许多 Live2D 模型是高分辨率,至少在模型使用的内部坐标系中是这样。为了补偿, Ren'Py 包括两种方式缩小 Live2D 模型。
第一个是 zoom 参数。可以直接设定模型的缩放系数。如果使用 zoom,其他缩放参数将忽略。
其他情况,使用 topbaseheight 参数。前两个指定两条线,相对图像的顶部和底部。(和 Ren'Py 中别的地方一样,0.0是顶部,1.0是底部)当使用这些参数时,有两件事:
  • 缩放图像,topbase 之间区域采用 heightheight 是界面的一部分。
  • 调整锚, base 放到界面的底部。
研究缩放 Live2D 动画的时候,我首先调整 base 参数直到动画的正确部分与界面底部对齐。然后:
  • 如果图像太大,降低高度直到尺寸合适。
  • 如果图像太小,增加 top 以减少动画上方的黑色空间。
动作渐弱
Ren'Py 对 Live2D 的支持包括动作渐弱。正常情况下,从一个动画到另一个的转场是不连贯的——一个动画停止,另一个开始。转场时,两个动画同时播放。
Live2D 支持不同的模式,旧动画可以平滑渐入新动画,通过参数插值。想象一个角色移动手臂,而不是从一个位置消失、另一个位置出现。
动作渐弱使用 fade 参数。如果为 True,就启用动作渐弱;如果为 False,就是突然的改变;如果为 None,动作渐弱由 _live2d_fade 变量控制:
_live2d_fade = True
如果为 True,Live2D 动画使用动作渐弱;如果为 False,就是动画转场就是不连贯的。
Aliasin
alias 参数为动作指定自定义的名称。例如,你可以:
image hiyori = Live2D("Resources/Hiyori", base=.6, aliases={"idle" : "m01"})
要显示,可以用:
show hiyori idle
或者:
show hiyori m01循环与图像预测
如果 loop 参数设置为 True, Ren'Py 的 Live2D 支持可以循环最后的动画。如果动画正在循环,添加0.2秒以上的停顿是很重要的, Ren'Py可以利用它们来执行耗费高的图像预测。(如果可以在其他时间进行图像预测和加载,则也许不必这样做。)
函数
renpy.has_live2d()
返回 True,如果当前平台支持 Live2D;否则 False。


评分

参与人数 1干货 +3 收起 理由
BuErShen + 3 感谢分享!

查看全部评分

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|RenPy中文空间 ( 苏ICP备17067825号|苏公网安备 32092302000068号 )

GMT+8, 2024-11-21 18:23 , Processed in 0.120382 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表