马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 BuErShen 于 2019-6-28 18:48 编辑
Ren'Py引擎从入门到放弃(支线6)——还在探索阶段的Live2D
世上无难事,只要肯放弃。
支线系列是独立于基础之外的内容,会引用一些外部平台大佬的内容,感觉有困难的同学可以暂时不(fang)看(qi)。
本篇内容讲解 asfdfdfd于2018年8月,在GitHub上新建的 renpy-live2d 项目。作用是尝试在 Ren'Py中引入通用的 Live2D资源。请善用各种搜索引擎,尤其是墙外的,可以解决大部分疑问。若遇到疑难问题可私信,但我不保证一定能解决。
第一个问题:Live2D是什么?
答:百度知道。Live2D有两个大的分支:Cubism 和 Euclid。Cubism本质是2D图像网格变形,Euclid 则引入了3D建模(据说由于定位跟主流3D引擎重合度太大所以黄了)。renpy-live2d项目使用的是Cubism。
第二个问题:如何安装和配置 renpy-live2d ?
答:先给项目链接……
GitHub - asfdfdfd/renpy-live2d: Live2D module for RenPy
readme文件里有介绍如何使用。简单翻译一下:
- 先去下载 release 的压缩文件。当前最新版本是0.0.3(2019年5月17日提交),所以下载 renpy-live2d-v0.0.3.zip 文件。
- 然后把zip包中的内容(一个live2d目录)解压到自己项目的 game 目录下。
- 下载 Cubism的原生SDK并替换刚才解压的 live2d/CubismSDK/Core 同名目录下的内容。
我下载的是原生SDK版本是Cubism3SDKforNative-beta12。说是替换,其实原来的Core目录里除了一个空文件什么东西都没有……
安装说明后面,项目创建者写了一段使用样例。
[RenPy] 纯文本查看 复制代码 define h = Character("Hiyori")
init python:
from live2d.displayable import Live2DDisplayable
from renpy.loader import transfn
sprite_live2d = Live2DDisplayable()
init:
image sprite_live2d = sprite_live2d
label start:
show sprite_live2d
$ live2d_model_hiyori = sprite_live2d.scene.create_model(transfn(u'live2d_resources/Hiyori/'), u'Hiyori.model3.json')
$ live2d_model_hiyori.start_random_motion(group = u"Idle", priority = 3)
h "You've created a new Ren'Py game."
$ live2d_model_hiyori.start_motion(group = u"TapBody", no = 0, priority = 3)
h "Once you add a story, pictures, and music, you can release it to the world!"
return
我们可以新建一个空的工程,然后把样例代码复制进 script.rpy 中直接运行……当然是会报错的~因为我们的工程里没有对应的资源文件——Hiyori(日语好像是“日和”)。资源文件也在刚才下载的CubismSDK中,路径是 Cubism3SDKforNative-beta12\Samples\Res 。总共有4个角色,在 game 目录下建个 live2d_resources 子目录并把角色的资源都放进去。最后运行工程就能看到日和同学了(与样例不同,我把背景改成了白色)。
第三个问题:怎样指定角色的动作?
答:renpy-live2d项目的创建者提供在PyLAppModel类中定义了两个函数:
[RenPy] 纯文本查看 复制代码 cdef class PyLAppModel:
...
# TODO: Return CubismMotionQueueEntryHandle.
def start_motion(self, unicode group, no, priority):
self.thisptr.StartMotion(group.encode("UTF-8"), no, priority)
# TODO: Return CubismMotionQueueEntryHandle.
def start_random_motion(self, unicode group, priority):
self.thisptr.StartRandomMotion(group.encode("UTF-8"), priority)
设计的意图可能是用这俩函数指定角色动作的组(group)或某个组的动作编号。但貌似还没完成……现在角色默认所有动作循环播放……希望会有更新。
广告部分:有问题可以私信我。优先推荐“RenPy中文空间”论坛,技术讨论区一般都会有人解答。疑难解答 板块好像是相对最活跃的了。
“Ren'Py引擎从入门到放弃”系列教程
|