快速调用live2d.dll制作桌宠

看到标题有没一种“怎么又是快速”的感觉。但是事实上确实很快速,有人为你铺好路你点个鼠标当然快。
一.准备
先去下载开源项目 ytx1991/Azusa-Live2D
会得到一个DLL,live2d.dll。
IDE随便什么都行。

二.创建工程
我就以vs2012控制台程序为例。
显式调用dll。

几句搞定。运行一下就会看到桌宠了。

三.其他接口

参照上面的就能完成大部分功能了。

四。最后
我挖出这些接口只是为了学习,如果无意冒犯了原作者想隐藏的某些,可以说一下我马上删掉,毕竟原作者没给出DLL源码

快速搭建 DirectX 平台的 Live2D 开发环境

对于习惯各种开发的大牛可以绕道了,这种看一眼就能明白的东西为何要写出来?
官方就给的 SDK 就能用为何要搭?请看第二点
一方面为了备忘,另一方面给新手看,还有就是练习写文章的能力。

一. 准备

  1. Live2D 官方的 SDK
  2. DirectX 9 的 SDK
  3. 良好的 C++ 开发环境,顺手的 IDE。

二. 实现目的

能够在自己的工程中加入 Live2D。

三. 配置

以 Visual Studio 2012 配置为例:

  1. 将官方 SDK 附带的文件夹 includelibframework 以及 SampleApp1/src。复制到自己工程根目录。
  2. 修改解决方案属性:
    • 附加包含目录:$(DXSDK_DIR)Include;..\src;..\include;..\framework;%(AdditionalIncludeDirectories)
    • 附加库目录:..\lib;%(AdditionalLibraryDirectories)
    • 附加依赖项:live2d_directX_md.lib;%(AdditionalDependencies)
    • 预处理定义:WIN32;NDEBUG;_WINDOWS;_USRDLL;MAIN_EXPORTS;L2D_TARGET_D3D;%(PreprocessorDefinitions)
  3. 引入文件。

文件头,lib 库,定义宏,参照 SampleApp1 复制黏贴就行,不列举,cpp 同样对照引入就行。
配置就基本完成了,好简单的样子。为何我要如此废话。

四. 注意

发现把 SDK 引入 MFC 框架时候发现,莫名多了一个蓝色的窗体。这个窗体实际上是在引入的 live2d_directX_md.lib 中。形成的原因就因为 MFC 自身入口点封装很深。导致程序先进入引入的 live2d_directX_md.lib 里面的另一个入口点。解决方法就是拿连接器 lib.exe -EXTRACT,然后再把包含入口点的 live2d_directX.obj 删掉。重编就可以了。

还有就是官方 SDK 例子用 Debug 配置编译会出问题,不止我一个人碰到了。

还有就是 MT/MD 什么的要对应 lib,这些常识就不啰嗦了。

就以上这些,3 分钟就能完成,谈不上搭建(笑)

解析 model.json 实现自动处理点击事件

如果你阅读过 Android、iOS 或 Flash 版本的 SDK 中附带的 SampleApp1,你一定会发现,点击和滑动事件不但要写好 JSON,还要在 Define 和 Live2DManager 中添加判定和处理代码。
这绝对是件让人很厌烦的事情。
于是我简单的实现了一下解析 model.json 来自动处理点击和滑动事件。
源码是 Android 版本,如果你在使用其他版本 SDK 请自己翻译一下,很简单的。

以下请加在 LAppLive2DManager.javatapEvent(float x, float y) 里面。

至于 flickEvent,只要把以上代码中的 tap_ 修改成 flick_ 就可以了。