live2d-py 0.4.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- live2d_py-0.4.4.dist-info/METADATA +194 -0
- live2d_py-0.4.4.dist-info/RECORD +106 -0
- live2d_py-0.4.4.dist-info/WHEEL +5 -0
- live2d_py-0.4.4.dist-info/licenses/LICENSE +21 -0
- live2d_py-0.4.4.dist-info/top_level.txt +1 -0
- package/live2d/__init__.py +0 -0
- package/live2d/utils/__init__.py +0 -0
- package/live2d/utils/lipsync.py +78 -0
- package/live2d/utils/log.py +36 -0
- package/live2d/v2/__init__.py +46 -0
- package/live2d/v2/core/DEF.py +15 -0
- package/live2d/v2/core/__init__.py +9 -0
- package/live2d/v2/core/alive2d_model.py +171 -0
- package/live2d/v2/core/deformer/__init__.py +6 -0
- package/live2d/v2/core/deformer/deformer.py +80 -0
- package/live2d/v2/core/deformer/deformer_context.py +57 -0
- package/live2d/v2/core/deformer/roation_deformer.py +415 -0
- package/live2d/v2/core/deformer/rotation_context.py +17 -0
- package/live2d/v2/core/deformer/warp_context.py +12 -0
- package/live2d/v2/core/deformer/warp_deformer.py +315 -0
- package/live2d/v2/core/draw/__init__.py +3 -0
- package/live2d/v2/core/draw/idraw_context.py +25 -0
- package/live2d/v2/core/draw/idraw_data.py +118 -0
- package/live2d/v2/core/draw/mesh.py +186 -0
- package/live2d/v2/core/draw/mesh_context.py +14 -0
- package/live2d/v2/core/graphics/__init__.py +2 -0
- package/live2d/v2/core/graphics/clip_context.py +26 -0
- package/live2d/v2/core/graphics/clip_draw_context.py +9 -0
- package/live2d/v2/core/graphics/clip_matrix.py +45 -0
- package/live2d/v2/core/graphics/clip_rectf.py +25 -0
- package/live2d/v2/core/graphics/clipping_manager_opengl.py +276 -0
- package/live2d/v2/core/graphics/draw_param.py +81 -0
- package/live2d/v2/core/graphics/draw_param_opengl.py +419 -0
- package/live2d/v2/core/graphics/texture_info.py +10 -0
- package/live2d/v2/core/id/__init__.py +1 -0
- package/live2d/v2/core/id/id.py +33 -0
- package/live2d/v2/core/io/__init__.py +2 -0
- package/live2d/v2/core/io/binary_reader.py +194 -0
- package/live2d/v2/core/io/iserializable.py +13 -0
- package/live2d/v2/core/io/live2d_object_factory.py +36 -0
- package/live2d/v2/core/live2d.py +22 -0
- package/live2d/v2/core/live2d_gl_wrapper.py +266 -0
- package/live2d/v2/core/live2d_model_opengl.py +37 -0
- package/live2d/v2/core/model/__init__.py +4 -0
- package/live2d/v2/core/model/avatar.py +26 -0
- package/live2d/v2/core/model/model_impl.py +42 -0
- package/live2d/v2/core/model/part.py +66 -0
- package/live2d/v2/core/model/parts_context.py +30 -0
- package/live2d/v2/core/model_context.py +382 -0
- package/live2d/v2/core/motion/__init__.py +4 -0
- package/live2d/v2/core/motion/amotion.py +88 -0
- package/live2d/v2/core/motion/live2d_motion.py +226 -0
- package/live2d/v2/core/motion/motion.py +14 -0
- package/live2d/v2/core/motion/motion_queue_entry.py +24 -0
- package/live2d/v2/core/motion/motion_queue_manager.py +107 -0
- package/live2d/v2/core/param/__init__.py +4 -0
- package/live2d/v2/core/param/param_def_float.py +27 -0
- package/live2d/v2/core/param/param_def_set.py +14 -0
- package/live2d/v2/core/param/param_pivots.py +55 -0
- package/live2d/v2/core/param/pivot_manager.py +141 -0
- package/live2d/v2/core/physics/__init__.py +1 -0
- package/live2d/v2/core/physics/iphysics_param.py +12 -0
- package/live2d/v2/core/physics/physics_constants.py +6 -0
- package/live2d/v2/core/physics/physics_hair.py +136 -0
- package/live2d/v2/core/physics/physics_point.py +22 -0
- package/live2d/v2/core/physics/physics_src.py +23 -0
- package/live2d/v2/core/physics/physics_target.py +15 -0
- package/live2d/v2/core/type/__init__.py +1 -0
- package/live2d/v2/core/type/array.py +38 -0
- package/live2d/v2/core/util/__init__.py +7 -0
- package/live2d/v2/core/util/log/__init__.py +3 -0
- package/live2d/v2/core/util/log/__ut_log.py +50 -0
- package/live2d/v2/core/util/ut_interpolate.py +369 -0
- package/live2d/v2/core/util/ut_math.py +45 -0
- package/live2d/v2/core/util/ut_motion.py +13 -0
- package/live2d/v2/core/util/ut_string.py +46 -0
- package/live2d/v2/core/util/ut_system.py +47 -0
- package/live2d/v2/framework/Live2DFramework.py +15 -0
- package/live2d/v2/framework/__init__.py +4 -0
- package/live2d/v2/framework/matrix/__init__.py +2 -0
- package/live2d/v2/framework/matrix/l2d_matrix44.py +76 -0
- package/live2d/v2/framework/matrix/l2d_model_matrix.py +59 -0
- package/live2d/v2/framework/matrix/l2d_view_matrix.py +99 -0
- package/live2d/v2/framework/model/__init__.py +1 -0
- package/live2d/v2/framework/model/l2d_base_model.py +172 -0
- package/live2d/v2/framework/motion/__init__.py +5 -0
- package/live2d/v2/framework/motion/l2d_expression_motion.py +68 -0
- package/live2d/v2/framework/motion/l2d_expression_param.py +6 -0
- package/live2d/v2/framework/motion/l2d_eye_blink.py +82 -0
- package/live2d/v2/framework/motion/l2d_motion_manager.py +42 -0
- package/live2d/v2/framework/motion/l2d_target_point.py +67 -0
- package/live2d/v2/framework/physics/__init__.py +1 -0
- package/live2d/v2/framework/physics/l2d_physics.py +69 -0
- package/live2d/v2/framework/pose/__init__.py +1 -0
- package/live2d/v2/framework/pose/l2d_parts_param.py +15 -0
- package/live2d/v2/framework/pose/l2d_pose.py +132 -0
- package/live2d/v2/lapp_define.py +19 -0
- package/live2d/v2/lapp_model.py +387 -0
- package/live2d/v2/matrix_manager.py +73 -0
- package/live2d/v2/model_setting_json.py +165 -0
- package/live2d/v2/params.py +51 -0
- package/live2d/v2/platform_manager.py +39 -0
- package/live2d/v3/__init__.py +21 -0
- package/live2d/v3/live2d.pyi +279 -0
- package/live2d/v3/live2d.so +0 -0
- package/live2d/v3/params.py +55 -0
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: live2d-py
|
|
3
|
+
Version: 0.4.4
|
|
4
|
+
Summary: A non-web Live2D library for Python.
|
|
5
|
+
Home-page: https://github.com/Arkueid/live2d-py
|
|
6
|
+
Author: Arkueid
|
|
7
|
+
Author-email: Arkueid <thetardis@qq.com>
|
|
8
|
+
License: LICENSE
|
|
9
|
+
Project-URL: Homepage, https://github.com/Arkueid/live2d-py
|
|
10
|
+
Project-URL: Documentation, https://Arkueid.github.io/live2d-py-docs/
|
|
11
|
+
Project-URL: Repository, https://github.com/Arkueid/live2d-py
|
|
12
|
+
Keywords: Live2D,Cubism Live2D,Cubism SDK,Cubism SDK for Python
|
|
13
|
+
Requires-Python: >=3.2
|
|
14
|
+
Description-Content-Type: text/markdown
|
|
15
|
+
License-File: LICENSE
|
|
16
|
+
Requires-Dist: pyopengl
|
|
17
|
+
Requires-Dist: pillow
|
|
18
|
+
Requires-Dist: numpy
|
|
19
|
+
Dynamic: author
|
|
20
|
+
Dynamic: home-page
|
|
21
|
+
Dynamic: license
|
|
22
|
+
Dynamic: license-file
|
|
23
|
+
Dynamic: requires-python
|
|
24
|
+
|
|
25
|
+
<div align="center" style="padding-top: 10px">
|
|
26
|
+
<img src="./docs/koe.svg" alt="koe" width="50px" height="50px">
|
|
27
|
+
<img src="./docs/logo.svg" alt="live2d-py" height="80px">
|
|
28
|
+
</div>
|
|
29
|
+
|
|
30
|
+
<p align="center" style="font-family: 'Roboto', sans-serif; font-size: 1em; color: #555;">
|
|
31
|
+
<img title="Windows Distro" src="https://github.com/Arkueid/live2d-py/actions/workflows/build-windows.yml/badge.svg">
|
|
32
|
+
<img title="MacOS Distro" src="https://github.com/Arkueid/live2d-py/actions/workflows/build-macos.yml/badge.svg">
|
|
33
|
+
<img title="Linux Distro" src="https://github.com/Arkueid/live2d-py/actions/workflows/build-linux.yml/badge.svg">
|
|
34
|
+
<br>
|
|
35
|
+
<img title="Release Version" src="https://img.shields.io/github/v/release/Arkueid/live2d-py" alt="Docker Build Version" style="margin: 0 10px;">
|
|
36
|
+
<img title="Python Version" src="https://img.shields.io/badge/python-3.8+-blue" alt="Python Version" style="margin: 0 10px;">
|
|
37
|
+
<img title="CMake" src="https://img.shields.io/badge/CMake-3.26+-orange" alt="CMake" style="margin: 0 10px;">
|
|
38
|
+
<img title="C++" src="https://img.shields.io/badge/C%2B%2B-17-yellow" alt="C++17" style="margin: 0 10px;">
|
|
39
|
+
<img title="CsmSDK" src="https://img.shields.io/badge/CsmSDK-5_r3-orange" alt="CsmSDK" style="margin: 0 10px;">
|
|
40
|
+
<br>
|
|
41
|
+
<a href="./README.en.md">English README</a>
|
|
42
|
+
</p>
|
|
43
|
+
|
|
44
|
+
使用 Python 直接加载和操作 Live2D 模型,不通过 Web Engine 等间接手段进行渲染。
|
|
45
|
+
|
|
46
|
+
基于 Python C++ API 对 Live2D Native SDK (C++) 进行了封装。理论上,只要配置好 OpenGL 上下文,可在 Python 中将 live2d 绘制在任何基于 OpenGL 的窗口。
|
|
47
|
+
|
|
48
|
+
代码使用示例:[package](./package/)
|
|
49
|
+
|
|
50
|
+
详细使用文档:[Wiki](https://github.com/Arkueid/live2d-py/wiki)
|
|
51
|
+
|
|
52
|
+
修改和开发:[CONTRIBUTING](./CONTRIBUTING.md)
|
|
53
|
+
|
|
54
|
+
## 兼容UI库
|
|
55
|
+
|
|
56
|
+
理论上兼容所有能使用 OpenGL 进行绘制的UI库: Pygame / PyQt5 / PySide2 / PySide6 / GLFW / pyopengltk/ FreeGlut / Qfluentwidgets ...
|
|
57
|
+
|
|
58
|
+
## 支持功能
|
|
59
|
+
|
|
60
|
+
* 加载模型:**Cubism 2.1** 和 **Cubism 3.0** 及以上版本
|
|
61
|
+
* 视线跟踪
|
|
62
|
+
* 点击交互
|
|
63
|
+
* 动作播放回调
|
|
64
|
+
* 口型同步
|
|
65
|
+
* 模型各部分参数控制
|
|
66
|
+
* 各部件透明度控制
|
|
67
|
+
* 精确到部件的点击检测
|
|
68
|
+
|
|
69
|
+
## 兼容性
|
|
70
|
+
|
|
71
|
+
### Python 版本
|
|
72
|
+
Python 版本支持:从 live2d-py 0.3.2 开始使用 Python C Limited API,理论上兼容 Python 3.2 以上的所有版本。
|
|
73
|
+
|
|
74
|
+
### Cubism Live2D 版本
|
|
75
|
+
|
|
76
|
+
| `live2d-py` | 支持的live2d模型 | 实现 |
|
|
77
|
+
|-------------|--------------------|-----------------------|
|
|
78
|
+
| `live2d.v2` | Cubism 2.1 以及更早的版本 | 纯 Python 实现 | 支持 `32` / `64` 位,支持`Python 3.0` 及以上版本 | Winodws、Linux、MacOS(理论上) | |
|
|
79
|
+
| `live2d.v3` | Cubism 3.0 及以上版本 | Python C Extension 封装 | 支持 `32` / `64` 位,支持`Python 3.2` 及以上版本 | Windows、Linux |
|
|
80
|
+
|
|
81
|
+
### Python 版本及平台
|
|
82
|
+
|
|
83
|
+
:white_check_mark:: 可用, 支持, 已通过
|
|
84
|
+
|
|
85
|
+
:question:: 尚未测试
|
|
86
|
+
|
|
87
|
+
:construction:, :x:: 编译期问题或平台兼容性问题待解决
|
|
88
|
+
|
|
89
|
+
|Platform|Python Version| `live2d.v2` | `live2d.v3` |构建状态|PyPI|
|
|
90
|
+
|--------|--------------|-------------|-------------|------|----------|
|
|
91
|
+
|MacOS arm64| `>3.0, <=3.10`|:white_check_mark:|:question:|:construction:|:x:|
|
|
92
|
+
|MacOS arm64| `>=3.11` |:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|
|
|
93
|
+
|Windows x86/x64|`>3.0, <3.8`|:white_check_mark:|:question:|:construction:|:x:|
|
|
94
|
+
|Windows x86/x64|`>=3.8`|:white_check_mark:|:white_check_mark:|:white_check_mark:|:white_check_mark:|
|
|
95
|
+
|Ubuntu 20.04/Arch, x64|`>3.0, <3.8`|:white_check_mark:|:question:|:construction:|:x:|
|
|
96
|
+
|Ubuntu 20.04/Arch, x64|`>=3.8`|:white_check_mark:|:white_check_mark:|:white_check_mark:|:x:|
|
|
97
|
+
|
|
98
|
+
注:
|
|
99
|
+
|
|
100
|
+
* `live2d.v2` 由 Cubism Web SDK 转写为纯 Python,尚未使用 numpy 等优化的库,性能有待提升
|
|
101
|
+
* Cubism 2.X 导出的模型:文件名格式常为 `XXX.moc`,`XXX.model.json`,`XXX.mtn`
|
|
102
|
+
* Cubism 3.0 及以上导出的模型:文件名格式常为 `XXX.moc3`,`XXX.model3.json`, `XXX.motion3.json`
|
|
103
|
+
|
|
104
|
+
## 使用说明
|
|
105
|
+
|
|
106
|
+
1. 将仓库中的 package/live2d 直接作为 Python 模块集成到你的项目中即可。
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
2. 在 [Release](https://github.com/Arkueid/live2d-py/releases/latest) 中下载对应版本的 `whl` 文件并安装(推荐)
|
|
110
|
+
|
|
111
|
+
```shell
|
|
112
|
+
pip install live2d_py-0.X.X-cpXXX-cpXXX-win32.whl
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
3. 通过 [PyPI](https://pypi.org/project/live2d-py/) 安装
|
|
116
|
+
|
|
117
|
+
```shell
|
|
118
|
+
pip install live2d-py
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
4. 从源码构建,参考 [安装#源码构建](https://github.com/Arkueid/live2d-py/wiki/%E5%AE%89%E8%A3%85#%E6%BA%90%E7%A0%81%E6%9E%84%E5%BB%BA)
|
|
122
|
+
|
|
123
|
+
## 示例
|
|
124
|
+
|
|
125
|
+
### 简易面捕
|
|
126
|
+
|
|
127
|
+
源码见 [main_facial_bind_mediapipe.py](./package/main_facial_bind.py)
|
|
128
|
+
|
|
129
|
+

|
|
130
|
+
|
|
131
|
+
### 多模型加载
|
|
132
|
+
|
|
133
|
+
源码见 [main_pygame_three_model.py](./package/main_pygame_three_model.py)
|
|
134
|
+
|
|
135
|
+

|
|
136
|
+
|
|
137
|
+
### 添加背景
|
|
138
|
+
|
|
139
|
+
源码见 [main_pygame_background.py](./package/main_pygame_background.py)
|
|
140
|
+
|
|
141
|
+

|
|
142
|
+
|
|
143
|
+
### 模型变换 & 口型同步音频 & 点击测试
|
|
144
|
+
|
|
145
|
+
源码见 [main_pygame.py](./package/main_pygame.py)
|
|
146
|
+
|
|
147
|
+

|
|
148
|
+
|
|
149
|
+
### 模型整体透明度示例
|
|
150
|
+
|
|
151
|
+
源码见 [main_pyqt5_canvas_opacity.py](./package/main_pyqt5_canvas_opacity.py)
|
|
152
|
+
|
|
153
|
+

|
|
154
|
+
|
|
155
|
+
## 鸣谢
|
|
156
|
+
|
|
157
|
+
特别感谢 [96bearli],[Ovizro], [AnyaCoder], [jahtim], [Honghe], [RobertMeow], [LUORANCHENG], [TinyKiecoo] 为本项目提供的帮助和支持。
|
|
158
|
+
|
|
159
|
+
[96bearli]: https://github.com/96bearli
|
|
160
|
+
|
|
161
|
+
[Ovizro]: https://github.com/Ovizro
|
|
162
|
+
|
|
163
|
+
[AnyaCoder]: https://github.com/AnyaCoder
|
|
164
|
+
|
|
165
|
+
[jahtim]: https://github.com/jahtim
|
|
166
|
+
|
|
167
|
+
[Honghe]: https://github.com/Honghe
|
|
168
|
+
|
|
169
|
+
[RobertMeow]: https://github.com/RobertMeow
|
|
170
|
+
|
|
171
|
+
[LUORANCHENG]: https://github.com/LUORANCHENG
|
|
172
|
+
|
|
173
|
+
[TinyKiecoo]: https://github.com/TinyKiecoo
|
|
174
|
+
|
|
175
|
+
非常感谢以下项目及其贡献者们的帮助:
|
|
176
|
+
|
|
177
|
+
[CubismNativeSamples](https://github.com/Live2D/CubismNativeSamples) (`live2d.v3`)
|
|
178
|
+
|
|
179
|
+
[Cubism2 Web SDK](https://github.com/dylanNew/live2d) (`live2d.v2`)
|
|
180
|
+
|
|
181
|
+
[de4js](https://github.com/lelinhtinh/de4js)(`JavaScript` 反混淆工具)
|
|
182
|
+
|
|
183
|
+
[JsConvert](https://github.com/JonBoynton/JSConvert) (`Javascript` 转 `Python` 工具)
|
|
184
|
+
|
|
185
|
+
[D2Evil](https://github.com/UlyssesWu/D2Evil) (`moc` 文件分析)
|
|
186
|
+
|
|
187
|
+
[facial-landmarks-for-cubism](https://github.com/adrianiainlam/facial-landmarks-for-cubism) (面捕参考)
|
|
188
|
+
|
|
189
|
+
Live2D 模型:
|
|
190
|
+
|
|
191
|
+
* [Cubism 官方样例数据](https://www.live2d.com/en/learn/sample/)
|
|
192
|
+
* [雅萌工作室](https://yameng.remoon.cn/studio/live2d-f/1)
|
|
193
|
+
* [live2d-models](https://github.com/Eikanya/Live2d-model)
|
|
194
|
+
* [【虚拟主播模型】 宁宁vup化!](https://www.bilibili.com/video/BV1s7411d7y9)
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
live2d_py-0.4.4.dist-info/licenses/LICENSE,sha256=fOLopjQpo-dFewuZO3onAtauAKu0ExQiVOIsP3OdqDE,1085
|
|
2
|
+
package/live2d/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
+
package/live2d/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
+
package/live2d/utils/lipsync.py,sha256=I3JM5GZEIEw7Tarr3EXlHV8HBgt2uD1nYhfVxw1OqbI,2431
|
|
5
|
+
package/live2d/utils/log.py,sha256=eCwO6Q0B302QvTkZqI0ARbIA0VQRNrFX9PmL6kGbZWU,580
|
|
6
|
+
package/live2d/v2/__init__.py,sha256=K4sEInugyYeknuOyLdXPWD1TkSFhyAUZx8eWBEOGYbU,1002
|
|
7
|
+
package/live2d/v2/lapp_define.py,sha256=hL_AqpEk89mNTD6_cwtKTxv-PlAYQW-j7ZlzLM-mErM,321
|
|
8
|
+
package/live2d/v2/lapp_model.py,sha256=PJkMZ2l1p_08OjOo4dxUJvUmWYL2O6dIqal0rT1sH74,15887
|
|
9
|
+
package/live2d/v2/matrix_manager.py,sha256=TB7gLjYY05mPEfRooRth5YgclQ0975UL0ZaX-6WIrJA,2309
|
|
10
|
+
package/live2d/v2/model_setting_json.py,sha256=l6ZG5ApFYMsAhOc5FUtsHdsXEexWoB_8Gj292wbzas8,6073
|
|
11
|
+
package/live2d/v2/params.py,sha256=nxokCwNgcfC1NaHH5XX4BKo1M-4fZ0aRyoGqu4HCdwU,1830
|
|
12
|
+
package/live2d/v2/platform_manager.py,sha256=x1WZOD1KOKO5Ljp0gy07A2TZ07mkVktRgbQhFlo8jcA,1361
|
|
13
|
+
package/live2d/v2/core/DEF.py,sha256=B9ri6-CcwlPZrZp2goN2k3Z1DwMLpvvA96EwCDpE6Jc,509
|
|
14
|
+
package/live2d/v2/core/__init__.py,sha256=XZIW2p5BJjKeJLn-OhYGZHlR-Pgi0aYB41WUelbXDCw,344
|
|
15
|
+
package/live2d/v2/core/alive2d_model.py,sha256=R1FuE61ubCr6Uur9BAaeeS_9bc9VVvLMsaQEMBAb9wc,5382
|
|
16
|
+
package/live2d/v2/core/live2d.py,sha256=6_YJcZK3PhHuHQheSSIn_Wp-sLX83xJNVt_PIrAoXU8,544
|
|
17
|
+
package/live2d/v2/core/live2d_gl_wrapper.py,sha256=4JQTZq3fi8ZWYUWbjRkZ9dPNmaXKTqnXxsz2V5e8hkI,6742
|
|
18
|
+
package/live2d/v2/core/live2d_model_opengl.py,sha256=-WM95ehbk-Kb2mh1UaweyqttBGbpkWInKetW_ZhBGaI,970
|
|
19
|
+
package/live2d/v2/core/model_context.py,sha256=0F-cHh3dyz9jJxX-irnqCb6LXbsJKwCJwNaDlSo5GNs,12886
|
|
20
|
+
package/live2d/v2/core/deformer/__init__.py,sha256=FxhEKEY0wruCBkrRYTabFPkrJneS9QJLWMKsJ959tVQ,268
|
|
21
|
+
package/live2d/v2/core/deformer/deformer.py,sha256=YYYznYVjpy3MBfEVhcIOAvmktkT17Tek9hTcvfM_tAo,2415
|
|
22
|
+
package/live2d/v2/core/deformer/deformer_context.py,sha256=vLQl_GYEwOkMo0d2wX6Mo6oelck87G-VBgTl1CShxhA,1410
|
|
23
|
+
package/live2d/v2/core/deformer/roation_deformer.py,sha256=1xPm-9P3ab3FIBmGex36yjA2PjVhXw4TOWt6ZWUAVkQ,21598
|
|
24
|
+
package/live2d/v2/core/deformer/rotation_context.py,sha256=UV4TC_7A68nvuLOJGrqZP1Qcnrbykfkj1jqkL1XNBnE,475
|
|
25
|
+
package/live2d/v2/core/deformer/warp_context.py,sha256=ax4JCg_5TzsXF3gUS3_dthM6qzD1YvEyo7ojJk0hVvs,333
|
|
26
|
+
package/live2d/v2/core/deformer/warp_deformer.py,sha256=_3UsswKgslJ_pAfXqx9u93Iunjjgy6dCQlBIaFk-y2Q,16436
|
|
27
|
+
package/live2d/v2/core/draw/__init__.py,sha256=uSCsfBfGSok5Zz9XI89AP414Q45nfWSI95e2Gg1Jrfg,101
|
|
28
|
+
package/live2d/v2/core/draw/idraw_context.py,sha256=Gf0e_mAHFs7fGhlbM5l3SX-RhiLK8Yiwa60YdhW5k6s,704
|
|
29
|
+
package/live2d/v2/core/draw/idraw_data.py,sha256=UIjq2s70sbp-PH2KJgdGbrL6MXIt_gGBSsGfke7-E2Q,3359
|
|
30
|
+
package/live2d/v2/core/draw/mesh.py,sha256=DaoO8epxbA2zh1IS4IqziYaNvTIe5RE8a8suwbokiW0,6703
|
|
31
|
+
package/live2d/v2/core/draw/mesh_context.py,sha256=q98Dw6lfM9rZBxQHCD8zqhPzTXfmGWqBMByUE8_ZwzM,471
|
|
32
|
+
package/live2d/v2/core/graphics/__init__.py,sha256=VNLI94sRC1JxOCUbHDFcy3sMfift3JOR25f7D5MOxwY,109
|
|
33
|
+
package/live2d/v2/core/graphics/clip_context.py,sha256=b6F2U08vW7Xe9CiJQHTA_wIRgb1I9CGFMyXcbiU143U,875
|
|
34
|
+
package/live2d/v2/core/graphics/clip_draw_context.py,sha256=jwqhjuUcN7NUaNb_ydqLoo5TU9GjpOgrMkNphzdg9O4,216
|
|
35
|
+
package/live2d/v2/core/graphics/clip_matrix.py,sha256=hN3QVHAmY3Mqv8a-4xqJuPougzrc9nXZCiwAEN6KD6U,1267
|
|
36
|
+
package/live2d/v2/core/graphics/clip_rectf.py,sha256=ZDUHLLQN7tteLSAjOVGwJZNnEnyErZ6lmQAkewDFwJk,570
|
|
37
|
+
package/live2d/v2/core/graphics/clipping_manager_opengl.py,sha256=hT0vgR8M5PfT10nK9eBbAvG0IucPsXgtEeMTbVHEy50,9891
|
|
38
|
+
package/live2d/v2/core/graphics/draw_param.py,sha256=_ShwxhWn-t1OgFoLlHYyKMb8IzpjxwfHW21Euv2OHjg,2313
|
|
39
|
+
package/live2d/v2/core/graphics/draw_param_opengl.py,sha256=Bn8d2wx0JZT09fTdU6QkoOHtUk98oyEqGzQujB3CTOs,18622
|
|
40
|
+
package/live2d/v2/core/graphics/texture_info.py,sha256=yZXd-_GrWc29MghOEkrd7oQyYOiQCPBICm_fDc288yg,263
|
|
41
|
+
package/live2d/v2/core/id/__init__.py,sha256=I1N2Ej8xz5NLiJnqZLhbuA2iaRVeNXg1_yGz-24RahM,23
|
|
42
|
+
package/live2d/v2/core/id/id.py,sha256=9DKtsnQUAL57jNwXttINfKKR8dD0ld6L9f5Ll9VhE88,876
|
|
43
|
+
package/live2d/v2/core/io/__init__.py,sha256=76shswBke4pGUZyGD0_gYcp6eXpfc7_Jilwo1RHpLJ0,86
|
|
44
|
+
package/live2d/v2/core/io/binary_reader.py,sha256=_QXGeCXA0qZrlnHYFEFpDd1btdoDYihFZvzzqoDJ5Uw,5381
|
|
45
|
+
package/live2d/v2/core/io/iserializable.py,sha256=cz8f6e8Jb1AHBZfKgIUKmMnQ0RBGI-ylwwoniNdkMO0,251
|
|
46
|
+
package/live2d/v2/core/io/live2d_object_factory.py,sha256=Ep0gi5U_mZxl8YV59EiRbPTRUhY5bPxDJI72nFgozbg,1164
|
|
47
|
+
package/live2d/v2/core/model/__init__.py,sha256=qlZEy025HwZTev3ldSFSKss9d9rFcbMAKAZWqIzUWJw,138
|
|
48
|
+
package/live2d/v2/core/model/avatar.py,sha256=c-41gHUr551XQH3WxIz8h_v8drc0KfyRfzMHJSxzCFU,692
|
|
49
|
+
package/live2d/v2/core/model/model_impl.py,sha256=l2Y1Mbst_yQRoVByg3dcLC613pELaTBluGDZrSaN-Lw,1144
|
|
50
|
+
package/live2d/v2/core/model/part.py,sha256=vbFyhlSdvvLIexTPUyKbzEjk8Y0fbpkCrq3s_kvO8og,1553
|
|
51
|
+
package/live2d/v2/core/model/parts_context.py,sha256=NsnIK84QF319iF6ooCq-k8APTzYSNrb7u92jObjPjh4,893
|
|
52
|
+
package/live2d/v2/core/motion/__init__.py,sha256=Q2TNkm-er-2MWxZMo3bnVYyUlShZAqmyNRsiDrrwktI,176
|
|
53
|
+
package/live2d/v2/core/motion/amotion.py,sha256=xBZCUEkTQO5I86zvzJWzFS9PxJy-_k9yjVppbLdYBiQ,2460
|
|
54
|
+
package/live2d/v2/core/motion/live2d_motion.py,sha256=X9LhJTZAaQ0BSev2qNqZvN1rwpKnBGMuYhgSCme1Geo,8119
|
|
55
|
+
package/live2d/v2/core/motion/motion.py,sha256=hk32adPOw4WikqBjC6VESMnHr__Rc0XNeSLY3nEmQsQ,414
|
|
56
|
+
package/live2d/v2/core/motion/motion_queue_entry.py,sha256=YE8WBioO7JNilqYBfdua5mL-H9tpxplMytdewCCf_Oo,694
|
|
57
|
+
package/live2d/v2/core/motion/motion_queue_manager.py,sha256=y-H1YLJT84P_hOUdY6-n8cIcesKAe-kV3D1g2k807_k,2743
|
|
58
|
+
package/live2d/v2/core/param/__init__.py,sha256=O4SukihqaUIIllRcuO42gdGNH4_PyyH2jMtf2yzvmlw,165
|
|
59
|
+
package/live2d/v2/core/param/param_def_float.py,sha256=o23D9i3jyAPf3YXbPT9ajtM61UI1aGJWqNgTRokuNiM,708
|
|
60
|
+
package/live2d/v2/core/param/param_def_set.py,sha256=G4QfLqnyN2q6NqX7rRu32giLBwfNAHG3okXayNMk_N0,320
|
|
61
|
+
package/live2d/v2/core/param/param_pivots.py,sha256=IwH3UUCpcYobm-N_F-o6phEOjux2vJGDENjKZ5cZpXI,1480
|
|
62
|
+
package/live2d/v2/core/param/pivot_manager.py,sha256=0sNjY2JkEHatArLhFTTFuEclxh7aLkUkJtPxpn7pKi8,4559
|
|
63
|
+
package/live2d/v2/core/physics/__init__.py,sha256=zgTlhoRY-9M2PQhI6w5Cjsv0M6Ap98iMk5UiV__snt8,40
|
|
64
|
+
package/live2d/v2/core/physics/iphysics_param.py,sha256=0jFZDfvDhhtUnQF5wjyEVTmv62UvIE_gvHrNbGyPG6o,278
|
|
65
|
+
package/live2d/v2/core/physics/physics_constants.py,sha256=1Ph-kVyglQoSx-p3a0_n0XXrQnDWv8BQyy8BV4cRjhI,170
|
|
66
|
+
package/live2d/v2/core/physics/physics_hair.py,sha256=Dk7LXIa2Bnz1Q1C5pxENxaAzXAQ8Y17cU656BJnc10A,4183
|
|
67
|
+
package/live2d/v2/core/physics/physics_point.py,sha256=7S93YsUeX_8oI3yZbNYTlhwfUA_-0eH1EMkoulbYAMU,486
|
|
68
|
+
package/live2d/v2/core/physics/physics_src.py,sha256=jsgF5Fz7Y8BUAUnidYs1w6G_fsh0Loppqf2SugmtQq4,749
|
|
69
|
+
package/live2d/v2/core/physics/physics_target.py,sha256=ZIK9I7Vd2nGq2QcneFof5mE-xIv0jBi5fZL9NhEMTm0,569
|
|
70
|
+
package/live2d/v2/core/type/__init__.py,sha256=LGOjJUyLx-v858gP522JcT3y0ayVh8TczXEeTviJ6PU,92
|
|
71
|
+
package/live2d/v2/core/type/array.py,sha256=w9Tyk7UQ6dTdjRUOiO_1iTOMZ7kUNhOFhk9xiigPTnI,831
|
|
72
|
+
package/live2d/v2/core/util/__init__.py,sha256=ddQso6DXazLiwuekoCBU0W-mp_z74mbkDN8Cl38DFdA,247
|
|
73
|
+
package/live2d/v2/core/util/ut_interpolate.py,sha256=6TMuI9L0lAOjLTthjq_23zg8TJwJDw3kWbOB-WdcoBE,13550
|
|
74
|
+
package/live2d/v2/core/util/ut_math.py,sha256=D0lAtBW5rb7_URRDMX9sRb8CeFwVHdVMMvm3l1kJe-M,2138
|
|
75
|
+
package/live2d/v2/core/util/ut_motion.py,sha256=0ldWNldtb7quCdP5ipcat571g6rqmY64duRnU28FWAA,242
|
|
76
|
+
package/live2d/v2/core/util/ut_string.py,sha256=rEZ7U1B8SSB9ZLRlQURHDbLU15oftC2-8PMDq_IrYbA,1253
|
|
77
|
+
package/live2d/v2/core/util/ut_system.py,sha256=ru-Lp1JqD7V5VCvTlwwMvLePIIrlFVtqfSccXkLBV80,1155
|
|
78
|
+
package/live2d/v2/core/util/log/__init__.py,sha256=2RNi5XsV9ymzZUOixG5_csHTWMy06MAD3uaftuo74KQ,139
|
|
79
|
+
package/live2d/v2/core/util/log/__ut_log.py,sha256=f78Zas_9f9RHtEceLBj3Or2rZBsN_uQw7tordXKn8h8,846
|
|
80
|
+
package/live2d/v2/framework/Live2DFramework.py,sha256=tJUWA2yHQLgI9_QWRpT8Twl0guwvviut2R9jHM7HW3I,500
|
|
81
|
+
package/live2d/v2/framework/__init__.py,sha256=9eYWkcco44E8UbDlwYzTj8Qrayc8ZJR4HZ3P0MJal20,159
|
|
82
|
+
package/live2d/v2/framework/matrix/__init__.py,sha256=N-cv9h-X-DCOeogU6A_J3boT907HuZE8pycpIytN43I,83
|
|
83
|
+
package/live2d/v2/framework/matrix/l2d_matrix44.py,sha256=omoUT0v2cr5bdu3RW3i22UglLEF644yQgi0AtVMtzUw,1976
|
|
84
|
+
package/live2d/v2/framework/matrix/l2d_model_matrix.py,sha256=y2uM-l82wnfBRmIGbjlL2fJCrmAVe9yMZtOZQfI_DBM,1409
|
|
85
|
+
package/live2d/v2/framework/matrix/l2d_view_matrix.py,sha256=g65qZWccQHohJhEhkxkI6Zi6G9BKOUONtBasSDAErn0,3204
|
|
86
|
+
package/live2d/v2/framework/model/__init__.py,sha256=-41Rcwefw9cxLRZZAx9GPEyhBjZA-japP8k3_PnBPrQ,42
|
|
87
|
+
package/live2d/v2/framework/model/l2d_base_model.py,sha256=novDOSyjKhP5PSQPlRDgivugKnDF5hZNeCir_f9D0Yk,5069
|
|
88
|
+
package/live2d/v2/framework/motion/__init__.py,sha256=VK0Epx1uVDpJhwMylXscp37qw0dWm5uOZpmQZ33fkwI,244
|
|
89
|
+
package/live2d/v2/framework/motion/l2d_expression_motion.py,sha256=Z7mS9QmzJRvV4_ZqmGY9gouszFXRdoHZVO3wIEyjRn8,2652
|
|
90
|
+
package/live2d/v2/framework/motion/l2d_expression_param.py,sha256=v7VgLkviIfOnQziQ42qd1PgrLH7W_MhNowrz8H0DOzM,130
|
|
91
|
+
package/live2d/v2/framework/motion/l2d_eye_blink.py,sha256=JWq4PotYDmSbALXsBM58bFm4yUo1UNEab5IkZfG4zo8,2890
|
|
92
|
+
package/live2d/v2/framework/motion/l2d_motion_manager.py,sha256=DXROijKN8r5lbW7uJLrWCNHs2M_voUPhLImvFQPlAng,1098
|
|
93
|
+
package/live2d/v2/framework/motion/l2d_target_point.py,sha256=RxfYTyZdCNH5VUfG5lhrpZKlFqKbkp8wUMw28gBLl4s,2007
|
|
94
|
+
package/live2d/v2/framework/physics/__init__.py,sha256=7Ptq9R6JvXOoEfF-8auNPZ04fAfHi4gcLfjcWtV5hSM,35
|
|
95
|
+
package/live2d/v2/framework/physics/l2d_physics.py,sha256=3oidY3BGJepsKAbuRi8sajVuYXPJj--3MOejL3ztmQ0,2561
|
|
96
|
+
package/live2d/v2/framework/pose/__init__.py,sha256=rR3-hv5oxIZ1soG0d6_jowjLOriQn-353GX-EjHTc1s,46
|
|
97
|
+
package/live2d/v2/framework/pose/l2d_parts_param.py,sha256=KGFIZHaPjhmBREdssZM42Eg3-P1ZYjfxYGo4_uFeLxs,419
|
|
98
|
+
package/live2d/v2/framework/pose/l2d_pose.py,sha256=SzxLB4jsD1DkyHpdH94vUMhG69dJfpaTLbEGZAU5sBo,5110
|
|
99
|
+
package/live2d/v3/__init__.py,sha256=_nD3eDONty-XJoKQnfuIucjmqlus-k_Y8KgI0OZtqh0,325
|
|
100
|
+
package/live2d/v3/live2d.pyi,sha256=pscepC72H5Jw5l6N0_I0rLIVx4OLojSuXUaRaSMBYbQ,7681
|
|
101
|
+
package/live2d/v3/live2d.so,sha256=hpl_YKeAmqRr6X0mRV6bux2zXfvP10fBIdUhvIt8C6A,646552
|
|
102
|
+
package/live2d/v3/params.py,sha256=PjpDehrci1t7UA_MVrD-Pw7fhO7iypbaNOZQXFZ-uik,1844
|
|
103
|
+
live2d_py-0.4.4.dist-info/METADATA,sha256=luRu32-zXBec2QT9oh0dJqCKzYosC6ALQ8MIsac6qr4,7491
|
|
104
|
+
live2d_py-0.4.4.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
|
105
|
+
live2d_py-0.4.4.dist-info/top_level.txt,sha256=TpQW7893uEAT8mPh-QCMZWhhKYvlqryC9Fjm5Hxg2f8,8
|
|
106
|
+
live2d_py-0.4.4.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Arkueid
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
package
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import wave
|
|
2
|
+
import numpy as np
|
|
3
|
+
import time
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class WavHandler:
|
|
7
|
+
def __init__(self):
|
|
8
|
+
# 每个通道的采样帧数
|
|
9
|
+
self.numFrames: int = 0
|
|
10
|
+
# 采样率,帧/秒
|
|
11
|
+
self.sampleRate: int = 0
|
|
12
|
+
self.sampleWidth: int = 0
|
|
13
|
+
# 通道数
|
|
14
|
+
self.numChannels: int = 0
|
|
15
|
+
# 数据
|
|
16
|
+
self.pcmData: np.ndarray = None
|
|
17
|
+
# 已经读取的帧数
|
|
18
|
+
self.lastOffset: int = 0
|
|
19
|
+
# 当前rms值
|
|
20
|
+
self.currentRms: float = 0
|
|
21
|
+
# 开始读取的时间
|
|
22
|
+
self.startTime: float = -1
|
|
23
|
+
|
|
24
|
+
def Start(self, filePath: str) -> None:
|
|
25
|
+
self.ReleasePcmData()
|
|
26
|
+
try:
|
|
27
|
+
with wave.open(filePath, "r") as wav:
|
|
28
|
+
self.numFrames = wav.getnframes()
|
|
29
|
+
self.sampleRate = wav.getframerate()
|
|
30
|
+
self.sampleWidth = wav.getsampwidth()
|
|
31
|
+
self.numChannels = wav.getnchannels()
|
|
32
|
+
# 双声道 / 单声道
|
|
33
|
+
self.pcmData = np.frombuffer(wav.readframes(self.numFrames), dtype=np.int16)
|
|
34
|
+
# 标准化
|
|
35
|
+
self.pcmData = self.pcmData / np.max(np.abs(self.pcmData))
|
|
36
|
+
# 拆分通道
|
|
37
|
+
self.pcmData = self.pcmData.reshape(-1, self.numChannels).T
|
|
38
|
+
|
|
39
|
+
self.startTime = time.time()
|
|
40
|
+
self.lastOffset = 0
|
|
41
|
+
|
|
42
|
+
except Exception as e:
|
|
43
|
+
self.ReleasePcmData()
|
|
44
|
+
|
|
45
|
+
def ReleasePcmData(self):
|
|
46
|
+
if self.pcmData is not None:
|
|
47
|
+
del self.pcmData
|
|
48
|
+
self.pcmData = None
|
|
49
|
+
|
|
50
|
+
def GetRms(self) -> float:
|
|
51
|
+
"""
|
|
52
|
+
获取当前音频响度
|
|
53
|
+
"""
|
|
54
|
+
return self.currentRms
|
|
55
|
+
|
|
56
|
+
def Update(self) -> bool:
|
|
57
|
+
"""
|
|
58
|
+
更新位置
|
|
59
|
+
"""
|
|
60
|
+
# 数据未加载或者数据已经读取完毕
|
|
61
|
+
if self.pcmData is None or self.lastOffset >= self.numFrames:
|
|
62
|
+
return False
|
|
63
|
+
|
|
64
|
+
currentTime = time.time() - self.startTime
|
|
65
|
+
currentOffset = int(currentTime * self.sampleRate)
|
|
66
|
+
|
|
67
|
+
# 时间太短
|
|
68
|
+
if currentOffset == self.lastOffset:
|
|
69
|
+
return True
|
|
70
|
+
|
|
71
|
+
currentOffset = min(currentOffset, self.numFrames)
|
|
72
|
+
|
|
73
|
+
dataFragment = self.pcmData[:, self.lastOffset:currentOffset].astype(np.float32)
|
|
74
|
+
|
|
75
|
+
self.currentRms = np.sqrt(np.mean(np.square(dataFragment)))
|
|
76
|
+
|
|
77
|
+
self.lastOffset = currentOffset
|
|
78
|
+
return True
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import time
|
|
2
|
+
|
|
3
|
+
RESET = "\033[0m"
|
|
4
|
+
RED = "\033[31m"
|
|
5
|
+
GREEN = "\033[32m"
|
|
6
|
+
YELLOW = "\033[33m"
|
|
7
|
+
BLUE = "\033[34m"
|
|
8
|
+
MAGENTA = "\033[35m"
|
|
9
|
+
CYAN = "\033[36m"
|
|
10
|
+
WHITE = "\033[37m"
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def Debug(*args, **kwargs):
|
|
14
|
+
print(
|
|
15
|
+
time.strftime(f"{BLUE}[DEBUG]"),
|
|
16
|
+
*args,
|
|
17
|
+
RESET,
|
|
18
|
+
**kwargs
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def Info(*args, **kwargs):
|
|
23
|
+
print(
|
|
24
|
+
time.strftime("[INFO] "),
|
|
25
|
+
*args,
|
|
26
|
+
**kwargs
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def Error(*args, **kwargs):
|
|
31
|
+
print(
|
|
32
|
+
time.strftime(f"{RED}[ERROR]"),
|
|
33
|
+
*args,
|
|
34
|
+
RESET,
|
|
35
|
+
**kwargs
|
|
36
|
+
)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
from .core import Live2D, Live2DGLWrapper
|
|
2
|
+
from .core import log as __log
|
|
3
|
+
from .framework import Live2DFramework
|
|
4
|
+
from .lapp_define import MotionGroup, MotionPriority, HitArea
|
|
5
|
+
from .lapp_model import LAppModel
|
|
6
|
+
from .params import Parameter, StandardParams
|
|
7
|
+
from .platform_manager import PlatformManager
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def init():
|
|
11
|
+
Live2D.init()
|
|
12
|
+
Live2DFramework.setPlatformManager(PlatformManager())
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def clearBuffer(r=0.0, g=0.0, b=0.0, a=0.0):
|
|
16
|
+
Live2DGLWrapper.clearColor(r, g, b, a)
|
|
17
|
+
Live2DGLWrapper.clear(Live2DGLWrapper.COLOR_BUFFER_BIT)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def setLogEnable(enable: bool):
|
|
21
|
+
__log.setLogEnable(enable)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def logEnable() -> bool:
|
|
25
|
+
return __log.logEnable()
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def glewInit():
|
|
29
|
+
pass
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def dispose():
|
|
33
|
+
pass
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
LIVE2D_VERSION = 2
|
|
37
|
+
|
|
38
|
+
__all__ = ['LAppModel',
|
|
39
|
+
'MotionPriority',
|
|
40
|
+
'MotionGroup',
|
|
41
|
+
"HitArea",
|
|
42
|
+
"StandardParams",
|
|
43
|
+
"init",
|
|
44
|
+
"glewInit",
|
|
45
|
+
"clearBuffer",
|
|
46
|
+
"dispose"]
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
VERTEX_TYPE_OFFSET0_STEP2: int = 1
|
|
2
|
+
VERTEX_TYPE_OFFSET2_STEP5: int = 2
|
|
3
|
+
VERTEX_OFFSET: int = 0
|
|
4
|
+
VERTEX_STEP: int = 2
|
|
5
|
+
VERTEX_TYPE: int = VERTEX_TYPE_OFFSET0_STEP2
|
|
6
|
+
REVERSE_TEXTURE_T: bool = True
|
|
7
|
+
MAX_INTERPOLATION: int = 5
|
|
8
|
+
PIVOT_TABLE_SIZE: int = 65
|
|
9
|
+
GOSA: float = 0.0001
|
|
10
|
+
|
|
11
|
+
LIVE2D_FORMAT_VERSION_V2_8_TEX_OPTION: int = 8
|
|
12
|
+
LIVE2D_FORMAT_VERSION_V2_10_SDK2: int = 10
|
|
13
|
+
LIVE2D_FORMAT_VERSION_V2_11_SDK2_1: int = 11
|
|
14
|
+
LIVE2D_FORMAT_VERSION_AVAILABLE: int = LIVE2D_FORMAT_VERSION_V2_11_SDK2_1
|
|
15
|
+
OBJECT_REF = 33
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
from .alive2d_model import ALive2DModel
|
|
2
|
+
from .live2d_gl_wrapper import Live2DGLWrapper
|
|
3
|
+
from .live2d_model_opengl import Live2DModelOpenGL
|
|
4
|
+
from .live2d import Live2D
|
|
5
|
+
from .util import log, UtSystem
|
|
6
|
+
from .motion import Live2DMotion, AMotion, MotionQueueManager
|
|
7
|
+
from .physics import PhysicsHair
|
|
8
|
+
from .id import Id
|
|
9
|
+
from .type import Array
|