live2d_Ren'Py引擎从入门到放弃(支线6)——还在探索阶段的Live2D

a16f8142ec4679343281dc485c31e4dd.png

世上无难事,只要肯放弃。

支线系列是独立于基础之外的内容,会引用一些外部平台大佬的内容,感觉有困难的同学可以暂时不(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?

答:先给项目链接……

asfdfdfd/renpy-live2d​github.com
f60304ac388ee902dde4025efcd76053.png

readme文件里有介绍如何使用。简单翻译一下:

  1. 先去下载 release 的压缩文件。当前最新版本是0.0.3(2019年5月17日提交),所以下载 renpy-live2d-v0.0.3.zip 文件。
  2. 然后把zip包中的内容(一个live2d目录)解压到自己项目的 game 目录下。
  3. 下载Cubism的原生SDK并替换刚才解压的live2d/CubismSDK/Core同名目录下的内容。

我下载的是原生SDK版本是Cubism3SDKforNative-beta12。说是替换,其实原来的Core目录里除了一个空文件什么东西都没有……

安装说明后面,项目创建者写了一段使用样例。

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-beta12SamplesRes 。总共有4个角色,在 game 目录下建个 live2d_resources 子目录并把角色的资源都放进去。最后运行工程就能看到日和同学了(与样例不同,我把背景改成了白色)。

59451fe596a94acf84395dabc5369274.png

第三个问题:怎样指定角色的动作?

答:renpy-live2d项目的创建者提供在PyLAppModel类中定义了两个函数:

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中文空间”论坛,技术讨论区一般都会有人解答。疑难解答板块好像是相对最活跃的了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值