Compare commits

...

10 Commits

Author SHA1 Message Date
孙羽 a5fd852e63 翻译注释 2023-10-23 11:30:41 +08:00
wada a1c5667449 Update to Cubism 5 SDK for Web R1 beta2 2023-09-28 11:16:51 +09:00
wada 3f141813b2 Update to Cubism 5 SDK for Web R1 beta1 2023-08-17 11:07:18 +09:00
wada 2526bb87a2
Merge pull request #49 from Tsar/fix/fix_blurry_image_on_mobile_devices
Fix blurry image on mobile devices (especially in fullscreen mode)
2023-05-30 12:00:31 +09:00
wada aacd34c6e0 Update to Cubism 4 SDK for Web R7 2023-05-25 11:35:15 +09:00
Ioann Volkov 1e281f8031 Fix blurry image on mobile devices (especially in fullscreen mode) 2023-05-21 01:02:27 +03:00
wada 4f1531c94a Update to Cubism 4 SDK for Web R6_2 2023-03-16 21:50:12 +09:00
wada 9976bd8635 Update to Cubism 4 SDK for Web R6_1 2023-03-10 21:38:13 +09:00
wada 0219fa5158 Update to Cubism 4 SDK for Web R6 2023-02-21 11:09:40 +09:00
wada 33087bc4d4 Update to Cubism 4 SDK for Web R5 2022-09-08 11:22:12 +09:00
83 changed files with 23285 additions and 2664 deletions

View File

@ -7,3 +7,6 @@ indent_size = 2
indent_style = space indent_style = space
insert_final_newline = true insert_final_newline = true
trim_trailing_whitespace = true trim_trailing_whitespace = true
[*.md]
trim_trailing_whitespace = false

View File

@ -1,6 +1,5 @@
{ {
"recommendations": [ "recommendations": [
"editorconfig.editorconfig", "editorconfig.editorconfig"
"msjsdiag.debugger-for-chrome"
] ]
} }

6
.vscode/launch.json vendored
View File

@ -2,10 +2,10 @@
"version": "0.2.0", "version": "0.2.0",
"configurations": [ "configurations": [
{ {
"type": "chrome", "type": "firefox",
"request": "launch", "request": "launch",
"name": "Launch Chrome", "name": "Launch Firefox",
"url": "http://localhost:5000/Samples/TypeScript/Demo/", "url": "http://localhost:8080/Samples/TypeScript/Demo/",
"webRoot": "${workspaceFolder}", "webRoot": "${workspaceFolder}",
"sourceMaps": true, "sourceMaps": true,
"sourceMapPathOverrides": { "sourceMapPathOverrides": {

View File

@ -1,3 +1,4 @@
{ {
"typescript.tsdk": "./Samples/TypeScript/Demo/node_modules/typescript/lib" "typescript.tsdk": "./Samples/TypeScript/Demo/node_modules/typescript/lib",
"cmake.configureOnOpen": true
} }

View File

@ -5,6 +5,70 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [5-r.1-beta.2] - 2023-09-28
### Changed
* Replace the sample model `Mao` with the updated version that is compatible with Cubism 5.0.
## [5-r.1-beta.1] - 2023-08-17
### Added
* Add Wankoromochi as a model bundled with SDK.
### Fixed
* Fix blurry image and models on mobile devices. by [@Tsar](https://github.com/Tsar)
* Fix a bug that caused scroll-blocking violations to appear in the log.
## [4-r.7] - 2023-05-25
### Added
* Add compiler options `noImplicitAny` and `useUnknownInCatchVariables` to `tsconfig.json`.
* Add some functions for checking consistency of MOC3 files.
* Add the function of checking consistency in `lappmodel.setupModel()`.
* Add the function of checking consistency before loading a model. (`lappmodel.hasMocConsistencyFromFile()`)
* This feature is enabled by default. Please see the following manual for more information.
* https://docs.live2d.com/cubism-sdk-manual/moc3-consistency/
### Fixed
* Fix a problem in which `haru` motion and voice were incorrect combination.
## [4-r.6.2] - 2023-03-16
### Fixed
* Fix some problems related to Cubism Core.
* See `CHANGELOG.md` in Core.
## [4-r.6.1] - 2023-03-10
### Added
* Add funciton to validate MOC3 files.
* See `CHANGELOG.md` in Core and Framework.
## [4-r.6] - 2023-02-21
### Removed
* Remove Debugger for Chrome from recommended extensions.
* Use `Javascript Debugger`, a built-in feature of Visual Studio Code.
## [4-r.5] - 2022-09-08
### Added
* Add the multilingual supported documents.
## [4-r.5-beta.5] - 2022-08-04 ## [4-r.5-beta.5] - 2022-08-04
### Changed ### Changed
@ -146,6 +210,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
* Fix issue with reloading model images in WebKit. * Fix issue with reloading model images in WebKit.
[5-r.1-beta.2]: https://github.com/Live2D/CubismWebSamples/compare/5-r.1-beta.1...5-r.1-beta.2
[5-r.1-beta.1]: https://github.com/Live2D/CubismWebSamples/compare/4-r.7...5-r.1-beta.1
[4-r.7]: https://github.com/Live2D/CubismWebSamples/compare/4-r.6.2...4-r.7
[4-r.6.2]: https://github.com/Live2D/CubismWebSamples/compare/4-r.6.1...4-r.6.2
[4-r.6.1]: https://github.com/Live2D/CubismWebSamples/compare/4-r.6...4-r.6.1
[4-r.6]: https://github.com/Live2D/CubismWebSamples/compare/4-r.5...4-r.6
[4-r.5]: https://github.com/Live2D/CubismWebSamples/compare/4-r.5-beta.5...4-r.5
[4-r.5-beta.5]: https://github.com/Live2D/CubismWebSamples/compare/4-r.5-beta.4...4-r.5-beta.5 [4-r.5-beta.5]: https://github.com/Live2D/CubismWebSamples/compare/4-r.5-beta.4...4-r.5-beta.5
[4-r.5-beta.4]: https://github.com/Live2D/CubismWebSamples/compare/4-r.5-beta.3...4-r.5-beta.4 [4-r.5-beta.4]: https://github.com/Live2D/CubismWebSamples/compare/4-r.5-beta.3...4-r.5-beta.4
[4-r.5-beta.3]: https://github.com/Live2D/CubismWebSamples/compare/4-r.5-beta.2...4-r.5-beta.3 [4-r.5-beta.3]: https://github.com/Live2D/CubismWebSamples/compare/4-r.5-beta.2...4-r.5-beta.3

View File

@ -5,6 +5,81 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## 2023-08-17
### Added
* Enhance Blend Shape features.
* Please see [here](https://docs.live2d.com/en/cubism-editor-manual/blend-shape/).
### Changed
* Upgrade Core version to 05.00.0000.
## 2023-05-09
### Changed
* Change the GCC version of the library for Linux from 6.5.0 to 8.3.0.
## 2023-03-16
### Fixed
* Fix a case in which the index of the mask's drawable object was negative value for `csmGetDrawableMasks()`.
* Fix a problem in which `csmHasMocConsistency()` was returned as 0 even though the MOC3 file was in the correct format.
* This problem was occurring in some models using the blendshape weight limit settings.
* Fix a problem that could cause a crash if a MOC3 file that is not in the correct format is loaded with `csmHasMocConsistency()`.
### Changed
* Upgrade Core version to 04.02.0004.
## 2023-03-10
### Added
* Add the function `csmHasMocConsistency`.
* This function verifies that the `MOC3` file is valid.
### Changed
* Upgrade Core version to 04.02.0003.
## 2023-02-21
### Added
* [Web] Added classes related to `Memory`.
* Add the funciton `initializeAmountOfMemory()` to adjust the amount of memory at initialization.
## 2022-10-28
### Fixed
* [Java] Remove unnecessary methods.
## 2022-10-06
### Added
* [Java] Add AAR file for Android.
## 2022-09-08
### Added
* Add the multilingual supported documents.
* Support Visual Studio 2022.
## 2022-08-04 ## 2022-08-04
### Fixed ### Fixed

30
Core/README.ja.md Normal file
View File

@ -0,0 +1,30 @@
[English](README.md) / [日本語](README.ja.md)
---
# Live2D Cubism Core
このフォルダーには、JavaScriptまたはTypeScriptアプリケーションを開発するためのコアライブラリファイルが含まれています。
## ファイルリスト
### live2dcubismcore.d.ts
このファイルには、`live2dcubismcore.js`に関するTypeScriptの型情報が含まれています。
TypeScriptで開発する場合は、このファイルを`live2dcubismcore.js`とともに使用してください。
### live2dcubismcore.js
このファイルには、CubismCoreの機能といくつかのラッパーが含まれています。
JavaScriptで開発する場合は、このファイルを使用してください。
### live2dcubismcore.js.map
このファイルは、`live2dcubismcore.d.ts`と`live2dcubismcore.js`の間のソースマップです。
デバッグ時にこのファイルを使用します。
### live2dcubismcore.min.js
このファイルは、`live2dcubismcore.js`のminify版です。
このファイルを本番環境で使用します。

View File

@ -1,3 +1,7 @@
[English](README.md) / [日本語](README.ja.md)
---
# Live2D Cubism Core # Live2D Cubism Core
This folder contains core library files for developing JavaScript or TypeScript applications. This folder contains core library files for developing JavaScript or TypeScript applications.
@ -22,5 +26,5 @@ Use this file when debugging.
### live2dcubismcore.min.js ### live2dcubismcore.min.js
This file is minified of `live2dcubismcore.js`. This file is the minified version of `live2dcubismcore.js`.
Use this file in production. Use this file in production.

367
Core/live2dcubismcore.d.ts vendored Normal file
View File

@ -0,0 +1,367 @@
/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Proprietary Software license
* that can be found at https://www.live2d.com/eula/live2d-proprietary-software-license-agreement_en.html.
*/
declare namespace Live2DCubismCore {
/** Cubism version identifier. */
type csmVersion = number;
/** moc3 version identifier. */
type csmMocVersion = number;
/** Parameter type identifier. */
type csmParameterType = number;
/** Necessary alignment for mocs (in bytes). */
const AlignofMoc: number;
/** Necessary alignment for models (in bytes). */
const AlignofModel: number;
/** .moc3 file version Unknown */
const MocVersion_Unknown: number;
/** .moc3 file version 3.0.00 - 3.2.07 */
const MocVersion_30: number;
/** .moc3 file version 3.3.00 - 3.3.03 */
const MocVersion_33: number;
/** .moc3 file version 4.0.00 - 4.1.05 */
const MocVersion_40: number;
/** .moc3 file version 4.2.00 - 4.2.04 */
const MocVersion_42: number;
/** .moc3 file version 5.0.00 - */
const MocVersion_50: number;
/** Normal Parameter. */
const ParameterType_Normal: number;
/** Parameter for blend shape. */
const ParameterType_BlendShape: number;
/** Log handler.
*
* @param message Null-terminated string message to log.
*/
interface csmLogFunction {
(message: string): void;
}
/** Cubism version. */
class Version {
/**
* Queries Core version.
*
* @return Core version.
*/
static csmGetVersion(): csmVersion;
/**
* Gets Moc file supported latest version.
*
* @return Moc file latest format version.
*/
static csmGetLatestMocVersion(): csmMocVersion;
/**
* Gets Moc file format version.
*
* @param moc Moc
*
* @return csmMocVersion
*/
static csmGetMocVersion(moc: Moc, mocBytes: ArrayBuffer): csmMocVersion;
private constructor();
}
/** Cubism logging. */
class Logging {
private static logFunction;
/**
* Sets log handler.
*
* @param handler Handler to use.
*/
static csmSetLogFunction(handler: csmLogFunction): void;
/**
* Queries log handler.
*
* @return Log handler.
*/
static csmGetLogFunction(): csmLogFunction;
/**
* Wrap log function.
*
* @param messagePtr number
*
* @return string
*/
private static wrapLogFunction;
private constructor();
}
/** Cubism moc. */
class Moc {
/**
* Checks consistency of a moc.
*
* @param mocBytes Moc bytes.
*
* @returns '1' if Moc is valid; '0' otherwise.
*/
hasMocConsistency(mocBytes: ArrayBuffer): number;
/** Creates [[Moc]] from [[ArrayBuffer]].
*
* @param buffer Array buffer
*
* @return [[Moc]] on success; [[null]] otherwise.
*/
static fromArrayBuffer(buffer: ArrayBuffer): Moc;
/** Releases instance. */
_release(): void;
/** Native moc. */
_ptr: number;
/**
* Initializes instance.
*
* @param mocBytes Moc bytes.
*/
private constructor();
}
/** Cubism model. */
class Model {
/** Parameters. */
parameters: Parameters;
/** Parts. */
parts: Parts;
/** Drawables. */
drawables: Drawables;
/** Canvas information. */
canvasinfo: CanvasInfo;
/**
* Creates [[Model]] from [[Moc]].
*
* @param moc Moc
*
* @return [[Model]] on success; [[null]] otherwise.
*/
static fromMoc(moc: Moc): Model;
/** Updates instance. */
update(): void;
/** Releases instance. */
release(): void;
/** Native model. */
_ptr: number;
/**
* Initializes instance.
*
* @param moc Moc
*/
private constructor();
}
/** Canvas information interface. */
class CanvasInfo {
/** Width of native model canvas. */
CanvasWidth: number;
/** Height of native model canvas. */
CanvasHeight: number;
/** Coordinate origin of X axis. */
CanvasOriginX: number;
/** Coordinate origin of Y axis. */
CanvasOriginY: number;
/** Pixels per unit of native model. */
PixelsPerUnit: number;
/**
* Initializes instance.
*
* @param modelPtr Native model pointer.
*/
constructor(modelPtr: number);
}
/** Cubism model parameters */
class Parameters {
/** Parameter count. */
count: number;
/** Parameter IDs. */
ids: Array<string>;
/** Minimum parameter values. */
minimumValues: Float32Array;
/** Parameter types. */
types: Int32Array;
/** Maximum parameter values. */
maximumValues: Float32Array;
/** Default parameter values. */
defaultValues: Float32Array;
/** Parameter values. */
values: Float32Array;
/** Number of key values of each parameter. */
keyCounts: Int32Array;
/** Key values of each parameter. */
keyValues: Array<Float32Array>;
/**
* Initializes instance.
*
* @param modelPtr Native model.
*/
constructor(modelPtr: number);
}
/** Cubism model parts */
class Parts {
/** Part count. */
count: number;
/** Part IDs. */
ids: Array<string>;
/** Opacity values. */
opacities: Float32Array;
/** Part's parent part indices. */
parentIndices: Int32Array;
/**
* Initializes instance.
*
* @param modelPtr Native model.
*/
constructor(modelPtr: number);
}
/** Cubism model drawables */
class Drawables {
/** Drawable count. */
count: number;
/** Drawable IDs. */
ids: Array<string>;
/** Constant drawable flags. */
constantFlags: Uint8Array;
/** Dynamic drawable flags. */
dynamicFlags: Uint8Array;
/** Drawable texture indices. */
textureIndices: Int32Array;
/** Drawable draw orders. */
drawOrders: Int32Array;
/** Drawable render orders. */
renderOrders: Int32Array;
/** Drawable opacities. */
opacities: Float32Array;
/** Mask count for each drawable. */
maskCounts: Int32Array;
/** Masks for each drawable. */
masks: Array<Int32Array>;
/** Number of vertices of each drawable. */
vertexCounts: Int32Array;
/** 2D vertex position data of each drawable. */
vertexPositions: Array<Float32Array>;
/** 2D texture coordinate data of each drawables. */
vertexUvs: Array<Float32Array>;
/** Number of triangle indices for each drawable. */
indexCounts: Int32Array;
/** Triangle index data for each drawable. */
indices: Array<Uint16Array>;
/** Information multiply color. */
multiplyColors: Float32Array;
/** Information Screen color. */
screenColors: Float32Array;
/** Indices of drawables parent part. */
parentPartIndices: Int32Array;
/** Resets all dynamic drawable flags.. */
resetDynamicFlags(): void;
/** Native model. */
private _modelPtr;
/**
* Initializes instance.
*
* @param modelPtr Native model.
*/
constructor(modelPtr: number);
}
/** Utility functions. */
class Utils {
/**
* Checks whether flag is set in bitfield.
*
* @param bitfield Bitfield to query against.
*
* @return [[true]] if bit set; [[false]] otherwise
*/
static hasBlendAdditiveBit(bitfield: number): boolean;
/**
* Checks whether flag is set in bitfield.
*
* @param bitfield Bitfield to query against.
*
* @return [[true]] if bit set; [[false]] otherwise
*/
static hasBlendMultiplicativeBit(bitfield: number): boolean;
/**
* Checks whether flag is set in bitfield.
*
* @param bitfield Bitfield to query against.
*
* @return [[true]] if bit set; [[false]] otherwise
*/
static hasIsDoubleSidedBit(bitfield: number): boolean;
/**
* Checks whether flag is set in bitfield.
*
* @param bitfield Bitfield to query against.
*
* @return [[true]] if bit set; [[false]] otherwise
*/
static hasIsInvertedMaskBit(bitfield: number): boolean;
/**
* Checks whether flag is set in bitfield.
*
* @param bitfield Bitfield to query against.
*
* @return [[true]] if bit set; [[false]] otherwise
*/
static hasIsVisibleBit(bitfield: number): boolean;
/**
* Checks whether flag is set in bitfield.
*
* @param bitfield Bitfield to query against.
*
* @return [[true]] if bit set; [[false]] otherwise
*/
static hasVisibilityDidChangeBit(bitfield: number): boolean;
/**
* Checks whether flag is set in bitfield.
*
* @param bitfield Bitfield to query against.
*
* @return [[true]] if bit set; [[false]] otherwise
*/
static hasOpacityDidChangeBit(bitfield: number): boolean;
/**
* Checks whether flag is set in bitfield.
*
* @param bitfield Bitfield to query against.
*
* @return [[true]] if bit set; [[false]] otherwise
*/
static hasDrawOrderDidChangeBit(bitfield: number): boolean;
/**
* Checks whether flag is set in bitfield.
*
* @param bitfield Bitfield to query against.
*
* @return [[true]] if bit set; [[false]] otherwise
*/
static hasRenderOrderDidChangeBit(bitfield: number): boolean;
/**
* Checks whether flag is set in bitfield.
*
* @param bitfield Bitfield to query against.
*
* @return [[true]] if bit set; [[false]] otherwise
*/
static hasVertexPositionsDidChangeBit(bitfield: number): boolean;
/**
* Checks whether flag is set in bitfield.
*
* @param bitfield Bitfield to query against.
*
* @return [[true]] if bit set; [[false]] otherwise
*/
static hasBlendColorDidChangeBit(bitfield: number): boolean;
}
/** Memory functions. */
class Memory {
/**
* HACK:
* Extend memory size allocated during module initialization.
* If the specified size is less than or equal to 16777216(byte), the default of 16 MB is allocated.
*
* @see https://github.com/emscripten-core/emscripten/blob/main/src/settings.js#L161
*
* @param size allocated memory size [byte(s)]
*/
static initializeAmountOfMemory(size: number): void;
private constructor();
}
/** Emscripten Cubism Core module. */
}

686
Core/live2dcubismcore.js Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

9
Core/live2dcubismcore.min.js vendored Normal file

File diff suppressed because one or more lines are too long

@ -1 +1 @@
Subproject commit e115df6e1e7a190ecdd7795c15ef222254fb193c Subproject commit ff606d5bee3cdab4f8430947f29badab598821c5

View File

@ -51,9 +51,11 @@ Live2D models listed below are available under Free Material License.
``` ```
Samples/Resources/Haru Samples/Resources/Haru
Samples/Resources/Hiyori Samples/Resources/Hiyori
Samples/Resources/Mao
Samples/Resources/Mark Samples/Resources/Mark
Samples/Resources/Natori Samples/Resources/Natori
Samples/Resources/Rice Samples/Resources/Rice
Samples/Resources/Wanko
``` ```
If you use these models, you must agree to the terms of a contract set [here](https://docs.live2d.com/cubism-editor-manual/sample-model/) for each model. If you use these models, you must agree to the terms of a contract set [here](https://docs.live2d.com/cubism-editor-manual/sample-model/) for each model.

41
NOTICE.ja.md Normal file
View File

@ -0,0 +1,41 @@
[English](NOTICE.md) / [日本語](NOTICE.ja.md)
---
# お知らせ
## [注意事項] Cubism 4 SDK for Web R1 以降へのアップデートに伴う注意
Cubism 4 SDK for Web R1 にてそれ以前のベータ版から正式版のリリースに伴い、
利便性向上のためパッケージ及びリポジトリの構造変更がおこなわれました。
この変更は Cubism 4 SDK for Native と構造を変えずに運用がなされるほか、
ユーザに管理が不必要なファイルが混在することを避けることが理由です。
構造の変更点、及び Cubism 4 SDK for Web beta2 以前のプロジェクトからの更新方法に関して、
[Cubism SDK Manual] に詳細を記載しています。アップデートを行う際は必ずご確認ください。
[Cubism SDK Manual]: https://docs.live2d.com/cubism-sdk-manual/warning-for-cubism4-web-r1-update/
## [注意事項] 依存パッケージでの宣言重複エラーについて (2023-02-23)
Cubism 4 SDK for Web Samples で利用されている依存パッケージのうち `@types/node` に起因する、
宣言重複のエラーが発生する場合があります。
こちらは以下のいずれかの手順で解決が可能であることを確認しております。
### 解決策1: npm-check-updatesを利用する方法
1. ターミナルで `/Samples/TypeScript/Demo` ディレクトリに移動する。
1. コマンド `npm i -g npm-check-updates` を実行する。
1. コマンド `ncu` を実行する。
### 解決策2: @types/node明示的にインストールし直す方法
1. ターミナルで `/Samples/TypeScript/Demo` ディレクトリに移動する。
1. コマンド `npm uninstall @types/node` を実行する。
1. コマンド `npm install @types/node` を実行する。
---
©Live2D

View File

@ -1,12 +1,38 @@
## [注意事項] Cubism 4 SDK for Web R1 以降へのアップデートに伴う注意 [English](NOTICE.md) / [日本語](NOTICE.ja.md)
Cubism 4 SDK for Web R1 にてそれ以前のベータ版から正式版のリリースに伴い、 ---
利便性向上のためパッケージ及びリポジトリの構造変更がおこなわれました。
この変更は Cubism 4 SDK for Native と構造を変えずに運用がなされるほか、 # Notices
ユーザに管理が不必要なファイルが混在することを避けることが理由です。
構造の変更点、及び Cubism 4 SDK for Web beta2 以前のプロジェクトからの更新方法に関して、 ## [Caution] Precautions for updating to Cubism 4 SDK for Web R1 or later
[Cubism SDK Manual] に詳細を記載しています。アップデートを行う際は必ずご確認ください。
With the release of the official version of the Cubism 4 SDK for Web R1 from the previous beta version, the structure of packages and repositories has been changed to improve usability.
The reason for this change is to operate without changing the structure of Cubism 4 SDK for Native, and to avoid mixing files that do not require management by users.
Details on structural changes and how to update from projects prior to Cubism 4 SDK for Web beta2 are described in the [Cubism SDK Manual]. Please be sure to check it when updating.
[Cubism SDK Manual]: https://docs.live2d.com/cubism-sdk-manual/warning-for-cubism4-web-r1-update/ [Cubism SDK Manual]: https://docs.live2d.com/cubism-sdk-manual/warning-for-cubism4-web-r1-update/
## [Caution] About the duplicate declaration error in dependent packages (2023-02-23)
A duplicate declaration error may occur due to `@types/node` among the dependency packages used in the Cubism 4 SDK for Web Samples.
We have confirmed that this can be resolved by one of the following procedures.
### Solution 1: Use npm-check-updates
1. Navigate to the `/Samples/TypeScript/Demo` directory in Terminal.
1. Execute the command `npm i -g npm-check-updates`.
1. Execute the command `ncu`.
### Solution 2: Reinstall @types/node explicitly
1. Navigate to the `/Samples/TypeScript/Demo` directory in Terminal.
1. Execute the command `npm uninstall @types/node`.
1. Execute the command `npm install @types/node`.
---
©Live2D

141
README.ja.md Normal file
View File

@ -0,0 +1,141 @@
[English](README.md) / [日本語](README.ja.md)
---
# Cubism Web Samples
Live2D Cubism Editor で出力したモデルを表示するアプリケーションのサンプル実装です。
Cubism Web Framework および Live2D Cubism Core と組み合わせて使用します。
## ライセンス
本 SDK を使用する前に、[ライセンス](LICENSE.md)をご確認ください。
## お知らせ
本 SDK を使用する前に、[お知らせ](NOTICE.ja.md)をご確認ください。
## Cubism 5新機能や過去バージョンとの互換性について
本 SDK はCubism 5に対応した製品です。
Cubism 5 Editorに搭載された新機能のSDK対応については [こちら](https://docs.live2d.com/cubism-sdk-manual/cubism-5-new-functions/)をご確認ください。
過去バージョンのCubism SDKとの互換性については [こちら](https://docs.live2d.com/cubism-sdk-manual/compatibility-with-cubism-5/)をご確認ください。
## ディレクトリ構成
```
.
├─ .vscode # Visual Studio Code 用プロジェクト設定ディレクトリ
├─ Core # Live2D Cubism Core が含まれるディレクトリ
├─ Framework # レンダリングやアニメーション機能などのソースコードが含まれるディレクトリ
└─ Samples
├─ Resources # モデルのファイルや画像などのリソースが含まれるディレクトリ
└─ TypeScript # TypeScript のサンプルプロジェクトが含まれるディレクトリ
```
## Live2D Cubism Core for Web
モデルをロードするためのライブラリです。
当リポジトリではCubism Coreを管理していません。
[こちら](https://www.live2d.com/download/cubism-sdk/download-web/)からCubism SDK for Webをダウンロードして、
Coreディレクトリのファイルをコピーしてください。
## 開発環境構築
1. [Node.js] と [Visual Studio Code] をインストールします
1. Visual Studio Code で **本 SDK のトップディレクトリ** を開き、推奨拡張機能をインストールします
* ポップアップ通知の他、拡張機能タブから `@recommended` を入力することで確認できます
### サンプルデモの動作確認
コマンドパレット(*View > Command Palette...*)で `>Tasks: Run Task` を入力することで、タスク一覧が表示されます。
1. タスク一覧から `npm: install - Samples/TypeScript/Demo` を選択して依存パッケージのダウンロードを行います
1. タスク一覧から `npm: build - Samples/TypeScript/Demo` を選択してサンプルデモのビルドを行います
1. タスク一覧から `npm: serve - Samples/TypeScript/Demo` を選択して動作確認用の簡易サーバを起動します
1. ブラウザの URL 欄に `http://localhost:5000/Samples/TypeScript/Demo/` と入力してアクセスします
1. コマンドパレットから `>Tasks: Terminate Task` を入力して `npm: serve` を選択すると簡易サーバが終了します
その他のタスクに関してはサンプルプロジェクトの [README.md](Samples/TypeScript/README.ja.md) を参照ください。
NOTE: デバック用の設定は、`.vscode/tasks.json` に記述しています。
### プロジェクトのデバック
Visual Studio Code で **本 SDK のトップディレクトリ** を開き、 *F5* キーを入力すると Debugger for Chrome が起動します。
Visual Studio Code 上でブレイクポイントを貼って Chrome ブラウザと連動してデバックを行うことができます。
NOTE: デバック用の設定は、`.vscode/launch.json` に記述しています。
## SDKマニュアル
[Cubism SDK Manual](https://docs.live2d.com/cubism-sdk-manual/top/)
## 変更履歴
当リポジトリの変更履歴については [CHANGELOG.md](CHANGELOG.md) を参照ください。
## 開発環境
### Node.js
* 20.7.0
* 18.18.0
## 動作確認環境
| プラットフォーム | ブラウザ | バージョン |
| --- | --- | --- |
| Android | Google Chrome | 113.0.5672.77 |
| Android | Microsoft Edge | 113.0.1774.38 |
| Android | Mozilla Firefox | 113.0 |
| iOS / iPadOS | Google Chrome | 113.0.5672.109 |
| iOS / iPadOS | Microsoft Edge | 113.0.1774.42 |
| iOS / iPadOS | Mozilla Firefox | 113.0 |
| iOS / iPadOS | Safari | 16.6.1 |
| macOS | Google Chrome | 117.0.5938.92 |
| macOS | Microsoft Edge | 117.0.2045.43 |
| macOS | Mozilla Firefox | 113.0.1 |
| macOS | Safari | 16.6.1 |
| Windows | Google Chrome | 117.0.5938.92 |
| Windows | Microsoft Edge | 117.0.2045.43 |
| Windows | Mozilla Firefox | 113.0 |
Note: 動作確認時のサーバの起動は `./Samples/TypeScript/Demo/package.json``serve` スクリプトを使用して行っています。
## プロジェクトへの貢献
プロジェクトに貢献する方法はたくさんあります。バグのログの記録、このGitHubでのプルリクエストの送信、Live2Dコミュニティでの問題の報告と提案の作成です。
### フォークとプルリクエスト
修正、改善、さらには新機能をもたらすかどうかにかかわらず、プルリクエストに感謝します。ただし、ラッパーは可能な限り軽量で浅くなるように設計されているため、バグ修正とメモリ/パフォーマンスの改善のみを行う必要があることに注意してください。メインリポジトリを可能な限りクリーンに保つために、必要に応じて個人用フォークと機能ブランチを作成してください。
### バグ
Live2Dコミュニティでは、問題のレポートと機能リクエストを定期的にチェックしています。バグレポートを提出する前に、Live2Dコミュニティで検索して、問題のレポートまたは機能リクエストがすでに投稿されているかどうかを確認してください。問題がすでに存在する場合は、関連するコメントを追記してください。
### 提案
SDKの将来についてのフィードバックにも関心があります。Live2Dコミュニティで提案や機能のリクエストを送信できます。このプロセスをより効果的にするために、それらをより明確に定義するのに役立つより多くの情報を含めるようお願いしています。
## フォーラム
ユーザー同士でCubism SDKの活用方法の提案や質問をしたい場合は、是非フォーラムをご活用ください。
- [Live2D 公式クリエイターズフォーラム](https://creatorsforum.live2d.com/)
- [Live2D Creator's Forum(English)](https://community.live2d.com/)

149
README.md
View File

@ -1,115 +1,142 @@
[English](README.md) / [日本語](README.ja.md)
---
# Cubism Web Samples # Cubism Web Samples
Live2D Cubism 4 Editor で出力したモデルを表示するアプリケーションのサンプル実装です。 This is a sample implementation of an application that displays models output by Live2D Cubism Editor.
Cubism Web Framework および Live2D Cubism Core と組み合わせて使用します。 It is used in conjunction with the Cubism Web Framework and Live2D Cubism Core.
## ライセンス ## License
本 SDK を使用する前に、[ライセンス](LICENSE.md)をご確認ください。 Please check the [license](LICENSE.md) before using this SDK.
## 注意事項 ## Notices
本 SDK を使用する前に、[注意事項](NOTICE.md)をご確認ください。 Please check the [notices](NOTICE.md) before using this SDK.
## ディレクトリ構成 ## Compatibility with Cubism 5 new features and previous Cubism SDK versions
This SDK is compatible with Cubism 5.
For SDK compatibility with new features in Cubism 5 Editor, please refer to [here](https://docs.live2d.com/en/cubism-sdk-manual/cubism-5-new-functions/).
For compatibility with previous versions of Cubism SDK, please refer to [here](https://docs.live2d.com/en/cubism-sdk-manual/compatibility-with-cubism-5/).
## Directory structure
``` ```
. .
├─ .vscode # Visual Studio Code 用プロジェクト設定ディレクトリ ├─ .vscode # Project settings directory for Visual Studio Code
├─ Core # Live2D Cubism Core が含まれるディレクトリ ├─ Core # Directory containing Live2D Cubism Core
├─ Framework # レンダリングやアニメーション機能などのソースコードが含まれるディレクトリ ├─ Framework # Directory containing source code such as rendering and animation functions
└─ Samples └─ Samples
├─ Resources # モデルのファイルや画像などのリソースが含まれるディレクトリ ├─ Resources # Directory containing resources such as model files and images
└─ TypeScript # TypeScript のサンプルプロジェクトが含まれるディレクトリ └─ TypeScript # Directory containing TypeScript sample projects
``` ```
## Live2D Cubism Core for Web ## Live2D Cubism Core for Web
モデルをロードするためのライブラリです。 A library for loading the model.
当リポジトリではCubism Coreを管理していません。 This repository does not manage Cubism Core.
[こちら](https://www.live2d.com/download/cubism-sdk/download-web/)からCubism SDK for Webをダウンロードして、 Download the Cubism SDK for Web from [here](https://www.live2d.com/download/cubism-sdk/download-web/) and copy the files in the Core directory.
Coreディレクトリのファイルをコピーしてください。
## 開発環境構築 ## Development environment construction
1. [Node.js] と [Visual Studio Code] をインストールします 1. Install [Node.js] and [Visual Studio Code]
1. Visual Studio Code で **本 SDK のトップディレクトリ** を開き、推奨拡張機能をインストールします 1. Open **the top directory of this SDK** in Visual Studio Code and install the recommended extensions
* ポップアップ通知の他、拡張機能タブから `@recommended` を入力することで確認できます * In addition to pop-up notifications, you can check the others by typing `@recommended` from the Extensions tab
### サンプルデモの動作確認 ### Operation check of sample demo
コマンドパレット(*View > Command Palette...*)で `>Tasks: Run Task` を入力することで、タスク一覧が表示されます。 Enter `>Tasks: Run Task` in the command palette (*View > Command Palette...*) to display the task list.
1. タスク一覧から `npm: install - Samples/TypeScript/Demo` を選択して依存パッケージのダウンロードを行います 1. Select `npm: install - Samples/TypeScript/Demo` from the task list to download the dependent packages
1. タスク一覧から `npm: build - Samples/TypeScript/Demo` を選択してサンプルデモのビルドを行います 1. Select `npm: build - Samples/TypeScript/Demo` from the task list to build the sample demo
1. タスク一覧から `npm: serve - Samples/TypeScript/Demo` を選択して動作確認用の簡易サーバを起動します 1. Select `npm: serve - Samples/TypeScript/Demo` from the task list to start the simple server for operation check
1. ブラウザの URL 欄に `http://localhost:5000/Samples/TypeScript/Demo/` と入力してアクセスします 1. Enter `http://localhost:5000/Samples/TypeScript/Demo/` in the URL field of your browser to access it
1. コマンドパレットから `>Tasks: Terminate Task` を入力して `npm: serve` を選択すると簡易サーバが終了します 1. Enter `>Tasks: Terminate Task` from the command palette and select `npm: serve` to terminate the simple server
その他のタスクに関してはサンプルプロジェクトの [README.md](Samples/TypeScript/README.md) を参照ください。 For other tasks, see [README.md](Samples/TypeScript/README.md) of the sample project.
NOTE: デバック用の設定は、`.vscode/tasks.json` に記述しています。 NOTE: Settings for debugging are described in `.vscode/tasks.json`.
### プロジェクトのデバック ### Project debugging
Visual Studio Code で **本 SDK のトップディレクトリ** を開き、 *F5* キーを入力すると Debugger for Chrome が起動します。 Open **the top directory of this SDK** in Visual Studio Code and enter the *F5* key to start Debugger for Chrome.
Visual Studio Code 上でブレイクポイントを貼って Chrome ブラウザと連動してデバックを行うことができます。 You can place breakpoints in Visual Studio Code to debug in conjunction with the Chrome browser.
NOTE: デバック用の設定は、`.vscode/launch.json` に記述しています。 NOTE: Settings for debugging are described in `.vscode/launch.json`.
## SDKマニュアル ## SDK manual
[Cubism SDK Manual](https://docs.live2d.com/cubism-sdk-manual/top/) [Cubism SDK Manual](https://docs.live2d.com/cubism-sdk-manual/top/)
## 変更履歴 ## Changelog
当リポジトリの変更履歴については [CHANGELOG.md](CHANGELOG.md) を参照ください。 Please refer to [CHANGELOG.md](CHANGELOG.md) for the changelog of this repository.
## 開発環境 ## Development environment
### Node.js ### Node.js
* 18.7.0 * 20.7.0
* 16.16.0 * 18.18.0
* 14.20.0
## 動作確認環境 ## Operation environment
| プラットフォーム | ブラウザ | バージョン | | Platform | Browser | Version |
| --- | --- | --- | | --- | --- | --- |
| Android | Google Chrome | 103.0.5060.129 | | Android | Google Chrome | 113.0.5672.77 |
| Android | Microsoft Edge | 101.0.1210.47 | | Android | Microsoft Edge | 113.0.1774.38 |
| Android | Mozilla Firefox | 100.1.2 | | Android | Mozilla Firefox | 113.0 |
| iOS / iPadOS | Google Chrome | 101.0.4951.58 | | iOS / iPadOS | Google Chrome | 113.0.5672.109 |
| iOS / iPadOS | Microsoft Edge | 101.1210.47 | | iOS / iPadOS | Microsoft Edge | 113.0.1774.42 |
| iOS / iPadOS | Mozilla Firefox | 100.1 | | iOS / iPadOS | Mozilla Firefox | 113.0 |
| iOS / iPadOS | Safari | 15.6 | | iOS / iPadOS | Safari | 16.6.1 |
| macOS | Google Chrome | 101.0.4951.64 | | macOS | Google Chrome | 117.0.5938.92 |
| macOS | Microsoft Edge | 101.0.1210.47 | | macOS | Microsoft Edge | 117.0.2045.43 |
| macOS | Mozilla Firefox | 100.0.1 | | macOS | Mozilla Firefox | 113.0.1 |
| macOS | Safari | 15.6 | | macOS | Safari | 16.6.1 |
| Windows | Google Chrome | 102.0.5005.115 | | Windows | Google Chrome | 117.0.5938.92 |
| Windows | Microsoft Edge | 103.0.1264.71 | | Windows | Microsoft Edge | 117.0.2045.43 |
| Windows | Mozilla Firefox | 100.0 | | Windows | Mozilla Firefox | 113.0 |
Note: 動作確認時のサーバの起動は `./Samples/TypeScript/Demo/package.json``serve` スクリプトを使用して行っています。 Note: You can start the server for operation check by running the `serve` script of `./Samples/TypeScript/Demo/package.json`.
## コミュニティ ## Contributing
ユーザー同士でCubism SDKの活用方法の提案や質問をしたい場合は、是非コミュニティをご活用ください。 There are many ways to contribute to the project: logging bugs, submitting pull requests on this GitHub, and reporting issues and making suggestions in Live2D Community.
- [Live2D 公式コミュニティ](https://creatorsforum.live2d.com/) ### Forking And Pull Requests
- [Live2D community(English)](https://community.live2d.com/)
We very much appreciate your pull requests, whether they bring fixes, improvements, or even new features. Note, however, that the wrapper is designed to be as lightweight and shallow as possible and should therefore only be subject to bug fixes and memory/performance improvements. To keep the main repository as clean as possible, create a personal fork and feature branches there as needed.
### Bugs
We are regularly checking issue-reports and feature requests at Live2D Community. Before filing a bug report, please do a search in Live2D Community to see if the issue-report or feature request has already been posted. If you find your issue already exists, make relevant comments and add your reaction.
### Suggestions
We're also interested in your feedback for the future of the SDK. You can submit a suggestion or feature request at Live2D Community. To make this process more effective, we're asking that you include more information to help define them more clearly.
## Forum
If you want to suggest or ask questions about how to use the Cubism SDK between users, please use the forum.
- [Live2D Creator's Forum](https://community.live2d.com/)
- [Live2D 公式クリエイターズフォーラム (Japanese)](https://creatorsforum.live2d.com/)

View File

@ -61,25 +61,25 @@
"File": "motions/haru_g_m26.motion3.json", "File": "motions/haru_g_m26.motion3.json",
"FadeInTime": 0.5, "FadeInTime": 0.5,
"FadeOutTime": 0.5, "FadeOutTime": 0.5,
"Sound": "sounds/haru_normal_04.wav" "Sound": "sounds/haru_talk_13.wav"
}, },
{ {
"File": "motions/haru_g_m06.motion3.json", "File": "motions/haru_g_m06.motion3.json",
"FadeInTime": 0.5, "FadeInTime": 0.5,
"FadeOutTime": 0.5, "FadeOutTime": 0.5,
"Sound": "sounds/haru_normal_01.wav" "Sound": "sounds/haru_Info_14.wav"
}, },
{ {
"File": "motions/haru_g_m20.motion3.json", "File": "motions/haru_g_m20.motion3.json",
"FadeInTime": 0.5, "FadeInTime": 0.5,
"FadeOutTime": 0.5, "FadeOutTime": 0.5,
"Sound": "sounds/haru_normal_03.wav" "Sound": "sounds/haru_normal_6.wav"
}, },
{ {
"File": "motions/haru_g_m09.motion3.json", "File": "motions/haru_g_m09.motion3.json",
"FadeInTime": 0.5, "FadeInTime": 0.5,
"FadeOutTime": 0.5, "FadeOutTime": 0.5,
"Sound": "sounds/haru_normal_02.wav" "Sound": "sounds/haru_Info_04.wav"
} }
] ]
}, },

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 MiB

After

Width:  |  Height:  |  Size: 3.0 MiB

View File

@ -117,27 +117,27 @@
"Name": "右眉 変形" "Name": "右眉 変形"
}, },
{ {
"Id": "ParamMouthA", "Id": "ParamA",
"GroupId": "ParamGroupMouth", "GroupId": "ParamGroupMouth",
"Name": "あ" "Name": "あ"
}, },
{ {
"Id": "ParamMouthI", "Id": "ParamI",
"GroupId": "ParamGroupMouth", "GroupId": "ParamGroupMouth",
"Name": "い" "Name": "い"
}, },
{ {
"Id": "ParamMouthU", "Id": "ParamU",
"GroupId": "ParamGroupMouth", "GroupId": "ParamGroupMouth",
"Name": "う" "Name": "う"
}, },
{ {
"Id": "ParamMouthE", "Id": "ParamE",
"GroupId": "ParamGroupMouth", "GroupId": "ParamGroupMouth",
"Name": "え" "Name": "え"
}, },
{ {
"Id": "ParamMouthO", "Id": "ParamO",
"GroupId": "ParamGroupMouth", "GroupId": "ParamGroupMouth",
"Name": "お" "Name": "お"
}, },
@ -416,150 +416,250 @@
"GroupId": "ParamGroupSway", "GroupId": "ParamGroupSway",
"Name": "ローブのふわ" "Name": "ローブのふわ"
}, },
{
"Id": "ParamSmokeOn",
"GroupId": "ParamGroupEffectsMistake",
"Name": "煙 表示"
},
{
"Id": "ParamSmoke",
"GroupId": "ParamGroupEffectsMistake",
"Name": "煙"
},
{
"Id": "ParamExplosionChargeOn",
"GroupId": "ParamGroupEffectsMistake",
"Name": "爆発光溜め 表示"
},
{
"Id": "ParamExplosionLightCharge",
"GroupId": "ParamGroupEffectsMistake",
"Name": "爆発光溜め"
},
{
"Id": "ParamExplosionOn",
"GroupId": "ParamGroupEffectsMistake",
"Name": "爆発 表示"
},
{
"Id": "ParamExplosion",
"GroupId": "ParamGroupEffectsMistake",
"Name": "爆発"
},
{
"Id": "ParamWandInkColorRainbow",
"GroupId": "ParamGroupEffectsMistake",
"Name": "杖インク 虹色"
},
{ {
"Id": "ParamHeartMissOn", "Id": "ParamHeartMissOn",
"GroupId": "ParamGroupEffectsMistake", "GroupId": "ParamGroupHeart",
"Name": "ハート失敗 表示" "Name": "ハート失敗 表示"
}, },
{ {
"Id": "ParamHeartBackMissOn", "Id": "ParamHeartBackMissOn",
"GroupId": "ParamGroupEffectsMistake", "GroupId": "ParamGroupHeart",
"Name": "ハート失敗後ろ 表示" "Name": "ハート失敗後ろ 表示"
}, },
{ {
"Id": "ParamHeartColorRainbow", "Id": "ParamHeartColorRainbow",
"GroupId": "ParamGroupEffectsMistake", "GroupId": "ParamGroupHeart",
"Name": "ハート失敗 虹色" "Name": "ハート失敗 虹色"
}, },
{
"Id": "ParamWandInkColorHeal",
"GroupId": "ParamGroupEffectsSuccess",
"Name": "杖インク 緑色"
},
{ {
"Id": "ParamHeartHealOn", "Id": "ParamHeartHealOn",
"GroupId": "ParamGroupEffectsSuccess", "GroupId": "ParamGroupHeart",
"Name": "ハート回復 表示" "Name": "ハート回復 表示"
}, },
{ {
"Id": "ParamHeartBackHealOn", "Id": "ParamHeartBackHealOn",
"GroupId": "ParamGroupEffectsSuccess", "GroupId": "ParamGroupHeart",
"Name": "ハート回復後ろ 表示" "Name": "ハート回復後ろ 表示"
}, },
{ {
"Id": "ParamHeartColorHeal", "Id": "ParamHeartColorHeal",
"GroupId": "ParamGroupEffectsSuccess", "GroupId": "ParamGroupHeart",
"Name": "ハート回復 緑色" "Name": "ハート回復 緑色"
}, },
{
"Id": "ParamHeartLightOn",
"GroupId": "ParamGroupEffectsSuccess",
"Name": "光 表示"
},
{
"Id": "ParamHeartLight",
"GroupId": "ParamGroupEffectsSuccess",
"Name": "光 星"
},
{
"Id": "ParamHeartLightColor",
"GroupId": "ParamGroupEffectsSuccess",
"Name": "光 色変化"
},
{
"Id": "ParamMagicPositionX",
"GroupId": "ParamGroupEffects",
"Name": "魔法の位置X"
},
{
"Id": "ParamMagicPositionY",
"GroupId": "ParamGroupEffects",
"Name": "魔法の位置Y"
},
{
"Id": "ParamWandInk",
"GroupId": "ParamGroupEffects",
"Name": "杖インク"
},
{ {
"Id": "ParamHeartDrow", "Id": "ParamHeartDrow",
"GroupId": "ParamGroupEffects", "GroupId": "ParamGroupHeart",
"Name": "ハート 描画" "Name": "ハート 描画"
}, },
{ {
"Id": "ParamHeartSize", "Id": "ParamHeartSize",
"GroupId": "ParamGroupEffects", "GroupId": "ParamGroupHeart",
"Name": "ハート 拡縮" "Name": "ハート 拡縮"
}, },
{ {
"Id": "ParamHeartColorLight", "Id": "ParamHeartColorLight",
"GroupId": "ParamGroupEffects", "GroupId": "ParamGroupHeart",
"Name": "ハート 色変化" "Name": "ハート 色変化"
}, },
{ {
"Id": "ParamAllColor", "Id": "ParamWandInkColorRainbow",
"GroupId": "ParamGroupEffectsHeal", "GroupId": "ParamGroupInk",
"Name": "全体の色" "Name": "杖インク 虹色"
},
{
"Id": "ParamWandInkColorHeal",
"GroupId": "ParamGroupInk",
"Name": "杖インク 緑色"
},
{
"Id": "ParamWandInk",
"GroupId": "ParamGroupInk",
"Name": "杖インク"
},
{
"Id": "ParamSmokeOn",
"GroupId": "ParamGroupExplosion",
"Name": "煙 表示"
},
{
"Id": "ParamSmoke",
"GroupId": "ParamGroupExplosion",
"Name": "煙"
},
{
"Id": "ParamExplosionChargeOn",
"GroupId": "ParamGroupExplosion",
"Name": "爆発光溜め 表示"
},
{
"Id": "ParamExplosionLightCharge",
"GroupId": "ParamGroupExplosion",
"Name": "爆発光溜め"
},
{
"Id": "ParamExplosionOn",
"GroupId": "ParamGroupExplosion",
"Name": "爆発 表示"
},
{
"Id": "ParamExplosion",
"GroupId": "ParamGroupExplosion",
"Name": "爆発"
},
{
"Id": "ParamRabbitElimination",
"GroupId": "ParamGroupRabbit",
"Name": "うさぎ 消滅"
},
{
"Id": "ParamRabbitAppearance",
"GroupId": "ParamGroupRabbit",
"Name": "うさぎ 出現"
},
{
"Id": "ParamRabbitSize",
"GroupId": "ParamGroupRabbit",
"Name": "うさぎ 拡縮"
},
{
"Id": "ParamRabbitDraworder",
"GroupId": "ParamGroupRabbit",
"Name": "うさぎ 描画順"
},
{
"Id": "ParamRabbitEar",
"GroupId": "ParamGroupRabbit",
"Name": "うさぎ 耳"
},
{
"Id": "ParamRabbitDirection",
"GroupId": "ParamGroupRabbit",
"Name": "うさぎ 向き"
},
{
"Id": "ParamRabbitLight",
"GroupId": "ParamGroupRabbit",
"Name": "うさぎ 色変化"
},
{
"Id": "ParamRabbitLightSize",
"GroupId": "ParamGroupRabbit",
"Name": "うさぎ光 拡縮"
},
{
"Id": "ParamRabbitX",
"GroupId": "ParamGroupRabbit",
"Name": "うさぎの移動 X"
},
{
"Id": "ParamRabbitY",
"GroupId": "ParamGroupRabbit",
"Name": "うさぎの移動 Y"
},
{
"Id": "ParamRabbitRotate",
"GroupId": "ParamGroupRabbit",
"Name": "うさぎの回転"
}, },
{ {
"Id": "ParamAuraOn", "Id": "ParamAuraOn",
"GroupId": "ParamGroupEffectsHeal", "GroupId": "ParamGroupAura",
"Name": "オーラ 表示" "Name": "オーラ 表示"
}, },
{ {
"Id": "ParamAura", "Id": "ParamAura",
"GroupId": "ParamGroupEffectsHeal", "GroupId": "ParamGroupAura",
"Name": "オーラ" "Name": "オーラ"
}, },
{ {
"Id": "ParamAuraColor", "Id": "ParamAuraColor1",
"GroupId": "ParamGroupEffectsHeal", "GroupId": "ParamGroupAura",
"Name": "オーラ 色変化" "Name": "オーラ 色変化1"
}, },
{ {
"Id": "ParamHealOn", "Id": "ParamAuraColor2",
"GroupId": "ParamGroupEffectsHeal", "GroupId": "ParamGroupAura",
"Name": "オーラ 色変化2"
},
{
"Id": "ParamHeartLightOn",
"GroupId": "ParamGroupLight",
"Name": "光 表示"
},
{
"Id": "ParamHeartLight",
"GroupId": "ParamGroupLight",
"Name": "光 星"
},
{
"Id": "ParamHeartLightColor",
"GroupId": "ParamGroupLight",
"Name": "光 色変化"
},
{
"Id": "ParamHealLightOn",
"GroupId": "ParamGroupLight",
"Name": "回復魔法光 表示" "Name": "回復魔法光 表示"
}, },
{ {
"Id": "ParamHealLight", "Id": "ParamHealLight",
"GroupId": "ParamGroupEffectsHeal", "GroupId": "ParamGroupLight",
"Name": "回復魔法光" "Name": "回復魔法光"
},
{
"Id": "ParamStrengthenLightOn",
"GroupId": "ParamGroupLight",
"Name": "強化魔法光 表示"
},
{
"Id": "ParamStrengthenLight",
"GroupId": "ParamGroupLight",
"Name": "強化魔法光"
},
{
"Id": "ParamStrengthenLightMove",
"GroupId": "ParamGroupLight",
"Name": "強化魔法光 移動"
},
{
"Id": "ParamMagicPositionX",
"GroupId": "ParamGroupAllEffects",
"Name": "魔法の位置X"
},
{
"Id": "ParamMagicPositionY",
"GroupId": "ParamGroupAllEffects",
"Name": "魔法の位置Y"
},
{
"Id": "ParamAllColor1",
"GroupId": "ParamGroupAllEffects",
"Name": "全体の色1"
},
{
"Id": "ParamAllColor2",
"GroupId": "ParamGroupAllEffects",
"Name": "全体の色2"
},
{
"Id": "ParamSphereOn",
"GroupId": "ParamGroupColorSample",
"Name": "玉 表示"
},
{
"Id": "ParamSphereMove",
"GroupId": "ParamGroupColorSample",
"Name": "玉 移動"
},
{
"Id": "ParamSphereMultiplyColor",
"GroupId": "ParamGroupColorSample",
"Name": "玉 乗算色"
},
{
"Id": "ParamSphereScreenColor",
"GroupId": "ParamGroupColorSample",
"Name": "玉 スクリーン色"
} }
], ],
"ParameterGroups": [ "ParameterGroups": [
@ -624,24 +724,44 @@
"Name": "揺れ" "Name": "揺れ"
}, },
{ {
"Id": "ParamGroupEffectsMistake", "Id": "ParamGroupHeart",
"GroupId": "", "GroupId": "",
"Name": "魔法失敗エフェクト" "Name": "ハート"
}, },
{ {
"Id": "ParamGroupEffectsSuccess", "Id": "ParamGroupInk",
"GroupId": "", "GroupId": "",
"Name": "魔法成功エフェクト" "Name": "インク"
}, },
{ {
"Id": "ParamGroupEffects", "Id": "ParamGroupExplosion",
"GroupId": "", "GroupId": "",
"Name": "魔法共通エフェクト" "Name": "爆発"
}, },
{ {
"Id": "ParamGroupEffectsHeal", "Id": "ParamGroupRabbit",
"GroupId": "", "GroupId": "",
"Name": "回復エフェクト" "Name": "うさぎ"
},
{
"Id": "ParamGroupAura",
"GroupId": "",
"Name": "オーラ"
},
{
"Id": "ParamGroupLight",
"GroupId": "",
"Name": "光"
},
{
"Id": "ParamGroupAllEffects",
"GroupId": "",
"Name": "全体エフェクト"
},
{
"Id": "ParamGroupColorSample",
"GroupId": "",
"Name": "乗算色・スクリーン色サンプル"
} }
], ],
"Parts": [ "Parts": [
@ -649,6 +769,14 @@
"Id": "PartCore", "Id": "PartCore",
"Name": "コア" "Name": "コア"
}, },
{
"Id": "PartRabbit",
"Name": "うさぎ"
},
{
"Id": "PartEffect",
"Name": "エフェクト"
},
{ {
"Id": "PartInk", "Id": "PartInk",
"Name": "インク" "Name": "インク"
@ -749,6 +877,10 @@
"Id": "PartArmRB", "Id": "PartArmRB",
"Name": "右腕B" "Name": "右腕B"
}, },
{
"Id": "PartColorSample",
"Name": "乗算色・スクリーン色サンプル"
},
{ {
"Id": "PartSketch", "Id": "PartSketch",
"Name": "[ 下絵 ]" "Name": "[ 下絵 ]"

Binary file not shown.

View File

@ -46,6 +46,9 @@
"Idle": [ "Idle": [
{ {
"File": "motions/mtn_01.motion3.json" "File": "motions/mtn_01.motion3.json"
},
{
"File": "motions/sample_01.motion3.json"
} }
], ],
"TapBody": [ "TapBody": [
@ -63,11 +66,21 @@
}, },
{ {
"File": "motions/special_02.motion3.json" "File": "motions/special_02.motion3.json"
},
{
"File": "motions/special_03.motion3.json"
} }
] ]
} }
}, },
"Groups": [ "Groups": [
{
"Target": "Parameter",
"Name": "LipSync",
"Ids": [
"ParamA"
]
},
{ {
"Target": "Parameter", "Target": "Parameter",
"Name": "EyeBlink", "Name": "EyeBlink",
@ -75,11 +88,6 @@
"ParamEyeLOpen", "ParamEyeLOpen",
"ParamEyeROpen" "ParamEyeROpen"
] ]
},
{
"Target": "Parameter",
"Name": "LipSync",
"Ids": []
} }
], ],
"HitAreas": [ "HitAreas": [

View File

@ -10,8 +10,8 @@
}, },
{ {
"Id": "ParamEyeLOpen", "Id": "ParamEyeLOpen",
"Value": 0, "Value": 1,
"Blend": "Add" "Blend": "Multiply"
}, },
{ {
"Id": "ParamEyeLSmile", "Id": "ParamEyeLSmile",
@ -25,8 +25,8 @@
}, },
{ {
"Id": "ParamEyeROpen", "Id": "ParamEyeROpen",
"Value": 0, "Value": 1,
"Blend": "Add" "Blend": "Multiply"
}, },
{ {
"Id": "ParamEyeRSmile", "Id": "ParamEyeRSmile",
@ -99,27 +99,27 @@
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthA", "Id": "ParamA",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthI", "Id": "ParamI",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthU", "Id": "ParamU",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthE", "Id": "ParamE",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthO", "Id": "ParamO",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },

View File

@ -10,8 +10,8 @@
}, },
{ {
"Id": "ParamEyeLOpen", "Id": "ParamEyeLOpen",
"Value": -1.2, "Value": 0,
"Blend": "Add" "Blend": "Multiply"
}, },
{ {
"Id": "ParamEyeLSmile", "Id": "ParamEyeLSmile",
@ -25,8 +25,8 @@
}, },
{ {
"Id": "ParamEyeROpen", "Id": "ParamEyeROpen",
"Value": -1.2, "Value": 0,
"Blend": "Add" "Blend": "Multiply"
}, },
{ {
"Id": "ParamEyeRSmile", "Id": "ParamEyeRSmile",
@ -99,27 +99,27 @@
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthA", "Id": "ParamA",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthI", "Id": "ParamI",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthU", "Id": "ParamU",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthE", "Id": "ParamE",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthO", "Id": "ParamO",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },

View File

@ -10,8 +10,8 @@
}, },
{ {
"Id": "ParamEyeLOpen", "Id": "ParamEyeLOpen",
"Value": -1.2, "Value": 0,
"Blend": "Add" "Blend": "Multiply"
}, },
{ {
"Id": "ParamEyeLSmile", "Id": "ParamEyeLSmile",
@ -25,8 +25,8 @@
}, },
{ {
"Id": "ParamEyeROpen", "Id": "ParamEyeROpen",
"Value": -1.2, "Value": 0,
"Blend": "Add" "Blend": "Multiply"
}, },
{ {
"Id": "ParamEyeRSmile", "Id": "ParamEyeRSmile",
@ -99,27 +99,27 @@
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthA", "Id": "ParamA",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthI", "Id": "ParamI",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthU", "Id": "ParamU",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthE", "Id": "ParamE",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthO", "Id": "ParamO",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },

View File

@ -99,27 +99,27 @@
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthA", "Id": "ParamA",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthI", "Id": "ParamI",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthU", "Id": "ParamU",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthE", "Id": "ParamE",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthO", "Id": "ParamO",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },

View File

@ -10,8 +10,8 @@
}, },
{ {
"Id": "ParamEyeLOpen", "Id": "ParamEyeLOpen",
"Value": 0, "Value": 1,
"Blend": "Add" "Blend": "Multiply"
}, },
{ {
"Id": "ParamEyeLSmile", "Id": "ParamEyeLSmile",
@ -25,8 +25,8 @@
}, },
{ {
"Id": "ParamEyeROpen", "Id": "ParamEyeROpen",
"Value": 0, "Value": 1,
"Blend": "Add" "Blend": "Multiply"
}, },
{ {
"Id": "ParamEyeRSmile", "Id": "ParamEyeRSmile",
@ -99,27 +99,27 @@
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthA", "Id": "ParamA",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthI", "Id": "ParamI",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthU", "Id": "ParamU",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthE", "Id": "ParamE",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthO", "Id": "ParamO",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },

View File

@ -10,8 +10,8 @@
}, },
{ {
"Id": "ParamEyeLOpen", "Id": "ParamEyeLOpen",
"Value": 0, "Value": 1,
"Blend": "Add" "Blend": "Multiply"
}, },
{ {
"Id": "ParamEyeLSmile", "Id": "ParamEyeLSmile",
@ -25,8 +25,8 @@
}, },
{ {
"Id": "ParamEyeROpen", "Id": "ParamEyeROpen",
"Value": 0, "Value": 1,
"Blend": "Add" "Blend": "Multiply"
}, },
{ {
"Id": "ParamEyeRSmile", "Id": "ParamEyeRSmile",
@ -99,27 +99,27 @@
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthA", "Id": "ParamA",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthI", "Id": "ParamI",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthU", "Id": "ParamU",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthE", "Id": "ParamE",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthO", "Id": "ParamO",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },

View File

@ -99,27 +99,27 @@
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthA", "Id": "ParamA",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthI", "Id": "ParamI",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthU", "Id": "ParamU",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthE", "Id": "ParamE",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthO", "Id": "ParamO",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },

View File

@ -10,8 +10,8 @@
}, },
{ {
"Id": "ParamEyeLOpen", "Id": "ParamEyeLOpen",
"Value": 0, "Value": 1,
"Blend": "Add" "Blend": "Multiply"
}, },
{ {
"Id": "ParamEyeLSmile", "Id": "ParamEyeLSmile",
@ -25,8 +25,8 @@
}, },
{ {
"Id": "ParamEyeROpen", "Id": "ParamEyeROpen",
"Value": 0, "Value": 1,
"Blend": "Add" "Blend": "Multiply"
}, },
{ {
"Id": "ParamEyeRSmile", "Id": "ParamEyeRSmile",
@ -99,27 +99,27 @@
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthA", "Id": "ParamA",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthI", "Id": "ParamI",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthU", "Id": "ParamU",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthE", "Id": "ParamE",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },
{ {
"Id": "ParamMouthO", "Id": "ParamO",
"Value": 0, "Value": 0,
"Blend": "Add" "Blend": "Add"
}, },

View File

@ -7,9 +7,9 @@
"FadeOutTime": 1.0, "FadeOutTime": 1.0,
"Loop": true, "Loop": true,
"AreBeziersRestricted": true, "AreBeziersRestricted": true,
"CurveCount": 116, "CurveCount": 136,
"TotalSegmentCount": 193, "TotalSegmentCount": 213,
"TotalPointCount": 503, "TotalPointCount": 543,
"UserDataCount": 0, "UserDataCount": 0,
"TotalUserDataSize": 0 "TotalUserDataSize": 0
}, },
@ -542,7 +542,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthA", "Id": "ParamA",
"FadeInTime": 1.0, "FadeInTime": 1.0,
"FadeOutTime": 1.0, "FadeOutTime": 1.0,
"Segments": [ "Segments": [
@ -555,7 +555,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthI", "Id": "ParamI",
"FadeInTime": 1.0, "FadeInTime": 1.0,
"FadeOutTime": 1.0, "FadeOutTime": 1.0,
"Segments": [ "Segments": [
@ -568,7 +568,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthU", "Id": "ParamU",
"FadeInTime": 1.0, "FadeInTime": 1.0,
"FadeOutTime": 1.0, "FadeOutTime": 1.0,
"Segments": [ "Segments": [
@ -581,7 +581,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthE", "Id": "ParamE",
"FadeInTime": 1.0, "FadeInTime": 1.0,
"FadeOutTime": 1.0, "FadeOutTime": 1.0,
"Segments": [ "Segments": [
@ -594,7 +594,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthO", "Id": "ParamO",
"FadeInTime": 1.0, "FadeInTime": 1.0,
"FadeOutTime": 1.0, "FadeOutTime": 1.0,
"Segments": [ "Segments": [
@ -1712,6 +1712,162 @@
0 0
] ]
}, },
{
"Target": "Parameter",
"Id": "ParamHeartMissOn",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartBackMissOn",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartColorRainbow",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartHealOn",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartBackHealOn",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartColorHeal",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartDrow",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartSize",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartColorLight",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamWandInkColorRainbow",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamWandInkColorHeal",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamWandInk",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [
0,
0,
0,
5.567,
0
]
},
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamSmokeOn", "Id": "ParamSmokeOn",
@ -1790,7 +1946,128 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamWandInkColorRainbow", "Id": "ParamRabbitElimination",
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitAppearance",
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitSize",
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitDraworder",
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitEar",
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitDirection",
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitLight",
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitLightSize",
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitX",
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitY",
"Segments": [
0,
1,
0,
5.567,
1
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitRotate",
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAuraOn",
"FadeInTime": 1.0, "FadeInTime": 1.0,
"FadeOutTime": 1.0, "FadeOutTime": 1.0,
"Segments": [ "Segments": [
@ -1803,7 +2080,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartMissOn", "Id": "ParamAura",
"FadeInTime": 1.0, "FadeInTime": 1.0,
"FadeOutTime": 1.0, "FadeOutTime": 1.0,
"Segments": [ "Segments": [
@ -1816,7 +2093,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartBackMissOn", "Id": "ParamAuraColor1",
"FadeInTime": 1.0, "FadeInTime": 1.0,
"FadeOutTime": 1.0, "FadeOutTime": 1.0,
"Segments": [ "Segments": [
@ -1829,61 +2106,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartColorRainbow", "Id": "ParamAuraColor2",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamWandInkColorHeal",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartHealOn",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartBackHealOn",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartColorHeal",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1931,6 +2154,65 @@
0 0
] ]
}, },
{
"Target": "Parameter",
"Id": "ParamHealLightOn",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHealLight",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamStrengthenLightOn",
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamStrengthenLight",
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamStrengthenLightMove",
"Segments": [
0,
0,
0,
5.567,
0
]
},
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMagicPositionX", "Id": "ParamMagicPositionX",
@ -1959,7 +2241,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamWandInk", "Id": "ParamAllColor1",
"FadeInTime": 1.0, "FadeInTime": 1.0,
"FadeOutTime": 1.0, "FadeOutTime": 1.0,
"Segments": [ "Segments": [
@ -1972,9 +2254,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartDrow", "Id": "ParamAllColor2",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1985,9 +2265,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartSize", "Id": "ParamSphereOn",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1998,9 +2276,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartColorLight", "Id": "ParamSphereMove",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -2011,9 +2287,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamAllColor", "Id": "ParamSphereMultiplyColor",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -2024,61 +2298,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamAuraOn", "Id": "ParamSphereScreenColor",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAura",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAuraColor",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHealOn",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [
0,
0,
0,
5.567,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHealLight",
"FadeInTime": 1.0,
"FadeOutTime": 1.0,
"Segments": [ "Segments": [
0, 0,
0, 0,

View File

@ -7,9 +7,9 @@
"FadeOutTime": 1.0, "FadeOutTime": 1.0,
"Loop": true, "Loop": true,
"AreBeziersRestricted": true, "AreBeziersRestricted": true,
"CurveCount": 116, "CurveCount": 136,
"TotalSegmentCount": 233, "TotalSegmentCount": 253,
"TotalPointCount": 585, "TotalPointCount": 625,
"UserDataCount": 0, "UserDataCount": 0,
"TotalUserDataSize": 0 "TotalUserDataSize": 0
}, },
@ -469,7 +469,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthA", "Id": "ParamA",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -480,7 +480,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthI", "Id": "ParamI",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -491,7 +491,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthU", "Id": "ParamU",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -502,7 +502,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthE", "Id": "ParamE",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -513,7 +513,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthO", "Id": "ParamO",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1750,6 +1750,138 @@
0 0
] ]
}, },
{
"Target": "Parameter",
"Id": "ParamHeartMissOn",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartBackMissOn",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartColorRainbow",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartHealOn",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartBackHealOn",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartColorHeal",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartDrow",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartSize",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartColorLight",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{
"Target": "Parameter",
"Id": "ParamWandInkColorRainbow",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{
"Target": "Parameter",
"Id": "ParamWandInkColorHeal",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{
"Target": "Parameter",
"Id": "ParamWandInk",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamSmokeOn", "Id": "ParamSmokeOn",
@ -1818,7 +1950,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamWandInkColorRainbow", "Id": "ParamRabbitElimination",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1829,7 +1961,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartMissOn", "Id": "ParamRabbitAppearance",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1840,7 +1972,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartBackMissOn", "Id": "ParamRabbitSize",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1851,7 +1983,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartColorRainbow", "Id": "ParamRabbitDraworder",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1862,7 +1994,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamWandInkColorHeal", "Id": "ParamRabbitEar",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1873,7 +2005,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartHealOn", "Id": "ParamRabbitDirection",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1884,7 +2016,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartBackHealOn", "Id": "ParamRabbitLight",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1895,7 +2027,84 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartColorHeal", "Id": "ParamRabbitLightSize",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitX",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitY",
"Segments": [
0,
1,
0,
3.467,
1
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitRotate",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAuraOn",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAura",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAuraColor1",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAuraColor2",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1937,6 +2146,61 @@
0 0
] ]
}, },
{
"Target": "Parameter",
"Id": "ParamHealLightOn",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHealLight",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{
"Target": "Parameter",
"Id": "ParamStrengthenLightOn",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{
"Target": "Parameter",
"Id": "ParamStrengthenLight",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{
"Target": "Parameter",
"Id": "ParamStrengthenLightMove",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMagicPositionX", "Id": "ParamMagicPositionX",
@ -1961,7 +2225,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamWandInk", "Id": "ParamAllColor1",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1972,7 +2236,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartDrow", "Id": "ParamAllColor2",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1983,7 +2247,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartSize", "Id": "ParamSphereOn",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1994,7 +2258,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartColorLight", "Id": "ParamSphereMove",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -2005,7 +2269,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamAllColor", "Id": "ParamSphereMultiplyColor",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -2016,51 +2280,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamAuraOn", "Id": "ParamSphereScreenColor",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAura",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAuraColor",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHealOn",
"Segments": [
0,
0,
0,
3.467,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHealLight",
"Segments": [ "Segments": [
0, 0,
0, 0,

View File

@ -7,9 +7,9 @@
"FadeOutTime": 1.0, "FadeOutTime": 1.0,
"Loop": true, "Loop": true,
"AreBeziersRestricted": true, "AreBeziersRestricted": true,
"CurveCount": 116, "CurveCount": 136,
"TotalSegmentCount": 215, "TotalSegmentCount": 235,
"TotalPointCount": 529, "TotalPointCount": 569,
"UserDataCount": 0, "UserDataCount": 0,
"TotalUserDataSize": 0 "TotalUserDataSize": 0
}, },
@ -465,7 +465,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthA", "Id": "ParamA",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -476,7 +476,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthI", "Id": "ParamI",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -487,7 +487,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthU", "Id": "ParamU",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -498,7 +498,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthE", "Id": "ParamE",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -509,7 +509,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthO", "Id": "ParamO",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1620,6 +1620,138 @@
0 0
] ]
}, },
{
"Target": "Parameter",
"Id": "ParamHeartMissOn",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartBackMissOn",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartColorRainbow",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartHealOn",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartBackHealOn",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartColorHeal",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartDrow",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartSize",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartColorLight",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{
"Target": "Parameter",
"Id": "ParamWandInkColorRainbow",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{
"Target": "Parameter",
"Id": "ParamWandInkColorHeal",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{
"Target": "Parameter",
"Id": "ParamWandInk",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamSmokeOn", "Id": "ParamSmokeOn",
@ -1688,7 +1820,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamWandInkColorRainbow", "Id": "ParamRabbitElimination",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1699,7 +1831,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartMissOn", "Id": "ParamRabbitAppearance",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1710,7 +1842,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartBackMissOn", "Id": "ParamRabbitSize",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1721,7 +1853,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartColorRainbow", "Id": "ParamRabbitDraworder",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1732,7 +1864,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamWandInkColorHeal", "Id": "ParamRabbitEar",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1743,7 +1875,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartHealOn", "Id": "ParamRabbitDirection",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1754,7 +1886,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartBackHealOn", "Id": "ParamRabbitLight",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1765,7 +1897,84 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartColorHeal", "Id": "ParamRabbitLightSize",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitX",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitY",
"Segments": [
0,
1,
0,
4.4,
1
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitRotate",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAuraOn",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAura",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAuraColor1",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAuraColor2",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1807,6 +2016,61 @@
0 0
] ]
}, },
{
"Target": "Parameter",
"Id": "ParamHealLightOn",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHealLight",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{
"Target": "Parameter",
"Id": "ParamStrengthenLightOn",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{
"Target": "Parameter",
"Id": "ParamStrengthenLight",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{
"Target": "Parameter",
"Id": "ParamStrengthenLightMove",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMagicPositionX", "Id": "ParamMagicPositionX",
@ -1831,7 +2095,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamWandInk", "Id": "ParamAllColor1",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1842,7 +2106,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartDrow", "Id": "ParamAllColor2",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1853,7 +2117,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartSize", "Id": "ParamSphereOn",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1864,7 +2128,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartColorLight", "Id": "ParamSphereMove",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1875,7 +2139,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamAllColor", "Id": "ParamSphereMultiplyColor",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1886,51 +2150,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamAuraOn", "Id": "ParamSphereScreenColor",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAura",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAuraColor",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHealOn",
"Segments": [
0,
0,
0,
4.4,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHealLight",
"Segments": [ "Segments": [
0, 0,
0, 0,

View File

@ -7,9 +7,9 @@
"FadeOutTime": 0.5, "FadeOutTime": 0.5,
"Loop": true, "Loop": true,
"AreBeziersRestricted": true, "AreBeziersRestricted": true,
"CurveCount": 116, "CurveCount": 136,
"TotalSegmentCount": 280, "TotalSegmentCount": 300,
"TotalPointCount": 726, "TotalPointCount": 766,
"UserDataCount": 0, "UserDataCount": 0,
"TotalUserDataSize": 0 "TotalUserDataSize": 0
}, },
@ -689,7 +689,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthA", "Id": "ParamA",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -700,7 +700,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthI", "Id": "ParamI",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -711,7 +711,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthU", "Id": "ParamU",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -722,7 +722,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthE", "Id": "ParamE",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -733,7 +733,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthO", "Id": "ParamO",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -2079,6 +2079,138 @@
0 0
] ]
}, },
{
"Target": "Parameter",
"Id": "ParamHeartMissOn",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartBackMissOn",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartColorRainbow",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartHealOn",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartBackHealOn",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartColorHeal",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartDrow",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartSize",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartColorLight",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{
"Target": "Parameter",
"Id": "ParamWandInkColorRainbow",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{
"Target": "Parameter",
"Id": "ParamWandInkColorHeal",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{
"Target": "Parameter",
"Id": "ParamWandInk",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamSmokeOn", "Id": "ParamSmokeOn",
@ -2147,7 +2279,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamWandInkColorRainbow", "Id": "ParamRabbitElimination",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -2158,7 +2290,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartMissOn", "Id": "ParamRabbitAppearance",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -2169,7 +2301,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartBackMissOn", "Id": "ParamRabbitSize",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -2180,7 +2312,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartColorRainbow", "Id": "ParamRabbitDraworder",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -2191,7 +2323,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamWandInkColorHeal", "Id": "ParamRabbitEar",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -2202,7 +2334,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartHealOn", "Id": "ParamRabbitDirection",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -2213,7 +2345,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartBackHealOn", "Id": "ParamRabbitLight",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -2224,7 +2356,84 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartColorHeal", "Id": "ParamRabbitLightSize",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitX",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitY",
"Segments": [
0,
1,
0,
4.2,
1
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitRotate",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAuraOn",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAura",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAuraColor1",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAuraColor2",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -2266,6 +2475,61 @@
0 0
] ]
}, },
{
"Target": "Parameter",
"Id": "ParamHealLightOn",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHealLight",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{
"Target": "Parameter",
"Id": "ParamStrengthenLightOn",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{
"Target": "Parameter",
"Id": "ParamStrengthenLight",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{
"Target": "Parameter",
"Id": "ParamStrengthenLightMove",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMagicPositionX", "Id": "ParamMagicPositionX",
@ -2290,7 +2554,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamWandInk", "Id": "ParamAllColor1",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -2301,7 +2565,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartDrow", "Id": "ParamAllColor2",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -2312,7 +2576,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartSize", "Id": "ParamSphereOn",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -2323,7 +2587,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartColorLight", "Id": "ParamSphereMove",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -2334,7 +2598,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamAllColor", "Id": "ParamSphereMultiplyColor",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -2345,51 +2609,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamAuraOn", "Id": "ParamSphereScreenColor",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAura",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAuraColor",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHealOn",
"Segments": [
0,
0,
0,
4.2,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHealLight",
"Segments": [ "Segments": [
0, 0,
0, 0,

File diff suppressed because it is too large Load Diff

View File

@ -7,9 +7,9 @@
"FadeOutTime": 0.25, "FadeOutTime": 0.25,
"Loop": true, "Loop": true,
"AreBeziersRestricted": true, "AreBeziersRestricted": true,
"CurveCount": 116, "CurveCount": 136,
"TotalSegmentCount": 393, "TotalSegmentCount": 413,
"TotalPointCount": 1053, "TotalPointCount": 1093,
"UserDataCount": 0, "UserDataCount": 0,
"TotalUserDataSize": 0 "TotalUserDataSize": 0
}, },
@ -752,7 +752,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthA", "Id": "ParamA",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -777,7 +777,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthI", "Id": "ParamI",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -788,7 +788,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthU", "Id": "ParamU",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -799,7 +799,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthE", "Id": "ParamE",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -810,7 +810,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthO", "Id": "ParamO",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -2418,83 +2418,6 @@
0 0
] ]
}, },
{
"Target": "Parameter",
"Id": "ParamSmokeOn",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamSmoke",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamExplosionChargeOn",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamExplosionLightCharge",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamExplosionOn",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamExplosion",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamWandInkColorRainbow",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartMissOn", "Id": "ParamHeartMissOn",
@ -2528,31 +2451,6 @@
0 0
] ]
}, },
{
"Target": "Parameter",
"Id": "ParamWandInkColorHeal",
"Segments": [
0,
0,
1,
1.044,
0,
2.089,
0,
3.133,
0,
1,
3.244,
0,
3.356,
1,
3.467,
1,
0,
7.8,
1
]
},
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartHealOn", "Id": "ParamHeartHealOn",
@ -2656,148 +2554,6 @@
0 0
] ]
}, },
{
"Target": "Parameter",
"Id": "ParamHeartLightOn",
"Segments": [
0,
0,
1,
1.089,
0,
2.178,
0,
3.267,
0,
1,
3.567,
0.661,
3.867,
1,
4.167,
1,
1,
4.344,
1,
4.522,
0.757,
4.7,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartLight",
"Segments": [
0,
0,
1,
1.111,
0,
2.222,
0,
3.333,
0,
1,
3.911,
17.478,
4.489,
30,
5.067,
30,
1,
5.078,
30,
5.089,
0,
5.1,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartLightColor",
"Segments": [
0,
0,
1,
1.078,
0,
2.156,
0,
3.233,
0,
1,
3.544,
0,
3.856,
1,
4.167,
1,
1,
4.344,
1,
4.522,
1,
4.7,
1,
1,
4.711,
1,
4.722,
0,
4.733,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamMagicPositionX",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamMagicPositionY",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamWandInk",
"Segments": [
0,
0,
0,
0.5,
0,
0,
2,
1,
0,
7.8,
1
]
},
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartDrow", "Id": "ParamHeartDrow",
@ -2927,51 +2683,238 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamAllColor", "Id": "ParamWandInkColorRainbow",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamWandInkColorHeal",
"Segments": [ "Segments": [
0, 0,
0, 0,
1, 1,
1.456, 1.044,
0, 0,
2.911, 2.089,
0, 0,
4.367, 3.133,
0, 0,
1, 1,
4.611, 3.244,
0, 0,
4.856, 3.356,
0.6,
5.1,
0.6,
1, 1,
5.244, 3.467,
0.6,
5.389,
0.4,
5.533,
0.4,
1, 1,
5.678,
0.4,
5.822,
0.6,
5.967,
0.6,
1,
6.111,
0.6,
6.256,
0.572,
6.4,
0.4,
1,
6.567,
0.201,
6.733,
0, 0,
6.9, 7.8,
1
]
},
{
"Target": "Parameter",
"Id": "ParamWandInk",
"Segments": [
0,
0,
0,
0.5,
0,
0,
2,
1,
0,
7.8,
1
]
},
{
"Target": "Parameter",
"Id": "ParamSmokeOn",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamSmoke",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamExplosionChargeOn",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamExplosionLightCharge",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamExplosionOn",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamExplosion",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitElimination",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitAppearance",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitSize",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitDraworder",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitEar",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitDirection",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitLight",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitLightSize",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitX",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitY",
"Segments": [
0,
1,
0,
7.8,
1
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitRotate",
"Segments": [
0,
0, 0,
0, 0,
7.8, 7.8,
@ -3050,7 +2993,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamAuraColor", "Id": "ParamAuraColor1",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -3089,7 +3032,121 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHealOn", "Id": "ParamAuraColor2",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartLightOn",
"Segments": [
0,
0,
1,
1.089,
0,
2.178,
0,
3.267,
0,
1,
3.567,
0.661,
3.867,
1,
4.167,
1,
1,
4.344,
1,
4.522,
0.757,
4.7,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartLight",
"Segments": [
0,
0,
1,
1.111,
0,
2.222,
0,
3.333,
0,
1,
3.911,
17.478,
4.489,
30,
5.067,
30,
1,
5.078,
30,
5.089,
0,
5.1,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartLightColor",
"Segments": [
0,
0,
1,
1.078,
0,
2.156,
0,
3.233,
0,
1,
3.544,
0,
3.856,
1,
4.167,
1,
1,
4.344,
1,
4.522,
1,
4.7,
1,
1,
4.711,
1,
4.722,
0,
4.733,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHealLightOn",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -3165,6 +3222,169 @@
0 0
] ]
}, },
{
"Target": "Parameter",
"Id": "ParamStrengthenLightOn",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamStrengthenLight",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamStrengthenLightMove",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamMagicPositionX",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamMagicPositionY",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAllColor1",
"Segments": [
0,
0,
1,
1.456,
0,
2.911,
0,
4.367,
0,
1,
4.611,
0,
4.856,
0.6,
5.1,
0.6,
1,
5.244,
0.6,
5.389,
0.4,
5.533,
0.4,
1,
5.678,
0.4,
5.822,
0.6,
5.967,
0.6,
1,
6.111,
0.6,
6.256,
0.572,
6.4,
0.4,
1,
6.567,
0.201,
6.733,
0,
6.9,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAllColor2",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamSphereOn",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamSphereMove",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamSphereMultiplyColor",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{
"Target": "Parameter",
"Id": "ParamSphereScreenColor",
"Segments": [
0,
0,
0,
7.8,
0
]
},
{ {
"Target": "PartOpacity", "Target": "PartOpacity",
"Id": "PartArmLA", "Id": "PartArmLA",

View File

@ -7,9 +7,9 @@
"FadeOutTime": 0.25, "FadeOutTime": 0.25,
"Loop": true, "Loop": true,
"AreBeziersRestricted": true, "AreBeziersRestricted": true,
"CurveCount": 116, "CurveCount": 136,
"TotalSegmentCount": 516, "TotalSegmentCount": 536,
"TotalPointCount": 1400, "TotalPointCount": 1440,
"UserDataCount": 0, "UserDataCount": 0,
"TotalUserDataSize": 0 "TotalUserDataSize": 0
}, },
@ -57,7 +57,7 @@
-25.081, -25.081,
1, 1,
2.511, 2.511,
-26.204, -26.205,
2.689, 2.689,
-26.911, -26.911,
2.867, 2.867,
@ -1323,7 +1323,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthA", "Id": "ParamA",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1362,7 +1362,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthI", "Id": "ParamI",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1373,7 +1373,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthU", "Id": "ParamU",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1384,7 +1384,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthE", "Id": "ParamE",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -1395,7 +1395,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMouthO", "Id": "ParamO",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -3308,6 +3308,324 @@
0 0
] ]
}, },
{
"Target": "Parameter",
"Id": "ParamHeartMissOn",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
0,
0.333,
0.01,
1,
0.444,
0.023,
0.556,
1,
0.667,
1,
1,
2.2,
1,
3.733,
1,
5.267,
1,
1,
5.411,
1,
5.556,
0,
5.7,
0,
0,
9.367,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartBackMissOn",
"Segments": [
0,
0,
1,
0.9,
0,
1.8,
0,
2.7,
0,
1,
3.156,
0,
3.611,
1,
4.067,
1,
1,
4.467,
1,
4.867,
1,
5.267,
1,
1,
5.411,
1,
5.556,
0,
5.7,
0,
0,
9.367,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartColorRainbow",
"Segments": [
0,
0,
1,
0.756,
0,
1.511,
0,
2.267,
0,
0,
3.6,
29.3,
2,
3.633,
0,
0,
4.967,
29.3,
2,
5,
0,
0,
6.333,
29.3,
0,
9.367,
29.3
]
},
{
"Target": "Parameter",
"Id": "ParamHeartHealOn",
"Segments": [
0,
0,
0,
9.367,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartBackHealOn",
"Segments": [
0,
0,
0,
9.367,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartColorHeal",
"Segments": [
0,
0,
0,
9.367,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartDrow",
"Segments": [
0,
0,
0,
0.567,
0,
1,
0.8,
13.228,
1.033,
14.173,
1.267,
15,
1,
1.611,
20.079,
1.956,
27.892,
2.3,
30,
0,
9.367,
30
]
},
{
"Target": "Parameter",
"Id": "ParamHeartSize",
"Segments": [
0,
0,
1,
1.611,
0,
3.222,
0,
4.833,
0,
1,
4.944,
0,
5.056,
0.3,
5.167,
0.3,
1,
5.333,
0.3,
5.5,
-0.9,
5.667,
-0.9,
0,
9.367,
-0.9
]
},
{
"Target": "Parameter",
"Id": "ParamHeartColorLight",
"Segments": [
0,
0,
1,
0.9,
0,
1.8,
0,
2.7,
0,
1,
3.156,
0,
3.611,
1,
4.067,
1,
0,
9.367,
1
]
},
{
"Target": "Parameter",
"Id": "ParamWandInkColorRainbow",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2.267,
5,
0,
3.6,
34.3,
2,
3.633,
5,
0,
4.967,
34.3,
2,
5,
5,
0,
6.333,
34.3,
1,
6.344,
34.3,
6.356,
5.15,
6.367,
5,
1,
6.622,
1.548,
6.878,
0,
7.133,
0,
0,
9.367,
0
]
},
{
"Target": "Parameter",
"Id": "ParamWandInkColorHeal",
"Segments": [
0,
0,
0,
9.367,
0
]
},
{
"Target": "Parameter",
"Id": "ParamWandInk",
"Segments": [
0,
0,
0,
0.5,
0,
1,
0.744,
0,
0.989,
0.25,
1.233,
0.489,
1,
1.489,
0.735,
1.744,
1,
2,
1,
0,
9.367,
1
]
},
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamSmokeOn", "Id": "ParamSmokeOn",
@ -3545,168 +3863,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamWandInkColorRainbow", "Id": "ParamRabbitElimination",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2.267,
5,
0,
3.6,
34.3,
2,
3.633,
5,
0,
4.967,
34.3,
2,
5,
5,
0,
6.333,
34.3,
1,
6.344,
34.3,
6.356,
5.15,
6.367,
5,
1,
6.622,
1.548,
6.878,
0,
7.133,
0,
0,
9.367,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartMissOn",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
0,
0.333,
0.01,
1,
0.444,
0.023,
0.556,
1,
0.667,
1,
1,
2.2,
1,
3.733,
1,
5.267,
1,
1,
5.411,
1,
5.556,
0,
5.7,
0,
0,
9.367,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartBackMissOn",
"Segments": [
0,
0,
1,
0.9,
0,
1.8,
0,
2.7,
0,
1,
3.156,
0,
3.611,
1,
4.067,
1,
1,
4.467,
1,
4.867,
1,
5.267,
1,
1,
5.411,
1,
5.556,
0,
5.7,
0,
0,
9.367,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHeartColorRainbow",
"Segments": [
0,
0,
1,
0.756,
0,
1.511,
0,
2.267,
0,
0,
3.6,
29.3,
2,
3.633,
0,
0,
4.967,
29.3,
2,
5,
0,
0,
6.333,
29.3,
0,
9.367,
29.3
]
},
{
"Target": "Parameter",
"Id": "ParamWandInkColorHeal",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -3717,7 +3874,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartHealOn", "Id": "ParamRabbitAppearance",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -3728,7 +3885,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartBackHealOn", "Id": "ParamRabbitSize",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -3739,7 +3896,128 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHeartColorHeal", "Id": "ParamRabbitDraworder",
"Segments": [
0,
0,
0,
9.367,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitEar",
"Segments": [
0,
0,
0,
9.367,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitDirection",
"Segments": [
0,
0,
0,
9.367,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitLight",
"Segments": [
0,
0,
0,
9.367,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitLightSize",
"Segments": [
0,
0,
0,
9.367,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitX",
"Segments": [
0,
0,
0,
9.367,
0
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitY",
"Segments": [
0,
1,
0,
9.367,
1
]
},
{
"Target": "Parameter",
"Id": "ParamRabbitRotate",
"Segments": [
0,
0,
0,
9.367,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAuraOn",
"Segments": [
0,
0,
0,
9.367,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAura",
"Segments": [
0,
0,
0,
9.367,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAuraColor1",
"Segments": [
0,
0,
0,
9.367,
0
]
},
{
"Target": "Parameter",
"Id": "ParamAuraColor2",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -3781,6 +4059,61 @@
0 0
] ]
}, },
{
"Target": "Parameter",
"Id": "ParamHealLightOn",
"Segments": [
0,
0,
0,
9.367,
0
]
},
{
"Target": "Parameter",
"Id": "ParamHealLight",
"Segments": [
0,
0,
0,
9.367,
0
]
},
{
"Target": "Parameter",
"Id": "ParamStrengthenLightOn",
"Segments": [
0,
0,
0,
9.367,
0
]
},
{
"Target": "Parameter",
"Id": "ParamStrengthenLight",
"Segments": [
0,
0,
0,
9.367,
0
]
},
{
"Target": "Parameter",
"Id": "ParamStrengthenLightMove",
"Segments": [
0,
0,
0,
9.367,
0
]
},
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamMagicPositionX", "Id": "ParamMagicPositionX",
@ -3805,120 +4138,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamWandInk", "Id": "ParamAllColor1",
"Segments": [
0,
0,
0,
0.5,
0,
1,
0.744,
0,
0.989,
0.25,
1.233,
0.489,
1,
1.489,
0.735,
1.744,
1,
2,
1,
0,
9.367,
1
]
},
{
"Target": "Parameter",
"Id": "ParamHeartDrow",
"Segments": [
0,
0,
0,
0.567,
0,
1,
0.8,
13.228,
1.033,
14.173,
1.267,
15,
1,
1.611,
20.079,
1.956,
27.892,
2.3,
30,
0,
9.367,
30
]
},
{
"Target": "Parameter",
"Id": "ParamHeartSize",
"Segments": [
0,
0,
1,
1.611,
0,
3.222,
0,
4.833,
0,
1,
4.944,
0,
5.056,
0.3,
5.167,
0.3,
1,
5.333,
0.3,
5.5,
-0.9,
5.667,
-0.9,
0,
9.367,
-0.9
]
},
{
"Target": "Parameter",
"Id": "ParamHeartColorLight",
"Segments": [
0,
0,
1,
0.9,
0,
1.8,
0,
2.7,
0,
1,
3.156,
0,
3.611,
1,
4.067,
1,
0,
9.367,
1
]
},
{
"Target": "Parameter",
"Id": "ParamAllColor",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -3929,7 +4149,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamAuraOn", "Id": "ParamAllColor2",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -3940,7 +4160,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamAura", "Id": "ParamSphereOn",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -3951,7 +4171,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamAuraColor", "Id": "ParamSphereMove",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -3962,7 +4182,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHealOn", "Id": "ParamSphereMultiplyColor",
"Segments": [ "Segments": [
0, 0,
0, 0,
@ -3973,7 +4193,7 @@
}, },
{ {
"Target": "Parameter", "Target": "Parameter",
"Id": "ParamHealLight", "Id": "ParamSphereScreenColor",
"Segments": [ "Segments": [
0, 0,
0, 0,

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 553 KiB

View File

@ -0,0 +1,261 @@
{
"Version": 3,
"Parameters": [
{
"Id": "PARAM_ANGLE_X",
"GroupId": "",
"Name": "角度 X"
},
{
"Id": "PARAM_ANGLE_Y",
"GroupId": "",
"Name": "角度 Y"
},
{
"Id": "PARAM_ANGLE_Z",
"GroupId": "",
"Name": "角度 Z"
},
{
"Id": "PARAM_EYE_L_OPEN",
"GroupId": "",
"Name": "左眼 開閉"
},
{
"Id": "PARAM_EYE_R_OPEN",
"GroupId": "",
"Name": "右眼 開閉"
},
{
"Id": "PARAM_MOUTH_FORM",
"GroupId": "",
"Name": "口 変形"
},
{
"Id": "PARAM_MOUTH_OPEN_Y",
"GroupId": "",
"Name": "口 開閉"
},
{
"Id": "PARAM_TERE",
"GroupId": "",
"Name": "照れ"
},
{
"Id": "PARAM_BODY_ANGLE_X",
"GroupId": "",
"Name": "体の回転 X"
},
{
"Id": "PARAM_BODY_ANGLE_Z",
"GroupId": "",
"Name": "体の回転 Z"
},
{
"Id": "PARAM_BODY_ANGLE_Y",
"GroupId": "",
"Name": "体の回転 Y"
},
{
"Id": "PARAM_BREATH",
"GroupId": "",
"Name": "呼吸"
},
{
"Id": "PARAM_BOWL_LID",
"GroupId": "",
"Name": "お椀 ふた"
},
{
"Id": "PARAM_YUGE_01",
"GroupId": "",
"Name": "湯気"
},
{
"Id": "PARAM_YUGE_02",
"GroupId": "",
"Name": "湯気"
},
{
"Id": "PARAM_EFFECT",
"GroupId": "",
"Name": "エフェクト"
},
{
"Id": "PARAM_EAR_L",
"GroupId": "",
"Name": "左耳"
},
{
"Id": "PARAM_EAR_R",
"GroupId": "",
"Name": "右耳"
},
{
"Id": "PARAM_HAND_L",
"GroupId": "",
"Name": "左手"
},
{
"Id": "PARAM_HAND_R",
"GroupId": "",
"Name": "右手"
},
{
"Id": "PARAM_SWING",
"GroupId": "",
"Name": "揺れ"
},
{
"Id": "PARAM_BOWL_SWING",
"GroupId": "",
"Name": "揺れ お椀"
},
{
"Id": "PARAM_FACE_01",
"GroupId": "",
"Name": "どや キリッ"
},
{
"Id": "PARAM_BASE_X",
"GroupId": "",
"Name": "全体の左右"
},
{
"Id": "PARAM_BASE_Y",
"GroupId": "",
"Name": "全体の上下"
}
],
"ParameterGroups": [],
"Parts": [
{
"Id": "PARTS_01_SKETCH",
"Name": "[ 下絵 ]"
},
{
"Id": "PARTS_01_BACKGROUND",
"Name": "背景"
},
{
"Id": "PARTS_01_BOWL",
"Name": "お椀"
},
{
"Id": "PARTS_01_BODY",
"Name": "体"
},
{
"Id": "PARTS_01_EAR_001",
"Name": "耳"
},
{
"Id": "PARTS_01_NOSE_001",
"Name": "鼻"
},
{
"Id": "PARTS_01_MOUTH_001",
"Name": "口"
},
{
"Id": "PARTS_01_BROW_001",
"Name": "まゆ毛"
},
{
"Id": "PARTS_01_EYE_BALL_001",
"Name": "目玉"
},
{
"Id": "PARTS_01_EYE_001",
"Name": "目"
},
{
"Id": "PARTS_01_FACE_001",
"Name": "顔"
},
{
"Id": "PARTS_01_HOHO",
"Name": "頬"
},
{
"Id": "PARTS_01_EFFECT",
"Name": "エフェクト"
},
{
"Id": "PARTS_01_ITEM_16",
"Name": "蕎麦6杯目"
},
{
"Id": "PARTS_01_ITEM_15",
"Name": "ベニテングタケ"
},
{
"Id": "PARTS_01_ITEM_14",
"Name": "蕎麦5杯目"
},
{
"Id": "PARTS_01_ITEM_13",
"Name": "しいたけ"
},
{
"Id": "PARTS_01_ITEM_12",
"Name": "みかん"
},
{
"Id": "PARTS_01_ITEM_11",
"Name": "蕎麦4杯目"
},
{
"Id": "PARTS_01_ITEM_10",
"Name": "王冠"
},
{
"Id": "PARTS_01_ITEM_09",
"Name": "まゆげ"
},
{
"Id": "PARTS_01_ITEM_08",
"Name": "蕎麦3杯目"
},
{
"Id": "PARTS_01_ITEM_07",
"Name": "アフロ"
},
{
"Id": "PARTS_01_ITEM_06",
"Name": "リボン"
},
{
"Id": "PARTS_01_ITEM_05",
"Name": "蕎麦2杯目"
},
{
"Id": "PARTS_01_ITEM_04",
"Name": "星"
},
{
"Id": "PARTS_01_ITEM_03",
"Name": "ひげ"
},
{
"Id": "PARTS_01_ITEM_02",
"Name": "蕎麦1杯目"
},
{
"Id": "PARTS_01_ITEM_01",
"Name": "たんぽぽ"
},
{
"Id": "PARTS_01_CORE_ITEM",
"Name": "コア アイテム"
},
{
"Id": "PARTS_01_CORE",
"Name": "コア"
},
{
"Id": "ROUGH",
"Name": "ラフ"
}
]
}

Binary file not shown.

View File

@ -0,0 +1,55 @@
{
"Version": 3,
"FileReferences": {
"Moc": "Wanko.moc3",
"Textures": [
"Wanko.1024/texture_00.png"
],
"Physics": "Wanko.physics3.json",
"DisplayInfo": "Wanko.cdi3.json",
"Motions": {
"Idle": [
{
"File": "motions/idle_01.motion3.json"
},
{
"File": "motions/idle_03.motion3.json"
},
{
"File": "motions/idle_04.motion3.json"
}
],
"TapBody": [
{
"File": "motions/touch_02.motion3.json"
},
{
"File": "motions/touch_04.motion3.json"
}
]
}
},
"Groups": [
{
"Target": "Parameter",
"Name": "EyeBlink",
"Ids": [
"PARAM_EYE_L_OPEN",
"PARAM_EYE_R_OPEN"
]
},
{
"Target": "Parameter",
"Name": "LipSync",
"Ids": [
"PARAM_MOUTH_OPEN_Y"
]
}
],
"HitAreas": [
{
"Id": "HitArea",
"Name": "Body"
}
]
}

View File

@ -0,0 +1,373 @@
{
"Version": 3,
"Meta": {
"PhysicsSettingCount": 4,
"TotalInputCount": 14,
"TotalOutputCount": 4,
"VertexCount": 8,
"EffectiveForces": {
"Gravity": {
"X": 0,
"Y": -1
},
"Wind": {
"X": 0,
"Y": 0
}
},
"PhysicsDictionary": [
{
"Id": "PhysicsSetting1",
"Name": "お椀揺れ"
},
{
"Id": "PhysicsSetting2",
"Name": "揺れ"
},
{
"Id": "PhysicsSetting3",
"Name": "右耳"
},
{
"Id": "PhysicsSetting4",
"Name": "左耳"
}
]
},
"PhysicsSettings": [
{
"Id": "PhysicsSetting1",
"Input": [
{
"Source": {
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_X"
},
"Weight": 100,
"Type": "X",
"Reflect": false
},
{
"Source": {
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Z"
},
"Weight": 100,
"Type": "Angle",
"Reflect": false
}
],
"Output": [
{
"Destination": {
"Target": "Parameter",
"Id": "PARAM_BOWL_SWING"
},
"VertexIndex": 1,
"Scale": 1,
"Weight": 100,
"Type": "Angle",
"Reflect": false
}
],
"Vertices": [
{
"Position": {
"X": 0,
"Y": 0
},
"Mobility": 1,
"Delay": 1,
"Acceleration": 1,
"Radius": 0
},
{
"Position": {
"X": 0,
"Y": 3
},
"Mobility": 0.8,
"Delay": 0.9,
"Acceleration": 1.5,
"Radius": 3
}
],
"Normalization": {
"Position": {
"Minimum": -10,
"Default": 0,
"Maximum": 10
},
"Angle": {
"Minimum": -10,
"Default": 0,
"Maximum": 10
}
}
},
{
"Id": "PhysicsSetting2",
"Input": [
{
"Source": {
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Y"
},
"Weight": 100,
"Type": "X",
"Reflect": false
},
{
"Source": {
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Z"
},
"Weight": 100,
"Type": "Angle",
"Reflect": false
}
],
"Output": [
{
"Destination": {
"Target": "Parameter",
"Id": "PARAM_SWING"
},
"VertexIndex": 1,
"Scale": 1,
"Weight": 100,
"Type": "Angle",
"Reflect": false
}
],
"Vertices": [
{
"Position": {
"X": 0,
"Y": 0
},
"Mobility": 1,
"Delay": 1,
"Acceleration": 1,
"Radius": 0
},
{
"Position": {
"X": 0,
"Y": 5
},
"Mobility": 0.85,
"Delay": 0.9,
"Acceleration": 1,
"Radius": 5
}
],
"Normalization": {
"Position": {
"Minimum": -10,
"Default": 0,
"Maximum": 10
},
"Angle": {
"Minimum": -10,
"Default": 0,
"Maximum": 10
}
}
},
{
"Id": "PhysicsSetting3",
"Input": [
{
"Source": {
"Target": "Parameter",
"Id": "PARAM_ANGLE_X"
},
"Weight": 50,
"Type": "X",
"Reflect": false
},
{
"Source": {
"Target": "Parameter",
"Id": "PARAM_ANGLE_Y"
},
"Weight": 20,
"Type": "X",
"Reflect": false
},
{
"Source": {
"Target": "Parameter",
"Id": "PARAM_ANGLE_Z"
},
"Weight": 60,
"Type": "Angle",
"Reflect": false
},
{
"Source": {
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_X"
},
"Weight": 30,
"Type": "X",
"Reflect": false
},
{
"Source": {
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Z"
},
"Weight": 40,
"Type": "Angle",
"Reflect": false
}
],
"Output": [
{
"Destination": {
"Target": "Parameter",
"Id": "PARAM_EAR_R"
},
"VertexIndex": 1,
"Scale": 1.5,
"Weight": 100,
"Type": "Angle",
"Reflect": false
}
],
"Vertices": [
{
"Position": {
"X": 0,
"Y": 0
},
"Mobility": 1,
"Delay": 1,
"Acceleration": 1,
"Radius": 0
},
{
"Position": {
"X": 0,
"Y": 5.5
},
"Mobility": 0.95,
"Delay": 0.9,
"Acceleration": 1.5,
"Radius": 5.5
}
],
"Normalization": {
"Position": {
"Minimum": -10,
"Default": 0,
"Maximum": 10
},
"Angle": {
"Minimum": -10,
"Default": 0,
"Maximum": 10
}
}
},
{
"Id": "PhysicsSetting4",
"Input": [
{
"Source": {
"Target": "Parameter",
"Id": "PARAM_ANGLE_X"
},
"Weight": 50,
"Type": "X",
"Reflect": false
},
{
"Source": {
"Target": "Parameter",
"Id": "PARAM_ANGLE_Y"
},
"Weight": 20,
"Type": "X",
"Reflect": true
},
{
"Source": {
"Target": "Parameter",
"Id": "PARAM_ANGLE_Z"
},
"Weight": 60,
"Type": "Angle",
"Reflect": false
},
{
"Source": {
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_X"
},
"Weight": 30,
"Type": "X",
"Reflect": false
},
{
"Source": {
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Z"
},
"Weight": 40,
"Type": "Angle",
"Reflect": false
}
],
"Output": [
{
"Destination": {
"Target": "Parameter",
"Id": "PARAM_EAR_L"
},
"VertexIndex": 1,
"Scale": 1.5,
"Weight": 100,
"Type": "Angle",
"Reflect": false
}
],
"Vertices": [
{
"Position": {
"X": 0,
"Y": 0
},
"Mobility": 1,
"Delay": 1,
"Acceleration": 1,
"Radius": 0
},
{
"Position": {
"X": 0,
"Y": 5.5
},
"Mobility": 0.95,
"Delay": 0.9,
"Acceleration": 1.5,
"Radius": 5.5
}
],
"Normalization": {
"Position": {
"Minimum": -10,
"Default": 0,
"Maximum": 10
},
"Angle": {
"Minimum": -10,
"Default": 0,
"Maximum": 10
}
}
}
]
}

View File

@ -0,0 +1,699 @@
{
"Version": 3,
"Meta": {
"Duration": 5.967,
"Fps": 30.0,
"Loop": true,
"AreBeziersRestricted": true,
"CurveCount": 22,
"TotalSegmentCount": 85,
"TotalPointCount": 233,
"UserDataCount": 0,
"TotalUserDataSize": 0
},
"Curves": [
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_X",
"Segments": [
0,
-1,
1,
0.222,
-1,
0.444,
0,
0.667,
0,
1,
0.911,
0,
1.156,
-1,
1.4,
-1,
1,
1.622,
-1,
1.844,
0,
2.067,
0,
1,
2.322,
0,
2.578,
-1,
2.833,
-1,
1,
3.067,
-1,
3.3,
0,
3.533,
0,
1,
3.844,
0,
4.156,
-1,
4.467,
-1,
1,
4.656,
-1,
4.844,
0,
5.033,
0,
1,
5.333,
0,
5.633,
-1,
5.933,
-1,
0,
5.967,
-1
]
},
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_Y",
"Segments": [
0,
14,
1,
0.222,
14,
0.444,
-8,
0.667,
-8,
1,
0.911,
-8,
1.156,
14,
1.4,
14,
1,
1.622,
14,
1.844,
-13,
2.067,
-13,
1,
2.322,
-13,
2.578,
14,
2.833,
14,
1,
3.067,
14,
3.3,
-8,
3.533,
-8,
1,
3.844,
-8,
4.156,
14,
4.467,
14,
1,
4.656,
14,
4.844,
-13,
5.033,
-13,
1,
5.333,
-13,
5.633,
14,
5.933,
14,
0,
5.967,
14
]
},
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_Z",
"Segments": [
0,
-10,
1,
0.467,
-10,
0.933,
13,
1.4,
13,
1,
1.878,
13,
2.356,
-10,
2.833,
-10,
1,
3.378,
-10,
3.922,
13,
4.467,
13,
1,
4.956,
13,
5.444,
-10,
5.933,
-10,
0,
5.967,
-10
]
},
{
"Target": "Parameter",
"Id": "PARAM_EYE_L_OPEN",
"Segments": [
0,
1,
1,
0.622,
1,
1.244,
1,
1.867,
1,
1,
1.922,
1,
1.978,
0,
2.033,
0,
1,
2.133,
0,
2.233,
1,
2.333,
1,
1,
3.533,
1,
4.733,
1,
5.933,
1,
0,
5.967,
1
]
},
{
"Target": "Parameter",
"Id": "PARAM_EYE_R_OPEN",
"Segments": [
0,
1,
1,
0.622,
1,
1.244,
1,
1.867,
1,
1,
1.922,
1,
1.978,
0,
2.033,
0,
1,
2.133,
0,
2.233,
1,
2.333,
1,
1,
3.533,
1,
4.733,
1,
5.933,
1,
0,
5.967,
1
]
},
{
"Target": "Parameter",
"Id": "PARAM_MOUTH_OPEN_Y",
"Segments": [
0,
1,
1,
0.622,
1,
1.244,
1,
1.867,
1,
1,
1.922,
1,
1.978,
0,
2.033,
0,
1,
2.133,
0,
2.233,
1,
2.333,
1,
1,
3.044,
1,
3.756,
1,
4.467,
1,
1,
4.656,
1,
4.844,
0,
5.033,
0,
1,
5.333,
0,
5.633,
1,
5.933,
1,
0,
5.967,
1
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_X",
"Segments": [
0,
-2,
1,
0.467,
-2,
0.933,
2,
1.4,
2,
1,
1.878,
2,
2.356,
-2,
2.833,
-2,
1,
3.378,
-2,
3.922,
4,
4.467,
4,
1,
4.956,
4,
5.444,
-2,
5.933,
-2,
0,
5.967,
-2
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Z",
"Segments": [
0,
-5,
1,
0.467,
-5,
0.933,
6,
1.4,
6,
1,
1.878,
6,
2.356,
-5,
2.833,
-5,
1,
3.378,
-5,
3.922,
6,
4.467,
6,
1,
4.956,
6,
5.444,
-5,
5.933,
-5,
0,
5.967,
-5
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Y",
"Segments": [
0,
0,
1,
1.978,
0,
3.956,
0,
5.933,
0,
0,
5.967,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BREATH",
"Segments": [
0,
0,
1,
1.978,
0,
3.956,
0,
5.933,
0,
0,
5.967,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BOWL_LID",
"Segments": [
0,
50,
1,
1.978,
50,
3.956,
50,
5.933,
50,
0,
5.967,
50
]
},
{
"Target": "Parameter",
"Id": "PARAM_YUGE_01",
"Segments": [
0,
0,
1,
1.978,
0,
3.956,
0,
5.933,
0,
0,
5.967,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_YUGE_02",
"Segments": [
0,
0,
1,
1.978,
0,
3.956,
0,
5.933,
0,
0,
5.967,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EFFECT",
"Segments": [
0,
0,
1,
1.978,
0,
3.956,
0,
5.933,
0,
0,
5.967,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EAR_L",
"Segments": [
0,
0,
1,
0.267,
0,
0.533,
0,
0.8,
0,
1,
0.867,
0,
0.933,
0.82,
1,
0.82,
1,
1.056,
0.82,
1.111,
-0.72,
1.167,
-0.72,
1,
1.222,
-0.72,
1.278,
0.23,
1.333,
0.23,
1,
1.356,
0.23,
1.378,
0,
1.4,
0,
1,
2.156,
0,
2.911,
0,
3.667,
0,
1,
3.722,
0,
3.778,
0.82,
3.833,
0.82,
1,
3.889,
0.82,
3.944,
-0.72,
4,
-0.72,
1,
4.056,
-0.72,
4.111,
0.23,
4.167,
0.23,
1,
4.2,
0.23,
4.233,
0,
4.267,
0,
1,
4.822,
0,
5.378,
0,
5.933,
0,
0,
5.967,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EAR_R",
"Segments": [
0,
0,
1,
1.978,
0,
3.956,
0,
5.933,
0,
0,
5.967,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_HAND_L",
"Segments": [
0,
0,
1,
1.978,
0,
3.956,
0,
5.933,
0,
0,
5.967,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_HAND_R",
"Segments": [
0,
0,
1,
1.978,
0,
3.956,
0,
5.933,
0,
0,
5.967,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_SWING",
"Segments": [
0,
0,
0,
5.967,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BOWL_SWING",
"Segments": [
0,
0,
0,
5.967,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_FACE_01",
"Segments": [
0,
0,
1,
1.978,
0,
3.956,
0,
5.933,
0,
0,
5.967,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BASE_X",
"Segments": [
0,
0,
0,
5.967,
0
]
}
]
}

View File

@ -0,0 +1,818 @@
{
"Version": 3,
"Meta": {
"Duration": 6.933,
"Fps": 30.0,
"Loop": true,
"AreBeziersRestricted": true,
"CurveCount": 22,
"TotalSegmentCount": 102,
"TotalPointCount": 284,
"UserDataCount": 0,
"TotalUserDataSize": 0
},
"Curves": [
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_X",
"Segments": [
0,
0,
1,
0.3,
0,
0.6,
0,
0.9,
0,
1,
1.167,
0,
1.433,
-2,
1.7,
-2,
1,
1.889,
-2,
2.078,
-2,
2.267,
-2,
1,
2.633,
-2,
3,
0,
3.367,
0,
1,
3.567,
0,
3.767,
0,
3.967,
0,
1,
4.322,
0,
4.678,
0,
5.033,
0,
1,
5.156,
0,
5.278,
0,
5.4,
0,
1,
5.9,
0,
6.4,
0,
6.9,
0,
0,
6.933,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_Y",
"Segments": [
0,
0,
1,
0.3,
0,
0.6,
0,
0.9,
0,
1,
1.167,
0,
1.433,
15,
1.7,
15,
1,
1.889,
15,
2.078,
15,
2.267,
15,
1,
2.633,
15,
3,
0,
3.367,
0,
1,
3.567,
0,
3.767,
0,
3.967,
0,
1,
4.322,
0,
4.678,
0,
5.033,
0,
1,
5.078,
0,
5.122,
11,
5.167,
11,
1,
5.244,
11,
5.322,
0,
5.4,
0,
1,
5.9,
0,
6.4,
0,
6.9,
0,
0,
6.933,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_Z",
"Segments": [
0,
0,
1,
0.3,
0,
0.6,
0,
0.9,
0,
1,
1.167,
0,
1.433,
23,
1.7,
23,
1,
1.889,
23,
2.078,
23,
2.267,
23,
1,
2.633,
23,
3,
-7,
3.367,
-7,
1,
3.567,
-7,
3.767,
0,
3.967,
0,
1,
4.322,
0,
4.678,
0,
5.033,
0,
1,
5.656,
0,
6.278,
0,
6.9,
0,
0,
6.933,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EYE_L_OPEN",
"Segments": [
0,
1,
1,
0.444,
1,
0.889,
1,
1.333,
1,
1,
1.367,
1,
1.4,
0,
1.433,
0,
1,
1.5,
0,
1.567,
1,
1.633,
1,
1,
2.856,
1,
4.078,
1,
5.3,
1,
1,
5.333,
1,
5.367,
0,
5.4,
0,
1,
5.467,
0,
5.533,
1,
5.6,
1,
0,
6.933,
1
]
},
{
"Target": "Parameter",
"Id": "PARAM_EYE_R_OPEN",
"Segments": [
0,
1,
1,
0.444,
1,
0.889,
1,
1.333,
1,
1,
1.367,
1,
1.4,
0,
1.433,
0,
1,
1.5,
0,
1.567,
1,
1.633,
1,
1,
2.856,
1,
4.078,
1,
5.3,
1,
1,
5.333,
1,
5.367,
0,
5.4,
0,
1,
5.467,
0,
5.533,
1,
5.6,
1,
0,
6.933,
1
]
},
{
"Target": "Parameter",
"Id": "PARAM_MOUTH_OPEN_Y",
"Segments": [
0,
1,
1,
0.978,
1,
1.956,
1,
2.933,
1,
1,
3.078,
1,
3.222,
0,
3.367,
0,
1,
3.8,
0,
4.233,
0,
4.667,
0,
1,
4.789,
0,
4.911,
0,
5.033,
0,
1,
5.111,
0,
5.189,
1,
5.267,
1,
1,
5.4,
1,
5.533,
0,
5.667,
0,
1,
5.911,
0,
6.156,
0,
6.4,
0,
1,
6.567,
0,
6.733,
1,
6.9,
1,
0,
6.933,
1
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_X",
"Segments": [
0,
0,
1,
0.3,
0,
0.6,
0,
0.9,
0,
1,
2.278,
0,
3.656,
0,
5.033,
0,
1,
5.656,
0,
6.278,
0,
6.9,
0,
0,
6.933,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Z",
"Segments": [
0,
0,
1,
0.3,
0,
0.6,
0,
0.9,
0,
1,
1.167,
0,
1.433,
10,
1.7,
10,
1,
1.889,
10,
2.078,
10,
2.267,
10,
1,
2.833,
10,
3.4,
0,
3.967,
0,
1,
4.322,
0,
4.678,
0,
5.033,
0,
1,
5.656,
0,
6.278,
0,
6.9,
0,
0,
6.933,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Y",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
2,
0.333,
2,
1,
0.522,
2,
0.711,
0,
0.9,
0,
1,
1.011,
0,
1.122,
8,
1.233,
8,
1,
1.389,
8,
1.544,
0,
1.7,
0,
1,
1.889,
0,
2.078,
0,
2.267,
0,
1,
2.489,
0,
2.711,
3,
2.933,
3,
1,
3.078,
3,
3.222,
0,
3.367,
0,
1,
3.567,
0,
3.767,
0,
3.967,
0,
1,
4.2,
0,
4.433,
2,
4.667,
2,
1,
4.789,
2,
4.911,
0,
5.033,
0,
1,
5.078,
0,
5.122,
8,
5.167,
8,
1,
5.244,
8,
5.322,
-2,
5.4,
-2,
1,
5.456,
-2,
5.511,
1,
5.567,
1,
1,
5.6,
1,
5.633,
0,
5.667,
0,
1,
5.789,
0,
5.911,
0,
6.033,
0,
1,
6.156,
0,
6.278,
3,
6.4,
3,
1,
6.567,
3,
6.733,
0,
6.9,
0,
0,
6.933,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BREATH",
"Segments": [
0,
0,
0,
6.933,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BOWL_LID",
"Segments": [
0,
50,
0,
6.933,
50
]
},
{
"Target": "Parameter",
"Id": "PARAM_YUGE_01",
"Segments": [
0,
0,
0,
6.933,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_YUGE_02",
"Segments": [
0,
0,
0,
6.933,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EFFECT",
"Segments": [
0,
0,
0,
6.933,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EAR_L",
"Segments": [
0,
0,
1,
1.656,
0,
3.311,
0,
4.967,
0,
1,
5.011,
0,
5.056,
-0.57,
5.1,
-0.57,
1,
5.167,
-0.57,
5.233,
0.55,
5.3,
0.55,
1,
5.367,
0.55,
5.433,
-0.24,
5.5,
-0.24,
1,
5.556,
-0.24,
5.611,
0,
5.667,
0,
0,
6.933,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EAR_R",
"Segments": [
0,
0,
1,
1.656,
0,
3.311,
0,
4.967,
0,
1,
5.011,
0,
5.056,
0.5,
5.1,
0.5,
1,
5.167,
0.5,
5.233,
-0.64,
5.3,
-0.64,
1,
5.367,
-0.64,
5.433,
0.18,
5.5,
0.18,
1,
5.556,
0.18,
5.611,
0,
5.667,
0,
0,
6.933,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_HAND_L",
"Segments": [
0,
0,
0,
6.933,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_HAND_R",
"Segments": [
0,
0,
0,
6.933,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_SWING",
"Segments": [
0,
0,
0,
6.933,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BOWL_SWING",
"Segments": [
0,
0,
0,
6.933,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_FACE_01",
"Segments": [
0,
0,
0,
6.933,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BASE_X",
"Segments": [
0,
0,
0,
6.933,
0
]
}
]
}

View File

@ -0,0 +1,783 @@
{
"Version": 3,
"Meta": {
"Duration": 6.7,
"Fps": 30.0,
"Loop": true,
"AreBeziersRestricted": true,
"CurveCount": 22,
"TotalSegmentCount": 97,
"TotalPointCount": 269,
"UserDataCount": 0,
"TotalUserDataSize": 0
},
"Curves": [
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_X",
"Segments": [
0,
0,
1,
0.378,
0,
0.756,
-14,
1.133,
-14,
1,
1.344,
-14,
1.556,
-14,
1.767,
-14,
1,
2.189,
-14,
2.611,
-14,
3.033,
-14,
1,
3.8,
-14,
4.567,
-14,
5.333,
-14,
1,
5.678,
-14,
6.022,
0,
6.367,
0,
1,
6.467,
0,
6.567,
0,
6.667,
0,
0,
6.7,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_Y",
"Segments": [
0,
0,
1,
0.378,
0,
0.756,
16,
1.133,
16,
1,
1.344,
16,
1.556,
16,
1.767,
16,
1,
2.956,
16,
4.144,
16,
5.333,
16,
1,
5.678,
16,
6.022,
0,
6.367,
0,
1,
6.467,
0,
6.567,
0,
6.667,
0,
0,
6.7,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_Z",
"Segments": [
0,
0,
1,
0.378,
0,
0.756,
0,
1.133,
0,
1,
1.344,
0,
1.556,
0,
1.767,
0,
1,
2.956,
0,
4.144,
0,
5.333,
0,
1,
5.678,
0,
6.022,
0,
6.367,
0,
1,
6.467,
0,
6.567,
0,
6.667,
0,
0,
6.7,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EYE_L_OPEN",
"Segments": [
0,
1,
1,
0.478,
1,
0.956,
1,
1.433,
1,
1,
1.544,
1,
1.656,
0,
1.767,
0,
1,
2.022,
0,
2.278,
0,
2.533,
0,
1,
2.689,
0,
2.844,
0,
3,
0,
1,
3.111,
0,
3.222,
1,
3.333,
1,
1,
4,
1,
4.667,
1,
5.333,
1,
1,
5.456,
1,
5.578,
1,
5.7,
1,
1,
5.733,
1,
5.767,
0,
5.8,
0,
1,
5.867,
0,
5.933,
1,
6,
1,
0,
6.7,
1
]
},
{
"Target": "Parameter",
"Id": "PARAM_EYE_R_OPEN",
"Segments": [
0,
1,
1,
0.478,
1,
0.956,
1,
1.433,
1,
1,
1.544,
1,
1.656,
0,
1.767,
0,
1,
2.022,
0,
2.278,
0,
2.533,
0,
1,
2.689,
0,
2.844,
0,
3,
0,
1,
3.111,
0,
3.222,
1,
3.333,
1,
1,
4,
1,
4.667,
1,
5.333,
1,
1,
5.456,
1,
5.578,
1,
5.7,
1,
1,
5.733,
1,
5.767,
0,
5.8,
0,
1,
5.867,
0,
5.933,
1,
6,
1,
0,
6.7,
1
]
},
{
"Target": "Parameter",
"Id": "PARAM_MOUTH_OPEN_Y",
"Segments": [
0,
0,
1,
1.422,
0,
2.844,
0,
4.267,
0,
1,
4.378,
0,
4.489,
0.6,
4.6,
0.6,
1,
4.733,
0.6,
4.867,
0,
5,
0,
1,
5.456,
0,
5.911,
0,
6.367,
0,
1,
6.467,
0,
6.567,
0,
6.667,
0,
0,
6.7,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_X",
"Segments": [
0,
0,
1,
0.378,
0,
0.756,
-9,
1.133,
-9,
1,
2.533,
-9,
3.933,
-9,
5.333,
-9,
1,
5.678,
-9,
6.022,
0,
6.367,
0,
1,
6.467,
0,
6.567,
0,
6.667,
0,
0,
6.7,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Z",
"Segments": [
0,
0,
1,
0.122,
0,
0.244,
0,
0.367,
0,
1,
0.622,
0,
0.878,
-2,
1.133,
-2,
1,
2.533,
-2,
3.933,
0,
5.333,
0,
1,
5.678,
0,
6.022,
0,
6.367,
0,
1,
6.467,
0,
6.567,
0,
6.667,
0,
0,
6.7,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Y",
"Segments": [
0,
0,
1,
0.122,
0,
0.244,
4,
0.367,
4,
1,
0.511,
4,
0.656,
-1,
0.8,
-1,
1,
0.856,
-1,
0.911,
1,
0.967,
1,
1,
1.044,
1,
1.122,
0,
1.2,
0,
1,
1.389,
0,
1.578,
0,
1.767,
0,
1,
1.8,
0,
1.833,
2,
1.867,
2,
1,
1.911,
2,
1.956,
0,
2,
0,
1,
2.044,
0,
2.089,
1,
2.133,
1,
1,
2.178,
1,
2.222,
0,
2.267,
0,
1,
2.622,
0,
2.978,
0,
3.333,
0,
1,
3.511,
0,
3.689,
0,
3.867,
0,
1,
4,
0,
4.133,
-1,
4.267,
-1,
1,
4.411,
-1,
4.556,
2,
4.7,
2,
1,
4.911,
2,
5.122,
1.884,
5.333,
0,
1,
5.489,
-1.388,
5.644,
-5,
5.8,
-5,
1,
5.989,
-5,
6.178,
0,
6.367,
0,
1,
6.467,
0,
6.567,
0,
6.667,
0,
0,
6.7,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BREATH",
"Segments": [
0,
0,
1,
1.778,
0,
3.556,
0,
5.333,
0,
0,
6.7,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BOWL_LID",
"Segments": [
0,
50,
1,
1.778,
50,
3.556,
50,
5.333,
50,
0,
6.7,
50
]
},
{
"Target": "Parameter",
"Id": "PARAM_YUGE_01",
"Segments": [
0,
0,
1,
1.778,
0,
3.556,
0,
5.333,
0,
0,
6.7,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_YUGE_02",
"Segments": [
0,
0,
1,
1.778,
0,
3.556,
0,
5.333,
0,
0,
6.7,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EFFECT",
"Segments": [
0,
0,
1,
1.778,
0,
3.556,
0,
5.333,
0,
0,
6.7,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EAR_L",
"Segments": [
0,
0,
1,
1.778,
0,
3.556,
0,
5.333,
0,
0,
6.7,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EAR_R",
"Segments": [
0,
0,
1,
1.778,
0,
3.556,
0,
5.333,
0,
0,
6.7,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_HAND_L",
"Segments": [
0,
0,
1,
1.778,
0,
3.556,
0,
5.333,
0,
0,
6.7,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_HAND_R",
"Segments": [
0,
0,
1,
1.778,
0,
3.556,
0,
5.333,
0,
0,
6.7,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_SWING",
"Segments": [
0,
0,
0,
6.7,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BOWL_SWING",
"Segments": [
0,
0,
0,
6.7,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_FACE_01",
"Segments": [
0,
0,
1,
1.778,
0,
3.556,
0,
5.333,
0,
0,
6.7,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BASE_X",
"Segments": [
0,
0,
0,
6.7,
0
]
}
]
}

View File

@ -0,0 +1,636 @@
{
"Version": 3,
"Meta": {
"Duration": 10.367,
"Fps": 30.0,
"Loop": true,
"AreBeziersRestricted": true,
"CurveCount": 22,
"TotalSegmentCount": 76,
"TotalPointCount": 206,
"UserDataCount": 0,
"TotalUserDataSize": 0
},
"Curves": [
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_X",
"Segments": [
0,
0,
1,
2.533,
0,
5.067,
-1,
7.6,
-1,
1,
8.511,
-1,
9.422,
0,
10.333,
0,
0,
10.367,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_Y",
"Segments": [
0,
0,
1,
0.333,
0,
0.667,
12,
1,
12,
1,
1.6,
12,
2.2,
-1.589,
2.8,
-1.589,
1,
3.178,
-1.589,
3.556,
12,
3.933,
12,
1,
4.656,
12,
5.378,
-1.589,
6.1,
-1.589,
1,
6.489,
-1.589,
6.878,
13.71,
7.267,
13.71,
1,
7.378,
13.71,
7.489,
-23,
7.6,
-23,
1,
7.678,
-23,
7.756,
-7.683,
7.833,
-7.683,
1,
7.933,
-7.683,
8.033,
-10.837,
8.133,
-10.837,
1,
8.867,
-10.837,
9.6,
0,
10.333,
0,
0,
10.367,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_Z",
"Segments": [
0,
-8,
1,
0.333,
-8,
0.667,
9,
1,
9,
1,
1.6,
9,
2.2,
-11,
2.8,
-11,
1,
3.178,
-11,
3.556,
9,
3.933,
9,
1,
4.656,
9,
5.378,
-11,
6.1,
-11,
1,
6.489,
-11,
6.878,
5,
7.267,
5,
1,
7.378,
5,
7.489,
-9,
7.6,
-9,
1,
7.678,
-9,
7.756,
-1,
7.833,
-1,
1,
7.933,
-1,
8.033,
-7,
8.133,
-7,
1,
8.478,
-7,
8.822,
2,
9.167,
2,
1,
9.556,
2,
9.944,
-8,
10.333,
-8,
0,
10.367,
-8
]
},
{
"Target": "Parameter",
"Id": "PARAM_EYE_L_OPEN",
"Segments": [
0,
0,
1,
3.444,
0,
6.889,
0,
10.333,
0,
0,
10.367,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EYE_R_OPEN",
"Segments": [
0,
0,
1,
3.444,
0,
6.889,
0,
10.333,
0,
0,
10.367,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_MOUTH_OPEN_Y",
"Segments": [
0,
0,
1,
0.333,
0,
0.667,
0.42,
1,
0.42,
1,
1.6,
0.42,
2.2,
0,
2.8,
0,
1,
3.178,
0,
3.556,
0.42,
3.933,
0.42,
1,
4.656,
0.42,
5.378,
0,
6.1,
0,
1,
6.489,
0,
6.878,
0.35,
7.267,
0.35,
1,
7.6,
0.35,
7.933,
0,
8.267,
0,
1,
8.567,
0,
8.867,
0.34,
9.167,
0.34,
1,
9.556,
0.34,
9.944,
0,
10.333,
0,
0,
10.367,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_X",
"Segments": [
0,
0,
1,
3.444,
0,
6.889,
0,
10.333,
0,
0,
10.367,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Z",
"Segments": [
0,
0,
1,
2.422,
0,
4.844,
0,
7.267,
0,
1,
7.378,
0,
7.489,
-6,
7.6,
-6,
1,
7.778,
-6,
7.956,
-6,
8.133,
-6,
1,
8.867,
-6,
9.6,
0,
10.333,
0,
0,
10.367,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Y",
"Segments": [
0,
0,
1,
3.444,
0,
6.889,
0,
10.333,
0,
0,
10.367,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BREATH",
"Segments": [
0,
0,
1,
0.333,
0,
0.667,
0.64,
1,
0.64,
1,
1.6,
0.64,
2.2,
0,
2.8,
0,
1,
3.178,
0,
3.556,
0.73,
3.933,
0.73,
1,
4.656,
0.73,
5.378,
0,
6.1,
0,
1,
6.489,
0,
6.878,
0.73,
7.267,
0.73,
1,
7.556,
0.73,
7.844,
0,
8.133,
0,
1,
8.478,
0,
8.822,
0.39,
9.167,
0.39,
1,
9.556,
0.39,
9.944,
0,
10.333,
0,
0,
10.367,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BOWL_LID",
"Segments": [
0,
50,
1,
3.444,
50,
6.889,
50,
10.333,
50,
0,
10.367,
50
]
},
{
"Target": "Parameter",
"Id": "PARAM_YUGE_01",
"Segments": [
0,
0,
1,
3.444,
0,
6.889,
0,
10.333,
0,
0,
10.367,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_YUGE_02",
"Segments": [
0,
0,
1,
3.444,
0,
6.889,
0,
10.333,
0,
0,
10.367,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EFFECT",
"Segments": [
0,
0,
1,
3.444,
0,
6.889,
0,
10.333,
0,
0,
10.367,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EAR_L",
"Segments": [
0,
0,
1,
3.444,
0,
6.889,
0,
10.333,
0,
0,
10.367,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EAR_R",
"Segments": [
0,
0,
1,
3.444,
0,
6.889,
0,
10.333,
0,
0,
10.367,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_HAND_L",
"Segments": [
0,
0,
1,
3.444,
0,
6.889,
0,
10.333,
0,
0,
10.367,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_HAND_R",
"Segments": [
0,
0,
1,
3.444,
0,
6.889,
0,
10.333,
0,
0,
10.367,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_SWING",
"Segments": [
0,
0,
0,
10.367,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BOWL_SWING",
"Segments": [
0,
0,
0,
10.367,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_FACE_01",
"Segments": [
0,
0,
1,
3.444,
0,
6.889,
0,
10.333,
0,
0,
10.367,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BASE_X",
"Segments": [
0,
0,
0,
10.367,
0
]
}
]
}

View File

@ -0,0 +1,748 @@
{
"Version": 3,
"Meta": {
"Duration": 2.5,
"Fps": 30.0,
"Loop": true,
"AreBeziersRestricted": true,
"CurveCount": 22,
"TotalSegmentCount": 92,
"TotalPointCount": 254,
"UserDataCount": 0,
"TotalUserDataSize": 0
},
"Curves": [
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_X",
"Segments": [
0,
-9,
1,
0.044,
-9,
0.089,
-7.426,
0.133,
0,
1,
0.2,
11.14,
0.267,
20,
0.333,
20,
1,
0.456,
20,
0.578,
-18,
0.7,
-18,
1,
0.822,
-18,
0.944,
16,
1.067,
16,
1,
1.178,
16,
1.289,
-8,
1.4,
-8,
1,
1.489,
-8,
1.578,
0,
1.667,
0,
1,
1.933,
0,
2.2,
0,
2.467,
0,
0,
2.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_Y",
"Segments": [
0,
14,
1,
0.044,
14,
0.089,
30,
0.133,
30,
1,
0.2,
30,
0.267,
30,
0.333,
30,
1,
0.456,
30,
0.578,
23.223,
0.7,
13,
1,
0.822,
2.777,
0.944,
-1,
1.067,
-1,
1,
1.178,
-1,
1.289,
3,
1.4,
3,
1,
1.489,
3,
1.578,
0,
1.667,
0,
1,
1.933,
0,
2.2,
0,
2.467,
0,
0,
2.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_Z",
"Segments": [
0,
0,
1,
0.133,
0,
0.267,
30,
0.4,
30,
1,
0.522,
30,
0.644,
-25,
0.767,
-25,
1,
0.889,
-25,
1.011,
26,
1.133,
26,
1,
1.222,
26,
1.311,
-10,
1.4,
-10,
1,
1.544,
-10,
1.689,
0,
1.833,
0,
1,
2.044,
0,
2.256,
0,
2.467,
0,
0,
2.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EYE_L_OPEN",
"Segments": [
0,
0,
1,
0.378,
0,
0.756,
0,
1.133,
0,
1,
1.311,
0,
1.489,
1,
1.667,
1,
1,
1.933,
1,
2.2,
1,
2.467,
1,
0,
2.5,
1
]
},
{
"Target": "Parameter",
"Id": "PARAM_EYE_R_OPEN",
"Segments": [
0,
0,
1,
0.378,
0,
0.756,
0,
1.133,
0,
1,
1.311,
0,
1.489,
1,
1.667,
1,
1,
1.933,
1,
2.2,
1,
2.467,
1,
0,
2.5,
1
]
},
{
"Target": "Parameter",
"Id": "PARAM_MOUTH_OPEN_Y",
"Segments": [
0,
1,
1,
0.822,
1,
1.644,
1,
2.467,
1,
0,
2.5,
1
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_X",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
4,
0.333,
4,
1,
0.456,
4,
0.578,
-4,
0.7,
-4,
1,
0.822,
-4,
0.944,
3,
1.067,
3,
1,
1.178,
3,
1.289,
-1,
1.4,
-1,
1,
1.489,
-1,
1.578,
0,
1.667,
0,
1,
1.767,
0,
1.867,
0,
1.967,
0,
1,
2.133,
0,
2.3,
0,
2.467,
0,
0,
2.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Z",
"Segments": [
0,
0,
1,
0.133,
0,
0.267,
10,
0.4,
10,
1,
0.522,
10,
0.644,
-10,
0.767,
-10,
1,
0.889,
-10,
1.011,
5,
1.133,
5,
1,
1.222,
5,
1.311,
-3,
1.4,
-3,
1,
1.511,
-3,
1.622,
1,
1.733,
1,
1,
1.978,
1,
2.222,
0,
2.467,
0,
0,
2.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Y",
"Segments": [
0,
0,
1,
0.578,
0,
1.156,
0,
1.733,
0,
1,
1.978,
0,
2.222,
0,
2.467,
0,
0,
2.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BREATH",
"Segments": [
0,
0,
1,
0.822,
0,
1.644,
0,
2.467,
0,
0,
2.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BOWL_LID",
"Segments": [
0,
50,
1,
0.822,
50,
1.644,
50,
2.467,
50,
0,
2.5,
50
]
},
{
"Target": "Parameter",
"Id": "PARAM_YUGE_01",
"Segments": [
0,
0,
1,
0.822,
0,
1.644,
0,
2.467,
0,
0,
2.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_YUGE_02",
"Segments": [
0,
0,
1,
0.822,
0,
1.644,
0,
2.467,
0,
0,
2.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EFFECT",
"Segments": [
0,
0,
1,
0.822,
0,
1.644,
0,
2.467,
0,
0,
2.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EAR_L",
"Segments": [
0,
0,
1,
0.044,
0,
0.089,
-1,
0.133,
-1,
1,
0.222,
-1,
0.311,
1,
0.4,
1,
1,
0.511,
1,
0.622,
-1,
0.733,
-1,
1,
0.811,
-1,
0.889,
1,
0.967,
1,
1,
1.067,
1,
1.167,
-1,
1.267,
-1,
1,
1.367,
-1,
1.467,
1,
1.567,
1,
1,
1.667,
1,
1.767,
-0.35,
1.867,
-0.35,
1,
1.922,
-0.35,
1.978,
0.08,
2.033,
0.08,
1,
2.1,
0.08,
2.167,
-0.08,
2.233,
-0.08,
1,
2.311,
-0.08,
2.389,
0,
2.467,
0,
0,
2.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EAR_R",
"Segments": [
0,
0,
1,
0.044,
0,
0.089,
-0.96,
0.133,
-0.96,
1,
0.222,
-0.96,
0.311,
1,
0.4,
1,
1,
0.511,
1,
0.622,
-1,
0.733,
-1,
1,
0.811,
-1,
0.889,
1,
0.967,
1,
1,
1.067,
1,
1.167,
-1,
1.267,
-1,
1,
1.367,
-1,
1.467,
1,
1.567,
1,
1,
1.667,
1,
1.767,
-0.32,
1.867,
-0.32,
1,
1.922,
-0.32,
1.978,
0.07,
2.033,
0.07,
1,
2.1,
0.07,
2.167,
-0.08,
2.233,
-0.08,
1,
2.311,
-0.08,
2.389,
0,
2.467,
0,
0,
2.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_HAND_L",
"Segments": [
0,
0,
1,
0.822,
0,
1.644,
0,
2.467,
0,
0,
2.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_HAND_R",
"Segments": [
0,
0,
1,
0.822,
0,
1.644,
0,
2.467,
0,
0,
2.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_SWING",
"Segments": [
0,
0,
0,
2.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BOWL_SWING",
"Segments": [
0,
0,
0,
2.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_FACE_01",
"Segments": [
0,
0,
1,
0.822,
0,
1.644,
0,
2.467,
0,
0,
2.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BASE_X",
"Segments": [
0,
0,
0,
2.5,
0
]
}
]
}

View File

@ -0,0 +1,867 @@
{
"Version": 3,
"Meta": {
"Duration": 2.533,
"Fps": 30.0,
"Loop": true,
"AreBeziersRestricted": true,
"CurveCount": 22,
"TotalSegmentCount": 109,
"TotalPointCount": 305,
"UserDataCount": 0,
"TotalUserDataSize": 0
},
"Curves": [
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_X",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
0,
0.333,
0,
1,
0.411,
0,
0.489,
0,
0.567,
0,
1,
0.656,
0,
0.744,
0,
0.833,
0,
1,
1.389,
0,
1.944,
0,
2.5,
0,
0,
2.533,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_Y",
"Segments": [
0,
30,
1,
0.111,
30,
0.222,
30,
0.333,
30,
1,
0.411,
30,
0.489,
30,
0.567,
30,
1,
0.656,
30,
0.744,
30,
0.833,
30,
1,
1.389,
30,
1.944,
30,
2.5,
30,
0,
2.533,
30
]
},
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_Z",
"Segments": [
0,
0,
1,
0.033,
0,
0.067,
-30,
0.1,
-30,
1,
0.211,
-30,
0.322,
30,
0.433,
30,
1,
0.511,
30,
0.589,
-11,
0.667,
-11,
1,
0.756,
-11,
0.844,
30,
0.933,
30,
1,
1.011,
30,
1.089,
-14,
1.167,
-14,
1,
1.256,
-14,
1.344,
9,
1.433,
9,
1,
1.522,
9,
1.611,
-4,
1.7,
-4,
1,
1.8,
-4,
1.9,
0,
2,
0,
1,
2.167,
0,
2.333,
0,
2.5,
0,
0,
2.533,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EYE_L_OPEN",
"Segments": [
0,
0,
1,
0.189,
0,
0.378,
0,
0.567,
0,
1,
0.844,
0,
1.122,
0,
1.4,
0,
1,
1.456,
0,
1.511,
1,
1.567,
1,
1,
1.878,
1,
2.189,
1,
2.5,
1,
0,
2.533,
1
]
},
{
"Target": "Parameter",
"Id": "PARAM_EYE_R_OPEN",
"Segments": [
0,
0,
1,
0.189,
0,
0.378,
0,
0.567,
0,
1,
0.844,
0,
1.122,
0,
1.4,
0,
1,
1.456,
0,
1.511,
1,
1.567,
1,
1,
1.878,
1,
2.189,
1,
2.5,
1,
0,
2.533,
1
]
},
{
"Target": "Parameter",
"Id": "PARAM_MOUTH_OPEN_Y",
"Segments": [
0,
0,
1,
0.189,
0,
0.378,
0,
0.567,
0,
1,
0.811,
0,
1.056,
0,
1.3,
0,
1,
1.333,
0,
1.367,
1,
1.4,
1,
1,
1.444,
1,
1.489,
0,
1.533,
0,
1,
1.856,
0,
2.178,
0,
2.5,
0,
0,
2.533,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_X",
"Segments": [
0,
0,
1,
0.189,
0,
0.378,
0,
0.567,
0,
1,
1.211,
0,
1.856,
0,
2.5,
0,
0,
2.533,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Z",
"Segments": [
0,
-10,
1,
0.111,
-10,
0.222,
10,
0.333,
10,
1,
0.411,
10,
0.489,
-10,
0.567,
-10,
1,
0.656,
-10,
0.744,
10,
0.833,
10,
1,
0.956,
10,
1.078,
-3,
1.2,
-3,
1,
1.333,
-3,
1.467,
-3,
1.6,
-3,
1,
1.722,
-3,
1.844,
0,
1.967,
0,
1,
2.144,
0,
2.322,
0,
2.5,
0,
0,
2.533,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Y",
"Segments": [
0,
10,
1,
0.067,
10,
0.133,
-2,
0.2,
-2,
1,
0.244,
-2,
0.289,
-2.18,
0.333,
0,
1,
0.411,
3.815,
0.489,
10,
0.567,
10,
1,
0.622,
10,
0.678,
-2,
0.733,
-2,
1,
0.767,
-2,
0.8,
-1.988,
0.833,
0,
1,
0.922,
5.303,
1.011,
10,
1.1,
10,
1,
1.167,
10,
1.233,
-2,
1.3,
-2,
1,
1.333,
-2,
1.367,
2,
1.4,
2,
1,
1.444,
2,
1.489,
0,
1.533,
0,
1,
1.856,
0,
2.178,
0,
2.5,
0,
0,
2.533,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BREATH",
"Segments": [
0,
0,
1,
0.833,
0,
1.667,
0,
2.5,
0,
0,
2.533,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BOWL_LID",
"Segments": [
0,
50,
1,
0.833,
50,
1.667,
50,
2.5,
50,
0,
2.533,
50
]
},
{
"Target": "Parameter",
"Id": "PARAM_YUGE_01",
"Segments": [
0,
0,
1,
0.833,
0,
1.667,
0,
2.5,
0,
0,
2.533,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_YUGE_02",
"Segments": [
0,
0,
1,
0.833,
0,
1.667,
0,
2.5,
0,
0,
2.533,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EFFECT",
"Segments": [
0,
0,
1,
0.833,
0,
1.667,
0,
2.5,
0,
0,
2.533,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EAR_L",
"Segments": [
0,
0,
1,
0.044,
0,
0.089,
0.65,
0.133,
0.65,
1,
0.211,
0.65,
0.289,
-0.76,
0.367,
-0.76,
1,
0.467,
-0.76,
0.567,
1,
0.667,
1,
1,
0.778,
1,
0.889,
-1,
1,
-1,
1,
1.089,
-1,
1.178,
1,
1.267,
1,
1,
1.333,
1,
1.4,
0,
1.467,
0,
1,
1.522,
0,
1.578,
1,
1.633,
1,
1,
1.711,
1,
1.789,
-0.96,
1.867,
-0.96,
1,
1.922,
-0.96,
1.978,
0.17,
2.033,
0.17,
1,
2.1,
0.17,
2.167,
0,
2.233,
0,
1,
2.322,
0,
2.411,
0,
2.5,
0,
0,
2.533,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EAR_R",
"Segments": [
0,
0,
1,
0.044,
0,
0.089,
0.81,
0.133,
0.81,
1,
0.211,
0.81,
0.289,
-1,
0.367,
-1,
1,
0.467,
-1,
0.567,
1,
0.667,
1,
1,
0.778,
1,
0.889,
-1,
1,
-1,
1,
1.089,
-1,
1.178,
1,
1.267,
1,
1,
1.333,
1,
1.4,
0.721,
1.467,
0,
1,
1.522,
-0.601,
1.578,
-1,
1.633,
-1,
1,
1.711,
-1,
1.789,
1,
1.867,
1,
1,
1.922,
1,
1.978,
-0.16,
2.033,
-0.16,
1,
2.1,
-0.16,
2.167,
0,
2.233,
0,
1,
2.322,
0,
2.411,
0,
2.5,
0,
0,
2.533,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_HAND_L",
"Segments": [
0,
0,
1,
0.189,
0,
0.378,
0,
0.567,
0,
1,
0.822,
0,
1.078,
0,
1.333,
0,
1,
1.378,
0,
1.422,
1,
1.467,
1,
1,
1.5,
1,
1.533,
0,
1.567,
0,
1,
1.878,
0,
2.189,
0,
2.5,
0,
0,
2.533,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_HAND_R",
"Segments": [
0,
0,
1,
0.189,
0,
0.378,
0,
0.567,
0,
1,
0.822,
0,
1.078,
0,
1.333,
0,
1,
1.378,
0,
1.422,
1,
1.467,
1,
1,
1.5,
1,
1.533,
0,
1.567,
0,
1,
1.878,
0,
2.189,
0,
2.5,
0,
0,
2.533,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_SWING",
"Segments": [
0,
0,
0,
2.533,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BOWL_SWING",
"Segments": [
0,
0,
0,
2.533,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_FACE_01",
"Segments": [
0,
0,
1,
0.833,
0,
1.667,
0,
2.5,
0,
0,
2.533,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BASE_X",
"Segments": [
0,
0,
0,
2.533,
0
]
}
]
}

View File

@ -0,0 +1,594 @@
{
"Version": 3,
"Meta": {
"Duration": 2,
"Fps": 30.0,
"Loop": true,
"AreBeziersRestricted": true,
"CurveCount": 22,
"TotalSegmentCount": 70,
"TotalPointCount": 188,
"UserDataCount": 0,
"TotalUserDataSize": 0
},
"Curves": [
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_X",
"Segments": [
0,
0,
1,
0.122,
0,
0.244,
0,
0.367,
0,
1,
0.622,
0,
0.878,
0,
1.133,
0,
1,
1.411,
0,
1.689,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_Y",
"Segments": [
0,
0,
1,
0.122,
0,
0.244,
0,
0.367,
0,
1,
0.422,
0,
0.478,
30,
0.533,
30,
1,
0.633,
30,
0.733,
0,
0.833,
0,
1,
0.933,
0,
1.033,
0,
1.133,
0,
1,
1.411,
0,
1.689,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_Z",
"Segments": [
0,
0,
1,
0.122,
0,
0.244,
0,
0.367,
0,
1,
0.522,
0,
0.678,
30,
0.833,
30,
1,
0.933,
30,
1.033,
30,
1.133,
30,
1,
1.411,
30,
1.689,
30,
1.967,
30,
0,
2,
30
]
},
{
"Target": "Parameter",
"Id": "PARAM_EYE_L_OPEN",
"Segments": [
0,
1,
1,
0.656,
1,
1.311,
1,
1.967,
1,
0,
2,
1
]
},
{
"Target": "Parameter",
"Id": "PARAM_EYE_R_OPEN",
"Segments": [
0,
1,
1,
0.656,
1,
1.311,
1,
1.967,
1,
0,
2,
1
]
},
{
"Target": "Parameter",
"Id": "PARAM_MOUTH_OPEN_Y",
"Segments": [
0,
1,
1,
0.656,
1,
1.311,
1,
1.967,
1,
0,
2,
1
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_X",
"Segments": [
0,
0,
1,
0.122,
0,
0.244,
0,
0.367,
0,
1,
0.522,
0,
0.678,
2,
0.833,
2,
1,
0.933,
2,
1.033,
2,
1.133,
2,
1,
1.411,
2,
1.689,
2,
1.967,
2,
0,
2,
2
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Z",
"Segments": [
0,
0,
1,
0.378,
0,
0.756,
0,
1.133,
0,
1,
1.411,
0,
1.689,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Y",
"Segments": [
0,
0,
1,
0.122,
0,
0.244,
0,
0.367,
0,
1,
0.422,
0,
0.478,
6,
0.533,
6,
1,
0.633,
6,
0.733,
0,
0.833,
0,
1,
0.933,
0,
1.033,
0,
1.133,
0,
1,
1.411,
0,
1.689,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BREATH",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BOWL_LID",
"Segments": [
0,
50,
1,
0.656,
50,
1.311,
50,
1.967,
50,
0,
2,
50
]
},
{
"Target": "Parameter",
"Id": "PARAM_YUGE_01",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_YUGE_02",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EFFECT",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EAR_L",
"Segments": [
0,
0,
1,
0.122,
0,
0.244,
0,
0.367,
0,
1,
0.444,
0,
0.522,
1,
0.6,
1,
1,
0.667,
1,
0.733,
-1,
0.8,
-1,
1,
0.856,
-1,
0.911,
0.31,
0.967,
0.31,
1,
1.022,
0.31,
1.078,
-0.2,
1.133,
-0.2,
1,
1.2,
-0.2,
1.267,
0,
1.333,
0,
1,
1.544,
0,
1.756,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EAR_R",
"Segments": [
0,
0,
1,
0.122,
0,
0.244,
0,
0.367,
0,
1,
0.444,
0,
0.522,
-1,
0.6,
-1,
1,
0.667,
-1,
0.733,
1,
0.8,
1,
1,
0.856,
1,
0.911,
-0.34,
0.967,
-0.34,
1,
1.022,
-0.34,
1.078,
0.16,
1.133,
0.16,
1,
1.2,
0.16,
1.267,
0,
1.333,
0,
1,
1.544,
0,
1.756,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_HAND_L",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_HAND_R",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_SWING",
"Segments": [
0,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BOWL_SWING",
"Segments": [
0,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_FACE_01",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BASE_X",
"Segments": [
0,
0,
0,
2,
0
]
}
]
}

View File

@ -0,0 +1,699 @@
{
"Version": 3,
"Meta": {
"Duration": 2,
"Fps": 30.0,
"Loop": true,
"AreBeziersRestricted": true,
"CurveCount": 22,
"TotalSegmentCount": 85,
"TotalPointCount": 233,
"UserDataCount": 0,
"TotalUserDataSize": 0
},
"Curves": [
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_X",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
0,
0.333,
0,
1,
0.389,
0,
0.444,
0,
0.5,
0,
1,
0.589,
0,
0.678,
0,
0.767,
0,
1,
0.878,
0,
0.989,
0,
1.1,
0,
1,
1.389,
0,
1.678,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_Y",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
0,
0.333,
0,
1,
0.389,
0,
0.444,
25,
0.5,
25,
1,
0.589,
25,
0.678,
0,
0.767,
0,
1,
0.878,
0,
0.989,
0,
1.1,
0,
1,
1.389,
0,
1.678,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_Z",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
0,
0.333,
0,
1,
0.389,
0,
0.444,
7,
0.5,
7,
1,
0.589,
7,
0.678,
0,
0.767,
0,
1,
0.878,
0,
0.989,
0,
1.1,
0,
1,
1.389,
0,
1.678,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EYE_L_OPEN",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
0,
0.333,
0,
1,
0.589,
0,
0.844,
0,
1.1,
0,
1,
1.389,
0,
1.678,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EYE_R_OPEN",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
0,
0.333,
0,
1,
0.589,
0,
0.844,
0,
1.1,
0,
1,
1.389,
0,
1.678,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_MOUTH_OPEN_Y",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_X",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Z",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
0,
0.333,
0,
1,
0.389,
0,
0.444,
7,
0.5,
7,
1,
0.589,
7,
0.678,
-3,
0.767,
-3,
1,
0.833,
-3,
0.9,
1,
0.967,
1,
1,
1.011,
1,
1.056,
-1,
1.1,
-1,
1,
1.178,
-1,
1.256,
0,
1.333,
0,
1,
1.544,
0,
1.756,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Y",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
0,
0.333,
0,
1,
0.389,
0,
0.444,
8,
0.5,
8,
1,
0.589,
8,
0.678,
-3,
0.767,
-3,
1,
0.833,
-3,
0.9,
1,
0.967,
1,
1,
1.011,
1,
1.056,
-1,
1.1,
-1,
1,
1.178,
-1,
1.256,
0,
1.333,
0,
1,
1.544,
0,
1.756,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BREATH",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BOWL_LID",
"Segments": [
0,
50,
1,
0.656,
50,
1.311,
50,
1.967,
50,
0,
2,
50
]
},
{
"Target": "Parameter",
"Id": "PARAM_YUGE_01",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_YUGE_02",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EFFECT",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EAR_L",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
0,
0.333,
0,
1,
0.422,
0,
0.511,
1,
0.6,
1,
1,
0.678,
1,
0.756,
-1,
0.833,
-1,
1,
0.911,
-1,
0.989,
0.67,
1.067,
0.67,
1,
1.122,
0.67,
1.178,
-0.48,
1.233,
-0.48,
1,
1.3,
-0.48,
1.367,
0,
1.433,
0,
1,
1.611,
0,
1.789,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EAR_R",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
0,
0.333,
0,
1,
0.422,
0,
0.511,
-1,
0.6,
-1,
1,
0.678,
-1,
0.756,
1,
0.833,
1,
1,
0.911,
1,
0.989,
-0.53,
1.067,
-0.53,
1,
1.122,
-0.53,
1.178,
0.47,
1.233,
0.47,
1,
1.3,
0.47,
1.367,
0,
1.433,
0,
1,
1.611,
0,
1.789,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_HAND_L",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
0,
0.333,
0,
1,
0.589,
0,
0.844,
0,
1.1,
0,
1,
1.389,
0,
1.678,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_HAND_R",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
0,
0.333,
0,
1,
0.589,
0,
0.844,
0,
1.1,
0,
1,
1.389,
0,
1.678,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_SWING",
"Segments": [
0,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BOWL_SWING",
"Segments": [
0,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_FACE_01",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BASE_X",
"Segments": [
0,
0,
0,
2,
0
]
}
]
}

View File

@ -0,0 +1,643 @@
{
"Version": 3,
"Meta": {
"Duration": 2,
"Fps": 30.0,
"Loop": true,
"AreBeziersRestricted": true,
"CurveCount": 22,
"TotalSegmentCount": 77,
"TotalPointCount": 209,
"UserDataCount": 0,
"TotalUserDataSize": 0
},
"Curves": [
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_X",
"Segments": [
0,
-3,
1,
0.133,
-3,
0.267,
-3,
0.4,
-3,
1,
0.467,
-3,
0.533,
17,
0.6,
17,
1,
0.656,
17,
0.711,
-22,
0.767,
-22,
1,
0.833,
-22,
0.9,
9,
0.967,
9,
1,
1.033,
9,
1.1,
0,
1.167,
0,
1,
1.433,
0,
1.7,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_Y",
"Segments": [
0,
15,
1,
0.133,
15,
0.267,
15,
0.4,
15,
1,
0.467,
15,
0.533,
17,
0.6,
17,
1,
0.789,
17,
0.978,
0,
1.167,
0,
1,
1.433,
0,
1.7,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_Z",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EYE_L_OPEN",
"Segments": [
0,
0,
1,
0.133,
0,
0.267,
0,
0.4,
0,
1,
0.922,
0,
1.444,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EYE_R_OPEN",
"Segments": [
0,
0,
1,
0.133,
0,
0.267,
0,
0.4,
0,
1,
0.922,
0,
1.444,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_MOUTH_OPEN_Y",
"Segments": [
0,
1,
1,
0.656,
1,
1.311,
1,
1.967,
1,
0,
2,
1
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_X",
"Segments": [
0,
0,
1,
0.133,
0,
0.267,
0,
0.4,
0,
1,
0.467,
0,
0.533,
-3,
0.6,
-3,
1,
0.656,
-3,
0.711,
2,
0.767,
2,
1,
0.833,
2,
0.9,
-1,
0.967,
-1,
1,
1.033,
-1,
1.1,
0,
1.167,
0,
1,
1.433,
0,
1.7,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Z",
"Segments": [
0,
0,
1,
0.133,
0,
0.267,
0,
0.4,
0,
1,
0.467,
0,
0.533,
7,
0.6,
7,
1,
0.656,
7,
0.711,
-2,
0.767,
-2,
1,
0.833,
-2,
0.9,
1,
0.967,
1,
1,
1.033,
1,
1.1,
0,
1.167,
0,
1,
1.433,
0,
1.7,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Y",
"Segments": [
0,
0,
1,
0.133,
0,
0.267,
0,
0.4,
0,
1,
0.656,
0,
0.911,
-3,
1.167,
-3,
1,
1.433,
-3,
1.7,
-3,
1.967,
-3,
0,
2,
-3
]
},
{
"Target": "Parameter",
"Id": "PARAM_BREATH",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BOWL_LID",
"Segments": [
0,
50,
1,
0.656,
50,
1.311,
50,
1.967,
50,
0,
2,
50
]
},
{
"Target": "Parameter",
"Id": "PARAM_YUGE_01",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_YUGE_02",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EFFECT",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EAR_L",
"Segments": [
0,
0,
1,
0.189,
0,
0.378,
0,
0.567,
0,
1,
0.611,
0,
0.656,
1,
0.7,
1,
1,
0.767,
1,
0.833,
-0.94,
0.9,
-0.94,
1,
0.956,
-0.94,
1.011,
0.49,
1.067,
0.49,
1,
1.144,
0.49,
1.222,
-0.4,
1.3,
-0.4,
1,
1.367,
-0.4,
1.433,
0,
1.5,
0,
1,
1.656,
0,
1.811,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EAR_R",
"Segments": [
0,
0,
1,
0.189,
0,
0.378,
0,
0.567,
0,
1,
0.611,
0,
0.656,
-1,
0.7,
-1,
1,
0.767,
-1,
0.833,
1,
0.9,
1,
1,
0.956,
1,
1.011,
-0.43,
1.067,
-0.43,
1,
1.144,
-0.43,
1.222,
0.34,
1.3,
0.34,
1,
1.367,
0.34,
1.433,
0,
1.5,
0,
1,
1.656,
0,
1.811,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_HAND_L",
"Segments": [
0,
0,
1,
0.133,
0,
0.267,
0,
0.4,
0,
1,
0.922,
0,
1.444,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_HAND_R",
"Segments": [
0,
0,
1,
0.133,
0,
0.267,
0,
0.4,
0,
1,
0.922,
0,
1.444,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_SWING",
"Segments": [
0,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BOWL_SWING",
"Segments": [
0,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_FACE_01",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BASE_X",
"Segments": [
0,
0,
0,
2,
0
]
}
]
}

View File

@ -0,0 +1,615 @@
{
"Version": 3,
"Meta": {
"Duration": 2,
"Fps": 30.0,
"Loop": true,
"AreBeziersRestricted": true,
"CurveCount": 22,
"TotalSegmentCount": 73,
"TotalPointCount": 197,
"UserDataCount": 0,
"TotalUserDataSize": 0
},
"Curves": [
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_X",
"Segments": [
0,
0,
1,
0.144,
0,
0.289,
0,
0.433,
0,
1,
0.5,
0,
0.567,
0,
0.633,
0,
1,
0.844,
0,
1.056,
0,
1.267,
0,
1,
1.5,
0,
1.733,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_Y",
"Segments": [
0,
0,
1,
0.144,
0,
0.289,
0,
0.433,
0,
1,
0.5,
0,
0.567,
-11,
0.633,
-11,
1,
0.733,
-11,
0.833,
10,
0.933,
10,
1,
1.044,
10,
1.156,
0,
1.267,
0,
1,
1.5,
0,
1.733,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_Z",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EYE_L_OPEN",
"Segments": [
0,
0,
1,
0.144,
0,
0.289,
0,
0.433,
0,
1,
0.711,
0,
0.989,
0,
1.267,
0,
1,
1.5,
0,
1.733,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EYE_R_OPEN",
"Segments": [
0,
0,
1,
0.144,
0,
0.289,
0,
0.433,
0,
1,
0.711,
0,
0.989,
0,
1.267,
0,
1,
1.5,
0,
1.733,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_MOUTH_OPEN_Y",
"Segments": [
0,
0,
1,
0.144,
0,
0.289,
0,
0.433,
0,
1,
0.6,
0,
0.767,
0,
0.933,
0,
1,
1.044,
0,
1.156,
0,
1.267,
0,
1,
1.5,
0,
1.733,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_X",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Z",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Y",
"Segments": [
0,
0,
1,
0.144,
0,
0.289,
0,
0.433,
0,
1,
0.5,
0,
0.567,
-6,
0.633,
-6,
1,
0.733,
-6,
0.833,
4,
0.933,
4,
1,
1.044,
4,
1.156,
0,
1.267,
0,
1,
1.5,
0,
1.733,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BREATH",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BOWL_LID",
"Segments": [
0,
50,
1,
0.656,
50,
1.311,
50,
1.967,
50,
0,
2,
50
]
},
{
"Target": "Parameter",
"Id": "PARAM_YUGE_01",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_YUGE_02",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EFFECT",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EAR_L",
"Segments": [
0,
0,
1,
0.122,
0,
0.244,
0,
0.367,
0,
1,
0.444,
0,
0.522,
1,
0.6,
1,
1,
0.678,
1,
0.756,
-1,
0.833,
-1,
1,
0.911,
-1,
0.989,
0.8,
1.067,
0.8,
1,
1.122,
0.8,
1.178,
-0.13,
1.233,
-0.13,
1,
1.289,
-0.13,
1.344,
0,
1.4,
0,
1,
1.589,
0,
1.778,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EAR_R",
"Segments": [
0,
0,
1,
0.122,
0,
0.244,
0,
0.367,
0,
1,
0.444,
0,
0.522,
-1,
0.6,
-1,
1,
0.678,
-1,
0.756,
1,
0.833,
1,
1,
0.911,
1,
0.989,
-0.81,
1.067,
-0.81,
1,
1.122,
-0.81,
1.178,
0.11,
1.233,
0.11,
1,
1.289,
0.11,
1.344,
0,
1.4,
0,
1,
1.589,
0,
1.778,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_HAND_L",
"Segments": [
0,
0,
1,
0.211,
0,
0.422,
0,
0.633,
0,
1,
1.078,
0,
1.522,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_HAND_R",
"Segments": [
0,
0,
1,
0.211,
0,
0.422,
0,
0.633,
0,
1,
1.078,
0,
1.522,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_SWING",
"Segments": [
0,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BOWL_SWING",
"Segments": [
0,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_FACE_01",
"Segments": [
0,
0,
1,
0.656,
0,
1.311,
0,
1.967,
0,
0,
2,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BASE_X",
"Segments": [
0,
0,
0,
2,
0
]
}
]
}

View File

@ -0,0 +1,510 @@
{
"Version": 3,
"Meta": {
"Duration": 1.5,
"Fps": 30.0,
"Loop": true,
"AreBeziersRestricted": true,
"CurveCount": 22,
"TotalSegmentCount": 58,
"TotalPointCount": 152,
"UserDataCount": 0,
"TotalUserDataSize": 0
},
"Curves": [
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_X",
"Segments": [
0,
0,
1,
0.067,
0,
0.133,
0,
0.2,
0,
1,
0.4,
0,
0.6,
0,
0.8,
0,
1,
1.022,
0,
1.244,
0,
1.467,
0,
0,
1.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_Y",
"Segments": [
0,
-11,
1,
0.067,
-11,
0.133,
-11,
0.2,
-11,
1,
0.3,
-11,
0.4,
10,
0.5,
10,
1,
0.6,
10,
0.7,
0,
0.8,
0,
1,
1.022,
0,
1.244,
0,
1.467,
0,
0,
1.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_Z",
"Segments": [
0,
0,
1,
0.489,
0,
0.978,
0,
1.467,
0,
0,
1.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EYE_L_OPEN",
"Segments": [
0,
0,
1,
0.067,
0,
0.133,
0,
0.2,
0,
1,
0.4,
0,
0.6,
0,
0.8,
0,
1,
1.022,
0,
1.244,
0,
1.467,
0,
0,
1.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EYE_R_OPEN",
"Segments": [
0,
0,
1,
0.067,
0,
0.133,
0,
0.2,
0,
1,
0.4,
0,
0.6,
0,
0.8,
0,
1,
1.022,
0,
1.244,
0,
1.467,
0,
0,
1.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_MOUTH_OPEN_Y",
"Segments": [
0,
0,
1,
0.067,
0,
0.133,
0,
0.2,
0,
1,
0.3,
0,
0.4,
0,
0.5,
0,
1,
0.6,
0,
0.7,
0,
0.8,
0,
1,
1.022,
0,
1.244,
0,
1.467,
0,
0,
1.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_X",
"Segments": [
0,
0,
1,
0.489,
0,
0.978,
0,
1.467,
0,
0,
1.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Z",
"Segments": [
0,
0,
1,
0.489,
0,
0.978,
0,
1.467,
0,
0,
1.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Y",
"Segments": [
0,
0,
1,
0.067,
0,
0.133,
0,
0.2,
0,
1,
0.3,
0,
0.4,
4,
0.5,
4,
1,
0.6,
4,
0.7,
0,
0.8,
0,
1,
1.022,
0,
1.244,
0,
1.467,
0,
0,
1.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BREATH",
"Segments": [
0,
0,
1,
0.489,
0,
0.978,
0,
1.467,
0,
0,
1.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BOWL_LID",
"Segments": [
0,
50,
1,
0.489,
50,
0.978,
50,
1.467,
50,
0,
1.5,
50
]
},
{
"Target": "Parameter",
"Id": "PARAM_YUGE_01",
"Segments": [
0,
0,
1,
0.489,
0,
0.978,
0,
1.467,
0,
0,
1.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_YUGE_02",
"Segments": [
0,
0,
1,
0.489,
0,
0.978,
0,
1.467,
0,
0,
1.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EFFECT",
"Segments": [
0,
0,
1,
0.489,
0,
0.978,
0,
1.467,
0,
0,
1.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EAR_L",
"Segments": [
0,
0,
1,
0.489,
0,
0.978,
0,
1.467,
0,
0,
1.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EAR_R",
"Segments": [
0,
0,
1,
0.489,
0,
0.978,
0,
1.467,
0,
0,
1.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_HAND_L",
"Segments": [
0,
0,
1,
0.067,
0,
0.133,
0,
0.2,
0,
1,
0.622,
0,
1.044,
0,
1.467,
0,
0,
1.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_HAND_R",
"Segments": [
0,
0,
1,
0.067,
0,
0.133,
0,
0.2,
0,
1,
0.622,
0,
1.044,
0,
1.467,
0,
0,
1.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_SWING",
"Segments": [
0,
0,
0,
1.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BOWL_SWING",
"Segments": [
0,
0,
0,
1.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_FACE_01",
"Segments": [
0,
0,
1,
0.489,
0,
0.978,
0,
1.467,
0,
0,
1.5,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BASE_X",
"Segments": [
0,
0,
0,
1.5,
0
]
}
]
}

View File

@ -0,0 +1,720 @@
{
"Version": 3,
"Meta": {
"Duration": 1.867,
"Fps": 30.0,
"Loop": true,
"AreBeziersRestricted": true,
"CurveCount": 22,
"TotalSegmentCount": 88,
"TotalPointCount": 242,
"UserDataCount": 0,
"TotalUserDataSize": 0
},
"Curves": [
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_X",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
0,
0.333,
0,
1,
0.456,
0,
0.578,
3,
0.7,
3,
1,
0.778,
3,
0.856,
-2,
0.933,
-2,
1,
1.233,
-2,
1.533,
-2,
1.833,
-2,
0,
1.867,
-2
]
},
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_Y",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
0,
0.333,
0,
1,
0.378,
0,
0.422,
18,
0.467,
18,
1,
0.544,
18,
0.622,
-30,
0.7,
-30,
1,
0.778,
-30,
0.856,
-13,
0.933,
-13,
1,
1.011,
-13,
1.089,
-30,
1.167,
-30,
1,
1.389,
-30,
1.611,
-30,
1.833,
-30,
0,
1.867,
-30
]
},
{
"Target": "Parameter",
"Id": "PARAM_ANGLE_Z",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
0,
0.333,
0,
1,
0.456,
0,
0.578,
-7.716,
0.7,
-17,
1,
0.778,
-22.908,
0.856,
-24,
0.933,
-24,
1,
1.233,
-24,
1.533,
-24,
1.833,
-24,
0,
1.867,
-24
]
},
{
"Target": "Parameter",
"Id": "PARAM_EYE_L_OPEN",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
0,
0.333,
0,
1,
0.456,
0,
0.578,
0,
0.7,
0,
1,
0.778,
0,
0.856,
0,
0.933,
0,
1,
1.233,
0,
1.533,
0,
1.833,
0,
0,
1.867,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EYE_R_OPEN",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
0,
0.333,
0,
1,
0.456,
0,
0.578,
0,
0.7,
0,
1,
0.778,
0,
0.856,
0,
0.933,
0,
1,
1.233,
0,
1.533,
0,
1.833,
0,
0,
1.867,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_MOUTH_OPEN_Y",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
0,
0.333,
0,
1,
0.456,
0,
0.578,
0,
0.7,
0,
1,
0.778,
0,
0.856,
0,
0.933,
0,
1,
1.233,
0,
1.533,
0,
1.833,
0,
0,
1.867,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_X",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
0,
0.333,
0,
1,
0.611,
0,
0.889,
-6,
1.167,
-6,
1,
1.389,
-6,
1.611,
-6,
1.833,
-6,
0,
1.867,
-6
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Z",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
0,
0.333,
0,
1,
0.456,
0,
0.578,
-2,
0.7,
-2,
1,
0.778,
-2,
0.856,
-2,
0.933,
-2,
1,
1.233,
-2,
1.533,
-2,
1.833,
-2,
0,
1.867,
-2
]
},
{
"Target": "Parameter",
"Id": "PARAM_BODY_ANGLE_Y",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
0,
0.333,
0,
1,
0.378,
0,
0.422,
3,
0.467,
3,
1,
0.544,
3,
0.622,
-6,
0.7,
-6,
1,
0.778,
-6,
0.856,
-6,
0.933,
-6,
1,
1.233,
-6,
1.533,
-6,
1.833,
-6,
0,
1.867,
-6
]
},
{
"Target": "Parameter",
"Id": "PARAM_BREATH",
"Segments": [
0,
0,
1,
0.611,
0,
1.222,
0,
1.833,
0,
0,
1.867,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BOWL_LID",
"Segments": [
0,
50,
1,
0.611,
50,
1.222,
50,
1.833,
50,
0,
1.867,
50
]
},
{
"Target": "Parameter",
"Id": "PARAM_YUGE_01",
"Segments": [
0,
0,
1,
0.611,
0,
1.222,
0,
1.833,
0,
0,
1.867,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_YUGE_02",
"Segments": [
0,
0,
1,
0.611,
0,
1.222,
0,
1.833,
0,
0,
1.867,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EFFECT",
"Segments": [
0,
0,
1,
0.611,
0,
1.222,
0,
1.833,
0,
0,
1.867,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EAR_L",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
0,
0.333,
0,
1,
0.389,
0,
0.444,
-1,
0.5,
-1,
1,
0.556,
-1,
0.611,
1,
0.667,
1,
1,
0.733,
1,
0.8,
-0.95,
0.867,
-0.95,
1,
0.922,
-0.95,
0.978,
0.45,
1.033,
0.45,
1,
1.089,
0.45,
1.144,
-0.17,
1.2,
-0.17,
1,
1.267,
-0.17,
1.333,
0,
1.4,
0,
1,
1.544,
0,
1.689,
0,
1.833,
0,
0,
1.867,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_EAR_R",
"Segments": [
0,
0,
1,
0.111,
0,
0.222,
0,
0.333,
0,
1,
0.389,
0,
0.444,
1,
0.5,
1,
1,
0.556,
1,
0.611,
-1,
0.667,
-1,
1,
0.733,
-1,
0.8,
1,
0.867,
1,
1,
0.922,
1,
0.978,
-0.39,
1.033,
-0.39,
1,
1.089,
-0.39,
1.144,
0.13,
1.2,
0.13,
1,
1.267,
0.13,
1.333,
0,
1.4,
0,
1,
1.544,
0,
1.689,
0,
1.833,
0,
0,
1.867,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_HAND_L",
"Segments": [
0,
0,
1,
0.233,
0,
0.467,
0,
0.7,
0,
1,
0.778,
0,
0.856,
0,
0.933,
0,
1,
1.233,
0,
1.533,
0,
1.833,
0,
0,
1.867,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_HAND_R",
"Segments": [
0,
0,
1,
0.233,
0,
0.467,
0,
0.7,
0,
1,
0.778,
0,
0.856,
0,
0.933,
0,
1,
1.233,
0,
1.533,
0,
1.833,
0,
0,
1.867,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_SWING",
"Segments": [
0,
0,
0,
1.867,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BOWL_SWING",
"Segments": [
0,
0,
0,
1.867,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_FACE_01",
"Segments": [
0,
0,
1,
0.611,
0,
1.222,
0,
1.833,
0,
0,
1.867,
0
]
},
{
"Target": "Parameter",
"Id": "PARAM_BASE_X",
"Segments": [
0,
0,
0,
1.867,
0
]
}
]
}

View File

@ -25,3 +25,5 @@ rules:
'@typescript-eslint/no-unsafe-assignment': off '@typescript-eslint/no-unsafe-assignment': off
'@typescript-eslint/no-unsafe-return': off '@typescript-eslint/no-unsafe-return': off
'@typescript-eslint/no-floating-promises': off '@typescript-eslint/no-floating-promises': off
'@typescript-eslint/no-unused-vars': off
'@typescript-eslint/no-explicit-any': off

View File

@ -2,13 +2,18 @@
<html> <html>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=1900"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>TypeScript HTML App</title> <title>TypeScript HTML App</title>
<style> <style>
html, body { html, body {
margin: 0; margin: 0;
overflow: hidden; overflow: hidden;
} }
canvas {
width: 100vw;
height: 100vh;
display: block;
}
</style> </style>
<!-- Pollyfill script --> <!-- Pollyfill script -->
<script src="https://unpkg.com/core-js-bundle@3.6.1/minified.js"></script> <script src="https://unpkg.com/core-js-bundle@3.6.1/minified.js"></script>

File diff suppressed because it is too large Load Diff

View File

@ -11,21 +11,24 @@
"clean": "rimraf dist" "clean": "rimraf dist"
}, },
"devDependencies": { "devDependencies": {
"@typescript-eslint/eslint-plugin": "^5.31.0", "@typescript-eslint/eslint-plugin": "^6.7.2",
"@typescript-eslint/parser": "^5.31.0", "@typescript-eslint/parser": "^6.7.2",
"eslint": "^8.20.0", "eslint": "^8.49.0",
"eslint-config-prettier": "^8.5.0", "eslint-config-prettier": "^9.0.0",
"eslint-plugin-prettier": "^4.2.1", "eslint-plugin-prettier": "^5.0.0",
"prettier": "^2.7.1", "prettier": "^3.0.3",
"rimraf": "^3.0.2", "rimraf": "^5.0.1",
"serve": "^14.0.1", "serve": "^14.2.1",
"ts-loader": "^9.3.1", "ts-loader": "^9.4.4",
"typescript": "^4.7.4", "typescript": "^5.2.2",
"webpack": "^5.74.0", "webpack": "^5.88.2",
"webpack-cli": "^4.10.0", "webpack-cli": "^5.1.4",
"webpack-dev-server": "^4.9.3" "webpack-dev-server": "^4.15.1"
}, },
"dependencies": { "dependencies": {
"whatwg-fetch": "^3.6.2" "whatwg-fetch": "^3.6.19"
},
"optionalDependencies": {
"fsevents": "*"
} }
} }

View File

@ -8,13 +8,13 @@
import { LogLevel } from '@framework/live2dcubismframework'; import { LogLevel } from '@framework/live2dcubismframework';
/** /**
* Sample App使 * Sample App使
*/ */
// Canvas width and height pixel values, or dynamic screen size ('auto'). // Canvas的宽和高的像素值,或动态屏幕大小('auto')。
export const CanvasSize: { width: number; height: number } | 'auto' = 'auto'; export const CanvasSize: { width: number; height: number } | 'auto' = 'auto';
// 画面 // 屏幕
export const ViewScale = 1.0; export const ViewScale = 1.0;
export const ViewMaxScale = 2.0; export const ViewMaxScale = 2.0;
export const ViewMinScale = 0.8; export const ViewMinScale = 0.8;
@ -29,52 +29,56 @@ export const ViewLogicalMaxRight = 2.0;
export const ViewLogicalMaxBottom = -2.0; export const ViewLogicalMaxBottom = -2.0;
export const ViewLogicalMaxTop = 2.0; export const ViewLogicalMaxTop = 2.0;
// 相対パス // 相对路径
export const ResourcesPath = '../../Resources/'; export const ResourcesPath = '../../Resources/';
// モデルの後ろにある背景の画像ファイル // 在模型后面的背景图片文件
export const BackImageName = 'back_class_normal.png'; export const BackImageName = 'back_class_normal.png';
// 歯車 // 齿轮
export const GearImageName = 'icon_gear.png'; export const GearImageName = 'icon_gear.png';
// 終了ボタン // 关闭按钮
export const PowerImageName = 'CloseNormal.png'; export const PowerImageName = 'CloseNormal.png';
// モデル定義--------------------------------------------- // 模型定义---------------------------------------------
// モデルを配置したディレクトリ名の配列 // 部署模型的目录名数组
// ディレクトリ名とmodel3.jsonの名前を一致させておくこと // 请将目录名和model3.json的名字匹配
export const ModelDir: string[] = [ export const ModelDir: string[] = [
'Haru', 'Haru',
'Hiyori', 'Hiyori',
'Mark', 'Mark',
'Natori', 'Natori',
'Rice', 'Rice',
'Mao' 'Mao',
'Wanko'
]; ];
export const ModelDirSize: number = ModelDir.length; export const ModelDirSize: number = ModelDir.length;
// 外部定義ファイルjsonと合わせる // 与外部定义文件json匹配
export const MotionGroupIdle = 'Idle'; // アイドリング export const MotionGroupIdle = 'Idle'; // 空闲
export const MotionGroupTapBody = 'TapBody'; // 体をタップしたとき export const MotionGroupTapBody = 'TapBody'; // 点击身体时
// 外部定義ファイルjsonと合わせる // 与外部定义文件json匹配
export const HitAreaNameHead = 'Head'; export const HitAreaNameHead = 'Head';
export const HitAreaNameBody = 'Body'; export const HitAreaNameBody = 'Body';
// モーションの優先度定数 // 动作的优先级常量
export const PriorityNone = 0; export const PriorityNone = 0;
export const PriorityIdle = 1; export const PriorityIdle = 1;
export const PriorityNormal = 2; export const PriorityNormal = 2;
export const PriorityForce = 3; export const PriorityForce = 3;
// デバッグ用ログの表示オプション // MOC3的一致性验证选项
export const MOCConsistencyValidationEnable = true;
// 显示用于调试的日志的选项
export const DebugLogEnable = true; export const DebugLogEnable = true;
export const DebugTouchLogEnable = false; export const DebugTouchLogEnable = false;
// Frameworkから出力するログのレベル設定 // 设置从框架输出的日志的级别
export const CubismLoggingLevel: LogLevel = LogLevel.LogLevel_Verbose; export const CubismLoggingLevel: LogLevel = LogLevel.LogLevel_Verbose;
// デフォルトのレンダーターゲットサイズ // 默认的渲染目标大小
export const RenderTargetWidth = 1900; export const RenderTargetWidth = 1900;
export const RenderTargetHeight = 1000; export const RenderTargetHeight = 1000;

View File

@ -19,15 +19,15 @@ export let gl: WebGLRenderingContext = null;
export let frameBuffer: WebGLFramebuffer = null; export let frameBuffer: WebGLFramebuffer = null;
/** /**
* *
* Cubism SDK * Cubism SDK
*/ */
export class LAppDelegate { export class LAppDelegate {
/** /**
* *
* *
* *
* @return * @return
*/ */
public static getInstance(): LAppDelegate { public static getInstance(): LAppDelegate {
if (s_instance == null) { if (s_instance == null) {
@ -38,7 +38,7 @@ export class LAppDelegate {
} }
/** /**
* *
*/ */
public static releaseInstance(): void { public static releaseInstance(): void {
if (s_instance != null) { if (s_instance != null) {
@ -49,19 +49,13 @@ export class LAppDelegate {
} }
/** /**
* APP * APP西
*/ */
public initialize(): boolean { public initialize(): boolean {
// キャンバスの作成 // 创建画布
canvas = document.createElement('canvas'); canvas = document.createElement('canvas');
if (LAppDefine.CanvasSize === 'auto') {
this._resizeCanvas();
} else {
canvas.width = LAppDefine.CanvasSize.width;
canvas.height = LAppDefine.CanvasSize.height;
}
// glコンテキストを初期化 // 初始化webgl上下文
// @ts-ignore // @ts-ignore
gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl'); gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');
@ -72,40 +66,47 @@ export class LAppDelegate {
document.body.innerHTML = document.body.innerHTML =
'This browser does not support the <code>&lt;canvas&gt;</code> element.'; 'This browser does not support the <code>&lt;canvas&gt;</code> element.';
// gl初期化失敗 // webgl初始化失败
return false; return false;
} }
// キャンバスを DOM に追加 // 将画布添加到DOM中
document.body.appendChild(canvas); document.body.appendChild(canvas);
if (LAppDefine.CanvasSize === 'auto') {
this._resizeCanvas();
} else {
canvas.width = LAppDefine.CanvasSize.width;
canvas.height = LAppDefine.CanvasSize.height;
}
if (!frameBuffer) { if (!frameBuffer) {
frameBuffer = gl.getParameter(gl.FRAMEBUFFER_BINDING); frameBuffer = gl.getParameter(gl.FRAMEBUFFER_BINDING);
} }
// 透過設定 // 启用透明设置
gl.enable(gl.BLEND); gl.enable(gl.BLEND);
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
const supportTouch: boolean = 'ontouchend' in canvas; const supportTouch: boolean = 'ontouchend' in canvas;
if (supportTouch) { if (supportTouch) {
// タッチ関連コールバック関数登録 // 注册触摸相关的回调函数
canvas.ontouchstart = onTouchBegan; canvas.addEventListener('touchstart', onTouchBegan, { passive: true });
canvas.ontouchmove = onTouchMoved; canvas.addEventListener('touchmove', onTouchMoved, { passive: true });
canvas.ontouchend = onTouchEnded; canvas.addEventListener('touchend', onTouchEnded, { passive: true });
canvas.ontouchcancel = onTouchCancel; canvas.addEventListener('touchcancel', onTouchCancel, { passive: true });
} else { } else {
// マウス関連コールバック関数登録 // 注册鼠标相关的回调函数
canvas.onmousedown = onClickBegan; canvas.addEventListener('mousedown', onClickBegan, { passive: true });
canvas.onmousemove = onMouseMoved; canvas.addEventListener('mousemove', onMouseMoved, { passive: true });
canvas.onmouseup = onClickEnded; canvas.addEventListener('mouseup', onClickEnded, { passive: true });
} }
// AppViewの初期化 // 初始化AppView
this._view.initialize(); this._view.initialize();
// Cubism SDKの初期化 // 初始化Cubism SDK
this.initializeCubism(); this.initializeCubism();
return true; return true;
@ -118,15 +119,10 @@ export class LAppDelegate {
this._resizeCanvas(); this._resizeCanvas();
this._view.initialize(); this._view.initialize();
this._view.initializeSprite(); this._view.initializeSprite();
// キャンバスサイズを渡す
const viewport: number[] = [0, 0, canvas.width, canvas.height];
gl.viewport(viewport[0], viewport[1], viewport[2], viewport[3]);
} }
/** /**
* *
*/ */
public release(): void { public release(): void {
this._textureManager.release(); this._textureManager.release();
@ -135,59 +131,59 @@ export class LAppDelegate {
this._view.release(); this._view.release();
this._view = null; this._view = null;
// リソースを解放 // 释放资源
LAppLive2DManager.releaseInstance(); LAppLive2DManager.releaseInstance();
// Cubism SDKの解放 // 释放Cubism SDK
CubismFramework.dispose(); CubismFramework.dispose();
} }
/** /**
* *
*/ */
public run(): void { public run(): void {
// メインループ // 主循环
const loop = (): void => { const loop = (): void => {
// インスタンスの有無の確認 // 检查实例是否存在
if (s_instance == null) { if (s_instance == null) {
return; return;
} }
// 時間更新 // 更新时间
LAppPal.updateTime(); LAppPal.updateTime();
// 画面の初期化 // 初始化屏幕
gl.clearColor(0.0, 0.0, 0.0, 1.0); gl.clearColor(0.0, 0.0, 0.0, 1.0);
// 深度テストを有効化 // 启用深度测试
gl.enable(gl.DEPTH_TEST); gl.enable(gl.DEPTH_TEST);
// 近くにある物体は、遠くにある物体を覆い隠す // 近处的物体会覆盖远处的物体
gl.depthFunc(gl.LEQUAL); gl.depthFunc(gl.LEQUAL);
// カラーバッファや深度バッファをクリアする // 清除颜色缓冲区和深度缓冲区
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
gl.clearDepth(1.0); gl.clearDepth(1.0);
// 透過設定 // 启用透明设置
gl.enable(gl.BLEND); gl.enable(gl.BLEND);
gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
// 描画更新 // 更新绘制
this._view.render(); this._view.render();
// ループのために再帰呼び出し // 为了循环再次调用
requestAnimationFrame(loop); requestAnimationFrame(loop);
}; };
loop(); loop();
} }
/** /**
* *
*/ */
public createShader(): WebGLProgram { public createShader(): WebGLProgram {
// バーテックスシェーダーのコンパイル // 编译顶点着色器
const vertexShaderId = gl.createShader(gl.VERTEX_SHADER); const vertexShaderId = gl.createShader(gl.VERTEX_SHADER);
if (vertexShaderId == null) { if (vertexShaderId == null) {
@ -209,7 +205,7 @@ export class LAppDelegate {
gl.shaderSource(vertexShaderId, vertexShader); gl.shaderSource(vertexShaderId, vertexShader);
gl.compileShader(vertexShaderId); gl.compileShader(vertexShaderId);
// フラグメントシェーダのコンパイル // 编译片段着色器
const fragmentShaderId = gl.createShader(gl.FRAGMENT_SHADER); const fragmentShaderId = gl.createShader(gl.FRAGMENT_SHADER);
if (fragmentShaderId == null) { if (fragmentShaderId == null) {
@ -229,7 +225,7 @@ export class LAppDelegate {
gl.shaderSource(fragmentShaderId, fragmentShader); gl.shaderSource(fragmentShaderId, fragmentShader);
gl.compileShader(fragmentShaderId); gl.compileShader(fragmentShaderId);
// プログラムオブジェクトの作成 // 创建程序对象
const programId = gl.createProgram(); const programId = gl.createProgram();
gl.attachShader(programId, vertexShaderId); gl.attachShader(programId, vertexShaderId);
gl.attachShader(programId, fragmentShaderId); gl.attachShader(programId, fragmentShaderId);
@ -237,7 +233,7 @@ export class LAppDelegate {
gl.deleteShader(vertexShaderId); gl.deleteShader(vertexShaderId);
gl.deleteShader(fragmentShaderId); gl.deleteShader(fragmentShaderId);
// リンク // 链接
gl.linkProgram(programId); gl.linkProgram(programId);
gl.useProgram(programId); gl.useProgram(programId);
@ -246,7 +242,7 @@ export class LAppDelegate {
} }
/** /**
* View * View
*/ */
public getView(): LAppView { public getView(): LAppView {
return this._view; return this._view;
@ -257,7 +253,7 @@ export class LAppDelegate {
} }
/** /**
* *
*/ */
constructor() { constructor() {
this._captured = false; this._captured = false;
@ -271,18 +267,18 @@ export class LAppDelegate {
} }
/** /**
* Cubism SDK * Cubism SDK
*/ */
public initializeCubism(): void { public initializeCubism(): void {
// setup cubism // 设置cubism
this._cubismOption.logFunction = LAppPal.printMessage; this._cubismOption.logFunction = LAppPal.printMessage;
this._cubismOption.loggingLevel = LAppDefine.CubismLoggingLevel; this._cubismOption.loggingLevel = LAppDefine.CubismLoggingLevel;
CubismFramework.startUp(this._cubismOption); CubismFramework.startUp(this._cubismOption);
// initialize cubism // 初始化cubism
CubismFramework.initialize(); CubismFramework.initialize();
// load model // 加载模型
LAppLive2DManager.getInstance(); LAppLive2DManager.getInstance();
LAppPal.updateTime(); LAppPal.updateTime();
@ -291,24 +287,25 @@ export class LAppDelegate {
} }
/** /**
* Resize the canvas to fill the screen. *
*/ */
private _resizeCanvas(): void { private _resizeCanvas(): void {
canvas.width = window.innerWidth; canvas.width = canvas.clientWidth * window.devicePixelRatio;
canvas.height = window.innerHeight; canvas.height = canvas.clientHeight * window.devicePixelRatio;
gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
} }
_cubismOption: Option; // Cubism SDK Option _cubismOption: Option; // Cubism SDK选项
_view: LAppView; // View情報 _view: LAppView; // View信息
_captured: boolean; // クリックしているか _captured: boolean; // 是否要捕获
_mouseX: number; // マウスX座標 _mouseX: number; // 鼠标X坐标
_mouseY: number; // マウスY座標 _mouseY: number; // 鼠标Y坐标
_isEnd: boolean; // APP終了しているか _isEnd: boolean; // APP是否已结束
_textureManager: LAppTextureManager; // テクスチャマネージャー _textureManager: LAppTextureManager; // 纹理管理器
} }
/** /**
* *
*/ */
function onClickBegan(e: MouseEvent): void { function onClickBegan(e: MouseEvent): void {
if (!LAppDelegate.getInstance()._view) { if (!LAppDelegate.getInstance()._view) {
@ -324,7 +321,7 @@ function onClickBegan(e: MouseEvent): void {
} }
/** /**
* *
*/ */
function onMouseMoved(e: MouseEvent): void { function onMouseMoved(e: MouseEvent): void {
if (!LAppDelegate.getInstance()._captured) { if (!LAppDelegate.getInstance()._captured) {
@ -344,7 +341,7 @@ function onMouseMoved(e: MouseEvent): void {
} }
/** /**
* *
*/ */
function onClickEnded(e: MouseEvent): void { function onClickEnded(e: MouseEvent): void {
LAppDelegate.getInstance()._captured = false; LAppDelegate.getInstance()._captured = false;
@ -361,7 +358,7 @@ function onClickEnded(e: MouseEvent): void {
} }
/** /**
* *
*/ */
function onTouchBegan(e: TouchEvent): void { function onTouchBegan(e: TouchEvent): void {
if (!LAppDelegate.getInstance()._view) { if (!LAppDelegate.getInstance()._view) {
@ -378,7 +375,7 @@ function onTouchBegan(e: TouchEvent): void {
} }
/** /**
* *
*/ */
function onTouchMoved(e: TouchEvent): void { function onTouchMoved(e: TouchEvent): void {
if (!LAppDelegate.getInstance()._captured) { if (!LAppDelegate.getInstance()._captured) {
@ -399,7 +396,7 @@ function onTouchMoved(e: TouchEvent): void {
} }
/** /**
* *
*/ */
function onTouchEnded(e: TouchEvent): void { function onTouchEnded(e: TouchEvent): void {
LAppDelegate.getInstance()._captured = false; LAppDelegate.getInstance()._captured = false;
@ -418,7 +415,7 @@ function onTouchEnded(e: TouchEvent): void {
} }
/** /**
* *
*/ */
function onTouchCancel(e: TouchEvent): void { function onTouchCancel(e: TouchEvent): void {
LAppDelegate.getInstance()._captured = false; LAppDelegate.getInstance()._captured = false;

View File

@ -17,15 +17,14 @@ import { LAppPal } from './lapppal';
export let s_instance: LAppLive2DManager = null; export let s_instance: LAppLive2DManager = null;
/** /**
* CubismModel * CubismModel
* *
*/ */
export class LAppLive2DManager { export class LAppLive2DManager {
/** /**
* *
* *
* * @return
* @return
*/ */
public static getInstance(): LAppLive2DManager { public static getInstance(): LAppLive2DManager {
if (s_instance == null) { if (s_instance == null) {
@ -36,7 +35,7 @@ export class LAppLive2DManager {
} }
/** /**
* *
*/ */
public static releaseInstance(): void { public static releaseInstance(): void {
if (s_instance != null) { if (s_instance != null) {
@ -47,10 +46,10 @@ export class LAppLive2DManager {
} }
/** /**
* *
* *
* @param no * @param no
* @return NULL * @return NULL
*/ */
public getModel(no: number): LAppModel { public getModel(no: number): LAppModel {
if (no < this._models.getSize()) { if (no < this._models.getSize()) {
@ -61,7 +60,7 @@ export class LAppLive2DManager {
} }
/** /**
* *
*/ */
public releaseAllModel(): void { public releaseAllModel(): void {
for (let i = 0; i < this._models.getSize(); i++) { for (let i = 0; i < this._models.getSize(); i++) {
@ -73,10 +72,9 @@ export class LAppLive2DManager {
} }
/** /**
* *
* * @param x - x
* @param x X * @param y - y
* @param y Y
*/ */
public onDrag(x: number, y: number): void { public onDrag(x: number, y: number): void {
for (let i = 0; i < this._models.getSize(); i++) { for (let i = 0; i < this._models.getSize(); i++) {
@ -89,10 +87,14 @@ export class LAppLive2DManager {
} }
/** /**
* *
* *
* @param x X * @param x X
* @param y Y * @param y Y
* Lapplive2DManageronTap
*
*
* xy
*/ */
public onTap(x: number, y: number): void { public onTap(x: number, y: number): void {
if (LAppDefine.DebugLogEnable) { if (LAppDefine.DebugLogEnable) {
@ -127,8 +129,8 @@ export class LAppLive2DManager {
} }
/** /**
* *
* *
*/ */
public onUpdate(): void { public onUpdate(): void {
const { width, height } = canvas; const { width, height } = canvas;
@ -141,27 +143,27 @@ export class LAppLive2DManager {
if (model.getModel()) { if (model.getModel()) {
if (model.getModel().getCanvasWidth() > 1.0 && width < height) { if (model.getModel().getCanvasWidth() > 1.0 && width < height) {
// 横に長いモデルを縦長ウィンドウに表示する際モデルの横サイズでscaleを算出する // 当在纵向窗口中显示横向模型时,根据模型的横向大小计算比例
model.getModelMatrix().setWidth(2.0); model.getModelMatrix().setWidth(2.0);
projection.scale(1.0, width / height); projection.scale(1.0, width / height);
} else { } else {
projection.scale(height / width, 1.0); projection.scale(height / width, 1.0);
} }
// 必要があればここで乗算 // 如果需要,在这里进行乘法
if (this._viewMatrix != null) { if (this._viewMatrix != null) {
projection.multiplyByMatrix(this._viewMatrix); projection.multiplyByMatrix(this._viewMatrix);
} }
} }
model.update(); model.update();
model.draw(projection); // 参照渡しなのでprojectionは変質する model.draw(projection); // 传递引用所以projection会改变
} }
} }
/** /**
* *
* *
*/ */
public nextScene(): void { public nextScene(): void {
const no: number = (this._sceneIndex + 1) % LAppDefine.ModelDirSize; const no: number = (this._sceneIndex + 1) % LAppDefine.ModelDirSize;
@ -169,8 +171,9 @@ export class LAppLive2DManager {
} }
/** /**
* *
* * @param index -
* @returns void
*/ */
public changeScene(index: number): void { public changeScene(index: number): void {
this._sceneIndex = index; this._sceneIndex = index;
@ -178,9 +181,9 @@ export class LAppLive2DManager {
LAppPal.printMessage(`[APP]model index: ${this._sceneIndex}`); LAppPal.printMessage(`[APP]model index: ${this._sceneIndex}`);
} }
// ModelDir[]に保持したディレクトリ名から // 根据在ModelDir[]中保存的目录名称
// model3.jsonのパスを決定する // 确定model3.json的路径
// ディレクトリ名とmodel3.jsonの名前を一致させておくこと // 目录名称和model3.json的名称应保持一致
const model: string = LAppDefine.ModelDir[index]; const model: string = LAppDefine.ModelDir[index];
const modelPath: string = LAppDefine.ResourcesPath + model + '/'; const modelPath: string = LAppDefine.ResourcesPath + model + '/';
let modelJsonName: string = LAppDefine.ModelDir[index]; let modelJsonName: string = LAppDefine.ModelDir[index];
@ -198,7 +201,7 @@ export class LAppLive2DManager {
} }
/** /**
* *
*/ */
constructor() { constructor() {
this._viewMatrix = new CubismMatrix44(); this._viewMatrix = new CubismMatrix44();
@ -207,10 +210,10 @@ export class LAppLive2DManager {
this.changeScene(this._sceneIndex); this.changeScene(this._sceneIndex);
} }
_viewMatrix: CubismMatrix44; // モデル描画に用いるview行列 _viewMatrix: CubismMatrix44; // 用于模型绘制的视图矩阵
_models: csmVector<LAppModel>; // モデルインスタンスのコンテナ _models: csmVector<LAppModel>; // 模型实例的容器
_sceneIndex: number; // 表示するシーンのインデックス値 _sceneIndex: number; // 要显示的场景的索引值
// モーション再生終了のコールバック関 // 动作播放结束的回调函
_finishedMotion = (self: ACubismMotion): void => { _finishedMotion = (self: ACubismMotion): void => {
LAppPal.printMessage('Motion Finished:'); LAppPal.printMessage('Motion Finished:');
console.log(self); console.log(self);

View File

@ -32,13 +32,18 @@ import { csmMap } from '@framework/type/csmmap';
import { csmRect } from '@framework/type/csmrectf'; import { csmRect } from '@framework/type/csmrectf';
import { csmString } from '@framework/type/csmstring'; import { csmString } from '@framework/type/csmstring';
import { csmVector } from '@framework/type/csmvector'; import { csmVector } from '@framework/type/csmvector';
import { CubismLogError, CubismLogInfo } from '@framework/utils/cubismdebug'; import {
CSM_ASSERT,
CubismLogError,
CubismLogInfo
} from '@framework/utils/cubismdebug';
import * as LAppDefine from './lappdefine'; import * as LAppDefine from './lappdefine';
import { canvas, frameBuffer, gl, LAppDelegate } from './lappdelegate'; import { canvas, frameBuffer, gl, LAppDelegate } from './lappdelegate';
import { LAppPal } from './lapppal'; import { LAppPal } from './lapppal';
import { TextureInfo } from './lapptexturemanager'; import { TextureInfo } from './lapptexturemanager';
import { LAppWavFileHandler } from './lappwavfilehandler'; import { LAppWavFileHandler } from './lappwavfilehandler';
import { CubismMoc } from '@framework/model/cubismmoc';
enum LoadStep { enum LoadStep {
LoadAssets, LoadAssets,
@ -67,12 +72,12 @@ enum LoadStep {
} }
/** /**
* 使<br> * 使
* *
*/ */
export class LAppModel extends CubismUserModel { export class LAppModel extends CubismUserModel {
/** /**
* model3.json * model3.json
* @param dir * @param dir
* @param fileName * @param fileName
*/ */
@ -87,19 +92,19 @@ export class LAppModel extends CubismUserModel {
arrayBuffer.byteLength arrayBuffer.byteLength
); );
// ステートを更新 // 更新状态
this._state = LoadStep.LoadModel; this._state = LoadStep.LoadModel;
// 結果を保存 // 保存结果
this.setupModel(setting); this.setupModel(setting);
}); });
} }
/** /**
* model3.json * model3.json
* model3.json * model3.json
* *
* @param setting ICubismModelSetting * @param setting ICubismModelSetting
*/ */
private setupModel(setting: ICubismModelSetting): void { private setupModel(setting: ICubismModelSetting): void {
this._updating = true; this._updating = true;
@ -114,7 +119,7 @@ export class LAppModel extends CubismUserModel {
fetch(`${this._modelHomeDir}${modelFileName}`) fetch(`${this._modelHomeDir}${modelFileName}`)
.then(response => response.arrayBuffer()) .then(response => response.arrayBuffer())
.then(arrayBuffer => { .then(arrayBuffer => {
this.loadModel(arrayBuffer); this.loadModel(arrayBuffer, this._mocConsistency);
this._state = LoadStep.LoadExpression; this._state = LoadStep.LoadExpression;
// callback // callback
@ -350,22 +355,22 @@ export class LAppModel extends CubismUserModel {
const motionGroupCount: number = this._modelSetting.getMotionGroupCount(); const motionGroupCount: number = this._modelSetting.getMotionGroupCount();
// モーションの総数を求める // 计算动作总数
for (let i = 0; i < motionGroupCount; i++) { for (let i = 0; i < motionGroupCount; i++) {
group[i] = this._modelSetting.getMotionGroupName(i); group[i] = this._modelSetting.getMotionGroupName(i);
this._allMotionCount += this._modelSetting.getMotionCount(group[i]); this._allMotionCount += this._modelSetting.getMotionCount(group[i]);
} }
// モーションの読み込み // 加载动作
for (let i = 0; i < motionGroupCount; i++) { for (let i = 0; i < motionGroupCount; i++) {
this.preLoadMotionGroup(group[i]); this.preLoadMotionGroup(group[i]);
} }
// モーションがない場合 // 如果没有动作
if (motionGroupCount == 0) { if (motionGroupCount == 0) {
this._state = LoadStep.LoadTexture; this._state = LoadStep.LoadTexture;
// 全てのモーションを停止する // 停止所有动作
this._motionManager.stopAllMotions(); this._motionManager.stopAllMotions();
this._updating = false; this._updating = false;
@ -379,7 +384,7 @@ export class LAppModel extends CubismUserModel {
} }
/** /**
* *
*/ */
private setupTextures(): void { private setupTextures(): void {
// iPhoneでのアルファ品質向上のためTypescriptではpremultipliedAlphaを採用 // iPhoneでのアルファ品質向上のためTypescriptではpremultipliedAlphaを採用
@ -429,7 +434,7 @@ export class LAppModel extends CubismUserModel {
} }
/** /**
* *
*/ */
public reloadRenderer(): void { public reloadRenderer(): void {
this.deleteRenderer(); this.deleteRenderer();
@ -450,13 +455,13 @@ export class LAppModel extends CubismUserModel {
this._dragX = this._dragManager.getX(); this._dragX = this._dragManager.getX();
this._dragY = this._dragManager.getY(); this._dragY = this._dragManager.getY();
// モーションによるパラメータ更新の有無 // 参数更新是否由动作引起
let motionUpdated = false; let motionUpdated = false;
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
this._model.loadParameters(); // 前回セーブされた状態をロード this._model.loadParameters(); // 加载上一次保存的状态
if (this._motionManager.isFinished()) { if (this._motionManager.isFinished()) {
// モーションの再生がない場合、待機モーションの中からランダムで再生する // 如果没有动作播放,随机从待机动作中选择一个播放
this.startRandomMotion( this.startRandomMotion(
LAppDefine.MotionGroupIdle, LAppDefine.MotionGroupIdle,
LAppDefine.PriorityIdle LAppDefine.PriorityIdle
@ -465,55 +470,55 @@ export class LAppModel extends CubismUserModel {
motionUpdated = this._motionManager.updateMotion( motionUpdated = this._motionManager.updateMotion(
this._model, this._model,
deltaTimeSeconds deltaTimeSeconds
); // モーションを更新 ); // 更新动作
} }
this._model.saveParameters(); // 状態を保存 this._model.saveParameters(); // 保存状态
//-------------------------------------------------------------------------- //--------------------------------------------------------------------------
// まばたき // 闪烁
if (!motionUpdated) { if (!motionUpdated) {
if (this._eyeBlink != null) { if (this._eyeBlink != null) {
// メインモーションの更新がないとき // 当主要动作没有更新时
this._eyeBlink.updateParameters(this._model, deltaTimeSeconds); // 目パチ this._eyeBlink.updateParameters(this._model, deltaTimeSeconds); // 眨眼
} }
} }
if (this._expressionManager != null) { if (this._expressionManager != null) {
this._expressionManager.updateMotion(this._model, deltaTimeSeconds); // 表情でパラメータ更新(相対変化) this._expressionManager.updateMotion(this._model, deltaTimeSeconds); // 通过表情更新参数(相对变化)
} }
// ドラッグによる変化 // 由拖动引起的改变
// ドラッグによる顔の向きの調整 // 调整由拖动引起的脸部方向
this._model.addParameterValueById(this._idParamAngleX, this._dragX * 30); // -30から30の値を加える this._model.addParameterValueById(this._idParamAngleX, this._dragX * 30); // 添加-30到30的值
this._model.addParameterValueById(this._idParamAngleY, this._dragY * 30); this._model.addParameterValueById(this._idParamAngleY, this._dragY * 30);
this._model.addParameterValueById( this._model.addParameterValueById(
this._idParamAngleZ, this._idParamAngleZ,
this._dragX * this._dragY * -30 this._dragX * this._dragY * -30
); );
// ドラッグによる体の向きの調整 // 调整由拖动引起的身体方向
this._model.addParameterValueById( this._model.addParameterValueById(
this._idParamBodyAngleX, this._idParamBodyAngleX,
this._dragX * 10 this._dragX * 10
); // -10から10の値を加える ); // 添加-10到10的值
// ドラッグによる目の向きの調整 // 调整由拖动引起的眼睛方向
this._model.addParameterValueById(this._idParamEyeBallX, this._dragX); // -1から1の値を加える this._model.addParameterValueById(this._idParamEyeBallX, this._dragX); // 添加-1到1的值
this._model.addParameterValueById(this._idParamEyeBallY, this._dragY); this._model.addParameterValueById(this._idParamEyeBallY, this._dragY);
// 呼吸など // 呼吸
if (this._breath != null) { if (this._breath != null) {
this._breath.updateParameters(this._model, deltaTimeSeconds); this._breath.updateParameters(this._model, deltaTimeSeconds);
} }
// 物理演算の設定 // 设置物理运算
if (this._physics != null) { if (this._physics != null) {
this._physics.evaluate(this._model, deltaTimeSeconds); this._physics.evaluate(this._model, deltaTimeSeconds);
} }
// リップシンクの設定 // 设置唇形同步
if (this._lipsync) { if (this._lipsync) {
let value = 0.0; // リアルタイムでリップシンクを行う場合、システムから音量を取得して、0~1の範囲で値を入力します let value = 0.0; // 如果要实时进行唇形同步从系统中获取音量并输入0~1的范围内的值
this._wavFileHandler.update(deltaTimeSeconds); this._wavFileHandler.update(deltaTimeSeconds);
value = this._wavFileHandler.getRms(); value = this._wavFileHandler.getRms();
@ -523,7 +528,7 @@ export class LAppModel extends CubismUserModel {
} }
} }
// ポーズの設定 // 设置姿势
if (this._pose != null) { if (this._pose != null) {
this._pose.updateParameters(this._model, deltaTimeSeconds); this._pose.updateParameters(this._model, deltaTimeSeconds);
} }
@ -532,12 +537,12 @@ export class LAppModel extends CubismUserModel {
} }
/** /**
* *
* @param group * @param group
* @param no * @param no
* @param priority * @param priority
* @param onFinishedMotionHandler * @param onFinishedMotionHandler
* @return isFinished()使[-1] * @return isFinished()[-1]
*/ */
public startMotion( public startMotion(
group: string, group: string,
@ -586,7 +591,7 @@ export class LAppModel extends CubismUserModel {
} }
motion.setEffectIds(this._eyeBlinkIds, this._lipSyncIds); motion.setEffectIds(this._eyeBlinkIds, this._lipSyncIds);
autoDelete = true; // 終了時にメモリから削 autoDelete = true; // 结束时从内存中删
}); });
} else { } else {
motion.setFinishedMotionHandler(onFinishedMotionHandler); motion.setFinishedMotionHandler(onFinishedMotionHandler);
@ -611,11 +616,11 @@ export class LAppModel extends CubismUserModel {
} }
/** /**
* *
* @param group * @param group
* @param priority * @param priority
* @param onFinishedMotionHandler * @param onFinishedMotionHandler
* @return isFinished()使[-1] * @return isFinished()[-1]
*/ */
public startRandomMotion( public startRandomMotion(
group: string, group: string,
@ -634,9 +639,9 @@ export class LAppModel extends CubismUserModel {
} }
/** /**
* *
* *
* @param expressionId ID * @param expressionId ID
*/ */
public setExpression(expressionId: string): void { public setExpression(expressionId: string): void {
const motion: ACubismMotion = this._expressions.getValue(expressionId); const motion: ACubismMotion = this._expressions.getValue(expressionId);
@ -659,7 +664,7 @@ export class LAppModel extends CubismUserModel {
} }
/** /**
* *
*/ */
public setRandomExpression(): void { public setRandomExpression(): void {
if (this._expressions.getSize() == 0) { if (this._expressions.getSize() == 0) {
@ -678,22 +683,22 @@ export class LAppModel extends CubismUserModel {
} }
/** /**
* *
*/ */
public motionEventFired(eventValue: csmString): void { public motionEventFired(eventValue: csmString): void {
CubismLogInfo('{0} is fired on LAppModel!!', eventValue.s); CubismLogInfo('{0} is fired on LAppModel!!', eventValue.s);
} }
/** /**
* *
* * ID
* *
* @param hitArenaName ID * @param hitArenaName ID
* @param x X * @param x X
* @param y Y * @param y Y
*/ */
public hitTest(hitArenaName: string, x: number, y: number): boolean { public hitTest(hitArenaName: string, x: number, y: number): boolean {
// 透明時は当たり判定無し // 透明时无碰撞检测
if (this._opacity < 1) { if (this._opacity < 1) {
return false; return false;
} }
@ -711,10 +716,10 @@ export class LAppModel extends CubismUserModel {
} }
/** /**
* *
* ModelSetting * ModelSetting
* *
* @param group * @param group
*/ */
public preLoadMotionGroup(group: string): void { public preLoadMotionGroup(group: string): void {
for (let i = 0; i < this._modelSetting.getMotionCount(group); i++) { for (let i = 0; i < this._modelSetting.getMotionCount(group); i++) {
@ -758,7 +763,7 @@ export class LAppModel extends CubismUserModel {
if (this._motionCount >= this._allMotionCount) { if (this._motionCount >= this._allMotionCount) {
this._state = LoadStep.LoadTexture; this._state = LoadStep.LoadTexture;
// 全てのモーションを停止する // 停止所有动作
this._motionManager.stopAllMotions(); this._motionManager.stopAllMotions();
this._updating = false; this._updating = false;
@ -773,26 +778,26 @@ export class LAppModel extends CubismUserModel {
} }
/** /**
* *
*/ */
public releaseMotions(): void { public releaseMotions(): void {
this._motions.clear(); this._motions.clear();
} }
/** /**
* *
*/ */
public releaseExpressions(): void { public releaseExpressions(): void {
this._expressions.clear(); this._expressions.clear();
} }
/** /**
* View-Projection * View-Projection
*/ */
public doDraw(): void { public doDraw(): void {
if (this._model == null) return; if (this._model == null) return;
// キャンバスサイズを渡す // 传递画布大小
const viewport: number[] = [0, 0, canvas.width, canvas.height]; const viewport: number[] = [0, 0, canvas.width, canvas.height];
this.getRenderer().setRenderState(frameBuffer, viewport); this.getRenderer().setRenderState(frameBuffer, viewport);
@ -800,14 +805,14 @@ export class LAppModel extends CubismUserModel {
} }
/** /**
* View-Projection * View-Projection
*/ */
public draw(matrix: CubismMatrix44): void { public draw(matrix: CubismMatrix44): void {
if (this._model == null) { if (this._model == null) {
return; return;
} }
// 各読み込み終了後 // 各读取完成后
if (this._state == LoadStep.CompleteSetup) { if (this._state == LoadStep.CompleteSetup) {
matrix.multiplyByMatrix(this._modelMatrix); matrix.multiplyByMatrix(this._modelMatrix);
@ -817,8 +822,32 @@ export class LAppModel extends CubismUserModel {
} }
} }
public async hasMocConsistencyFromFile() {
CSM_ASSERT(this._modelSetting.getModelFileName().localeCompare(``));
// CubismModel
if (this._modelSetting.getModelFileName() != '') {
const modelFileName = this._modelSetting.getModelFileName();
const response = await fetch(`${this._modelHomeDir}${modelFileName}`);
const arrayBuffer = await response.arrayBuffer();
this._consistency = CubismMoc.hasMocConsistency(arrayBuffer);
if (!this._consistency) {
CubismLogInfo('Inconsistent MOC3.');
} else {
CubismLogInfo('Consistent MOC3.');
}
return this._consistency;
} else {
LAppPal.printMessage('Model data does not exist.');
}
}
/** /**
* *
*/ */
public constructor() { public constructor() {
super(); super();
@ -827,11 +856,11 @@ export class LAppModel extends CubismUserModel {
this._modelHomeDir = null; this._modelHomeDir = null;
this._userTimeSeconds = 0.0; this._userTimeSeconds = 0.0;
this._eyeBlinkIds = new csmVector<CubismIdHandle>(); this._eyeBlinkIds = new csmVector<CubismIdHandle>(); // 模型设置的眨眼功能参数ID
this._lipSyncIds = new csmVector<CubismIdHandle>(); this._lipSyncIds = new csmVector<CubismIdHandle>(); // 模型设置的唇形同步功能参数ID
this._motions = new csmMap<string, ACubismMotion>(); this._motions = new csmMap<string, ACubismMotion>(); // 已加载的动作列表
this._expressions = new csmMap<string, ACubismMotion>(); this._expressions = new csmMap<string, ACubismMotion>(); // 已加载的表情列表
this._hitArea = new csmVector<csmRect>(); this._hitArea = new csmVector<csmRect>();
this._userArea = new csmVector<csmRect>(); this._userArea = new csmVector<csmRect>();
@ -855,38 +884,44 @@ export class LAppModel extends CubismUserModel {
CubismDefaultParameterId.ParamBodyAngleX CubismDefaultParameterId.ParamBodyAngleX
); );
if (LAppDefine.MOCConsistencyValidationEnable) {
this._mocConsistency = true;
}
this._state = LoadStep.LoadAssets; this._state = LoadStep.LoadAssets;
this._expressionCount = 0; this._expressionCount = 0;
this._textureCount = 0; this._textureCount = 0;
this._motionCount = 0; this._motionCount = 0;
this._allMotionCount = 0; this._allMotionCount = 0;
this._wavFileHandler = new LAppWavFileHandler(); this._wavFileHandler = new LAppWavFileHandler();
this._consistency = false;
} }
_modelSetting: ICubismModelSetting; // モデルセッティング情報 _modelSetting: ICubismModelSetting; // 模型设置信息
_modelHomeDir: string; // モデルセッティングが置かれたディレクトリ _modelHomeDir: string; // 放置模型设置的目录
_userTimeSeconds: number; // デルタ時間の積算値[秒] _userTimeSeconds: number; // 时间增量的累积值[秒]
_eyeBlinkIds: csmVector<CubismIdHandle>; // モデルに設定された瞬き機能用パラメータID _eyeBlinkIds: csmVector<CubismIdHandle>; // 模型设定的眨眼功能参数ID
_lipSyncIds: csmVector<CubismIdHandle>; // モデルに設定されたリップシンク機能用パラメータID _lipSyncIds: csmVector<CubismIdHandle>; // 模型设定的唇形同步功能参数ID
_motions: csmMap<string, ACubismMotion>; // 読み込まれているモーションのリスト _motions: csmMap<string, ACubismMotion>; // 已加载的动作列表
_expressions: csmMap<string, ACubismMotion>; // 読み込まれている表情のリスト _expressions: csmMap<string, ACubismMotion>; // 已加载的表情列表
_hitArea: csmVector<csmRect>; _hitArea: csmVector<csmRect>;
_userArea: csmVector<csmRect>; _userArea: csmVector<csmRect>;
_idParamAngleX: CubismIdHandle; // パラメータID: ParamAngleX _idParamAngleX: CubismIdHandle; // 参数ID: ParamAngleX
_idParamAngleY: CubismIdHandle; // パラメータID: ParamAngleY _idParamAngleY: CubismIdHandle; // 参数ID: ParamAngleY
_idParamAngleZ: CubismIdHandle; // パラメータID: ParamAngleZ _idParamAngleZ: CubismIdHandle; // 参数ID: ParamAngleZ
_idParamEyeBallX: CubismIdHandle; // パラメータID: ParamEyeBallX _idParamEyeBallX: CubismIdHandle; // 参数ID: ParamEyeBallX
_idParamEyeBallY: CubismIdHandle; // パラメータID: ParamEyeBAllY _idParamEyeBallY: CubismIdHandle; // 参数ID: ParamEyeBAllY
_idParamBodyAngleX: CubismIdHandle; // パラメータID: ParamBodyAngleX _idParamBodyAngleX: CubismIdHandle; // 参数ID: ParamBodyAngleX
_state: number; // 現在のステータス管理用 _state: LoadStep; // 当前的状态管理用
_expressionCount: number; // 表情データカウント _expressionCount: number; // 表情数据计数
_textureCount: number; // テクスチャカウント _textureCount: number; // 纹理计数
_motionCount: number; // モーションデータカウント _motionCount: number; // 动作数据计数
_allMotionCount: number; // モーション総数 _allMotionCount: number; // 动作总数
_wavFileHandler: LAppWavFileHandler; //wavファイルハンドラ _wavFileHandler: LAppWavFileHandler; //wav文件处理器
_consistency: boolean; // MOC3一致性检查管理用
} }

View File

@ -6,19 +6,19 @@
*/ */
/** /**
* Cubism Platform Abstraction Layer. * Cubism Platform Abstraction Layer .
* *
* * .
*/ */
export class LAppPal { export class LAppPal {
/** /**
* *
* *
* @param filePath * @param filePath
* @return * @return
* { * {
* buffer, * buffer,
* size * size
* } * }
*/ */
public static loadFileAsBytes( public static loadFileAsBytes(
@ -31,8 +31,8 @@ export class LAppPal {
} }
/** /**
* *
* @return [ms] * @return [ms]
*/ */
public static getDeltaTime(): number { public static getDeltaTime(): number {
return this.s_deltaTime; return this.s_deltaTime;
@ -45,8 +45,8 @@ export class LAppPal {
} }
/** /**
* *
* @param message * @param message
*/ */
public static printMessage(message: string): void { public static printMessage(message: string): void {
console.log(message); console.log(message);

View File

@ -8,18 +8,18 @@
import { canvas, gl } from './lappdelegate'; import { canvas, gl } from './lappdelegate';
/** /**
* *
* *
* Rect * IDRect
*/ */
export class LAppSprite { export class LAppSprite {
/** /**
* *
* @param x x * @param x x
* @param y y * @param y y
* @param width * @param width
* @param height * @param height
* @param textureId * @param textureId
*/ */
constructor( constructor(
x: number, x: number,
@ -50,7 +50,7 @@ export class LAppSprite {
} }
/** /**
* *
*/ */
public release(): void { public release(): void {
this._rect = null; this._rect = null;
@ -69,54 +69,54 @@ export class LAppSprite {
} }
/** /**
* *
*/ */
public getTexture(): WebGLTexture { public getTexture(): WebGLTexture {
return this._texture; return this._texture;
} }
/** /**
* *
* @param programId * @param programId
* @param canvas * @param canvas
*/ */
public render(programId: WebGLProgram): void { public render(programId: WebGLProgram): void {
if (this._texture == null) { if (this._texture == null) {
// ロードが完了していない // 加载未完成
return; return;
} }
// 初回描画時 // 首次绘制
if (this._firstDraw) { if (this._firstDraw) {
// 何番目のattribute変数か取得 // 获取attribute变量的索引
this._positionLocation = gl.getAttribLocation(programId, 'position'); this._positionLocation = gl.getAttribLocation(programId, 'position');
gl.enableVertexAttribArray(this._positionLocation); gl.enableVertexAttribArray(this._positionLocation);
this._uvLocation = gl.getAttribLocation(programId, 'uv'); this._uvLocation = gl.getAttribLocation(programId, 'uv');
gl.enableVertexAttribArray(this._uvLocation); gl.enableVertexAttribArray(this._uvLocation);
// 何番目のuniform変数か取得 // 获取uniform变量的索引
this._textureLocation = gl.getUniformLocation(programId, 'texture'); this._textureLocation = gl.getUniformLocation(programId, 'texture');
// uniform属性の登録 // 注册uniform属性
gl.uniform1i(this._textureLocation, 0); gl.uniform1i(this._textureLocation, 0);
// uvバッファ、座標初期 // uv缓冲,坐标初始
{ {
this._uvArray = new Float32Array([ this._uvArray = new Float32Array([
1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0
]); ]);
// uvバッファを作成 // 创建uv缓冲
this._uvBuffer = gl.createBuffer(); this._uvBuffer = gl.createBuffer();
} }
// 頂点バッファ、座標初期 // 顶点缓冲,坐标初始
{ {
const maxWidth = canvas.width; const maxWidth = canvas.width;
const maxHeight = canvas.height; const maxHeight = canvas.height;
// 頂点データ // 顶点数据
this._positionArray = new Float32Array([ this._positionArray = new Float32Array([
(this._rect.right - maxWidth * 0.5) / (maxWidth * 0.5), (this._rect.right - maxWidth * 0.5) / (maxWidth * 0.5),
(this._rect.up - maxHeight * 0.5) / (maxHeight * 0.5), (this._rect.up - maxHeight * 0.5) / (maxHeight * 0.5),
@ -128,41 +128,41 @@ export class LAppSprite {
(this._rect.down - maxHeight * 0.5) / (maxHeight * 0.5) (this._rect.down - maxHeight * 0.5) / (maxHeight * 0.5)
]); ]);
// 頂点バッファを作成 // 创建顶点缓冲
this._vertexBuffer = gl.createBuffer(); this._vertexBuffer = gl.createBuffer();
} }
// 頂点インデックスバッファ、初期 // 顶点索引缓冲,初始
{ {
// インデックスデータ // 索引数据
this._indexArray = new Uint16Array([0, 1, 2, 3, 2, 0]); this._indexArray = new Uint16Array([0, 1, 2, 3, 2, 0]);
// インデックスバッファを作成 // 创建索引缓冲
this._indexBuffer = gl.createBuffer(); this._indexBuffer = gl.createBuffer();
} }
this._firstDraw = false; this._firstDraw = false;
} }
// UV座標登録 // 注册UV坐标
gl.bindBuffer(gl.ARRAY_BUFFER, this._uvBuffer); gl.bindBuffer(gl.ARRAY_BUFFER, this._uvBuffer);
gl.bufferData(gl.ARRAY_BUFFER, this._uvArray, gl.STATIC_DRAW); gl.bufferData(gl.ARRAY_BUFFER, this._uvArray, gl.STATIC_DRAW);
// attribute属性を登録 // 注册attribute属性
gl.vertexAttribPointer(this._uvLocation, 2, gl.FLOAT, false, 0, 0); gl.vertexAttribPointer(this._uvLocation, 2, gl.FLOAT, false, 0, 0);
// 頂点座標を登録 // 注册顶点坐标
gl.bindBuffer(gl.ARRAY_BUFFER, this._vertexBuffer); gl.bindBuffer(gl.ARRAY_BUFFER, this._vertexBuffer);
gl.bufferData(gl.ARRAY_BUFFER, this._positionArray, gl.STATIC_DRAW); gl.bufferData(gl.ARRAY_BUFFER, this._positionArray, gl.STATIC_DRAW);
// attribute属性を登録 // 注册attribute属性
gl.vertexAttribPointer(this._positionLocation, 2, gl.FLOAT, false, 0, 0); gl.vertexAttribPointer(this._positionLocation, 2, gl.FLOAT, false, 0, 0);
// 頂点インデックスを作成 // 创建顶点索引
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indexBuffer); gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, this._indexBuffer);
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this._indexArray, gl.DYNAMIC_DRAW); gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, this._indexArray, gl.DYNAMIC_DRAW);
// モデルの描画 // 绘制模型
gl.bindTexture(gl.TEXTURE_2D, this._texture); gl.bindTexture(gl.TEXTURE_2D, this._texture);
gl.drawElements( gl.drawElements(
gl.TRIANGLES, gl.TRIANGLES,
@ -173,15 +173,15 @@ export class LAppSprite {
} }
/** /**
* *
* @param pointX x * @param pointX x
* @param pointY y * @param pointY y
*/ */
public isHit(pointX: number, pointY: number): boolean { public isHit(pointX: number, pointY: number): boolean {
// 画面サイズを取得する // 获取屏幕大小
const { height } = canvas; const { height } = canvas;
// Y座標は変換する必要あり // Y坐标需要转换
const y = height - pointY; const y = height - pointY;
return ( return (
@ -192,10 +192,10 @@ export class LAppSprite {
); );
} }
_texture: WebGLTexture; // テクスチャ _texture: WebGLTexture; // 纹理
_vertexBuffer: WebGLBuffer; // 頂点バッファ _vertexBuffer: WebGLBuffer; // 顶点缓冲
_uvBuffer: WebGLBuffer; // uv頂点バッファ _uvBuffer: WebGLBuffer; // uv顶点缓冲
_indexBuffer: WebGLBuffer; // 頂点インデックスバッファ _indexBuffer: WebGLBuffer; // 顶点索引缓冲
_rect: Rect; // 矩形 _rect: Rect; // 矩形
_positionLocation: number; _positionLocation: number;
@ -210,8 +210,8 @@ export class LAppSprite {
} }
export class Rect { export class Rect {
public left: number; // 左 public left: number; // 左
public right: number; // 右 public right: number; // 右
public up: number; // 上 public up: number; // 上
public down: number; // 下 public down: number; // 下
} }

View File

@ -10,19 +10,19 @@ import { csmVector, iterator } from '@framework/type/csmvector';
import { gl } from './lappdelegate'; import { gl } from './lappdelegate';
/** /**
* *
* *
*/ */
export class LAppTextureManager { export class LAppTextureManager {
/** /**
* *
*/ */
constructor() { constructor() {
this._textures = new csmVector<TextureInfo>(); this._textures = new csmVector<TextureInfo>();
} }
/** /**
* *
*/ */
public release(): void { public release(): void {
for ( for (
@ -36,18 +36,18 @@ export class LAppTextureManager {
} }
/** /**
* *
* *
* @param fileName * @param fileName
* @param usePremultiply Premult * @param usePremultiply Premult
* @return null * @return null
*/ */
public createTextureFromPngFile( public createTextureFromPngFile(
fileName: string, fileName: string,
usePremultiply: boolean, usePremultiply: boolean,
callback: (textureInfo: TextureInfo) => void callback: (textureInfo: TextureInfo) => void
): void { ): void {
// search loaded texture already // 搜索已加载的纹理
for ( for (
let ite: iterator<TextureInfo> = this._textures.begin(); let ite: iterator<TextureInfo> = this._textures.begin();
ite.notEqual(this._textures.end()); ite.notEqual(this._textures.end());
@ -57,67 +57,82 @@ export class LAppTextureManager {
ite.ptr().fileName == fileName && ite.ptr().fileName == fileName &&
ite.ptr().usePremultply == usePremultiply ite.ptr().usePremultply == usePremultiply
) { ) {
// 2回目以降はキャッシュが使用される(待ち時間なし) // 第二次及以后使用缓存(无等待时间)
// WebKitでは同じImageのonloadを再度呼ぶには再インスタンスが必要 // 在 WebKit 中,需要重新实例化 Image 才能再次调用相同的 onload
// 詳細https://stackoverflow.com/a/5024181 // 详情https://stackoverflow.com/a/5024181
ite.ptr().img = new Image(); ite.ptr().img = new Image();
ite.ptr().img.onload = (): void => callback(ite.ptr()); ite
.ptr()
.img.addEventListener('load', (): void => callback(ite.ptr()), {
passive: true
});
ite.ptr().img.src = fileName; ite.ptr().img.src = fileName;
return; return;
} }
} }
// データのオンロードをトリガーにする // 以数据加载为触发器
const img = new Image(); const img = new Image();
img.onload = (): void => { img.addEventListener(
// テクスチャオブジェクトの作成 'load',
const tex: WebGLTexture = gl.createTexture(); (): void => {
// 创建纹理对象
const tex: WebGLTexture = gl.createTexture();
// テクスチャを選択 // 选择纹理
gl.bindTexture(gl.TEXTURE_2D, tex); gl.bindTexture(gl.TEXTURE_2D, tex);
// テクスチャにピクセルを書き込む // 将像素写入纹理
gl.texParameteri( gl.texParameteri(
gl.TEXTURE_2D, gl.TEXTURE_2D,
gl.TEXTURE_MIN_FILTER, gl.TEXTURE_MIN_FILTER,
gl.LINEAR_MIPMAP_LINEAR gl.LINEAR_MIPMAP_LINEAR
); );
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
// Premult処理を行わせる // 启用 Premult 处理
if (usePremultiply) { if (usePremultiply) {
gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 1); gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, 1);
} }
// テクスチャにピクセルを書き込む // 将像素写入纹理
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, img); gl.texImage2D(
gl.TEXTURE_2D,
0,
gl.RGBA,
gl.RGBA,
gl.UNSIGNED_BYTE,
img
);
// ミップマップを生成 // 生成 Mipmap
gl.generateMipmap(gl.TEXTURE_2D); gl.generateMipmap(gl.TEXTURE_2D);
// テクスチャをバインド // 绑定纹理
gl.bindTexture(gl.TEXTURE_2D, null); gl.bindTexture(gl.TEXTURE_2D, null);
const textureInfo: TextureInfo = new TextureInfo(); const textureInfo: TextureInfo = new TextureInfo();
if (textureInfo != null) { if (textureInfo != null) {
textureInfo.fileName = fileName; textureInfo.fileName = fileName;
textureInfo.width = img.width; textureInfo.width = img.width;
textureInfo.height = img.height; textureInfo.height = img.height;
textureInfo.id = tex; textureInfo.id = tex;
textureInfo.img = img; textureInfo.img = img;
textureInfo.usePremultply = usePremultiply; textureInfo.usePremultply = usePremultiply;
this._textures.pushBack(textureInfo); this._textures.pushBack(textureInfo);
} }
callback(textureInfo); callback(textureInfo);
}; },
{ passive: true }
);
img.src = fileName; img.src = fileName;
} }
/** /**
* *
* *
* *
*/ */
public releaseTextures(): void { public releaseTextures(): void {
for (let i = 0; i < this._textures.getSize(); i++) { for (let i = 0; i < this._textures.getSize(); i++) {
@ -128,10 +143,10 @@ export class LAppTextureManager {
} }
/** /**
* *
* *
* *
* @param texture * @param texture
*/ */
public releaseTextureByTexture(texture: WebGLTexture): void { public releaseTextureByTexture(texture: WebGLTexture): void {
for (let i = 0; i < this._textures.getSize(); i++) { for (let i = 0; i < this._textures.getSize(); i++) {
@ -146,10 +161,10 @@ export class LAppTextureManager {
} }
/** /**
* *
* *
* *
* @param fileName * @param fileName
*/ */
public releaseTextureByFilePath(fileName: string): void { public releaseTextureByFilePath(fileName: string): void {
for (let i = 0; i < this._textures.getSize(); i++) { for (let i = 0; i < this._textures.getSize(); i++) {
@ -165,13 +180,13 @@ export class LAppTextureManager {
} }
/** /**
* *
*/ */
export class TextureInfo { export class TextureInfo {
img: HTMLImageElement; // 画像 img: HTMLImageElement; // 图片
id: WebGLTexture = null; // テクスチャ id: WebGLTexture = null; // 纹理
width = 0; // 横幅 width = 0; // 宽度
height = 0; // 高 height = 0; // 高
usePremultply: boolean; // Premult処理を有効にするか usePremultply: boolean; // 是否启用 Premult 处理
fileName: string; // ファイル fileName: string; // 文件
} }

View File

@ -17,29 +17,29 @@ import { TextureInfo } from './lapptexturemanager';
import { TouchManager } from './touchmanager'; import { TouchManager } from './touchmanager';
/** /**
* *
*/ */
export class LAppView { export class LAppView {
/** /**
* *
*/ */
constructor() { constructor() {
this._programId = null; this._programId = null;
this._back = null; this._back = null;
this._gear = null; this._gear = null;
// タッチ関係のイベント管理 // 触摸相关事件管理
this._touchManager = new TouchManager(); this._touchManager = new TouchManager();
// デバイス座標からスクリーン座標に変換するための // 从设备坐标到屏幕坐标的转换矩阵
this._deviceToScreen = new CubismMatrix44(); this._deviceToScreen = new CubismMatrix44();
// 画面の表示の拡大縮小や移動の変換を行う行列 // 屏幕显示的缩放和移动转换矩阵
this._viewMatrix = new CubismViewMatrix(); this._viewMatrix = new CubismViewMatrix();
} }
/** /**
* *
*/ */
public initialize(): void { public initialize(): void {
const { width, height } = canvas; const { width, height } = canvas;
@ -50,7 +50,7 @@ export class LAppView {
const bottom: number = LAppDefine.ViewLogicalLeft; const bottom: number = LAppDefine.ViewLogicalLeft;
const top: number = LAppDefine.ViewLogicalRight; const top: number = LAppDefine.ViewLogicalRight;
this._viewMatrix.setScreenRect(left, right, bottom, top); // デバイスに対応する画面の範囲。 Xの左端、Xの右端、Yの下端、Yの上端 this._viewMatrix.setScreenRect(left, right, bottom, top); // 设备对应的屏幕范围。 X的左端X的右端Y的下端Y的上端
this._viewMatrix.scale(LAppDefine.ViewScale, LAppDefine.ViewScale); this._viewMatrix.scale(LAppDefine.ViewScale, LAppDefine.ViewScale);
this._deviceToScreen.loadIdentity(); this._deviceToScreen.loadIdentity();
@ -63,11 +63,11 @@ export class LAppView {
} }
this._deviceToScreen.translateRelative(-width * 0.5, -height * 0.5); this._deviceToScreen.translateRelative(-width * 0.5, -height * 0.5);
// 表示範囲の設定 // 设置显示范围
this._viewMatrix.setMaxScale(LAppDefine.ViewMaxScale); // 限界拡張 this._viewMatrix.setMaxScale(LAppDefine.ViewMaxScale); // 最大扩展
this._viewMatrix.setMinScale(LAppDefine.ViewMinScale); // 限界縮小率 this._viewMatrix.setMinScale(LAppDefine.ViewMinScale); // 最大缩小率
// 表示できる最大範囲 // 可显示的最大范围
this._viewMatrix.setMaxScreenRect( this._viewMatrix.setMaxScreenRect(
LAppDefine.ViewLogicalMaxLeft, LAppDefine.ViewLogicalMaxLeft,
LAppDefine.ViewLogicalMaxRight, LAppDefine.ViewLogicalMaxRight,
@ -77,7 +77,7 @@ export class LAppView {
} }
/** /**
* *
*/ */
public release(): void { public release(): void {
this._viewMatrix = null; this._viewMatrix = null;
@ -95,7 +95,7 @@ export class LAppView {
} }
/** /**
* *
*/ */
public render(): void { public render(): void {
gl.useProgram(this._programId); gl.useProgram(this._programId);
@ -117,7 +117,7 @@ export class LAppView {
} }
/** /**
* *
*/ */
public initializeSprite(): void { public initializeSprite(): void {
const width: number = canvas.width; const width: number = canvas.width;
@ -128,10 +128,10 @@ export class LAppView {
let imageName = ''; let imageName = '';
// 背景画像初期 // 背景图片初始
imageName = LAppDefine.BackImageName; imageName = LAppDefine.BackImageName;
// 非同期なのでコールバック関数を作成 // 因为是异步的所以创建回调函数
const initBackGroundTexture = (textureInfo: TextureInfo): void => { const initBackGroundTexture = (textureInfo: TextureInfo): void => {
const x: number = width * 0.5; const x: number = width * 0.5;
const y: number = height * 0.5; const y: number = height * 0.5;
@ -147,7 +147,7 @@ export class LAppView {
initBackGroundTexture initBackGroundTexture
); );
// 歯車画像初期 // 齿轮图片初始
imageName = LAppDefine.GearImageName; imageName = LAppDefine.GearImageName;
const initGearTexture = (textureInfo: TextureInfo): void => { const initGearTexture = (textureInfo: TextureInfo): void => {
const x = width - textureInfo.width * 0.5; const x = width - textureInfo.width * 0.5;
@ -163,113 +163,124 @@ export class LAppView {
initGearTexture initGearTexture
); );
// シェーダーを作成 // 创建着色器
if (this._programId == null) { if (this._programId == null) {
this._programId = LAppDelegate.getInstance().createShader(); this._programId = LAppDelegate.getInstance().createShader();
} }
} }
/** /**
* *
* *
* @param pointX X * @param pointX X
* @param pointY Y * @param pointY Y
*/ */
public onTouchesBegan(pointX: number, pointY: number): void { public onTouchesBegan(pointX: number, pointY: number): void {
this._touchManager.touchesBegan(pointX, pointY); this._touchManager.touchesBegan(
pointX * window.devicePixelRatio,
pointY * window.devicePixelRatio
);
} }
/** /**
* *
* *
* @param pointX X * @param pointX X
* @param pointY Y * @param pointY Y
*/ */
public onTouchesMoved(pointX: number, pointY: number): void { public onTouchesMoved(pointX: number, pointY: number): void {
const viewX: number = this.transformViewX(this._touchManager.getX()); const viewX: number = this.transformViewX(this._touchManager.getX());
const viewY: number = this.transformViewY(this._touchManager.getY()); const viewY: number = this.transformViewY(this._touchManager.getY());
this._touchManager.touchesMoved(pointX, pointY); this._touchManager.touchesMoved(
pointX * window.devicePixelRatio,
pointY * window.devicePixelRatio
);
const live2DManager: LAppLive2DManager = LAppLive2DManager.getInstance(); const live2DManager: LAppLive2DManager = LAppLive2DManager.getInstance();
live2DManager.onDrag(viewX, viewY); live2DManager.onDrag(viewX, viewY);
} }
/** /**
* *
* *
* @param pointX X * @param pointX X
* @param pointY Y * @param pointY Y
*/ */
public onTouchesEnded(pointX: number, pointY: number): void { public onTouchesEnded(pointX: number, pointY: number): void {
// タッチ終了 // 触摸结束
const live2DManager: LAppLive2DManager = LAppLive2DManager.getInstance(); const live2DManager: LAppLive2DManager = LAppLive2DManager.getInstance();
live2DManager.onDrag(0.0, 0.0); live2DManager.onDrag(0.0, 0.0);
{ {
// シングルタップ // 单次触摸
const x: number = this._deviceToScreen.transformX( const x: number = this._deviceToScreen.transformX(
this._touchManager.getX() this._touchManager.getX()
); // 論理座標変換した座標を取得 ); // 获取经过逻辑坐标转换的坐标
const y: number = this._deviceToScreen.transformY( const y: number = this._deviceToScreen.transformY(
this._touchManager.getY() this._touchManager.getY()
); // 論理座標変化した座標を取得 ); // 获取经过逻辑坐标转换的坐标
if (LAppDefine.DebugTouchLogEnable) { if (LAppDefine.DebugTouchLogEnable) {
LAppPal.printMessage(`[APP]touchesEnded x: ${x} y: ${y}`); LAppPal.printMessage(`[APP]touchesEnded x: ${x} y: ${y}`);
} }
live2DManager.onTap(x, y); live2DManager.onTap(x, y);
// 歯車にタップしたか // 点击了齿轮?
if (this._gear.isHit(pointX, pointY)) { if (
this._gear.isHit(
pointX * window.devicePixelRatio,
pointY * window.devicePixelRatio
)
) {
live2DManager.nextScene(); live2DManager.nextScene();
} }
} }
} }
/** /**
* XView * XView
* *
* @param deviceX X * @param deviceX X
*/ */
public transformViewX(deviceX: number): number { public transformViewX(deviceX: number): number {
const screenX: number = this._deviceToScreen.transformX(deviceX); // 論理座標変換した座標を取得 const screenX: number = this._deviceToScreen.transformX(deviceX); // 获取经过逻辑坐标转换的坐标
return this._viewMatrix.invertTransformX(screenX); // 拡大、縮小、移動後の値 return this._viewMatrix.invertTransformX(screenX); // 获取缩放,移动后的值
} }
/** /**
* YView * YView
* *
* @param deviceY Y * @param deviceY Y
*/ */
public transformViewY(deviceY: number): number { public transformViewY(deviceY: number): number {
const screenY: number = this._deviceToScreen.transformY(deviceY); // 論理座標変換した座標を取得 const screenY: number = this._deviceToScreen.transformY(deviceY); // 获取经过逻辑坐标转换的坐标
return this._viewMatrix.invertTransformY(screenY); return this._viewMatrix.invertTransformY(screenY);
} }
/** /**
* XScreen * XScreen
* @param deviceX X * @param deviceX X
*/ */
public transformScreenX(deviceX: number): number { public transformScreenX(deviceX: number): number {
return this._deviceToScreen.transformX(deviceX); return this._deviceToScreen.transformX(deviceX);
} }
/** /**
* YScreen * YScreen
* *
* @param deviceY Y * @param deviceY Y
*/ */
public transformScreenY(deviceY: number): number { public transformScreenY(deviceY: number): number {
return this._deviceToScreen.transformY(deviceY); return this._deviceToScreen.transformY(deviceY);
} }
_touchManager: TouchManager; // タッチマネージャー _touchManager: TouchManager; // 触摸管理器
_deviceToScreen: CubismMatrix44; // デバイスからスクリーンへの行列 _deviceToScreen: CubismMatrix44; // 从设备到屏幕的矩阵
_viewMatrix: CubismViewMatrix; // viewMatrix _viewMatrix: CubismViewMatrix; // viewMatrix
_programId: WebGLProgram; // シェーダID _programId: WebGLProgram; // 着色器ID
_back: LAppSprite; // 背景画像 _back: LAppSprite; // 背景图片
_gear: LAppSprite; // ギア画像 _gear: LAppSprite; // 齿轮图片
_changeModel: boolean; // モデル切り替えフラグ _changeModel: boolean; // 模型切换标志
_isClick: boolean; // クリック中 _isClick: boolean; // 正在点击
} }

View File

@ -11,10 +11,9 @@ export let s_instance: LAppWavFileHandler = null;
export class LAppWavFileHandler { export class LAppWavFileHandler {
/** /**
* *
*
* *
* @return * @return
*/ */
public static getInstance(): LAppWavFileHandler { public static getInstance(): LAppWavFileHandler {
if (s_instance == null) { if (s_instance == null) {
@ -25,7 +24,7 @@ export class LAppWavFileHandler {
} }
/** /**
* *
*/ */
public static releaseInstance(): void { public static releaseInstance(): void {
if (s_instance != null) { if (s_instance != null) {
@ -39,7 +38,7 @@ export class LAppWavFileHandler {
let goalOffset: number; let goalOffset: number;
let rms: number; let rms: number;
// データロード前/ファイル末尾に達した場合は更新しない // 如果在加载数据之前/达到文件末尾,则不更新
if ( if (
this._pcmData == null || this._pcmData == null ||
this._sampleOffset >= this._wavFileInfo._samplesPerChannel this._sampleOffset >= this._wavFileInfo._samplesPerChannel
@ -48,7 +47,7 @@ export class LAppWavFileHandler {
return false; return false;
} }
// 経過時間後の状態を保持 // 保持经过时间后的状态
this._userTimeSeconds += deltaTimeSeconds; this._userTimeSeconds += deltaTimeSeconds;
goalOffset = Math.floor( goalOffset = Math.floor(
this._userTimeSeconds * this._wavFileInfo._samplingRate this._userTimeSeconds * this._wavFileInfo._samplingRate
@ -57,7 +56,7 @@ export class LAppWavFileHandler {
goalOffset = this._wavFileInfo._samplesPerChannel; goalOffset = this._wavFileInfo._samplesPerChannel;
} }
// RMS計測 // RMS测量
rms = 0.0; rms = 0.0;
for ( for (
let channelCount = 0; let channelCount = 0;
@ -85,11 +84,11 @@ export class LAppWavFileHandler {
} }
public start(filePath: string): void { public start(filePath: string): void {
// サンプル位参照位置を初期化 // 初始化样本位参考位置
this._sampleOffset = 0; this._sampleOffset = 0;
this._userTimeSeconds = 0.0; this._userTimeSeconds = 0.0;
// RMS値をリセット // 重置RMS值
this._lastRms = 0.0; this._lastRms = 0.0;
if (!this.loadWavFile(filePath)) { if (!this.loadWavFile(filePath)) {
@ -108,7 +107,7 @@ export class LAppWavFileHandler {
this.releasePcmData(); this.releasePcmData();
} }
// ファイルロード // 文件加载
const asyncFileLoad = async () => { const asyncFileLoad = async () => {
return fetch(filePath).then(responce => { return fetch(filePath).then(responce => {
return responce.arrayBuffer(); return responce.arrayBuffer();
@ -121,7 +120,7 @@ export class LAppWavFileHandler {
this._byteReader._fileSize = this._byteReader._fileByte.byteLength; this._byteReader._fileSize = this._byteReader._fileByte.byteLength;
this._byteReader._readOffset = 0; this._byteReader._readOffset = 0;
// ファイルロードに失敗しているか、先頭のシグネチャ"RIFF"を入れるサイズもない場合は失敗 // 如果文件加载失败或者没有足够的大小来插入顶部的签名"RIFF",则失败
if ( if (
this._byteReader._fileByte == null || this._byteReader._fileByte == null ||
this._byteReader._fileSize < 4 this._byteReader._fileSize < 4
@ -129,50 +128,50 @@ export class LAppWavFileHandler {
return false; return false;
} }
// ファイル // 文件
this._wavFileInfo._fileName = filePath; this._wavFileInfo._fileName = filePath;
try { try {
// シグネチャ "RIFF" // 签名 "RIFF"
if (!this._byteReader.getCheckSignature('RIFF')) { if (!this._byteReader.getCheckSignature('RIFF')) {
ret = false; ret = false;
throw new Error('Cannot find Signeture "RIFF".'); throw new Error('Cannot find Signeture "RIFF".');
} }
// ファイルサイズ-8読み飛ばし // 文件大小-8跳过
this._byteReader.get32LittleEndian(); this._byteReader.get32LittleEndian();
// シグネチャ "WAVE" // 签名 "WAVE"
if (!this._byteReader.getCheckSignature('WAVE')) { if (!this._byteReader.getCheckSignature('WAVE')) {
ret = false; ret = false;
throw new Error('Cannot find Signeture "WAVE".'); throw new Error('Cannot find Signeture "WAVE".');
} }
// シグネチャ "fmt " // 签名 "fmt "
if (!this._byteReader.getCheckSignature('fmt ')) { if (!this._byteReader.getCheckSignature('fmt ')) {
ret = false; ret = false;
throw new Error('Cannot find Signeture "fmt".'); throw new Error('Cannot find Signeture "fmt".');
} }
// fmtチャンクサイズ // fmt块大小
const fmtChunkSize = this._byteReader.get32LittleEndian(); const fmtChunkSize = this._byteReader.get32LittleEndian();
// フォーマットIDは1リニアPCM以外受け付けない // 格式ID不接受1线性PCM以外的格式
if (this._byteReader.get16LittleEndian() != 1) { if (this._byteReader.get16LittleEndian() != 1) {
ret = false; ret = false;
throw new Error('File is not linear PCM.'); throw new Error('File is not linear PCM.');
} }
// チャンネル数 // 通道数量
this._wavFileInfo._numberOfChannels = this._wavFileInfo._numberOfChannels =
this._byteReader.get16LittleEndian(); this._byteReader.get16LittleEndian();
// サンプリングレート // 采样率
this._wavFileInfo._samplingRate = this._byteReader.get32LittleEndian(); this._wavFileInfo._samplingRate = this._byteReader.get32LittleEndian();
// データ速度[byte/sec](読み飛ばし // 数据速度[byte/sec](跳过
this._byteReader.get32LittleEndian(); this._byteReader.get32LittleEndian();
// ブロックサイズ(読み飛ばし // 块大小(跳过
this._byteReader.get16LittleEndian(); this._byteReader.get16LittleEndian();
// 量子化ビット // 量化位
this._wavFileInfo._bitsPerSample = this._byteReader.get16LittleEndian(); this._wavFileInfo._bitsPerSample = this._byteReader.get16LittleEndian();
// fmtチャンクの拡張部分の読み飛ばし // 跳过fmt块的扩展部分
if (fmtChunkSize > 16) { if (fmtChunkSize > 16) {
this._byteReader._readOffset += fmtChunkSize - 16; this._byteReader._readOffset += fmtChunkSize - 16;
} }
// "data"チャンクが出現するまで読み飛ばし // 跳过直到出现"data"块
while ( while (
!this._byteReader.getCheckSignature('data') && !this._byteReader.getCheckSignature('data') &&
this._byteReader._readOffset < this._byteReader._fileSize this._byteReader._readOffset < this._byteReader._fileSize
@ -180,12 +179,12 @@ export class LAppWavFileHandler {
this._byteReader._readOffset += this._byteReader._readOffset +=
this._byteReader.get32LittleEndian() + 4; this._byteReader.get32LittleEndian() + 4;
} }
// ファイル内に"data"チャンクが出現しなかった // 文件中没有出现"data"块
if (this._byteReader._readOffset >= this._byteReader._fileSize) { if (this._byteReader._readOffset >= this._byteReader._fileSize) {
ret = false; ret = false;
throw new Error('Cannot find "data" Chunk.'); throw new Error('Cannot find "data" Chunk.');
} }
// サンプル数 // 样本数量
{ {
const dataChunkSize = this._byteReader.get32LittleEndian(); const dataChunkSize = this._byteReader.get32LittleEndian();
this._wavFileInfo._samplesPerChannel = this._wavFileInfo._samplesPerChannel =
@ -193,7 +192,7 @@ export class LAppWavFileHandler {
(this._wavFileInfo._bitsPerSample * (this._wavFileInfo._bitsPerSample *
this._wavFileInfo._numberOfChannels); this._wavFileInfo._numberOfChannels);
} }
// 領域確 // 留区域
this._pcmData = new Array(this._wavFileInfo._numberOfChannels); this._pcmData = new Array(this._wavFileInfo._numberOfChannels);
for ( for (
let channelCount = 0; let channelCount = 0;
@ -204,7 +203,7 @@ export class LAppWavFileHandler {
this._wavFileInfo._samplesPerChannel this._wavFileInfo._samplesPerChannel
); );
} }
// 波形データ取得 // 获取波形数据
for ( for (
let sampleCount = 0; let sampleCount = 0;
sampleCount < this._wavFileInfo._samplesPerChannel; sampleCount < this._wavFileInfo._samplesPerChannel;
@ -231,7 +230,7 @@ export class LAppWavFileHandler {
public getPcmSample(): number { public getPcmSample(): number {
let pcm32; let pcm32;
// 32ビット幅に拡張してから-11の範囲に丸める // 在扩展到32位宽度后将其四舍五入到-11的范围内
switch (this._wavFileInfo._bitsPerSample) { switch (this._wavFileInfo._bitsPerSample) {
case 8: case 8:
pcm32 = this._byteReader.get8() - 128; pcm32 = this._byteReader.get8() - 128;
@ -244,7 +243,7 @@ export class LAppWavFileHandler {
pcm32 = this._byteReader.get24LittleEndian() << 8; pcm32 = this._byteReader.get24LittleEndian() << 8;
break; break;
default: default:
// 対応していないビット幅 // 不支持的位宽
pcm32 = 0; pcm32 = 0;
break; break;
} }
@ -295,11 +294,11 @@ export class WavFileInfo {
this._samplesPerChannel = 0; this._samplesPerChannel = 0;
} }
_fileName: string; ///< ファイル _fileName: string; ///< 文件
_numberOfChannels: number; ///< チャンネル _numberOfChannels: number; ///< 通道
_bitsPerSample: number; ///< サンプルあたりビット _bitsPerSample: number; ///< 每个样本的位
_samplingRate: number; ///< サンプリングレート _samplingRate: number; ///< 采样率
_samplesPerChannel: number; ///< 1チャンネルあたり総サンプル _samplesPerChannel: number; ///< 每个通道的总样本
} }
export class ByteReader { export class ByteReader {
@ -311,8 +310,8 @@ export class ByteReader {
} }
/** /**
* @brief 8 * @brief 8
* @return Csm::csmUint8 8 * @return Csm::csmUint8 8
*/ */
public get8(): number { public get8(): number {
const ret = this._fileDataView.getUint8(this._readOffset); const ret = this._fileDataView.getUint8(this._readOffset);
@ -321,8 +320,8 @@ export class ByteReader {
} }
/** /**
* @brief 16 * @brief 16
* @return Csm::csmUint16 16 * @return Csm::csmUint16 16
*/ */
public get16LittleEndian(): number { public get16LittleEndian(): number {
const ret = const ret =
@ -333,8 +332,8 @@ export class ByteReader {
} }
/** /**
* @brief 24 * @brief 24
* @return Csm::csmUint32 2424 * @return Csm::csmUint32 2424
*/ */
public get24LittleEndian(): number { public get24LittleEndian(): number {
const ret = const ret =
@ -346,8 +345,8 @@ export class ByteReader {
} }
/** /**
* @brief 32 * @brief 32
* @return Csm::csmUint32 32 * @return Csm::csmUint32 32
*/ */
public get32LittleEndian(): number { public get32LittleEndian(): number {
const ret = const ret =
@ -360,10 +359,10 @@ export class ByteReader {
} }
/** /**
* @brief * @brief
* @param[in] reference * @param[in] reference
* @retval true * @retval true
* @retval false * @retval false
*/ */
public getCheckSignature(reference: string): boolean { public getCheckSignature(reference: string): boolean {
const getSignature: Uint8Array = new Uint8Array(4); const getSignature: Uint8Array = new Uint8Array(4);
@ -382,8 +381,8 @@ export class ByteReader {
); );
} }
_fileByte: ArrayBuffer; ///< ロードしたファイルのバイト _fileByte: ArrayBuffer; ///< 加载的文件字节序
_fileDataView: DataView; _fileDataView: DataView;
_fileSize: number; ///< ファイルサイズ _fileSize: number; ///< 文件大小
_readOffset: number; ///< ファイル参照位置 _readOffset: number; ///< 文件引用位置
} }

View File

@ -9,27 +9,39 @@ import { LAppDelegate } from './lappdelegate';
import * as LAppDefine from './lappdefine'; import * as LAppDefine from './lappdefine';
/** /**
* *
*/ */
window.onload = (): void => { window.addEventListener(
// create the application instance 'load',
if (LAppDelegate.getInstance().initialize() == false) { (): void => {
return; // 创建应用实例
} if (LAppDelegate.getInstance().initialize() == false) {
return;
}
LAppDelegate.getInstance().run(); LAppDelegate.getInstance().run();
}; },
{ passive: true }
);
/** /**
* *
*/ */
window.onbeforeunload = (): void => LAppDelegate.releaseInstance(); window.addEventListener(
'beforeunload',
(): void => LAppDelegate.releaseInstance(),
{ passive: true }
);
/** /**
* Process when changing screen size. *
*/ */
window.onresize = () => { window.addEventListener(
if (LAppDefine.CanvasSize === 'auto') { 'resize',
LAppDelegate.getInstance().onResize(); () => {
} if (LAppDefine.CanvasSize === 'auto') {
}; LAppDelegate.getInstance().onResize();
}
},
{ passive: true }
);

View File

@ -7,7 +7,7 @@
export class TouchManager { export class TouchManager {
/** /**
* *
*/ */
constructor() { constructor() {
this._startX = 0.0; this._startX = 0.0;
@ -91,9 +91,9 @@ export class TouchManager {
} }
/** /**
* *
* @param deviceX x * @param deviceX x
* @param deviceY y * @param deviceY y
*/ */
public touchesBegan(deviceX: number, deviceY: number): void { public touchesBegan(deviceX: number, deviceY: number): void {
this._lastX = deviceX; this._lastX = deviceX;
@ -106,9 +106,9 @@ export class TouchManager {
} }
/** /**
* *
* @param deviceX x * @param deviceX x
* @param deviceY y * @param deviceY y
*/ */
public touchesMoved(deviceX: number, deviceY: number): void { public touchesMoved(deviceX: number, deviceY: number): void {
this._lastX = deviceX; this._lastX = deviceX;
@ -118,8 +118,8 @@ export class TouchManager {
} }
/** /**
* * flick
* @return * @return flick
*/ */
public getFlickDistance(): number { public getFlickDistance(): number {
return this.calculateDistance( return this.calculateDistance(
@ -131,12 +131,12 @@ export class TouchManager {
} }
/** /**
* * 12
* *
* @param x1 x * @param x1 x
* @param y1 y * @param y1 y
* @param x2 x * @param x2 x
* @param y2 y * @param y2 y
*/ */
public calculateDistance( public calculateDistance(
x1: number, x1: number,
@ -148,13 +148,13 @@ export class TouchManager {
} }
/** /**
* *
* * 0
* *
* @param v1 * @param v1
* @param v2 * @param v2
* *
* @return * @return
*/ */
public calculateMovingAmount(v1: number, v2: number): number { public calculateMovingAmount(v1: number, v2: number): number {
if (v1 > 0.0 != v2 > 0.0) { if (v1 > 0.0 != v2 > 0.0) {
@ -169,18 +169,18 @@ export class TouchManager {
); );
} }
_startY: number; // タッチを開始した時のxの値 _startY: number; // 触摸开始时的x值
_startX: number; // タッチを開始した時のyの値 _startX: number; // 触摸开始时的y值
_lastX: number; // シングルタッチ時のxの値 _lastX: number; // 单点触摸时的x值
_lastY: number; // シングルタッチ時のyの値 _lastY: number; // 单点触摸时的y值
_lastX1: number; // ダブルタッチ時の一つ目のxの値 _lastX1: number; // 双点触摸时的第一个点的x值
_lastY1: number; // ダブルタッチ時の一つ目のyの値 _lastY1: number; // 双点触摸时的第一个点的y值
_lastX2: number; // ダブルタッチ時の二つ目のxの値 _lastX2: number; // 双点触摸时的第二个点的x值
_lastY2: number; // ダブルタッチ時の二つ目のyの値 _lastY2: number; // 双点触摸时的第二个点的y值
_lastTouchDistance: number; // 2本以上でタッチしたときの指の距離 _lastTouchDistance: number; // 当触摸2个以上的点时指的距离
_deltaX: number; // 前回の値から今回の値へのxの移動距離 _deltaX: number; // 从上一个值到现在的值的x移动距离
_deltaY: number; // 前回の値から今回の値へのyの移動距離 _deltaY: number; // 从上一个值到现在的值的y移动距离
_scale: number; // このフレームで掛け合わせる拡大率。拡大操作中以外は1。 _scale: number; // 这一帧要乘的缩放比例。除了缩放操作中,其他时候为1。
_touchSingle: boolean; // シングルタッチ時はtrue _touchSingle: boolean; // 单点触摸时为true
_flipAvailable: boolean; // フリップが有効かどうか _flipAvailable: boolean; // flick是否可用
} }

View File

@ -11,7 +11,9 @@
"baseUrl": "./", "baseUrl": "./",
"paths": { "paths": {
"@framework/*": ["../../../Framework/src/*"] "@framework/*": ["../../../Framework/src/*"]
} },
"noImplicitAny": true,
"useUnknownInCatchVariables": true
}, },
"include": [ "include": [
"src/**/*.ts", "src/**/*.ts",

View File

@ -34,7 +34,7 @@ module.exports = {
} }
], ],
hot: true, hot: true,
port: 5000, port: 8080,
host: '0.0.0.0', host: '0.0.0.0',
compress: true, compress: true,
devMiddleware: { devMiddleware: {

View File

@ -0,0 +1,72 @@
[English](README.md) / [日本語](README.ja.md)
---
# Cubism Web Samples for TypeScript
TypeScript で実装したアプリケーションのサンプル実装です。
## 開発環境
| パッケージ | バージョン |
| --- | --- |
| TypeScript | 5.2.2 |
| Webpack | 5.88.2 |
その他のパッケージに関しては、各プロジェクトの `package.json` を確認してください。
また、その他の開発環境・動作確認環境はトップディレクトリにある [README.md](/README.ja.md) を参照してください。
## タスク一覧
### `npm: start`
開発用のローカルサーバが起動され、プロジェクトの監視ビルドが行われます。
プロジェクトの変更を行うと自動的に再ビルドが行われ、ブラウザのリロードが発生します。
[プロジェクトのデバック]から Visual Studio Code 上でデバックを行うことができます。
Visual Studio Code 上で終了する場合は、
コマンドパレットから `>Tasks: Terminate Task` を入力してタスクを選択します。
### `npm: build`
`dist` ディレクトリに、TypeScript のビルド成果物を出力します。
Webpack を用いて1つにまとめられた JavaScript ファイルが出力されます。
`tsconfig.json` 及び `webpack.config.js` を編集することで設定内容を変更できます。
### `npm: build:prod`
上記のビルドを最適化した上で行います。
ビルドサイズが削減されるため、本番環境用の成果物の出力に使用します。
### `npm: test`
TypeScript の型チェックテストを行います。
`tsconfig.json` を編集することで設定内容を変更できます。
### `npm: lint`
`src` ディレクトリ内の TypeScript ファイルの静的解析を行います。
`.eslintrc.yml` を編集することで設定内容を変更できます。
### `npm: lint:fix`
`src` ディレクトリ内の TypeScript ファイルの静的解析及び自動修正を行います。
`.eslintrc.yml` を編集することで設定内容を変更できます。
### `npm: serve`
簡易ローカルサーバを起動します。
ブラウザからサーバ内の `/Samples/TypeScript/Demo` にアクセスすることで index.html の確認ができます。
事前にプロジェクトのビルドを行なっている必要があります。
本番環境に近い環境で成果物の検証を行うことができます。
### `npm: clean`
ビルド成果物ディレクトリ(`dist`)を削除します。

View File

@ -1,68 +1,71 @@
[English](README.md) / [日本語](README.ja.md)
---
# Cubism Web Samples for TypeScript # Cubism Web Samples for TypeScript
TypeScript で実装したアプリケーションのサンプル実装です。 This is a sample implementation of an application implemented with TypeScript.
## 開発環境 ## Development environment
| パッケージ | バージョン | | Package | Version |
| --- | --- | | --- | --- |
| TypeScript | 4.6.4 | | TypeScript | 5.2.2 |
| Webpack | 5.72.1 | | Webpack | 5.88.2 |
その他のパッケージに関しては、各プロジェクトの `package.json` を確認してください。 For other packages, check the `package.json` for each project.
また、その他の開発環境・動作確認環境はトップディレクトリにある [README.md](/README.md) を参照してください。 For other development environments and operation environments, see [README.md](/README.md) in the top directory.
## タスク一覧 ## Task list
### `npm: start` ### `npm: start`
開発用のローカルサーバが起動され、プロジェクトの監視ビルドが行われます。 Starts a local server for development and creates a project monitor build.
プロジェクトの変更を行うと自動的に再ビルドが行われ、ブラウザのリロードが発生します。 Any changes you make to the project will automatically rebuild and cause the browser to reload.
[プロジェクトのデバック]から Visual Studio Code 上でデバックを行うことができます。 You can debug in Visual Studio Code from [Debug Project].
Visual Studio Code 上で終了する場合は、 To terminate in Visual Studio Code, type `>Tasks: Terminate Task` and select the task from the command palette.
コマンドパレットから `>Tasks: Terminate Task` を入力してタスクを選択します。
### `npm: build` ### `npm: build`
`dist` ディレクトリに、TypeScript のビルド成果物を出力します。 Outputs a TypeScript build deliverable to the `dist` directory.
Webpack を用いて1つにまとめられた JavaScript ファイルが出力されます。 The output is a JavaScript file that has been bundled into one using Webpack.
`tsconfig.json` 及び `webpack.config.js` を編集することで設定内容を変更できます。 You can change the settings by editing `tsconfig.json` and `webpack.config.js`.
### `npm: build:prod` ### `npm: build:prod`
上記のビルドを最適化した上で行います。 Creates above build after optimizing it.
ビルドサイズが削減されるため、本番環境用の成果物の出力に使用します。 It is used to output deliverables for production environments as it reduces the build size.
### `npm: test` ### `npm: test`
TypeScript の型チェックテストを行います。 Performs a TypeScript type check test.
`tsconfig.json` を編集することで設定内容を変更できます。 You can change the settings by editing `tsconfig.json`.
### `npm: lint` ### `npm: lint`
`src` ディレクトリ内の TypeScript ファイルの静的解析を行います。 Performs static analysis of TypeScript files in the `src` directory.
`.eslintrc.yml` を編集することで設定内容を変更できます。 You can change the settings by editing `.eslintrc.yml`.
### `npm: lint:fix` ### `npm: lint:fix`
`src` ディレクトリ内の TypeScript ファイルの静的解析及び自動修正を行います。 Performs static analysis and automatic modification of TypeScript files in the `src` directory.
`.eslintrc.yml` を編集することで設定内容を変更できます。 You can change the settings by editing `.eslintrc.yml`.
### `npm: serve` ### `npm: serve`
簡易ローカルサーバを起動します。 Starts a simple local server.
ブラウザからサーバ内の `/Samples/TypeScript/Demo` にアクセスすることで index.html の確認ができます。 You can check the index.html by accessing `/Samples/TypeScript/Demo` in the server from your browser.
事前にプロジェクトのビルドを行なっている必要があります。 The project needs to be built in advance.
本番環境に近い環境で成果物の検証を行うことができます。 Deliverables can be verified in an environment close to the production environment.
### `npm: clean` ### `npm: clean`
ビルド成果物ディレクトリ(`dist`)を削除します。 Deletes the build deliverable directory (`dist`).