Initial commit
11
.env
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# GitHub OAuth
|
||||||
|
OAUTH_GITHUB_CLIENT_ID=
|
||||||
|
OAUTH_GITHUB_CLIENT_SECRET=
|
||||||
|
|
||||||
|
# Decap CMS
|
||||||
|
PUBLIC_DECAP_CMS_SRC_URL=https://unpkg.com/decap-cms@^3.3.3/dist/decap-cms.js
|
||||||
|
PUBLIC_DECAP_CMS_VERSION=3.3.3
|
||||||
|
|
||||||
|
# Umami Analytics
|
||||||
|
UMAMI_API_KEY=
|
||||||
|
UMAMI_TRACKING_CODE=
|
||||||
1
.gitattributes
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
*.js linguist-language=astro
|
||||||
21
.gitignore
vendored
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
# editor config
|
||||||
|
**/.vscode/
|
||||||
|
|
||||||
|
# dependencies
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
# generated types
|
||||||
|
.astro/
|
||||||
|
.vercel/
|
||||||
|
|
||||||
|
# build output
|
||||||
|
dist/
|
||||||
|
|
||||||
|
# logs
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
pnpm-debug.log*
|
||||||
|
|
||||||
|
# private config
|
||||||
|
.env
|
||||||
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) Spr_Aachen
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
122
README.md
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
<div align = "center">
|
||||||
|
|
||||||
|
# Twilight
|
||||||
|
|
||||||
|
A CMS integrated static blog template built with Astro framework.
|
||||||
|
|
||||||
|
[**🖥️ Live Demo**](https://twilight.spr-aachen.com)
|
||||||
|
[**📝 Documentation**](https://docs.twilight.spr-aachen.com/en)
|
||||||
|
|
||||||
|
[](https://space.bilibili.com/359461611/lists/6641229)
|
||||||
|
[](https://youtube.com/playlist?list=PLzjq8Hx1SRV7yqZQiACcCJmKPeg5D8JKe&si=Bcz2o0PF8MFvx8ec)
|
||||||
|
|
||||||
|
<table style="width: 100%; table-layout: fixed;">
|
||||||
|
<tr>
|
||||||
|
<td colspan="5"><img alt="Desktop" src="docs/image/Desktop.jpg" style="max-width: 100%;"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><img alt="Mobile_4" src="docs/image/Mobile_4.jpg" style="max-width: 100%;"></td>
|
||||||
|
<td><img alt="Mobile_2" src="docs/image/Mobile_2.jpg" style="max-width: 100%;"></td>
|
||||||
|
<td><img alt="Mobile_1" src="docs/image/Mobile_1.jpg" style="max-width: 100%;"></td>
|
||||||
|
<td><img alt="Mobile_3" src="docs/image/Mobile_3.jpg" style="max-width: 100%;"></td>
|
||||||
|
<td><img alt="Mobile_5" src="docs/image/Mobile_5.jpg" style="max-width: 100%;"></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<div align = "center">
|
||||||
|
|
||||||
|
English | [**中文**](docs/README_ZH.md)
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
## ✨ Features
|
||||||
|
|
||||||
|
### Content
|
||||||
|
- **CMS Functionality**: Easy content management with Decap CMS integration
|
||||||
|
- **Data Visualization**: Visualized personal data like projects, skills etc.
|
||||||
|
- **Automatic Navigation**: Automatic generation of post navigation
|
||||||
|
|
||||||
|
### Components
|
||||||
|
- **Analytics Support**: Umami analytics integration for visitor insights
|
||||||
|
- **Comment System**: Twikoo-powered comment functionality
|
||||||
|
- **Music Player**: Background music support with playlist management
|
||||||
|
- **PIO Widget**: Interactive live2d character support
|
||||||
|
|
||||||
|
### VFX
|
||||||
|
- **Smooth Transition Animations**: Polished page component transition animations
|
||||||
|
- **Customizable Theme Colors**: Realtime customizable color schemes
|
||||||
|
- **Dynamic Wallpaper System**: Carousel support with multiple display modes
|
||||||
|
- **Immersive Particle Effects**: Highly customizable animated particles
|
||||||
|
|
||||||
|
### Compability
|
||||||
|
- **Modern & Responsive Design**: Fully optimized for desktop and mobile devices
|
||||||
|
- **Multilingual Capability**: Built-in translation functionality for global accessibility
|
||||||
|
|
||||||
|
|
||||||
|
## 📦 Installation
|
||||||
|
|
||||||
|
1. **Clone the repository:**
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/Spr-Aachen/Twilight.git
|
||||||
|
cd Twilight
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Install dependencies:**
|
||||||
|
```bash
|
||||||
|
# Install pnpm if not already installed
|
||||||
|
npm install -g pnpm
|
||||||
|
|
||||||
|
# Install project dependencies
|
||||||
|
pnpm install
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Configure your blog:**
|
||||||
|
- [Customize blog settings](https://docs.twilight.spr-aachen.com/en/config/core) inside `twilight.config.yaml`
|
||||||
|
- [Support CMS functionality](https://docs.twilight.spr-aachen.com/en/config/cms) inside `.env`
|
||||||
|
- [Support Umami analytics](https://docs.twilight.spr-aachen.com/en/config/analytics) inside `.env`
|
||||||
|
- [Manage site content](https://docs.twilight.spr-aachen.com/en/config/content) inside `src/content`
|
||||||
|
|
||||||
|
4. **Start the development server:**
|
||||||
|
```bash
|
||||||
|
pnpm dev
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## 🚀 Deployment
|
||||||
|
|
||||||
|
Deploy your blog to any static hosting platform
|
||||||
|
|
||||||
|
|
||||||
|
## ⚡ Commands
|
||||||
|
|
||||||
|
| Command | Action |
|
||||||
|
|:----------------------------|:----------------------------|
|
||||||
|
| `pnpm lint` | Check and fix code issues |
|
||||||
|
| `pnpm format` | Format code with Biome |
|
||||||
|
| `pnpm check` | Run Astro error checking |
|
||||||
|
| `pnpm dev` | Start local dev server |
|
||||||
|
| `pnpm build` | Build site to `./dist/` |
|
||||||
|
| `pnpm preview` | Preview build locally |
|
||||||
|
| `pnpm astro ...` | Run Astro CLI commands |
|
||||||
|
| `pnpm new-post <filename>` | Create a new blog post |
|
||||||
|
|
||||||
|
|
||||||
|
## 🙏 Acknowledgements
|
||||||
|
|
||||||
|
- Prototype - [Fuwari](https://github.com/saicaca/fuwari)
|
||||||
|
- Inspiration - [Yukina](https://github.com/WhitePaper233/yukina) & [Mizuki](https://github.com/matsuzaka-yuki/Mizuki)
|
||||||
|
- CMS - [astro-decap-cms-oauth](https://github.com/dorukgezici/astro-decap-cms-oauth)
|
||||||
|
- Translation - [translate](https://gitee.com/mail_osc/translate)
|
||||||
|
|
||||||
|
|
||||||
|
## 🤝 Support
|
||||||
|
|
||||||
|
This project is supported by Alibaba Cloud ESA for accelerated delivery, compute, and protection.
|
||||||
|
<a href="https://esa.console.aliyun.com/">
|
||||||
|
<img src="https://img.alicdn.com/imgextra/i3/O1CN01H1UU3i1Cti9lYtFrs_!!6000000000139-2-tps-7534-844.png" alt="Alibaba Cloud ESA Support" style="max-width: 100%; height: auto;">
|
||||||
|
</a>
|
||||||
67
_frontmatter.json
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://frontmatter.codes/frontmatter.schema.json",
|
||||||
|
"frontMatter.framework.id": "astro",
|
||||||
|
"frontMatter.preview.host": "http://localhost:4321",
|
||||||
|
"frontMatter.content.publicFolder": "public",
|
||||||
|
"frontMatter.content.pageFolders": [
|
||||||
|
{
|
||||||
|
"title": "posts",
|
||||||
|
"path": "[[workspace]]/src/content/posts"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"frontMatter.taxonomy.contentTypes": [
|
||||||
|
{
|
||||||
|
"name": "default",
|
||||||
|
"pageBundle": true,
|
||||||
|
"previewPath": "'blog'",
|
||||||
|
"filePrefix": null,
|
||||||
|
"clearEmpty": true,
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"title": "title",
|
||||||
|
"name": "title",
|
||||||
|
"type": "string",
|
||||||
|
"single": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "description",
|
||||||
|
"name": "description",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "published",
|
||||||
|
"name": "published",
|
||||||
|
"type": "datetime",
|
||||||
|
"default": "{{now}}",
|
||||||
|
"isPublishDate": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "preview",
|
||||||
|
"name": "image",
|
||||||
|
"type": "image",
|
||||||
|
"isPreviewImage": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "tags",
|
||||||
|
"name": "tags",
|
||||||
|
"type": "list"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "category",
|
||||||
|
"name": "category",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "draft",
|
||||||
|
"name": "draft",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"title": "language",
|
||||||
|
"name": "language",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
209
astro.config.mjs
Normal file
@@ -0,0 +1,209 @@
|
|||||||
|
import { defineConfig } from "astro/config";
|
||||||
|
import { pluginCollapsibleSections } from "@expressive-code/plugin-collapsible-sections";
|
||||||
|
import { pluginLineNumbers } from "@expressive-code/plugin-line-numbers";
|
||||||
|
import svelte, { vitePreprocess } from "@astrojs/svelte";
|
||||||
|
import tailwindcss from "@tailwindcss/vite";
|
||||||
|
import swup from "@swup/astro";
|
||||||
|
import sitemap from "@astrojs/sitemap";
|
||||||
|
import vercel from "@astrojs/vercel";
|
||||||
|
import cloudflarePages from "@astrojs/cloudflare";
|
||||||
|
import decapCmsOauth from "astro-decap-cms-oauth";
|
||||||
|
import expressiveCode from "astro-expressive-code";
|
||||||
|
import icon from "astro-icon";
|
||||||
|
import rehypeAutolinkHeadings from "rehype-autolink-headings";
|
||||||
|
import rehypeComponents from "rehype-components"; /* Render the custom directive content */
|
||||||
|
import rehypeKatex from "rehype-katex";
|
||||||
|
import rehypeSlug from "rehype-slug";
|
||||||
|
import remarkDirective from "remark-directive"; /* Handle directives */
|
||||||
|
import remarkGithubAdmonitionsToDirectives from "remark-github-admonitions-to-directives";
|
||||||
|
import remarkMath from "remark-math";
|
||||||
|
import remarkSectionize from "remark-sectionize";
|
||||||
|
|
||||||
|
import { siteConfig } from "./src/config.ts";
|
||||||
|
import { pluginCollapseButton } from "./src/plugins/expressive-code/collapse-button.ts";
|
||||||
|
import { pluginCopyButton } from "./src/plugins/expressive-code/copy-button.js";
|
||||||
|
import { pluginLanguageBadge } from "./src/plugins/expressive-code/language-badge.ts";
|
||||||
|
import { AdmonitionComponent } from "./src/plugins/rehype-component-admonition.mjs";
|
||||||
|
import { GithubCardComponent } from "./src/plugins/rehype-component-github-card.mjs";
|
||||||
|
import { rehypeMermaid } from "./src/plugins/rehype-mermaid.mjs";
|
||||||
|
import { parseDirectiveNode } from "./src/plugins/remark-directive-rehype.js";
|
||||||
|
import { remarkExcerpt } from "./src/plugins/remark-excerpt.js";
|
||||||
|
import { remarkMermaid } from "./src/plugins/remark-mermaid.js";
|
||||||
|
import { remarkReadingTime } from "./src/plugins/remark-reading-time.mjs";
|
||||||
|
|
||||||
|
|
||||||
|
// https://astro.build/config
|
||||||
|
// Choose adapter depending on deployment environment
|
||||||
|
const adapter = process.env.CF_PAGES ? cloudflarePages() : vercel({ mode: "serverless" });
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
site: siteConfig.siteURL,
|
||||||
|
base: "/",
|
||||||
|
trailingSlash: "always",
|
||||||
|
adapter: adapter,
|
||||||
|
integrations: [
|
||||||
|
decapCmsOauth({
|
||||||
|
decapCMSVersion: "3.3.3",
|
||||||
|
oauthDisabled: true, // Disable it to use oauth, requires .env configuration
|
||||||
|
}),
|
||||||
|
swup({
|
||||||
|
theme: false,
|
||||||
|
animationClass: "transition-swup-", // see https://swup.js.org/options/#animationselector
|
||||||
|
containers: [
|
||||||
|
"#swup-container",
|
||||||
|
"#left-sidebar",
|
||||||
|
"#right-sidebar",
|
||||||
|
],
|
||||||
|
cache: true,
|
||||||
|
preload: true,
|
||||||
|
accessibility: true,
|
||||||
|
updateHead: true,
|
||||||
|
updateBodyClass: false,
|
||||||
|
globalInstance: true,
|
||||||
|
// Scroll related configuration optimization
|
||||||
|
smoothScrolling: false, // Disable smooth scrolling to improve performance and avoid conflicts with anchor navigation
|
||||||
|
resolveUrl: (url) => url,
|
||||||
|
animateHistoryBrowsing: false,
|
||||||
|
skipPopStateHandling: (event) => {
|
||||||
|
// Skip anchor link handling, let the browser handle it natively
|
||||||
|
return event.state && event.state.url && event.state.url.includes("#");
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
icon({
|
||||||
|
include: {
|
||||||
|
"fa6-brands": ["*"],
|
||||||
|
"fa6-regular": ["*"],
|
||||||
|
"fa6-solid": ["*"],
|
||||||
|
mdi: ["*"],
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
expressiveCode({
|
||||||
|
themes: ["github-light", "github-dark"],
|
||||||
|
themeCSSSelector: (theme) => `[data-theme="${theme}"]`,
|
||||||
|
plugins: [
|
||||||
|
pluginCollapsibleSections(),
|
||||||
|
pluginLineNumbers(),
|
||||||
|
pluginCollapseButton(),
|
||||||
|
pluginCopyButton(),
|
||||||
|
pluginLanguageBadge(),
|
||||||
|
],
|
||||||
|
defaultProps: {
|
||||||
|
wrap: true,
|
||||||
|
overridesByLang: {
|
||||||
|
shellsession: {
|
||||||
|
showLineNumbers: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
styleOverrides: {
|
||||||
|
codeBackground: "var(--codeblock-bg)",
|
||||||
|
borderRadius: "0.75rem",
|
||||||
|
borderColor: "none",
|
||||||
|
codeFontSize: "0.875rem",
|
||||||
|
codeFontFamily:
|
||||||
|
"'JetBrains Mono Variable', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace",
|
||||||
|
codeLineHeight: "1.5rem",
|
||||||
|
frames: {
|
||||||
|
editorBackground: "var(--codeblock-bg)",
|
||||||
|
terminalBackground: "var(--codeblock-bg)",
|
||||||
|
terminalTitlebarBackground: "var(--codeblock-bg)",
|
||||||
|
editorTabBarBackground: "var(--codeblock-bg)",
|
||||||
|
editorActiveTabBackground: "none",
|
||||||
|
editorActiveTabIndicatorBottomColor: "var(--primary)",
|
||||||
|
editorActiveTabIndicatorTopColor: "none",
|
||||||
|
editorTabBarBorderBottomColor: "var(--codeblock-bg)",
|
||||||
|
terminalTitlebarBorderBottomColor: "none",
|
||||||
|
copyButtonBackground: "var(--btn-regular-bg)",
|
||||||
|
copyButtonBackgroundHover: "var(--btn-regular-bg-hover)",
|
||||||
|
copyButtonBackgroundActive: "var(--btn-regular-bg-active)",
|
||||||
|
copyButtonForeground: "var(--btn-content)",
|
||||||
|
},
|
||||||
|
textMarkers: {
|
||||||
|
delHue: 0,
|
||||||
|
insHue: 180,
|
||||||
|
markHue: 250,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
frames: {
|
||||||
|
showCopyToClipboardButton: false,
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
svelte({
|
||||||
|
preprocess: vitePreprocess(),
|
||||||
|
}),
|
||||||
|
sitemap(),
|
||||||
|
],
|
||||||
|
markdown: {
|
||||||
|
remarkPlugins: [
|
||||||
|
remarkMath,
|
||||||
|
remarkReadingTime,
|
||||||
|
remarkExcerpt,
|
||||||
|
remarkGithubAdmonitionsToDirectives,
|
||||||
|
remarkDirective,
|
||||||
|
remarkSectionize,
|
||||||
|
parseDirectiveNode,
|
||||||
|
remarkMermaid,
|
||||||
|
],
|
||||||
|
rehypePlugins: [
|
||||||
|
rehypeKatex,
|
||||||
|
rehypeSlug,
|
||||||
|
rehypeMermaid,
|
||||||
|
[
|
||||||
|
rehypeComponents,
|
||||||
|
{
|
||||||
|
components: {
|
||||||
|
github: GithubCardComponent,
|
||||||
|
note: (x, y) => AdmonitionComponent(x, y, "note"),
|
||||||
|
tip: (x, y) => AdmonitionComponent(x, y, "tip"),
|
||||||
|
important: (x, y) => AdmonitionComponent(x, y, "important"),
|
||||||
|
caution: (x, y) => AdmonitionComponent(x, y, "caution"),
|
||||||
|
warning: (x, y) => AdmonitionComponent(x, y, "warning"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
[
|
||||||
|
rehypeAutolinkHeadings,
|
||||||
|
{
|
||||||
|
behavior: "append",
|
||||||
|
properties: {
|
||||||
|
className: ["anchor"],
|
||||||
|
},
|
||||||
|
content: {
|
||||||
|
type: "element",
|
||||||
|
tagName: "span",
|
||||||
|
properties: {
|
||||||
|
className: ["anchor-icon"],
|
||||||
|
"data-pagefind-ignore": true,
|
||||||
|
},
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
type: "text",
|
||||||
|
value: "#",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
],
|
||||||
|
},
|
||||||
|
vite: {
|
||||||
|
plugins: [tailwindcss()],
|
||||||
|
build: {
|
||||||
|
rollupOptions: {
|
||||||
|
onwarn(warning, warn) {
|
||||||
|
// temporarily suppress this warning
|
||||||
|
if (
|
||||||
|
warning.message.includes("is dynamically imported by") &&
|
||||||
|
warning.message.includes("but also statically imported by")
|
||||||
|
) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
warn(warning);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
build: {
|
||||||
|
inlineStylesheets: "always",
|
||||||
|
},
|
||||||
|
});
|
||||||
63
biome.json
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://biomejs.dev/schemas/2.0.0/schema.json",
|
||||||
|
"vcs": {
|
||||||
|
"enabled": false,
|
||||||
|
"clientKind": "git",
|
||||||
|
"useIgnoreFile": false
|
||||||
|
},
|
||||||
|
"files": {
|
||||||
|
"ignoreUnknown": false,
|
||||||
|
"includes": [
|
||||||
|
"**",
|
||||||
|
"!**/src/**/*.css",
|
||||||
|
"!**/src/public/**/*",
|
||||||
|
"!**/dist/**/*",
|
||||||
|
"!**/node_modules/**/*"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"formatter": {
|
||||||
|
"enabled": true,
|
||||||
|
"indentStyle": "tab"
|
||||||
|
},
|
||||||
|
"assist": { "actions": { "source": { "organizeImports": "on" } } },
|
||||||
|
"linter": {
|
||||||
|
"enabled": true,
|
||||||
|
"rules": {
|
||||||
|
"recommended": true,
|
||||||
|
"style": {
|
||||||
|
"noParameterAssign": "error",
|
||||||
|
"useAsConstAssertion": "error",
|
||||||
|
"useDefaultParameterLast": "error",
|
||||||
|
"useEnumInitializers": "error",
|
||||||
|
"useSelfClosingElements": "error",
|
||||||
|
"useSingleVarDeclarator": "error",
|
||||||
|
"noUnusedTemplateLiteral": "error",
|
||||||
|
"useNumberNamespace": "error",
|
||||||
|
"noInferrableTypes": "error",
|
||||||
|
"noUselessElse": "error"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"javascript": {
|
||||||
|
"formatter": {
|
||||||
|
"quoteStyle": "double"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"overrides": [
|
||||||
|
{
|
||||||
|
"includes": ["**/*.svelte", "**/*.astro", "**/*.vue"],
|
||||||
|
"linter": {
|
||||||
|
"rules": {
|
||||||
|
"style": {
|
||||||
|
"useConst": "off",
|
||||||
|
"useImportType": "off"
|
||||||
|
},
|
||||||
|
"correctness": {
|
||||||
|
"noUnusedVariables": "off",
|
||||||
|
"noUnusedImports": "off"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
122
docs/README_ZH.md
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
<div align = "center">
|
||||||
|
|
||||||
|
# Twilight
|
||||||
|
|
||||||
|
一个支持后台管理的静态博客主题模板,基于 Astro 框架打造
|
||||||
|
|
||||||
|
[**🖥️ 演示**](https://twilight.spr-aachen.com)
|
||||||
|
[**📝 文档**](https://docs.twilight.spr-aachen.com)
|
||||||
|
|
||||||
|
[](https://space.bilibili.com/359461611/lists/6641229)
|
||||||
|
[](https://youtube.com/playlist?list=PLzjq8Hx1SRV7yqZQiACcCJmKPeg5D8JKe&si=Bcz2o0PF8MFvx8ec)
|
||||||
|
|
||||||
|
<table style="width: 100%; table-layout: fixed;">
|
||||||
|
<tr>
|
||||||
|
<td colspan="5"><img alt="Desktop" src="image/Desktop.jpg" style="max-width: 100%;"></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><img alt="Mobile_4" src="image/Mobile_4.jpg" style="max-width: 100%;"></td>
|
||||||
|
<td><img alt="Mobile_2" src="image/Mobile_2.jpg" style="max-width: 100%;"></td>
|
||||||
|
<td><img alt="Mobile_1" src="image/Mobile_1.jpg" style="max-width: 100%;"></td>
|
||||||
|
<td><img alt="Mobile_3" src="image/Mobile_3.jpg" style="max-width: 100%;"></td>
|
||||||
|
<td><img alt="Mobile_5" src="image/Mobile_5.jpg" style="max-width: 100%;"></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<div align = "center">
|
||||||
|
|
||||||
|
[**English**](../README.md) | 中文
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
## ✨ 特性
|
||||||
|
|
||||||
|
### 内容
|
||||||
|
- **CMS 功能**: 基于 Decap CMS 的便捷内容管理
|
||||||
|
- **数据可视化**: 可视化的项目、技能等个人数据
|
||||||
|
- **自动化导航**: 自动化生成的文章导航
|
||||||
|
|
||||||
|
### 组件
|
||||||
|
- **站点统计**: 集成 Umami 访客统计的站点分析
|
||||||
|
- **评论系统**: 基于 Twikoo 的评论功能
|
||||||
|
- **音乐播放器**: 背景音乐播放和播放列表管理
|
||||||
|
- **看板娘插件**: 可交互的 live2d 角色
|
||||||
|
|
||||||
|
### 视效
|
||||||
|
- **平滑过渡动画**: 精心设计的页面组件过渡动画
|
||||||
|
- **自定义主题色**: 可实时调整的个性化配色方案
|
||||||
|
- **动态壁纸系统**: 拥有多种显示模式的轮播壁纸
|
||||||
|
- **动态粒子系统**: 可高度自定义的动画粒子特效
|
||||||
|
|
||||||
|
### 适配
|
||||||
|
- **响应式设计**: 支持桌面端、移动端无缝切换
|
||||||
|
- **多语言能力**: 内置翻译功能,方便全球访问
|
||||||
|
|
||||||
|
|
||||||
|
## 📦 安装
|
||||||
|
|
||||||
|
1. **克隆仓库**
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/Spr-Aachen/Twilight.git
|
||||||
|
cd Twilight
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **安装依赖**
|
||||||
|
```bash
|
||||||
|
# Install pnpm if not already installed
|
||||||
|
npm install -g pnpm
|
||||||
|
|
||||||
|
# Install project dependencies
|
||||||
|
pnpm install
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **配置博客**
|
||||||
|
- 在 `twilight.config.yaml` 中 [自定义博客设置](https://docs.twilight.spr-aachen.com/config/core)
|
||||||
|
- 在 `.env` 中 [配置 CMS 功能](https://docs.twilight.spr-aachen.com/config/cms)
|
||||||
|
- 在 `.env` 中 [配置站点统计功能](https://docs.twilight.spr-aachen.com/config/analytics)
|
||||||
|
- 在 `src/content` 中 [管理站点内容](https://docs.twilight.spr-aachen.com/config/content)
|
||||||
|
|
||||||
|
4. **本地调试**
|
||||||
|
```bash
|
||||||
|
pnpm dev
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## 🚀 部署
|
||||||
|
|
||||||
|
将你的博客部署到任何静态托管平台
|
||||||
|
|
||||||
|
|
||||||
|
## ⚡ 命令
|
||||||
|
|
||||||
|
| 指令 | 说明 |
|
||||||
|
|:---------------------------|:-------------------------|
|
||||||
|
| `pnpm lint` | 检查并修复代码问题 |
|
||||||
|
| `pnpm format` | 使用 Biome 格式化代码 |
|
||||||
|
| `pnpm check` | 运行 Astro 错误检查 |
|
||||||
|
| `pnpm dev` | 启动本地服务器 |
|
||||||
|
| `pnpm build` | 构建站点到 `./dist/` |
|
||||||
|
| `pnpm preview` | 预览本地构建结果 |
|
||||||
|
| `pnpm astro ...` | 运行 `Astro CLI` 命令 |
|
||||||
|
| `pnpm new-post <filename>` | 创建新博客文章 |
|
||||||
|
|
||||||
|
|
||||||
|
## 🙏 致谢
|
||||||
|
|
||||||
|
- 原型 - [Fuwari](https://github.com/saicaca/fuwari)
|
||||||
|
- 灵感 - [Yukina](https://github.com/WhitePaper233/yukina) & [Mizuki](https://github.com/matsuzaka-yuki/Mizuki)
|
||||||
|
- CMS - [astro-decap-cms-oauth](https://github.com/dorukgezici/astro-decap-cms-oauth)
|
||||||
|
- 翻译 - [translate](https://gitee.com/mail_osc/translate)
|
||||||
|
|
||||||
|
|
||||||
|
## 🤝 支持
|
||||||
|
|
||||||
|
本项目由阿里云ESA提供加速、计算和保护
|
||||||
|
<a href="https://esa.console.aliyun.com/">
|
||||||
|
<img src="https://img.alicdn.com/imgextra/i3/O1CN01H1UU3i1Cti9lYtFrs_!!6000000000139-2-tps-7534-844.png" href="https://esa.console.aliyun.com/" alt="阿里云ESA支持" style="max-width: 100%; height: auto;">
|
||||||
|
</a>
|
||||||
BIN
docs/image/Desktop.jpg
Normal file
|
After Width: | Height: | Size: 374 KiB |
BIN
docs/image/Mobile_1.jpg
Normal file
|
After Width: | Height: | Size: 272 KiB |
BIN
docs/image/Mobile_2.jpg
Normal file
|
After Width: | Height: | Size: 192 KiB |
BIN
docs/image/Mobile_3.jpg
Normal file
|
After Width: | Height: | Size: 166 KiB |
BIN
docs/image/Mobile_4.jpg
Normal file
|
After Width: | Height: | Size: 164 KiB |
BIN
docs/image/Mobile_5.jpg
Normal file
|
After Width: | Height: | Size: 300 KiB |
17
esa.jsonc
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
// 指定部署的目标项目
|
||||||
|
"name": "twilight",
|
||||||
|
// // 边缘函数的入口执行文件路径
|
||||||
|
// "entry": "./src/index.ts",
|
||||||
|
// 配置自定义安装指令
|
||||||
|
"installCommand": "pnpm install",
|
||||||
|
// 配置自定义构建命令
|
||||||
|
"buildCommand": "pnpm run build",
|
||||||
|
// 静态资源托管功能
|
||||||
|
"assets": {
|
||||||
|
// 构建产物中将被静态托管的目录
|
||||||
|
"directory": "./dist",
|
||||||
|
// 当请求的路径未匹配到任何静态资源时执行的策略
|
||||||
|
"notFoundStrategy": "singlePageApplication"
|
||||||
|
}
|
||||||
|
}
|
||||||
89
package.json
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
{
|
||||||
|
"name": "twilight",
|
||||||
|
"type": "module",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "A blog template",
|
||||||
|
"scripts": {
|
||||||
|
"type-check": "tsc --noEmit --isolatedDeclarations",
|
||||||
|
"check-stylus": "node scripts/compile-inline-stylus.cjs",
|
||||||
|
"lint": "biome check --write ./src",
|
||||||
|
"format": "biome format --write ./src",
|
||||||
|
"check": "astro check",
|
||||||
|
"dev": "astro dev",
|
||||||
|
"build": "node scripts/build-with-pagefind.cjs",
|
||||||
|
"preview": "astro preview",
|
||||||
|
"astro": "astro",
|
||||||
|
"new-post": "node scripts/new-post.js"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@astrojs/check": "^0.9.6",
|
||||||
|
"@astrojs/cloudflare": "^12.6.12",
|
||||||
|
"@astrojs/rss": "^4.0.15",
|
||||||
|
"@astrojs/sitemap": "^3.7.0",
|
||||||
|
"@astrojs/svelte": "7.2.5",
|
||||||
|
"@astrojs/vercel": "^9.0.4",
|
||||||
|
"@expressive-code/core": "^0.41.6",
|
||||||
|
"@expressive-code/plugin-collapsible-sections": "^0.41.6",
|
||||||
|
"@expressive-code/plugin-line-numbers": "^0.41.6",
|
||||||
|
"@fancyapps/ui": "^6.1.10",
|
||||||
|
"@fontsource-variable/jetbrains-mono": "^5.2.8",
|
||||||
|
"@fontsource/roboto": "^5.2.9",
|
||||||
|
"@iconify-json/fa6-brands": "^1.2.6",
|
||||||
|
"@iconify-json/fa6-regular": "^1.2.4",
|
||||||
|
"@iconify-json/fa6-solid": "^1.2.4",
|
||||||
|
"@iconify-json/material-symbols": "^1.2.53",
|
||||||
|
"@iconify/svelte": "^5.2.1",
|
||||||
|
"@swup/astro": "^1.7.0",
|
||||||
|
"@tailwindcss/typography": "^0.5.19",
|
||||||
|
"@tailwindcss/vite": "^4.1.18",
|
||||||
|
"@types/js-yaml": "^4.0.9",
|
||||||
|
"astro": "5.16.15",
|
||||||
|
"astro-decap-cms-oauth": "^0.5.1",
|
||||||
|
"astro-expressive-code": "^0.41.6",
|
||||||
|
"astro-icon": "^1.1.5",
|
||||||
|
"bcryptjs": "^3.0.3",
|
||||||
|
"crypto-js": "^4.2.0",
|
||||||
|
"dayjs": "^1.11.19",
|
||||||
|
"echarts": "^6.0.0",
|
||||||
|
"hastscript": "^9.0.1",
|
||||||
|
"js-yaml": "^4.1.1",
|
||||||
|
"katex": "^0.16.28",
|
||||||
|
"markdown-it": "^14.1.0",
|
||||||
|
"marked": "^17.0.1",
|
||||||
|
"mdast-util-to-string": "^4.0.0",
|
||||||
|
"node-html-parser": "^7.0.2",
|
||||||
|
"overlayscrollbars": "^2.14.0",
|
||||||
|
"pagefind": "^1.4.0",
|
||||||
|
"photoswipe": "^5.4.4",
|
||||||
|
"reading-time": "^1.5.0",
|
||||||
|
"rehype-autolink-headings": "^7.1.0",
|
||||||
|
"rehype-components": "^0.3.0",
|
||||||
|
"rehype-katex": "^7.0.1",
|
||||||
|
"rehype-slug": "^6.0.0",
|
||||||
|
"remark-directive": "^4.0.0",
|
||||||
|
"remark-directive-rehype": "^0.4.2",
|
||||||
|
"remark-github-admonitions-to-directives": "^2.1.0",
|
||||||
|
"remark-math": "^6.0.0",
|
||||||
|
"remark-sectionize": "^2.1.0",
|
||||||
|
"sanitize-html": "^2.17.0",
|
||||||
|
"satori": "^0.19.1",
|
||||||
|
"sharp": "^0.34.5",
|
||||||
|
"stylus": "^0.64.0",
|
||||||
|
"svelte": "^5.49.1",
|
||||||
|
"tailwindcss": "^4.1.18",
|
||||||
|
"typescript": "^5.9.3",
|
||||||
|
"unist-util-visit": "^5.1.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@astrojs/ts-plugin": "^1.10.6",
|
||||||
|
"@biomejs/biome": "2.3.13",
|
||||||
|
"@iconify-json/mdi": "^1.2.3",
|
||||||
|
"@rollup/plugin-yaml": "^4.1.2",
|
||||||
|
"@types/hast": "^3.0.4",
|
||||||
|
"@types/markdown-it": "^14.1.2",
|
||||||
|
"@types/mdast": "^4.0.4",
|
||||||
|
"@types/sanitize-html": "^2.16.0",
|
||||||
|
"postcss-import": "^16.1.1"
|
||||||
|
},
|
||||||
|
"packageManager": "pnpm@9.14.4"
|
||||||
|
}
|
||||||
6
pagefind.yml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
exclude_selectors:
|
||||||
|
- "span.katex"
|
||||||
|
- "span.katex-display"
|
||||||
|
- "[data-pagefind-ignore]"
|
||||||
|
- ".search-panel"
|
||||||
|
- "#search-panel"
|
||||||
11999
pnpm-lock.yaml
generated
Normal file
10
postcss.config.mjs
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
// PostCSS config for CSS imports
|
||||||
|
// Tailwind v4 is handled by @tailwindcss/vite plugin in astro.config.mjs
|
||||||
|
import postcssImport from 'postcss-import';
|
||||||
|
|
||||||
|
|
||||||
|
export default {
|
||||||
|
plugins: {
|
||||||
|
'postcss-import': postcssImport,
|
||||||
|
}
|
||||||
|
};
|
||||||
1
public/FooterConfig.html
Normal file
@@ -0,0 +1 @@
|
|||||||
|
这里是HTML注入示例,你可以在这个文件中添加自定义的HTML内容
|
||||||
27
public/_headers
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
X-Content-Type-Options: nosniff
|
||||||
|
X-Frame-Options: DENY
|
||||||
|
X-XSS-Protection: 1; mode=block
|
||||||
|
Referrer-Policy: strict-origin-when-cross-origin
|
||||||
|
|
||||||
|
/atom.xml
|
||||||
|
Access-Control-Allow-Origin: *
|
||||||
|
Access-Control-Allow-Methods: GET
|
||||||
|
Access-Control-Max-Age: 86400
|
||||||
|
|
||||||
|
/rss.xml
|
||||||
|
Access-Control-Allow-Origin: *
|
||||||
|
Access-Control-Allow-Methods: GET
|
||||||
|
Access-Control-Max-Age: 86400
|
||||||
|
|
||||||
|
/_astro/*
|
||||||
|
Cache-Control: public, max-age=31536000, immutable
|
||||||
|
|
||||||
|
/assets/*
|
||||||
|
Cache-Control: public, max-age=31536000, immutable
|
||||||
|
|
||||||
|
/favicon/*
|
||||||
|
Cache-Control: public, max-age=31536000, immutable
|
||||||
|
|
||||||
|
/pio/*
|
||||||
|
Cache-Control: public, max-age=31536000, immutable
|
||||||
293
public/admin/config.yml
Normal file
@@ -0,0 +1,293 @@
|
|||||||
|
# 后台系统配置
|
||||||
|
backend:
|
||||||
|
name: github
|
||||||
|
repo: Spr-Aachen/Twilight # 请替换为您的 GitHub 仓库
|
||||||
|
branch: main # 请替换为您的分支名称
|
||||||
|
site_domain: twilight.spr-aachen.com # 请替换为您的域名
|
||||||
|
base_url: https://twilight.spr-aachen.com # 请替换为您的 URL
|
||||||
|
auth_endpoint: oauth # OAuth 路由由集成提供
|
||||||
|
|
||||||
|
|
||||||
|
# 媒体目录配置
|
||||||
|
media_folder: "public/images" # 媒体文件存储路径
|
||||||
|
public_folder: "/images" # 公共访问路径
|
||||||
|
|
||||||
|
|
||||||
|
# 集合管理配置
|
||||||
|
collections:
|
||||||
|
|
||||||
|
- # 博客文章集合
|
||||||
|
# 集合名称
|
||||||
|
name: "posts"
|
||||||
|
# 后台显示标签
|
||||||
|
label: "Posts"
|
||||||
|
# 内容存储目录
|
||||||
|
folder: "src/content/posts"
|
||||||
|
# 允许创建新条目
|
||||||
|
create: true
|
||||||
|
# 文件命名规则
|
||||||
|
slug: "{{slug}}"
|
||||||
|
# 字段列表
|
||||||
|
fields:
|
||||||
|
- # 标题
|
||||||
|
{label: "Title", name: "title", widget: "string"}
|
||||||
|
- # 发布日期
|
||||||
|
{label: "Published Date", name: "published", widget: "datetime"}
|
||||||
|
- # 更新日期
|
||||||
|
{label: "Updated Date", name: "updated", widget: "datetime", required: false}
|
||||||
|
- # 描述
|
||||||
|
{label: "Description", name: "description", widget: "text", required: false}
|
||||||
|
- # 封面图
|
||||||
|
{label: "Cover", name: "cover", widget: "image", required: false}
|
||||||
|
- # 标签
|
||||||
|
{label: "Tags", name: "tags", widget: "list", default: [], required: false}
|
||||||
|
- # 分类
|
||||||
|
{label: "Category", name: "category", widget: "string", required: false}
|
||||||
|
- # 草稿
|
||||||
|
{label: "Draft", name: "draft", widget: "boolean", default: false}
|
||||||
|
- # 正文
|
||||||
|
{label: "Body", name: "body", widget: "markdown"}
|
||||||
|
|
||||||
|
- # 项目集合
|
||||||
|
# 集合名称
|
||||||
|
name: "projects"
|
||||||
|
# 后台显示标签
|
||||||
|
label: "Projects"
|
||||||
|
# 内容存储目录
|
||||||
|
folder: "src/content/projects"
|
||||||
|
# 允许创建新条目
|
||||||
|
create: true
|
||||||
|
# 文件命名规则
|
||||||
|
slug: "{{slug}}"
|
||||||
|
# 文件存储格式
|
||||||
|
format: "json"
|
||||||
|
# 字段列表
|
||||||
|
fields:
|
||||||
|
- # 项目标题
|
||||||
|
{ label: "Title", name: "title", widget: "string" }
|
||||||
|
- # 项目描述
|
||||||
|
{ label: "Description", name: "description", widget: "text" }
|
||||||
|
- # 项目封面
|
||||||
|
{ label: "Image", name: "image", widget: "image", required: false }
|
||||||
|
- # 项目类别
|
||||||
|
{ label: "Category", name: "category", widget: "select", options: ["library","ai","software","website","game"] }
|
||||||
|
- # 技术栈
|
||||||
|
{ label: "Tech Stack", name: "techStack", widget: "list", default: [] }
|
||||||
|
- # 项目状态
|
||||||
|
{ label: "Status", name: "status", widget: "select", options: ["completed","in-progress","planned"] }
|
||||||
|
- # 在线演示
|
||||||
|
{ label: "Live Demo", name: "liveDemo", widget: "string", required: false }
|
||||||
|
- # 源代码
|
||||||
|
{ label: "Source Code", name: "sourceCode", widget: "string", required: false }
|
||||||
|
- # 开始日期
|
||||||
|
{ label: "Start Date", name: "startDate", widget: "datetime" }
|
||||||
|
- # 结束日期
|
||||||
|
{ label: "End Date", name: "endDate", widget: "datetime", required: false }
|
||||||
|
- # 是否精选
|
||||||
|
{ label: "Featured", name: "featured", widget: "boolean", required: false, default: false }
|
||||||
|
- # 标签
|
||||||
|
{ label: "Tags", name: "tags", widget: "list", required: false, default: [] }
|
||||||
|
|
||||||
|
- # 技能集合
|
||||||
|
# 集合名称
|
||||||
|
name: "skills"
|
||||||
|
# 后台显示标签
|
||||||
|
label: "Skills"
|
||||||
|
# 内容存储目录
|
||||||
|
folder: "src/content/skills"
|
||||||
|
# 允许创建新条目
|
||||||
|
create: true
|
||||||
|
# 文件命名规则
|
||||||
|
slug: "{{slug}}"
|
||||||
|
# 文件存储格式
|
||||||
|
format: "json"
|
||||||
|
# 字段列表
|
||||||
|
fields:
|
||||||
|
- # 技能名称
|
||||||
|
{ label: "Name", name: "name", widget: "string" }
|
||||||
|
- # 技能描述
|
||||||
|
{ label: "Description", name: "description", widget: "text" }
|
||||||
|
- # 图标
|
||||||
|
{ label: "Icon", name: "icon", widget: "string" }
|
||||||
|
- # 技能类别
|
||||||
|
{ label: "Category", name: "category", widget: "select", options: ["ai","backend","client","frontend","database","engines","tools","others"] }
|
||||||
|
- # 熟练程度
|
||||||
|
{ label: "Level", name: "level", widget: "select", options: ["beginner","intermediate","advanced","expert"] }
|
||||||
|
- # 经验
|
||||||
|
label: "Experience"
|
||||||
|
name: "experience"
|
||||||
|
widget: "object"
|
||||||
|
fields:
|
||||||
|
- # 年
|
||||||
|
{ label: "Years", name: "years", widget: "number", value_type: "int", min: 0 }
|
||||||
|
- # 月
|
||||||
|
{ label: "Months", name: "months", widget: "number", value_type: "int", min: 0, max: 11 }
|
||||||
|
- # 相关项目
|
||||||
|
{ label: "Projects", name: "projects", widget: "list", required: false, default: [] }
|
||||||
|
- # 相关认证
|
||||||
|
{ label: "Certifications", name: "certifications", widget: "list", required: false, default: [] }
|
||||||
|
- # 主题颜色
|
||||||
|
{ label: "Color", name: "color", widget: "string", required: false }
|
||||||
|
|
||||||
|
- # 时间线集合
|
||||||
|
# 集合名称
|
||||||
|
name: "timeline"
|
||||||
|
# 后台显示标签
|
||||||
|
label: "Timeline"
|
||||||
|
# 内容存储目录
|
||||||
|
folder: "src/content/timeline"
|
||||||
|
# 允许创建新条目
|
||||||
|
create: true
|
||||||
|
# 文件命名规则
|
||||||
|
slug: "{{slug}}"
|
||||||
|
# 文件存储格式
|
||||||
|
format: "json"
|
||||||
|
# 字段列表
|
||||||
|
fields:
|
||||||
|
- # 标题
|
||||||
|
{ label: "Title", name: "title", widget: "string" }
|
||||||
|
- # 描述
|
||||||
|
{ label: "Description", name: "description", widget: "text" }
|
||||||
|
- # 类型
|
||||||
|
{ label: "Type", name: "type", widget: "select", options: ["education","work","project","achievement"] }
|
||||||
|
- # 开始日期
|
||||||
|
{ label: "Start Date", name: "startDate", widget: "datetime" }
|
||||||
|
- # 结束日期
|
||||||
|
{ label: "End Date", name: "endDate", widget: "datetime", required: false }
|
||||||
|
- # 地点
|
||||||
|
{ label: "Location", name: "location", widget: "string", required: false }
|
||||||
|
- # 组织/机构
|
||||||
|
{ label: "Organization", name: "organization", widget: "string", required: false }
|
||||||
|
- # 职位
|
||||||
|
{ label: "Position", name: "position", widget: "string", required: false }
|
||||||
|
- # 相关技能
|
||||||
|
{ label: "Skills", name: "skills", widget: "list", required: false, default: [] }
|
||||||
|
- # 相关成就
|
||||||
|
{ label: "Achievements", name: "achievements", widget: "list", required: false, default: [] }
|
||||||
|
- # 相关链接
|
||||||
|
label: "Links"
|
||||||
|
name: "links"
|
||||||
|
widget: "list"
|
||||||
|
required: false
|
||||||
|
fields:
|
||||||
|
- # 链接名称
|
||||||
|
{ label: "Name", name: "name", widget: "string" }
|
||||||
|
- # 链接地址
|
||||||
|
{ label: "URL", name: "url", widget: "string" }
|
||||||
|
- # 链接类型
|
||||||
|
{ label: "Type", name: "type", widget: "select", options: ["certificate","project","other"] }
|
||||||
|
- # 图标
|
||||||
|
{ label: "Icon", name: "icon", widget: "string", required: false }
|
||||||
|
- # 主题颜色
|
||||||
|
{ label: "Color", name: "color", widget: "string", required: false }
|
||||||
|
|
||||||
|
- # 日记集合
|
||||||
|
# 集合名称
|
||||||
|
name: "diary"
|
||||||
|
# 后台显示标签
|
||||||
|
label: "Diary"
|
||||||
|
# 内容存储目录
|
||||||
|
folder: "src/content/diary"
|
||||||
|
# 允许创建新条目
|
||||||
|
create: true
|
||||||
|
# 文件命名规则
|
||||||
|
slug: "{{year}}-{{month}}-{{day}}-{{hour}}-{{minute}}"
|
||||||
|
# 文件存储格式
|
||||||
|
format: "json"
|
||||||
|
# 字段列表
|
||||||
|
fields:
|
||||||
|
- # 日记内容
|
||||||
|
{ label: "Content", name: "content", widget: "text" }
|
||||||
|
- # 日记日期
|
||||||
|
{ label: "Date", name: "date", widget: "datetime" }
|
||||||
|
- # 图片列表
|
||||||
|
label: "Images"
|
||||||
|
name: "images"
|
||||||
|
widget: "list"
|
||||||
|
required: false
|
||||||
|
default: []
|
||||||
|
field: { label: "Image", name: "image", widget: "image" }
|
||||||
|
|
||||||
|
- # 相册集合
|
||||||
|
# 集合名称
|
||||||
|
name: "albums"
|
||||||
|
# 后台显示标签
|
||||||
|
label: "Albums"
|
||||||
|
# 内容存储目录
|
||||||
|
folder: "src/content/albums"
|
||||||
|
# 允许创建新条目
|
||||||
|
create: true
|
||||||
|
# 文件命名规则
|
||||||
|
slug: "{{slug}}"
|
||||||
|
# 文件存储格式
|
||||||
|
format: "json"
|
||||||
|
# 字段列表
|
||||||
|
fields:
|
||||||
|
- # 相册标题
|
||||||
|
{ label: "Title", name: "title", widget: "string" }
|
||||||
|
- # 相册描述
|
||||||
|
{ label: "Description", name: "description", widget: "text", required: false }
|
||||||
|
- # 相册封面
|
||||||
|
{ label: "Cover", name: "cover", widget: "image" }
|
||||||
|
- # 日期
|
||||||
|
{ label: "Date", name: "date", widget: "datetime" }
|
||||||
|
- # 地点
|
||||||
|
{ label: "Location", name: "location", widget: "string", required: false }
|
||||||
|
- # 标签
|
||||||
|
{ label: "Tags", name: "tags", widget: "list", required: false, default: [] }
|
||||||
|
- # 布局方式
|
||||||
|
{ label: "Layout", name: "layout", widget: "select", options: ["grid", "masonry", "list"], default: "grid" }
|
||||||
|
- # 列数
|
||||||
|
{ label: "Columns", name: "columns", widget: "number", default: 3, value_type: "int", min: 1, max: 6 }
|
||||||
|
- # 照片列表
|
||||||
|
label: "Photos"
|
||||||
|
name: "photos"
|
||||||
|
widget: "list"
|
||||||
|
required: false
|
||||||
|
fields:
|
||||||
|
- # 图片路径
|
||||||
|
{ label: "Image", name: "src", widget: "image" }
|
||||||
|
- # 图片描述
|
||||||
|
{ label: "Caption", name: "alt", widget: "string", required: false }
|
||||||
|
- # 图片标题
|
||||||
|
{ label: "Title", name: "title", widget: "string", required: false }
|
||||||
|
- # 图片说明
|
||||||
|
{ label: "Description", name: "description", widget: "text", required: false }
|
||||||
|
- # 标签
|
||||||
|
{ label: "Tags", name: "tags", widget: "list", required: false, default: [] }
|
||||||
|
- # 拍摄日期
|
||||||
|
{ label: "Date", name: "date", widget: "datetime", required: false }
|
||||||
|
- # 是否可见
|
||||||
|
{ label: "Visible", name: "visible", widget: "boolean", default: true, required: false }
|
||||||
|
|
||||||
|
- # 友链集合
|
||||||
|
# 集合名称
|
||||||
|
name: "friends"
|
||||||
|
# 后台显示标签
|
||||||
|
label: "Friends"
|
||||||
|
# 内容存储目录
|
||||||
|
folder: "src/content/friends"
|
||||||
|
# 允许创建新条目
|
||||||
|
create: true
|
||||||
|
# 文件命名规则
|
||||||
|
slug: "{{slug}}"
|
||||||
|
# 文件存储格式
|
||||||
|
format: "json"
|
||||||
|
# 字段列表
|
||||||
|
fields:
|
||||||
|
- # 网站名称
|
||||||
|
{ label: "Title", name: "title", widget: "string" }
|
||||||
|
- # 头像链接
|
||||||
|
{ label: "Avatar URL", name: "imgurl", widget: "string" }
|
||||||
|
- # 网站描述
|
||||||
|
{ label: "Description", name: "desc", widget: "text" }
|
||||||
|
- # 网站链接
|
||||||
|
{ label: "Site URL", name: "siteurl", widget: "string" }
|
||||||
|
- # 标签
|
||||||
|
{ label: "Tags", name: "tags", widget: "list", required: false, default: [] }
|
||||||
|
|
||||||
|
|
||||||
|
# 编辑器配置
|
||||||
|
editor:
|
||||||
|
# 启用预览功能
|
||||||
|
preview: true
|
||||||
BIN
public/albums/example/智子_ASK.jpg
Normal file
|
After Width: | Height: | Size: 155 KiB |
10
public/assets/css/highlight-github-dark.min.css
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
|
||||||
|
Theme: GitHub Dark
|
||||||
|
Description: Dark theme as seen on github.com
|
||||||
|
Author: github.com
|
||||||
|
Maintainer: @Hirse
|
||||||
|
Updated: 2021-05-15
|
||||||
|
|
||||||
|
Outdated base version: https://github.com/primer/github-syntax-dark
|
||||||
|
Current colors taken from GitHub's CSS
|
||||||
|
*/.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#79c0ff}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-code,.hljs-comment,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}
|
||||||
BIN
public/assets/images/avatar.jpg
Normal file
|
After Width: | Height: | Size: 121 KiB |
BIN
public/assets/images/desktopWallpaper_1.jpg
Normal file
|
After Width: | Height: | Size: 223 KiB |
BIN
public/assets/images/desktopWallpaper_2.jpg
Normal file
|
After Width: | Height: | Size: 192 KiB |
BIN
public/assets/images/desktopWallpaper_3.jpg
Normal file
|
After Width: | Height: | Size: 178 KiB |
BIN
public/assets/images/mobileWallpaper_1.jpg
Normal file
|
After Width: | Height: | Size: 147 KiB |
BIN
public/assets/images/mobileWallpaper_2.jpg
Normal file
|
After Width: | Height: | Size: 153 KiB |
BIN
public/assets/images/particle.png
Normal file
|
After Width: | Height: | Size: 9.4 KiB |
1213
public/assets/js/highlight.min.js
vendored
Normal file
74
public/assets/js/marked.min.js
vendored
Normal file
33593
public/assets/js/twikoo.all.min.js
vendored
Normal file
BIN
public/assets/music/深海之息.m4a
Normal file
BIN
public/favicon/icon-dark.ico
Normal file
|
After Width: | Height: | Size: 70 KiB |
BIN
public/favicon/icon-light.ico
Normal file
|
After Width: | Height: | Size: 70 KiB |
79
public/pio/models/pio/model.json
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
{
|
||||||
|
"version":"1.0.0",
|
||||||
|
"model":"model.moc",
|
||||||
|
"textures":[
|
||||||
|
"textures/default-costume.png",
|
||||||
|
"textures/pajamas-costume.png",
|
||||||
|
"textures/school-costume.png"
|
||||||
|
],
|
||||||
|
"layout":{
|
||||||
|
"center_x":0.0,
|
||||||
|
"center_y":-0.05,
|
||||||
|
"width":2.0
|
||||||
|
},
|
||||||
|
"hit_areas_custom":{
|
||||||
|
"head_x":[-0.35, 0.6],
|
||||||
|
"head_y":[0.19, -0.2],
|
||||||
|
"body_x":[-0.3, -0.25],
|
||||||
|
"body_y":[0.3, -0.9]
|
||||||
|
},
|
||||||
|
"motions":{
|
||||||
|
"idle":[
|
||||||
|
{"file":"motions/WakeUp.mtn"},
|
||||||
|
{"file":"motions/Breath1.mtn"},
|
||||||
|
{"file":"motions/Breath2.mtn"},
|
||||||
|
{"file":"motions/Breath3.mtn"},
|
||||||
|
{"file":"motions/Breath5.mtn"},
|
||||||
|
{"file":"motions/Breath7.mtn"},
|
||||||
|
{"file":"motions/Breath8.mtn"}
|
||||||
|
],
|
||||||
|
"sleepy":[
|
||||||
|
{"file":"motions/Sleeping.mtn"}
|
||||||
|
],
|
||||||
|
"flick_head":[
|
||||||
|
{"file":"motions/Touch Dere1.mtn"},
|
||||||
|
{"file":"motions/Touch Dere2.mtn"},
|
||||||
|
{"file":"motions/Touch Dere3.mtn"},
|
||||||
|
{"file":"motions/Touch Dere4.mtn"},
|
||||||
|
{"file":"motions/Touch Dere5.mtn"},
|
||||||
|
{"file":"motions/Touch Dere6.mtn"}
|
||||||
|
],
|
||||||
|
"tap_body":[
|
||||||
|
{"file":"motions/Touch1.mtn"},
|
||||||
|
{"file":"motions/Touch2.mtn"},
|
||||||
|
{"file":"motions/Touch3.mtn"},
|
||||||
|
{"file":"motions/Touch4.mtn"},
|
||||||
|
{"file":"motions/Touch5.mtn"},
|
||||||
|
{"file":"motions/Touch6.mtn"}
|
||||||
|
],
|
||||||
|
"":[
|
||||||
|
{"file":"motions/Breath1.mtn"},
|
||||||
|
{"file":"motions/Breath2.mtn"},
|
||||||
|
{"file":"motions/Breath3.mtn"},
|
||||||
|
{"file":"motions/Breath4.mtn"},
|
||||||
|
{"file":"motions/Breath5.mtn"},
|
||||||
|
{"file":"motions/Breath6.mtn"},
|
||||||
|
{"file":"motions/Breath7.mtn"},
|
||||||
|
{"file":"motions/Breath8.mtn"},
|
||||||
|
{"file":"motions/Fail.mtn"},
|
||||||
|
{"file":"motions/Sleeping.mtn"},
|
||||||
|
{"file":"motions/Success.mtn"},
|
||||||
|
{"file":"motions/Sukebei1.mtn"},
|
||||||
|
{"file":"motions/Sukebei2.mtn"},
|
||||||
|
{"file":"motions/Sukebei3.mtn"},
|
||||||
|
{"file":"motions/Touch Dere1.mtn"},
|
||||||
|
{"file":"motions/Touch Dere2.mtn"},
|
||||||
|
{"file":"motions/Touch Dere3.mtn"},
|
||||||
|
{"file":"motions/Touch Dere4.mtn"},
|
||||||
|
{"file":"motions/Touch Dere5.mtn"},
|
||||||
|
{"file":"motions/Touch Dere6.mtn"},
|
||||||
|
{"file":"motions/Touch1.mtn"},
|
||||||
|
{"file":"motions/Touch2.mtn"},
|
||||||
|
{"file":"motions/Touch3.mtn"},
|
||||||
|
{"file":"motions/Touch4.mtn"},
|
||||||
|
{"file":"motions/Touch5.mtn"},
|
||||||
|
{"file":"motions/Touch6.mtn"},
|
||||||
|
{"file":"motions/WakeUp.mtn"}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
public/pio/models/pio/model.moc
Normal file
53
public/pio/models/pio/motions/Breath Dere1.mtn
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0,0.38,1.37,2.8,4.44,6.14,7.73,9.08,10.12,10.77,11,10.52,9.23,7.36,5.14,2.86,0.64,-1.23,-2.52,-3,-2.94,-2.78,-2.54,-2.24,-1.9,-1.54,-1.19,-0.87,-0.58,-0.34,-0.15,-0.04,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0,0.02,0.09,0.21,0.4,0.66,0.99,1.39,1.86,2.39,3,3.77,4.55,5.31,6.03,6.66,7.21,7.63,7.9,8,7.84,7.41,6.77,5.96,5.07,4.12,3.18,2.31,1.54,0.89,0.41,0.1,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0,0.38,1.37,2.8,4.44,6.14,7.73,9.08,10.12,10.77,11,10.14,7.83,4.5,0.54,-3.54,-7.5,-10.83,-13.14,-14,-13.72,-12.97,-11.84,-10.43,-8.87,-7.21,-5.57,-4.05,-2.7,-1.57,-0.71,-0.18,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_EMOTION=-1
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.55
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.48,0.37,0.27,0.2,0.17,0.17,0.17,0.17,0.172,0.176,0.182,0.19,0.22,0.28,0.34,0.4,0.46,0.51,0.54,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN2=-1
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN2=-1
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_ANGLE=0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2
|
||||||
|
|
||||||
|
PARAM_BROW_SELECT=-0.5
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.89,0.83,0.75,0.66,0.6,0.57,0.57,0.57,0.57,0.57,0.57,0.57,0.57,0.57,0.57,0.59,0.64,0.7,0.77,0.83,0.88,0.91,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN2=-1
|
||||||
|
|
||||||
|
PARAM_MOUTH_EMO=0
|
||||||
|
|
||||||
|
PARAM_CHEEK=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0,0.1,0.37,0.76,1.21,1.68,2.11,2.48,2.76,2.94,3,2.76,2.11,1.18,0.07,-1.07,-2.18,-3.11,-3.76,-4,-3.88,-3.56,-3.08,-2.47,-1.8,-1.09,-0.39,0.26,0.84,1.33,1.69,1.92,2,1.87,1.59,1.23,0.87,0.53,0.25,0.07,0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0
|
||||||
|
|
||||||
|
PARAM_BODY_Y=0,-0.01,-0.03,-0.07,-0.11,-0.16,-0.2,-0.23,-0.26,-0.274,-0.28,-0.262,-0.21,-0.14,-0.06,0.02,0.1,0.17,0.22,0.24,0.233,0.216,0.19,0.16,0.12,0.08,0.04,0.01,-0.03,-0.05,-0.073,-0.086,-0.09,-0.084,-0.071,-0.055,-0.039,-0.024,-0.011,-0.003,0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.46,0.41,0.35,0.32,0.3,0.34,0.43,0.53,0.65,0.75,0.83,0.89,0.91,0.905,0.891,0.87,0.84,0.81,0.77,0.73,0.69,0.65,0.6,0.56,0.52,0.48,0.45,0.42,0.4,0.384,0.374,0.37,0.379,0.397,0.42,0.44,0.47,0.484,0.496,0.5
|
||||||
|
|
||||||
|
PARAM_BOING=0
|
||||||
|
|
||||||
46
public/pio/models/pio/motions/Breath Dere2.mtn
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0,0.35,1.29,2.74,4.53,6.6,8.86,11.27,13.67,16.13,18.44,20.64,22.67,24.45,25.92,27.04,27.75,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,27.65,26.71,25.26,23.47,21.4,19.14,16.73,14.33,11.87,9.56,7.36,5.33,3.55,2.08,0.96,0.25,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0,-0.18,-0.65,-1.37,-2.26,-3.3,-4.43,-5.63,-6.84,-8.06,-9.22,-10.32,-11.33,-12.23,-12.96,-13.52,-13.87,-14,-13.995,-13.982,-13.96,-13.93,-13.89,-13.83,-13.77,-13.7,-13.62,-13.53,-13.42,-13.31,-13.19,-13.05,-12.91,-12.75,-12.58,-12.4,-12.2,-12,-11.78,-11.55,-11.31,-11.05,-10.79,-10.5,-10.21,-9.9,-9.57,-9.24,-8.89,-8.52,-8.14,-7.74,-7.33,-6.9,-6.45,-6,-5.45,-4.92,-4.39,-3.88,-3.38,-2.91,-2.45,-2.04,-1.64,-1.28,-0.97,-0.68,-0.45,-0.26,-0.12,-0.03,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0,0.09,0.32,0.68,1.13,1.65,2.21,2.82,3.42,4.03,4.61,5.16,5.67,6.11,6.48,6.76,6.94,7,6.97,6.89,6.77,6.59,6.38,6.13,5.85,5.53,5.18,4.82,4.43,4.01,3.59,3.15,2.69,2.23,1.76,1.3,0.82,0.35,-0.11,-0.57,-1.01,-1.45,-1.87,-2.28,-2.66,-3.03,-3.38,-3.69,-3.98,-4.24,-4.46,-4.65,-4.8,-4.91,-4.98,-5,-4.94,-4.77,-4.51,-4.19,-3.82,-3.42,-2.99,-2.56,-2.12,-1.71,-1.31,-0.95,-0.63,-0.37,-0.17,-0.04,0
|
||||||
|
|
||||||
|
PARAM_EMOTION=0
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4,0.24,0.13,0.09,0.17,0.33,0.41,0.33,0.21,0.12,0.09,0.2,0.39,0.5,0.502,0.504,0.505,0.507,0.508,0.509,0.511,0.512,0.513,0.514,0.515,0.516,0.516,0.517,0.52,0.518,0.52,0.52,0.519,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.518,0.517,0.515,0.514,0.512,0.51,0.508,0.507,0.505,0.504,0.503,0.501,0.501,0.5,0.5
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.4,0.24,0.13,0.09,0.17,0.33,0.41,0.33,0.21,0.12,0.09,0.2,0.39,0.5,0.502,0.504,0.505,0.507,0.508,0.509,0.511,0.512,0.513,0.514,0.515,0.516,0.516,0.517,0.52,0.518,0.52,0.52,0.519,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.518,0.517,0.515,0.514,0.512,0.51,0.508,0.507,0.505,0.504,0.503,0.501,0.501,0.5,0.5
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0,0.004,0.016,0.033,0.06,0.08,0.11,0.14,0.17,0.2,0.22,0.25,0.28,0.3,0.315,0.328,0.337,0.34,0.332,0.31,0.28,0.24,0.19,0.15,0.1,0.06,0.02,-0.02,-0.05,-0.08,-0.094,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.099,-0.095,-0.09,-0.084,-0.076,-0.068,-0.06,-0.051,-0.042,-0.034,-0.026,-0.019,-0.013,-0.007,-0.003,-0.001,0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0,-0.005,-0.019,-0.04,-0.07,-0.1,-0.13,-0.17,-0.21,-0.24,-0.28,-0.31,-0.34,-0.37,-0.39,-0.406,-0.416,-0.42,-0.414,-0.397,-0.37,-0.34,-0.31,-0.27,-0.24,-0.2,-0.17,-0.14,-0.12,-0.097,-0.084,-0.08,-0.08,-0.08,-0.08,-0.08,-0.08,-0.08,-0.08,-0.08,-0.08,-0.08,-0.08,-0.08,-0.08,-0.08,-0.08,-0.08,-0.08,-0.08,-0.08,-0.08,-0.08,-0.08,-0.08,-0.08,-0.079,-0.076,-0.072,-0.067,-0.061,-0.055,-0.048,-0.041,-0.034,-0.027,-0.021,-0.015,-0.01,-0.006,-0.003,-0.001,0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0,0,-0.001,-0.003,-0.005,-0.007,-0.01,-0.014,-0.018,-0.022,-0.027,-0.032,-0.038,-0.044,-0.05,-0.056,-0.063,-0.07,-0.077,-0.085,-0.093,-0.1,-0.108,-0.116,-0.124,-0.133,-0.141,-0.149,-0.157,-0.165,-0.174,-0.182,-0.19,-0.197,-0.205,-0.213,-0.22,-0.227,-0.234,-0.241,-0.247,-0.254,-0.259,-0.265,-0.27,-0.275,-0.28,-0.284,-0.287,-0.291,-0.293,-0.296,-0.298,-0.299,-0.3,-0.3,-0.296,-0.286,-0.271,-0.251,-0.23,-0.21,-0.18,-0.15,-0.13,-0.1,-0.08,-0.06,-0.038,-0.022,-0.01,-0.003,0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0,0,-0.001,-0.003,-0.005,-0.008,-0.012,-0.016,-0.02,-0.025,-0.031,-0.037,-0.043,-0.05,-0.057,-0.064,-0.072,-0.08,-0.088,-0.096,-0.105,-0.114,-0.123,-0.132,-0.141,-0.15,-0.16,-0.169,-0.178,-0.187,-0.197,-0.206,-0.215,-0.224,-0.232,-0.241,-0.249,-0.257,-0.265,-0.273,-0.28,-0.287,-0.294,-0.3,-0.306,-0.312,-0.317,-0.322,-0.326,-0.329,-0.333,-0.335,-0.337,-0.339,-0.34,-0.34,-0.336,-0.324,-0.307,-0.28,-0.26,-0.23,-0.2,-0.17,-0.14,-0.12,-0.09,-0.06,-0.04,-0.025,-0.012,-0.003,0
|
||||||
|
|
||||||
|
PARAM_BROW_L_ANGLE=0,0.001,0.004,0.009,0.016,0.024,0.034,0.046,0.059,0.074,0.09,0.107,0.126,0.146,0.17,0.19,0.21,0.23,0.26,0.28,0.31,0.33,0.36,0.39,0.41,0.44,0.47,0.5,0.52,0.55,0.58,0.61,0.63,0.66,0.68,0.71,0.73,0.76,0.78,0.8,0.82,0.85,0.865,0.883,0.901,0.917,0.932,0.946,0.958,0.969,0.978,0.986,0.992,0.996,0.999,1,0.987,0.95,0.9,0.84,0.76,0.68,0.6,0.51,0.42,0.34,0.26,0.19,0.13,0.07,0.03,0.01,0
|
||||||
|
|
||||||
|
PARAM_BROW_R_ANGLE=0,0.001,0.004,0.009,0.016,0.024,0.034,0.046,0.059,0.074,0.09,0.107,0.126,0.146,0.17,0.19,0.21,0.23,0.26,0.28,0.31,0.33,0.36,0.39,0.41,0.44,0.47,0.5,0.52,0.55,0.58,0.61,0.63,0.66,0.68,0.71,0.73,0.76,0.78,0.8,0.82,0.85,0.865,0.883,0.901,0.917,0.932,0.946,0.958,0.969,0.978,0.986,0.992,0.996,0.999,1,0.987,0.95,0.9,0.84,0.76,0.68,0.6,0.51,0.42,0.34,0.26,0.19,0.13,0.07,0.03,0.01,0
|
||||||
|
|
||||||
|
PARAM_EAR_DEFORM=0,-0.007,-0.026,-0.05,-0.09,-0.13,-0.18,-0.23,-0.27,-0.32,-0.37,-0.41,-0.45,-0.49,-0.52,-0.54,-0.555,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.56,-0.553,-0.534,-0.51,-0.47,-0.43,-0.38,-0.33,-0.29,-0.24,-0.19,-0.15,-0.11,-0.07,-0.04,-0.02,-0.005,0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0.5,0.505,0.518,0.54,0.56,0.59,0.63,0.66,0.7,0.73,0.76,0.79,0.82,0.85,0.87,0.886,0.896,0.9,0.895,0.881,0.86,0.84,0.81,0.78,0.75,0.72,0.69,0.67,0.649,0.634,0.624,0.62,0.62,0.62,0.62,0.62,0.62,0.62,0.62,0.62,0.62,0.62,0.62,0.62,0.62,0.62,0.62,0.62,0.62,0.62,0.62,0.62,0.62,0.62,0.62,0.62,0.618,0.614,0.608,0.601,0.592,0.582,0.572,0.561,0.551,0.541,0.532,0.523,0.515,0.509,0.504,0.501,0.5
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Y=0,-0.013,-0.05,-0.1,-0.16,-0.24,-0.32,-0.4,-0.49,-0.58,-0.66,-0.74,-0.81,-0.87,-0.93,-0.97,-0.99,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-0.987,-0.95,-0.9,-0.84,-0.76,-0.68,-0.6,-0.51,-0.42,-0.34,-0.26,-0.19,-0.13,-0.07,-0.03,-0.01,0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.505,0.517,0.535,0.56,0.58,0.61,0.64,0.68,0.71,0.74,0.77,0.79,0.81,0.833,0.848,0.857,0.86,0.859,0.855,0.849,0.842,0.832,0.821,0.808,0.794,0.778,0.762,0.744,0.725,0.706,0.687,0.666,0.65,0.62,0.6,0.58,0.56,0.54,0.52,0.499,0.48,0.461,0.443,0.425,0.409,0.393,0.379,0.366,0.354,0.344,0.336,0.329,0.324,0.321,0.32,0.322,0.328,0.338,0.349,0.362,0.377,0.392,0.408,0.424,0.439,0.453,0.466,0.477,0.487,0.494,0.498,0.5
|
||||||
|
|
||||||
|
PARAM_HAIR_SIDE=0
|
||||||
|
|
||||||
|
PARAM_HAIR_BACK=0
|
||||||
53
public/pio/models/pio/motions/Breath Dere3.mtn
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0,0.007,0.03,0.06,0.11,0.17,0.24,0.32,0.42,0.52,0.63,0.75,0.87,1.01,1.15,1.29,1.44,1.59,1.75,1.91,2.07,2.23,2.4,2.56,2.72,2.89,3.05,3.21,3.36,3.51,3.66,3.8,3.94,4.07,4.2,4.32,4.43,4.53,4.62,4.71,4.78,4.85,4.9,4.94,4.97,4.993,5,4.94,4.76,4.48,4.13,3.72,3.27,2.8,2.32,1.86,1.42,1.02,0.67,0.39,0.18,0.04,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0,-0.015,-0.06,-0.13,-0.22,-0.34,-0.49,-0.65,-0.84,-1.04,-1.26,-1.5,-1.75,-2.02,-2.29,-2.58,-2.88,-3.18,-3.5,-3.82,-4.14,-4.47,-4.79,-5.12,-5.45,-5.77,-6.1,-6.41,-6.73,-7.03,-7.32,-7.6,-7.88,-8.15,-8.4,-8.63,-8.85,-9.06,-9.24,-9.42,-9.56,-9.69,-9.8,-9.89,-9.95,-9.99,-10,-9.87,-9.52,-8.97,-8.26,-7.44,-6.53,-5.6,-4.65,-3.72,-2.84,-2.05,-1.35,-0.78,-0.36,-0.09,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0,-0.08,-0.28,-0.59,-0.97,-1.41,-1.9,-2.41,-2.93,-3.46,-3.95,-4.42,-4.86,-5.24,-5.55,-5.79,-5.95,-6,-5.84,-5.38,-4.66,-3.72,-2.61,-1.34,0.04,1.5,3,4.5,5.96,7.34,8.61,9.72,10.66,11.38,11.84,12,11.95,11.81,11.59,11.29,10.91,10.49,10,9.46,8.89,8.29,7.65,7,6.33,5.67,5,4.35,3.71,3.11,2.54,2,1.51,1.09,0.71,0.41,0.19,0.05,0
|
||||||
|
|
||||||
|
PARAM_EMOTION=-1
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.55,0.58,0.64,0.72,0.8,0.87,0.91,0.92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.92,0.907,0.87,0.83,0.77,0.71,0.66,0.61,0.58,0.56,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.55,0.58,0.64,0.72,0.8,0.87,0.91,0.92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.92,0.907,0.87,0.83,0.77,0.71,0.66,0.61,0.58,0.56,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN2=-1,-0.999,-0.994,-0.986,-0.976,-0.962,-0.947,-0.93,0.83,0.81,0.75,0.68,0.58,0.48,0.38,0.3,0.24,0.21,0.2,0.19,0.182,0.173,0.166,0.159,0.152,0.146,0.141,0.136,0.131,0.127,0.123,0.12,0.117,0.114,0.112,0.109,0.108,0.106,0.105,0.103,0.102,0.102,0.101,0.1,0.1,0.1,0.1,0.23,0.44,0.63,0.78,0.83,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN2=-1,-0.999,-0.996,-0.99,-0.983,-0.973,-0.962,-0.95,0.82,0.8,0.75,0.67,0.57,0.48,0.38,0.3,0.24,0.21,0.2,0.19,0.182,0.173,0.166,0.159,0.152,0.147,0.141,0.136,0.131,0.127,0.123,0.12,0.117,0.114,0.112,0.109,0.108,0.106,0.105,0.103,0.102,0.102,0.101,0.1,0.1,0.1,0.1,0.23,0.45,0.65,0.79,0.85,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0,0,0,-0.002,-0.003,-0.005,-0.007,-0.009,-0.011,-0.013,-0.015,-0.018,-0.02,-0.022,-0.024,-0.026,-0.028,-0.03,-0.032,-0.034,-0.035,-0.037,-0.038,-0.039,-0.04,-0.042,-0.043,-0.043,-0.044,-0.045,-0.05,-0.046,-0.05,-0.047,-0.05,-0.048,-0.05,-0.05,-0.049,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.05,-0.049,-0.048,-0.045,-0.041,-0.037,-0.033,-0.028,-0.023,-0.019,-0.014,-0.01,-0.007,-0.004,-0.002,0,0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0,0.004,0.013,0.028,0.047,0.07,0.09,0.12,0.14,0.17,0.19,0.21,0.23,0.253,0.268,0.28,0.287,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.289,0.29,0.29,0.287,0.287,0.286,0.285,0.284,0.283,0.281,0.28,0.278,0.276,0.274,0.272,0.269,0.267,0.264,0.261,0.257,0.254,0.25,0.243,0.231,0.216,0.197,0.18,0.15,0.13,0.11,0.09,0.07,0.047,0.031,0.018,0.008,0.002,0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0,-0.018,-0.06,-0.11,-0.16,-0.21,-0.23,-0.24,-0.238,-0.231,-0.222,-0.212,-0.201,-0.191,-0.182,-0.176,-0.171,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.168,-0.162,-0.152,-0.14,-0.126,-0.111,-0.095,-0.079,-0.063,-0.048,-0.035,-0.023,-0.013,-0.006,-0.002,0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0,-0.018,-0.06,-0.11,-0.16,-0.21,-0.23,-0.24,-0.238,-0.231,-0.222,-0.212,-0.201,-0.191,-0.182,-0.176,-0.171,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.168,-0.162,-0.152,-0.14,-0.126,-0.111,-0.095,-0.079,-0.063,-0.048,-0.035,-0.023,-0.013,-0.006,-0.002,0
|
||||||
|
|
||||||
|
PARAM_BROW_ANGLE=0.2,0.202,0.207,0.218,0.232,0.251,0.27,0.3,0.34,0.37,0.41,0.43,0.46,0.477,0.492,0.502,0.508,0.51,0.51,0.51,0.51,0.51,0.51,0.51,0.51,0.51,0.51,0.51,0.51,0.51,0.51,0.51,0.51,0.51,0.51,0.51,0.51,0.51,0.51,0.51,0.51,0.51,0.51,0.51,0.51,0.51,0.51,0.506,0.495,0.478,0.46,0.43,0.4,0.37,0.34,0.32,0.29,0.26,0.24,0.224,0.211,0.203,0.2
|
||||||
|
|
||||||
|
PARAM_BROW_SELECT=-0.5
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.904,0.87,0.82,0.76,0.73,0.71,0.726,0.77,0.81,0.86,0.9,0.92,0.93,0.9,0.85,0.8,0.76,0.75,0.763,0.79,0.84,0.88,0.91,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92,0.92
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN2=-1
|
||||||
|
|
||||||
|
PARAM_MOUTH_EMO=0
|
||||||
|
|
||||||
|
PARAM_CHEEK=0,0.003,0.012,0.027,0.047,0.07,0.1,0.13,0.16,0.2,0.24,0.28,0.32,0.36,0.4,0.44,0.48,0.52,0.56,0.6,0.63,0.67,0.7,0.73,0.75,0.77,0.787,0.8,0.807,0.81,0.808,0.801,0.791,0.777,0.76,0.74,0.72,0.69,0.66,0.63,0.6,0.57,0.53,0.5,0.46,0.42,0.39,0.35,0.31,0.28,0.24,0.21,0.18,0.15,0.12,0.09,0.07,0.05,0.033,0.019,0.009,0.002,0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0,-0.003,-0.011,-0.023,-0.04,-0.06,-0.08,-0.11,-0.14,-0.18,-0.21,-0.25,-0.29,-0.33,-0.37,-0.41,-0.45,-0.49,-0.54,-0.58,-0.62,-0.66,-0.7,-0.74,-0.78,-0.81,-0.84,-0.87,-0.9,-0.93,-0.95,-0.966,-0.98,-0.991,-0.998,-1,-0.996,-0.984,-0.966,-0.94,-0.91,-0.87,-0.83,-0.79,-0.74,-0.69,-0.64,-0.58,-0.53,-0.47,-0.42,-0.36,-0.31,-0.26,-0.21,-0.17,-0.13,-0.09,-0.06,-0.03,-0.016,-0.004,0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0
|
||||||
|
|
||||||
|
PARAM_BODY_Y=0,0,0.002,0.003,0.006,0.009,0.013,0.017,0.021,0.026,0.032,0.037,0.043,0.049,0.055,0.061,0.068,0.074,0.081,0.087,0.093,0.099,0.105,0.111,0.116,0.122,0.126,0.131,0.135,0.139,0.142,0.145,0.147,0.149,0.15,0.15,0.149,0.148,0.145,0.141,0.136,0.131,0.125,0.118,0.111,0.104,0.096,0.087,0.079,0.071,0.063,0.054,0.046,0.039,0.032,0.025,0.019,0.014,0.009,0.005,0.002,0.001,0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.506,0.521,0.54,0.57,0.61,0.64,0.68,0.72,0.76,0.8,0.83,0.86,0.89,0.92,0.935,0.946,0.95,0.944,0.927,0.9,0.87,0.83,0.79,0.74,0.69,0.64,0.59,0.54,0.49,0.45,0.41,0.37,0.33,0.31,0.287,0.275,0.27,0.271,0.274,0.28,0.287,0.296,0.306,0.317,0.329,0.342,0.356,0.369,0.383,0.397,0.411,0.424,0.437,0.449,0.46,0.47,0.478,0.486,0.492,0.496,0.499,0.5
|
||||||
|
|
||||||
|
PARAM_BOING=0,0.002,0.006,0.014,0.023,0.033,0.044,0.056,0.068,0.081,0.092,0.103,0.113,0.122,0.13,0.135,0.139,0.14,0.137,0.128,0.115,0.098,0.079,0.06,0.04,0.01,-0.01,-0.03,-0.052,-0.07,-0.087,-0.101,-0.111,-0.118,-0.12,-0.12,-0.118,-0.116,-0.113,-0.109,-0.105,-0.1,-0.095,-0.089,-0.083,-0.077,-0.07,-0.064,-0.058,-0.051,-0.045,-0.039,-0.033,-0.027,-0.022,-0.017,-0.013,-0.009,-0.006,-0.003,-0.002,0,0
|
||||||
|
|
||||||
46
public/pio/models/pio/motions/Breath1.mtn
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0
|
||||||
|
|
||||||
|
PARAM_EMOTION=0
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.5
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.5
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_L_ANGLE=0
|
||||||
|
|
||||||
|
PARAM_BROW_R_ANGLE=0
|
||||||
|
|
||||||
|
PARAM_EAR_DEFORM=0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0.5
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Y=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.5,0.502,0.504,0.507,0.511,0.515,0.52,0.525,0.531,0.537,0.543,0.55,0.557,0.564,0.571,0.578,0.585,0.591,0.598,0.605,0.611,0.617,0.622,0.628,0.633,0.637,0.641,0.644,0.647,0.648,0.65,0.65,0.65,0.649,0.647,0.645,0.642,0.639,0.635,0.631,0.627,0.622,0.617,0.611,0.605,0.6,0.594,0.587,0.581,0.575,0.569,0.563,0.556,0.55,0.545,0.539,0.533,0.528,0.523,0.519,0.515,0.511,0.508,0.505,0.503,0.501,0.5,0.5
|
||||||
|
|
||||||
|
PARAM_HAIR_SIDE=0
|
||||||
|
|
||||||
|
PARAM_HAIR_BACK=0
|
||||||
46
public/pio/models/pio/motions/Breath2.mtn
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0
|
||||||
|
|
||||||
|
PARAM_EMOTION=0
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.5
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.5
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_L_ANGLE=0
|
||||||
|
|
||||||
|
PARAM_BROW_R_ANGLE=0
|
||||||
|
|
||||||
|
PARAM_EAR_DEFORM=0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0.5
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0,-0.03,-0.1,-0.21,-0.35,-0.51,-0.69,-0.88,-1.07,-1.26,-1.43,-1.59,-1.73,-1.84,-1.93,-1.98,-2,-1.989,-1.96,-1.91,-1.84,-1.75,-1.65,-1.54,-1.41,-1.27,-1.12,-0.96,-0.8,-0.63,-0.45,-0.27,-0.09,0.09,0.27,0.45,0.63,0.8,0.96,1.12,1.27,1.41,1.54,1.65,1.75,1.84,1.91,1.96,1.99,2,1.982,1.93,1.85,1.75,1.63,1.49,1.34,1.18,1.02,0.86,0.71,0.56,0.42,0.3,0.2,0.11,0.05,0.01,0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Y=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.5,0.501,0.503,0.505,0.508,0.511,0.515,0.519,0.524,0.529,0.534,0.539,0.545,0.55,0.556,0.562,0.568,0.574,0.58,0.585,0.591,0.596,0.601,0.606,0.611,0.615,0.619,0.622,0.625,0.627,0.629,0.63,0.63,0.63,0.629,0.627,0.625,0.622,0.619,0.615,0.611,0.607,0.603,0.598,0.593,0.588,0.582,0.577,0.571,0.566,0.56,0.555,0.549,0.544,0.539,0.534,0.529,0.525,0.52,0.516,0.513,0.51,0.507,0.504,0.503,0.501,0.5,0.5
|
||||||
|
|
||||||
|
PARAM_HAIR_SIDE=0
|
||||||
|
|
||||||
|
PARAM_HAIR_BACK=0
|
||||||
53
public/pio/models/pio/motions/Breath3.mtn
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0,-0.06,-0.22,-0.48,-0.81,-1.22,-1.68,-2.18,-2.71,-3.27,-3.84,-4.43,-5.01,-5.57,-6.13,-6.65,-7.14,-7.58,-7.99,-8.33,-8.61,-8.82,-8.95,-9,-8.96,-8.84,-8.64,-8.38,-8.06,-7.67,-7.22,-6.74,-6.2,-5.61,-5.01,-4.35,-3.68,-2.99,-2.28,-1.56,-0.83,-0.09,0.65,1.37,2.09,2.79,3.48,4.14,4.78,5.39,5.96,6.49,6.99,7.43,7.83,8.17,8.46,8.7,8.86,8.96,9,8.96,8.86,8.7,8.48,8.22,7.91,7.56,7.19,6.79,6.37,5.93,5.48,5.02,4.56,4.1,3.64,3.2,2.76,2.35,1.95,1.59,1.25,0.94,0.67,0.44,0.25,0.11,0.03,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0,0.1,0.37,0.81,1.36,2.04,2.8,3.63,4.52,5.46,6.4,7.38,8.34,9.29,10.21,11.08,11.89,12.64,13.31,13.88,14.36,14.71,14.92,15,14.996,14.985,14.965,14.94,14.9,14.86,14.8,14.74,14.67,14.58,14.49,14.39,14.28,14.15,14.02,13.87,13.72,13.55,13.37,13.18,12.97,12.76,12.53,12.29,12.04,11.77,11.5,11.21,10.9,10.58,10.26,9.91,9.56,9.18,8.8,8.41,8,7.53,7.08,6.63,6.19,5.76,5.34,4.93,4.54,4.15,3.78,3.43,3.09,2.76,2.45,2.15,1.87,1.61,1.37,1.14,0.93,0.75,0.58,0.43,0.3,0.19,0.11,0.05,0.01,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0,0.002,0.01,0.022,0.038,0.06,0.08,0.11,0.15,0.18,0.22,0.27,0.31,0.36,0.41,0.47,0.53,0.59,0.65,0.71,0.78,0.85,0.91,0.98,1.06,1.13,1.2,1.28,1.35,1.43,1.5,1.57,1.65,1.72,1.8,1.87,1.94,2.02,2.09,2.15,2.22,2.29,2.35,2.41,2.47,2.53,2.59,2.64,2.69,2.73,2.78,2.82,2.85,2.89,2.92,2.94,2.96,2.978,2.99,2.998,3,2.988,2.95,2.9,2.83,2.74,2.64,2.52,2.4,2.26,2.12,1.98,1.83,1.67,1.52,1.37,1.21,1.07,0.92,0.78,0.65,0.53,0.42,0.31,0.22,0.15,0.08,0.04,0.01,0
|
||||||
|
|
||||||
|
PARAM_EMOTION=-1
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.551,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.552,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.553,0.55,0.55,0.55,0.55,0.55,0.554,0.55,0.55,0.55,0.55,0.55,0.555,0.56,0.56,0.56,0.56,0.556,0.56,0.56,0.56,0.557,0.56,0.56,0.56,0.56,0.558,0.56,0.56,0.56,0.559,0.56,0.56,0.56,0.65,0.81,0.92,0.95,0.84,0.66,0.55,0.55,0.55,0.55,0.55,0.55,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.551,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.552,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.553,0.55,0.55,0.55,0.55,0.55,0.554,0.55,0.55,0.55,0.55,0.55,0.555,0.56,0.56,0.56,0.56,0.556,0.56,0.56,0.56,0.557,0.56,0.56,0.56,0.56,0.558,0.56,0.56,0.56,0.559,0.56,0.56,0.56,0.65,0.81,0.92,0.95,0.84,0.66,0.55,0.55,0.55,0.55,0.55,0.55,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN2=-1
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN2=-1
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0,-0.003,-0.01,-0.023,-0.038,-0.057,-0.08,-0.1,-0.13,-0.15,-0.18,-0.21,-0.23,-0.26,-0.29,-0.31,-0.33,-0.35,-0.373,-0.389,-0.402,-0.412,-0.418,-0.42,-0.418,-0.412,-0.403,-0.39,-0.374,-0.355,-0.33,-0.31,-0.28,-0.25,-0.22,-0.19,-0.16,-0.13,-0.09,-0.06,-0.02,0.02,0.05,0.09,0.12,0.16,0.19,0.22,0.25,0.28,0.31,0.34,0.36,0.38,0.403,0.42,0.434,0.445,0.453,0.458,0.46,0.458,0.453,0.445,0.433,0.42,0.404,0.387,0.367,0.35,0.33,0.3,0.28,0.26,0.23,0.21,0.19,0.16,0.14,0.12,0.1,0.081,0.064,0.048,0.034,0.022,0.013,0.006,0.001,0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0,0.001,0.004,0.009,0.016,0.024,0.033,0.044,0.056,0.068,0.082,0.096,0.111,0.126,0.142,0.158,0.175,0.191,0.208,0.225,0.241,0.258,0.274,0.29,0.307,0.322,0.338,0.352,0.366,0.379,0.391,0.403,0.414,0.425,0.435,0.445,0.454,0.462,0.47,0.477,0.484,0.49,0.496,0.502,0.507,0.511,0.515,0.519,0.523,0.526,0.528,0.531,0.533,0.535,0.536,0.537,0.538,0.539,0.54,0.54,0.54,0.538,0.532,0.522,0.509,0.493,0.475,0.45,0.43,0.41,0.38,0.36,0.33,0.3,0.27,0.25,0.22,0.19,0.17,0.14,0.12,0.1,0.07,0.056,0.04,0.026,0.015,0.007,0.002,0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0,0.002,0.006,0.013,0.023,0.034,0.047,0.061,0.075,0.091,0.107,0.123,0.139,0.155,0.17,0.185,0.198,0.211,0.222,0.231,0.239,0.245,0.249,0.25,0.25,0.25,0.249,0.247,0.246,0.244,0.242,0.24,0.237,0.235,0.231,0.228,0.225,0.221,0.217,0.213,0.209,0.204,0.2,0.195,0.19,0.185,0.18,0.175,0.17,0.164,0.159,0.153,0.148,0.142,0.136,0.131,0.125,0.119,0.114,0.108,0.102,0.097,0.091,0.086,0.08,0.075,0.07,0.065,0.06,0.055,0.05,0.046,0.041,0.037,0.033,0.029,0.025,0.022,0.019,0.015,0.013,0.01,0.008,0.006,0.004,0.003,0.001,0.001,0,0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0,0.002,0.006,0.013,0.023,0.034,0.047,0.061,0.075,0.091,0.107,0.123,0.139,0.155,0.17,0.185,0.198,0.211,0.222,0.231,0.239,0.245,0.249,0.25,0.25,0.25,0.249,0.247,0.246,0.244,0.242,0.24,0.237,0.235,0.231,0.228,0.225,0.221,0.217,0.213,0.209,0.204,0.2,0.195,0.19,0.185,0.18,0.175,0.17,0.164,0.159,0.153,0.148,0.142,0.136,0.131,0.125,0.119,0.114,0.108,0.102,0.097,0.091,0.086,0.08,0.075,0.07,0.065,0.06,0.055,0.05,0.046,0.041,0.037,0.033,0.029,0.025,0.022,0.019,0.015,0.013,0.01,0.008,0.006,0.004,0.003,0.001,0.001,0,0
|
||||||
|
|
||||||
|
PARAM_BROW_ANGLE=0.2,0.2,0.203,0.206,0.21,0.215,0.22,0.227,0.233,0.24,0.247,0.254,0.261,0.268,0.275,0.281,0.287,0.293,0.298,0.302,0.305,0.308,0.309,0.31,0.31,0.31,0.31,0.309,0.31,0.307,0.307,0.306,0.304,0.303,0.302,0.3,0.299,0.297,0.296,0.294,0.292,0.29,0.288,0.286,0.284,0.281,0.279,0.277,0.275,0.272,0.27,0.267,0.265,0.262,0.26,0.257,0.255,0.253,0.25,0.248,0.245,0.243,0.24,0.238,0.235,0.233,0.231,0.229,0.226,0.224,0.222,0.22,0.218,0.216,0.214,0.213,0.211,0.21,0.208,0.207,0.206,0.204,0.203,0.203,0.202,0.2,0.201,0.2,0.2,0.2
|
||||||
|
|
||||||
|
PARAM_BROW_SELECT=-0.5
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0,0,0,0,0,0.001,0,0.002,0.003,0,0.004,0,0.006,0.006,0.01,0.007,0.01,0.008,0.01,0.009,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.009,0.01,0.01,0.01,0.01,0.01,0.008,0.01,0.01,0.01,0.01,0.007,0.01,0.01,0.01,0.01,0.006,0.01,0.01,0.01,0.01,0.005,0,0,0,0.004,0,0,0,0,0.003,0,0,0,0,0.002,0,0,0,0,0,0.001,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN2=0.9,0.9,0.9,0.9,0.9,0.9,0.898,0.896,0.894,0.891,0.887,0.882,0.876,0.87,0.84,0.79,0.71,0.63,0.54,0.46,0.4,0.34,0.31,0.3,0.3,0.3,0.3,0.3,0.301,0.3,0.302,0.3,0.304,0.305,0.306,0.307,0.308,0.309,0.311,0.312,0.314,0.316,0.317,0.319,0.321,0.323,0.326,0.328,0.33,0.333,0.336,0.339,0.341,0.344,0.347,0.351,0.354,0.357,0.361,0.365,0.368,0.372,0.376,0.38,0.52,0.76,0.89,0.891,0.89,0.893,0.894,0.894,0.895,0.9,0.896,0.9,0.897,0.9,0.898,0.9,0.9,0.899,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9
|
||||||
|
|
||||||
|
PARAM_MOUTH_EMO=0
|
||||||
|
|
||||||
|
PARAM_CHEEK=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0
|
||||||
|
|
||||||
|
PARAM_BODY_Y=0,-0.002,-0.008,-0.017,-0.029,-0.043,-0.06,-0.077,-0.096,-0.116,-0.137,-0.16,-0.18,-0.198,-0.218,-0.236,-0.254,-0.27,-0.284,-0.296,-0.306,-0.314,-0.318,-0.32,-0.319,-0.315,-0.31,-0.302,-0.292,-0.281,-0.268,-0.253,-0.237,-0.22,-0.202,-0.183,-0.163,-0.143,-0.12,-0.1,-0.08,-0.06,-0.04,-0.01,0.007,0.03,0.047,0.067,0.086,0.104,0.12,0.136,0.151,0.164,0.175,0.186,0.194,0.201,0.206,0.209,0.21,0.209,0.207,0.203,0.198,0.192,0.185,0.176,0.168,0.158,0.149,0.138,0.128,0.117,0.106,0.096,0.085,0.075,0.064,0.055,0.046,0.037,0.029,0.022,0.016,0.01,0.006,0.003,0.001,0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.502,0.507,0.515,0.524,0.537,0.55,0.565,0.581,0.598,0.615,0.633,0.65,0.667,0.684,0.699,0.714,0.728,0.74,0.75,0.758,0.765,0.769,0.77,0.77,0.77,0.77,0.77,0.77,0.77,0.77,0.77,0.77,0.77,0.77,0.769,0.77,0.768,0.77,0.766,0.766,0.765,0.764,0.763,0.761,0.76,0.758,0.757,0.755,0.753,0.751,0.749,0.746,0.743,0.741,0.738,0.735,0.731,0.728,0.724,0.72,0.715,0.709,0.702,0.694,0.686,0.677,0.668,0.658,0.648,0.638,0.627,0.617,0.606,0.596,0.586,0.576,0.566,0.557,0.548,0.54,0.532,0.525,0.519,0.514,0.509,0.505,0.502,0.501,0.5
|
||||||
|
|
||||||
|
PARAM_BOING=0
|
||||||
|
|
||||||
46
public/pio/models/pio/motions/Breath4.mtn
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0,0.22,0.81,1.72,2.86,4.13,5.5,6.87,8.14,9.28,10.19,10.78,11,8.31,2.5,-4.73,-12.26,-19.12,-24.81,-28.59,-30,-29.62,-28.55,-26.9,-24.77,-22.31,-19.59,-16.8,-13.95,-11.17,-8.52,-6.14,-4.05,-2.33,-1.07,-0.27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0
|
||||||
|
|
||||||
|
PARAM_EMOTION=0
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.52,0.57,0.63,0.69,0.74,0.79,0.82,0.84,0.846,0.849,0.85,0.85,0.85,0.85,0.85,0.838,0.81,0.76,0.7,0.65,0.59,0.54,0.51,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.52,0.57,0.63,0.69,0.75,0.8,0.83,0.84,0.84,0.84,0.84,0.84,0.84,0.84,0.84,0.828,0.8,0.75,0.7,0.64,0.59,0.54,0.51,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0,0,0,0,0,0,0,0,0,0,0,0,0,-0.03,-0.1,-0.18,-0.26,-0.34,-0.4,-0.44,-0.46,-0.454,-0.438,-0.41,-0.38,-0.34,-0.3,-0.26,-0.21,-0.17,-0.13,-0.09,-0.06,-0.04,-0.016,-0.004,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_L_ANGLE=0
|
||||||
|
|
||||||
|
PARAM_BROW_R_ANGLE=0
|
||||||
|
|
||||||
|
PARAM_EAR_DEFORM=0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0.5
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Y=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.5,0.502,0.505,0.509,0.514,0.52,0.526,0.533,0.541,0.549,0.558,0.567,0.576,0.586,0.595,0.604,0.614,0.623,0.632,0.641,0.649,0.657,0.664,0.67,0.676,0.681,0.685,0.688,0.689,0.69,0.69,0.688,0.686,0.684,0.68,0.676,0.672,0.667,0.661,0.655,0.649,0.643,0.636,0.629,0.622,0.614,0.607,0.6,0.592,0.585,0.577,0.57,0.563,0.556,0.55,0.543,0.537,0.531,0.526,0.521,0.516,0.512,0.509,0.506,0.503,0.501,0.5,0.5
|
||||||
|
|
||||||
|
PARAM_HAIR_SIDE=0
|
||||||
|
|
||||||
|
PARAM_HAIR_BACK=0
|
||||||
53
public/pio/models/pio/motions/Breath5.mtn
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0,-0.2,-0.77,-1.66,-2.85,-4.3,-5.96,-7.76,-9.74,-11.81,-13.95,-16.05,-18.19,-20.26,-22.24,-24.04,-25.7,-27.15,-28.34,-29.23,-29.8,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-29.4,-27.79,-25.31,-22.2,-18.74,-15,-11.26,-7.8,-4.69,-2.21,-0.6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0,0.07,0.26,0.55,0.95,1.43,1.99,2.59,3.25,3.94,4.65,5.35,6.06,6.75,7.41,8.01,8.57,9.05,9.45,9.74,9.93,10,9.994,9.976,9.95,9.9,9.85,9.79,9.71,9.62,9.52,9.41,9.29,9.16,9.02,8.87,8.71,8.55,8.37,8.19,8,7.77,7.55,7.32,7.11,6.9,6.7,6.49,6.29,6.09,5.89,5.68,5.48,5.27,5.06,4.86,4.64,4.42,4.2,3.97,3.74,3.5,3.26,3,2.71,2.41,2.08,1.74,1.42,1.1,0.8,0.54,0.32,0.15,0.04,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_EMOTION=-1
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.62,0.73,0.84,0.91,0.94,0.85,0.69,0.58,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.62,0.73,0.84,0.91,0.94,0.85,0.69,0.58,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN2=-1
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN2=-1
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0,0.002,0.007,0.014,0.025,0.037,0.052,0.067,0.084,0.102,0.121,0.139,0.158,0.176,0.193,0.208,0.223,0.235,0.246,0.253,0.258,0.26,0.259,0.257,0.254,0.25,0.245,0.238,0.231,0.223,0.214,0.204,0.194,0.183,0.171,0.159,0.146,0.133,0.12,0.106,0.093,0.079,0.065,0.051,0.037,0.024,0.01,-0.003,-0.016,-0.029,-0.041,-0.053,-0.064,-0.074,-0.084,-0.093,-0.101,-0.108,-0.115,-0.12,-0.124,-0.127,-0.129,-0.13,-0.127,-0.12,-0.11,-0.096,-0.081,-0.065,-0.049,-0.034,-0.02,-0.01,-0.003,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0,-0.005,-0.019,-0.04,-0.07,-0.11,-0.15,-0.19,-0.24,-0.3,-0.35,-0.4,-0.45,-0.51,-0.56,-0.6,-0.64,-0.68,-0.71,-0.73,-0.745,-0.75,-0.75,-0.75,-0.75,-0.75,-0.75,-0.749,-0.75,-0.748,-0.747,-0.746,-0.75,-0.744,-0.743,-0.741,-0.74,-0.738,-0.737,-0.735,-0.733,-0.73,-0.728,-0.725,-0.723,-0.72,-0.717,-0.713,-0.71,-0.706,-0.702,-0.698,-0.694,-0.689,-0.684,-0.679,-0.674,-0.669,-0.663,-0.657,-0.65,-0.644,-0.637,-0.63,-0.611,-0.57,-0.52,-0.45,-0.38,-0.3,-0.23,-0.16,-0.09,-0.04,-0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0,0.002,0.008,0.017,0.029,0.044,0.062,0.08,0.101,0.12,0.14,0.17,0.19,0.21,0.23,0.248,0.266,0.281,0.293,0.302,0.308,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.308,0.305,0.301,0.296,0.289,0.28,0.14,-0.08,-0.28,-0.42,-0.48,-0.48,-0.48,-0.48,-0.48,-0.48,-0.48,-0.48,-0.48,-0.48,-0.48,-0.479,-0.48,-0.48,-0.478,-0.48,-0.48,-0.477,-0.48,-0.476,-0.48,-0.475,-0.474,-0.47,-0.472,-0.472,-0.471,-0.47,-0.43,-0.35,-0.23,-0.12,-0.04,0,0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0,0.002,0.008,0.017,0.029,0.044,0.062,0.08,0.101,0.12,0.14,0.17,0.19,0.21,0.23,0.248,0.266,0.281,0.293,0.302,0.308,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.31,0.308,0.305,0.301,0.296,0.289,0.28,0.14,-0.08,-0.28,-0.42,-0.48,-0.48,-0.48,-0.48,-0.48,-0.48,-0.48,-0.48,-0.48,-0.48,-0.48,-0.479,-0.48,-0.48,-0.478,-0.48,-0.48,-0.477,-0.48,-0.476,-0.48,-0.475,-0.474,-0.47,-0.472,-0.472,-0.471,-0.47,-0.43,-0.35,-0.23,-0.12,-0.04,0,0
|
||||||
|
|
||||||
|
PARAM_BROW_ANGLE=0.2,0.201,0.205,0.211,0.219,0.229,0.24,0.252,0.265,0.279,0.293,0.307,0.321,0.335,0.348,0.36,0.371,0.381,0.389,0.395,0.399,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.398,0.397,0.394,0.392,0.389,0.385,0.38,-0.53,-0.66,-0.72,-0.75,-0.75,-0.75,-0.75,-0.75,-0.748,-0.747,-0.746,-0.745,-0.743,-0.741,-0.738,-0.736,-0.733,-0.729,-0.725,-0.721,-0.717,-0.712,-0.707,-0.701,-0.695,-0.689,-0.682,-0.674,-0.667,-0.658,-0.649,-0.64,-0.62,-0.58,-0.54,-0.48,-0.43,-0.37,0.2
|
||||||
|
|
||||||
|
PARAM_BROW_SELECT=-0.5,-0.5,-0.5,-0.5,-0.5,-0.498,-0.498,-0.497,-0.5,-0.495,-0.494,-0.492,-0.491,-0.489,-0.488,-0.486,-0.484,-0.482,-0.48,-0.477,-0.475,-0.472,-0.47,-0.467,-0.464,-0.461,-0.458,-0.454,-0.451,-0.447,-0.444,-0.44,-0.436,-0.432,-0.427,-0.423,-0.419,-0.414,-0.409,-0.404,-0.399,-0.394,-0.389,-0.384,-0.378,-0.372,-0.367,-0.361,-0.355,-0.348,-0.342,-0.336,-0.329,-0.322,-0.316,-0.309,-0.302,-0.294,-0.287,-0.28,-0.272,-0.264,-0.256,-0.248,-0.24,-0.232,-0.223,-0.215,-0.206,-0.197,-0.188,-0.179,-0.17,0.2,0.203,0.206,0.208,0.211,0.213,0.216,0.218,0.22,0.222,0.224,0.226,0.228,0.23,0.232,0.233,0.235,0.236,0.238,0.239,0.24,0.241,0.242,0.243,0.244,0.245,0.246,0.25,0.247,0.25,0.248,0.25,0.249,0.25,0.25,0.25,0.25,0.25,-0.5
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.001,0,0,0,0,0,0.002,0,0,0,0.003,0,0,0,0.004,0,0,0.005,0.01,0.01,0.006,0.01,0.01,0.007,0.01,0.01,0.008,0.01,0.009,0.01,0.01,0.01,0.011,0.01,0.012,0.01,0.013,0.01,0.014,0.01,0.015,0.02,0.016,0.02,0.018,0.018,0.02,0.019,0.02,0.17,0.169,0.165,0.161,0.156,0.153,0.151,0.15,0.23,0.37,0.47,0.5,0.44,0.35,0.26,0.19,0.17,0.24,0.39,0.5,0.54,0.56,0.6,0.72,0.88,0.96,0.89,0.75,0.68,0.75,0.88,0.95,0.95,0.95,0.95,0.95,0.95,0.95,0.95,0.95,0.95,0.95,0.95,0.95,0.95,0.95,0.95,0.95
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN2=0.9,0.894,0.877,0.85,0.81,0.77,0.72,0.67,0.61,0.55,0.48,0.42,0.35,0.29,0.23,0.18,0.13,0.09,0.05,0.02,0.006,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.001,-0.006,-0.013,-0.022,-0.035,-0.05,-0.067,-0.087,-0.11,-0.13,-0.16,-0.19,-0.22,-0.26,-0.3,-0.34,-0.38,-0.42,-0.47,-0.52,-0.58,-0.63,-0.69,-1,-1,-1,-1,-0.999,-0.998,-1,-0.996,-0.995,-0.994,-0.993,-0.991,-0.99,-0.988,-0.987,-0.985,-0.983,-0.981,-0.98,-0.978,-0.976,-0.974,-0.972,-0.97,-0.968,-0.966,-0.965,-0.963,-0.961,-0.959,-0.957,-0.956,-0.954,-0.952,-0.951,-0.949,-0.948,-0.947,-0.946,-0.944,-0.943,-0.943,-0.942,-0.94,-0.941,-0.94,-0.94,-0.94
|
||||||
|
|
||||||
|
PARAM_MOUTH_EMO=0
|
||||||
|
|
||||||
|
PARAM_CHEEK=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0,-0.03,-0.13,-0.28,-0.47,-0.72,-0.99,-1.29,-1.62,-1.97,-2.32,-2.68,-3.03,-3.38,-3.71,-4.01,-4.28,-4.53,-4.72,-4.87,-4.97,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-4.9,-4.63,-4.22,-3.7,-3.12,-2.5,-1.88,-1.3,-0.78,-0.37,-0.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0,-0.07,-0.26,-0.55,-0.95,-1.43,-1.99,-2.59,-3.25,-3.94,-4.65,-5.35,-6.06,-6.75,-7.41,-8.01,-8.57,-9.05,-9.45,-9.74,-9.93,-10,-9.991,-9.97,-9.93,-9.87,-9.81,-9.74,-9.67,-9.59,-9.51,-9.43,-9.35,-9.28,-9.21,-9.15,-9.1,-9.06,-9.03,-9.007,-9,-9.006,-9.025,-9.05,-9.09,-9.14,-9.19,-9.24,-9.3,-9.36,-9.43,-9.49,-9.56,-9.62,-9.68,-9.74,-9.79,-9.84,-9.89,-9.93,-9.96,-9.98,-9.995,-10,-9.8,-9.26,-8.44,-7.4,-6.25,-5,-3.75,-2.6,-1.56,-0.74,-0.2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_BODY_Y=0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.497,0.487,0.472,0.453,0.43,0.4,0.37,0.34,0.3,0.27,0.23,0.2,0.16,0.13,0.1,0.07,0.05,0.028,0.013,0.003,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0.04,0.08,0.13,0.19,0.25,0.31,0.37,0.42,0.46,0.49,0.5,0.5,0.5,0.505,0.519,0.538,0.56,0.59,0.62,0.65,0.67,0.7,0.72,0.742,0.757,0.767,0.77,0.765,0.75,0.73,0.7,0.67,0.64,0.61,0.58,0.55,0.53,0.514,0.504,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5
|
||||||
|
|
||||||
|
PARAM_BOING=0,0.01,0.03,0.06,0.09,0.11,0.13,0.145,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.11,0.02,-0.11,-0.25,-0.4,-0.56,-0.7,-0.82,-0.91,-0.98,-1,-0.984,-0.94,-0.9,-0.85,-0.81,-0.79,-0.78,-0.796,-0.84,-0.88,-0.93,-0.97,-0.99,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-0.994,-0.978,-0.95,-0.9,-0.84,-0.76,-0.64,-0.51,-0.38,-0.25,-0.13,-0.02,0.06,0.12,0.14,0.123,0.09,0.04,-0.01,-0.05,-0.09,-0.11,-0.12,-0.111,-0.09,-0.06,-0.04,-0.017,-0.004,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
46
public/pio/models/pio/motions/Breath6.mtn
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.81,-2.78,-5.18,-7.52,-9.4,-10.6,-11,-10.57,-9.36,-7.46,-5.04,-2.16,0.99,4.31,7.69,11.01,14.16,17.04,19.46,21.36,22.57,23,22.998,22.991,22.979,22.962,22.94,22.91,22.88,22.84,22.79,22.74,22.68,22.61,22.54,22.45,22.37,22.27,22.16,22.04,21.92,21.79,21.64,21.49,21.32,21.15,20.97,20.77,20.57,20.35,20.13,19.88,19.63,19.37,19.09,18.8,18.5,18.19,17.86,17.51,17.16,16.79,16.4,16,15.11,13.43,11.06,8.19,5.09,1.78,-1.5,-4.51,-7.2,-9.33,-10.71,-11.22,-10.86,-9.96,-8.73,-7.3,-5.81,-4.34,-2.95,-1.78,-0.83,-0.22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0
|
||||||
|
|
||||||
|
PARAM_EMOTION=0
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.47,0.4,0.31,0.22,0.13,0.06,0.02,0,0.04,0.13,0.25,0.37,0.46,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.46,0.37,0.26,0.16,0.07,0.02,0,0.03,0.1,0.19,0.28,0.37,0.44,0.48,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.47,0.4,0.31,0.22,0.13,0.06,0.02,0,0.04,0.13,0.25,0.37,0.46,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.46,0.37,0.26,0.16,0.07,0.02,0,0.03,0.1,0.19,0.28,0.37,0.44,0.48,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.01,0.03,0.07,0.11,0.15,0.19,0.23,0.26,0.29,0.311,0.32,0.324,0.327,0.331,0.334,0.338,0.341,0.344,0.347,0.35,0.352,0.355,0.358,0.36,0.363,0.365,0.367,0.369,0.371,0.373,0.375,0.377,0.379,0.38,0.382,0.383,0.385,0.386,0.387,0.389,0.39,0.391,0.392,0.393,0.393,0.394,0.395,0.4,0.396,0.4,0.397,0.4,0.398,0.4,0.399,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.37,0.3,0.21,0.13,0.06,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_L_ANGLE=0
|
||||||
|
|
||||||
|
PARAM_BROW_R_ANGLE=0
|
||||||
|
|
||||||
|
PARAM_EAR_DEFORM=0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0.5
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Y=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.499,0.497,0.494,0.49,0.485,0.479,0.472,0.464,0.456,0.447,0.438,0.429,0.42,0.41,0.401,0.392,0.383,0.374,0.366,0.358,0.351,0.345,0.34,0.336,0.333,0.331,0.33,0.33,0.333,0.336,0.34,0.345,0.352,0.359,0.367,0.376,0.385,0.396,0.406,0.417,0.429,0.441,0.453,0.465,0.478,0.491,0.503,0.516,0.529,0.541,0.554,0.566,0.577,0.589,0.6,0.61,0.62,0.63,0.639,0.647,0.654,0.661,0.666,0.671,0.675,0.678,0.679,0.68,0.68,0.68,0.678,0.677,0.675,0.673,0.671,0.668,0.665,0.662,0.658,0.655,0.651,0.647,0.642,0.638,0.633,0.629,0.624,0.619,0.614,0.608,0.603,0.598,0.593,0.587,0.582,0.577,0.572,0.566,0.561,0.556,0.551,0.547,0.542,0.538,0.533,0.529,0.525,0.522,0.518,0.515,0.512,0.509,0.507,0.505,0.503,0.502,0.501,0.5,0.5
|
||||||
|
|
||||||
|
PARAM_HAIR_SIDE=0
|
||||||
|
|
||||||
|
PARAM_HAIR_BACK=0
|
||||||
46
public/pio/models/pio/motions/Breath7.mtn
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.07,-0.26,-0.57,-0.98,-1.48,-2.06,-2.71,-3.42,-4.18,-4.97,-5.8,-6.65,-7.52,-8.39,-9.26,-10.12,-10.96,-11.78,-12.57,-13.31,-14,-14.65,-15.23,-15.74,-16.17,-16.52,-16.79,-16.95,-17,-17.01,-17.04,-17.07,-17.11,-17.15,-17.18,-17.201,-17.204,-17.186,-17.14,-17.07,-16.96,-16.81,-16.63,-16.39,-16.12,-15.8,-15.42,-15,-14.48,-13.94,-13.35,-12.73,-12.1,-11.43,-10.73,-10.02,-9.28,-8.51,-7.75,-6.95,-6.15,-5.34,-4.51,-3.68,-2.86,-2.01,-1.16,-0.34,0.51,1.35,2.16,2.98,3.8,4.58,5.37,6.14,6.87,7.61,8.32,8.99,9.65,10.28,10.86,11.43,11.97,12.45,12.91,13.33,13.7,14.04,14.33,14.56,14.75,14.89,14.97,15,15.003,15.011,15.02,15.026,15.03,15.016,14.99,14.95,14.89,14.81,14.7,14.56,14.38,14.17,13.92,13.55,13.01,12.31,11.49,10.59,9.59,8.53,7.44,6.34,5.26,4.22,3.24,2.34,1.57,0.92,0.42,0.11,0
|
||||||
|
|
||||||
|
PARAM_EMOTION=0
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.46,0.37,0.26,0.16,0.07,0.02,0,0.04,0.13,0.24,0.34,0.43,0.48,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.46,0.37,0.26,0.16,0.07,0.02,0,0.04,0.13,0.24,0.34,0.43,0.48,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_L_ANGLE=0
|
||||||
|
|
||||||
|
PARAM_BROW_R_ANGLE=0
|
||||||
|
|
||||||
|
PARAM_EAR_DEFORM=0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0.5
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Y=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0,0,0,0,0,0,0,0,0,0,-0.007,-0.027,-0.06,-0.1,-0.16,-0.22,-0.3,-0.38,-0.47,-0.56,-0.67,-0.77,-0.89,-1,-1.12,-1.24,-1.36,-1.48,-1.61,-1.73,-1.85,-1.97,-2.08,-2.19,-2.3,-2.4,-2.49,-2.58,-2.66,-2.74,-2.8,-2.86,-2.91,-2.95,-2.98,-2.994,-3,-2.996,-2.983,-2.96,-2.93,-2.9,-2.85,-2.8,-2.74,-2.68,-2.61,-2.53,-2.45,-2.36,-2.27,-2.18,-2.07,-1.97,-1.86,-1.75,-1.63,-1.51,-1.39,-1.27,-1.14,-1.02,-0.89,-0.76,-0.62,-0.49,-0.36,-0.23,-0.1,0.03,0.16,0.29,0.42,0.55,0.67,0.79,0.91,1.03,1.14,1.25,1.35,1.45,1.55,1.64,1.73,1.81,1.89,1.96,2.02,2.08,2.13,2.17,2.21,2.24,2.26,2.275,2.279,2.275,2.264,2.246,2.22,2.19,2.15,2.11,2.06,2.01,1.95,1.89,1.83,1.76,1.69,1.62,1.54,1.47,1.39,1.31,1.23,1.15,1.07,0.99,0.91,0.83,0.76,0.68,0.61,0.54,0.47,0.41,0.35,0.3,0.24,0.19,0.15,0.11,0.08,0.05,0.03,0.013,0.003,0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5
|
||||||
|
|
||||||
|
PARAM_HAIR_SIDE=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.007,-0.026,-0.06,-0.09,-0.14,-0.2,-0.26,-0.32,-0.39,-0.46,-0.54,-0.61,-0.68,-0.74,-0.8,-0.86,-0.91,-0.94,-0.97,-0.993,-1,-1,-0.997,-0.993,-0.985,-0.974,-0.959,-0.94,-0.92,-0.88,-0.85,-0.81,-0.78,-0.74,-0.7,-0.66,-0.62,-0.58,-0.54,-0.5,-0.46,-0.42,-0.38,-0.34,-0.31,-0.27,-0.23,-0.2,-0.16,-0.13,-0.1,-0.07,-0.04,-0.01,0.001,0.002,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.009,0.03,0.07,0.12,0.17,0.24,0.3,0.36,0.43,0.49,0.54,0.59,0.63,0.66,0.674,0.68,0.677,0.668,0.654,0.634,0.61,0.58,0.55,0.52,0.48,0.44,0.4,0.36,0.32,0.28,0.24,0.21,0.18,0.15,0.13,0.11,0.09,0.073,0.058,0.045,0.034,0.024,0.016,0.01,0.006,0.003,0.001,0
|
||||||
|
|
||||||
|
PARAM_HAIR_BACK=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.004,-0.015,-0.033,-0.06,-0.09,-0.12,-0.16,-0.2,-0.24,-0.29,-0.33,-0.38,-0.43,-0.48,-0.53,-0.58,-0.63,-0.68,-0.72,-0.77,-0.81,-0.84,-0.88,-0.91,-0.93,-0.953,-0.968,-0.977,-0.98,-0.98,-0.981,-0.981,-0.978,-0.973,-0.964,-0.95,-0.932,-0.91,-0.88,-0.84,-0.79,-0.75,-0.7,-0.65,-0.6,-0.56,-0.51,-0.46,-0.42,-0.37,-0.33,-0.28,-0.24,-0.21,-0.17,-0.14,-0.11,-0.08,-0.06,-0.037,-0.021,-0.01,-0.002,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.009,0.03,0.07,0.13,0.19,0.26,0.33,0.41,0.49,0.57,0.65,0.72,0.79,0.85,0.9,0.94,0.97,0.993,1,1,1,0.998,0.994,0.987,0.977,0.962,0.942,0.91,0.88,0.84,0.79,0.73,0.67,0.61,0.55,0.49,0.44,0.38,0.32,0.27,0.22,0.18,0.14,0.1,0.07,0.05,0.03,0.012,0.003,0
|
||||||
46
public/pio/models/pio/motions/Breath8.mtn
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.11,-0.41,-0.88,-1.51,-2.24,-3.07,-3.98,-4.92,-5.88,-6.84,-7.77,-8.64,-9.46,-10.18,-10.81,-11.31,-11.69,-11.92,-12,-12,-12,-12,-12,-12,-12,-12,-12,-12,-12,-12,-12,-12,-11.999,-11.998,-12,-11.996,-11.995,-11.993,-11.991,-11.99,-11.987,-11.985,-11.982,-11.979,-11.976,-11.973,-11.969,-11.965,-11.96,-11.955,-11.95,-11.944,-11.939,-11.932,-11.925,-11.918,-11.91,-11.902,-11.894,-11.885,-11.83,-11.69,-11.46,-11.17,-10.82,-10.41,-9.95,-9.45,-8.92,-8.37,-7.79,-7.2,-6.59,-5.99,-5.38,-4.78,-4.2,-3.62,-3.08,-2.56,-2.08,-1.63,-1.23,-0.88,-0.57,-0.33,-0.15,-0.04,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.08,0.31,0.69,1.18,1.8,2.51,3.33,4.2,5.15,6.14,7.19,8.25,9.33,10.41,11.47,12.52,13.56,14.53,15.46,16.33,17.13,17.84,18.47,19.01,19.43,19.74,19.94,20,20,20,20.001,20,20,20,20,20,19.999,19.996,19.993,19.988,19.983,19.976,19.967,19.958,19.946,19.932,19.917,19.9,19.88,19.86,19.83,19.81,19.78,19.74,19.71,19.67,19.63,19.58,19.53,19.48,19.42,19.36,19.3,19.23,19.16,19.08,19,18.85,18.56,18.15,17.62,17,16.3,15.51,14.65,13.75,12.79,11.79,10.77,9.74,8.7,7.67,6.66,5.69,4.75,3.88,3.06,2.31,1.66,1.09,0.63,0.29,0.07,0
|
||||||
|
|
||||||
|
PARAM_EMOTION=0
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.499,0.498,0.496,0.494,0.491,0.488,0.485,0.482,0.479,0.475,0.471,0.467,0.464,0.46,0.456,0.453,0.449,0.446,0.443,0.44,0.438,0.435,0.433,0.432,0.431,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.4,0.32,0.23,0.14,0.06,0.02,0,0,0,0,0,0,0,0,0,0,0,0,0,0.04,0.13,0.25,0.37,0.46,0.5
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.498,0.496,0.495,0.492,0.49,0.487,0.485,0.482,0.478,0.475,0.472,0.469,0.466,0.462,0.459,0.456,0.454,0.451,0.449,0.446,0.445,0.443,0.442,0.441,0.44,0.44,0.44,0.44,0.44,0.44,0.44,0.44,0.44,0.44,0.44,0.44,0.44,0.44,0.44,0.44,0.44,0.44,0.44,0.44,0.44,0.44,0.44,0.44,0.44,0.44,0.44,0.44,0.44,0.44,0.41,0.33,0.23,0.14,0.06,0.02,0,0,0,0,0,0,0,0,0,0,0,0,0,0.04,0.13,0.25,0.37,0.46,0.5
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_L_ANGLE=0
|
||||||
|
|
||||||
|
PARAM_BROW_R_ANGLE=0
|
||||||
|
|
||||||
|
PARAM_EAR_DEFORM=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.002,-0.007,-0.016,-0.027,-0.041,-0.057,-0.076,-0.1,-0.12,-0.14,-0.16,-0.19,-0.22,-0.24,-0.27,-0.3,-0.32,-0.35,-0.37,-0.4,-0.42,-0.44,-0.47,-0.486,-0.504,-0.52,-0.535,-0.547,-0.557,-0.564,-0.568,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.57,-0.567,-0.559,-0.546,-0.528,-0.51,-0.48,-0.45,-0.42,-0.39,-0.36,-0.32,-0.28,-0.25,-0.21,-0.18,-0.15,-0.12,-0.09,-0.06,-0.04,-0.024,-0.011,-0.003,0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0.5
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Y=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.016,0.06,0.13,0.23,0.35,0.48,0.64,0.8,0.98,1.17,1.37,1.56,1.77,1.97,2.18,2.38,2.58,2.77,2.96,3.13,3.29,3.45,3.58,3.7,3.81,3.89,3.95,3.99,4,4,3.999,3.997,3.994,3.99,3.984,3.978,3.97,3.961,3.949,3.937,3.922,3.906,3.887,3.87,3.84,3.82,3.79,3.76,3.73,3.7,3.66,3.62,3.57,3.53,3.48,3.43,3.37,3.31,3.25,3.18,3.11,3.04,2.96,2.88,2.76,2.6,2.4,2.18,1.94,1.68,1.43,1.17,0.93,0.71,0.51,0.33,0.19,0.09,0.02,0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.5,0.502,0.503,0.506,0.509,0.513,0.517,0.522,0.527,0.533,0.539,0.546,0.552,0.56,0.567,0.575,0.583,0.591,0.599,0.607,0.615,0.623,0.631,0.639,0.647,0.655,0.663,0.67,0.678,0.684,0.691,0.697,0.703,0.708,0.713,0.717,0.721,0.724,0.727,0.728,0.73,0.73,0.73,0.728,0.725,0.721,0.716,0.711,0.704,0.696,0.688,0.679,0.67,0.66,0.649,0.637,0.626,0.614,0.601,0.589,0.576,0.562,0.549,0.536,0.522,0.508,0.495,0.482,0.47,0.459,0.448,0.438,0.429,0.42,0.411,0.404,0.396,0.389,0.383,0.377,0.372,0.367,0.362,0.358,0.355,0.351,0.349,0.346,0.344,0.343,0.342,0.341,0.34,0.34,0.34,0.343,0.347,0.352,0.358,0.365,0.373,0.381,0.39,0.4,0.409,0.419,0.428,0.438,0.447,0.456,0.464,0.472,0.479,0.485,0.49,0.494,0.497,0.499,0.5
|
||||||
|
|
||||||
|
PARAM_HAIR_SIDE=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.003,0.01,0.022,0.039,0.058,0.08,0.11,0.13,0.16,0.2,0.23,0.26,0.3,0.33,0.36,0.4,0.43,0.46,0.5,0.52,0.55,0.58,0.6,0.62,0.637,0.651,0.662,0.668,0.67,0.657,0.63,0.59,0.55,0.52,0.505,0.499,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.499,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.496,0.483,0.463,0.44,0.41,0.37,0.33,0.3,0.26,0.21,0.18,0.14,0.11,0.08,0.05,0.03,0.013,0.003,0
|
||||||
|
|
||||||
|
PARAM_HAIR_BACK=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.004,0.016,0.034,0.06,0.09,0.13,0.17,0.21,0.26,0.31,0.36,0.42,0.47,0.53,0.58,0.64,0.69,0.74,0.79,0.83,0.87,0.91,0.94,0.97,0.984,0.996,1,1,1,0.998,0.997,0.996,0.994,0.991,0.988,0.985,0.981,0.977,0.972,0.967,0.961,0.955,0.948,0.941,0.933,0.925,0.916,0.906,0.896,0.885,0.874,0.862,0.849,0.836,0.821,0.807,0.791,0.775,0.758,0.74,0.72,0.69,0.66,0.63,0.6,0.56,0.53,0.49,0.45,0.41,0.37,0.32,0.27,0.22,0.17,0.13,0.09,0.06,0.04,0.016,0.004,0
|
||||||
46
public/pio/models/pio/motions/Fail.mtn
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=-1,-0.74,-0.26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=7.26,13.24,24.03,30,28.59,24.81,19.33,12.85,6.15,-0.33,-5.81,-9.59,-11,-10.94,-10.79,-10.54,-10.21,-9.82,-9.37,-8.86,-8.32,-7.74,-7.14,-6.53,-5.89,-5.26,-4.64,-4.03,-3.44,-2.88,-2.34,-1.84,-1.39,-1,-0.66,-0.38,-0.17,-0.04,0,-1.03,-3.8,-7.8,-12.55,-17.45,-22.2,-26.2,-28.97,-30,-27.79,-22.43,-15.88,-9.49,-4.36,-1.1,0,-2.21,-7.57,-14.12,-20.51,-25.64,-28.9,-30,-29.62,-28.55,-26.87,-24.74,-22.2,-19.42,-16.49,-13.51,-10.58,-7.8,-5.26,-3.13,-1.45,-0.38,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0,0,0,0,0,0,0,0,0,0,0,0,0,0.24,0.88,1.85,3.06,4.4,5.82,7.22,8.53,9.69,10.66,11.39,11.84,12,11.82,11.34,10.61,9.71,8.7,7.63,6.58,5.6,4.74,4.01,3.46,3.12,3,3.07,3.27,3.59,4,4.49,5.05,5.66,6.32,7,7.7,8.41,9.12,9.81,10.49,11.12,11.72,12.27,12.76,13.18,13.53,13.79,13.94,14,13.82,13.32,12.54,11.55,10.36,9.06,7.7,6.3,4.94,3.64,2.45,1.46,0.68,0.18,0
|
||||||
|
|
||||||
|
PARAM_EMOTION=0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.65,0.57,0.569,0.569,0.568,0.57,0.567,0.566,0.57,0.565,0.564,0.56,0.563,0.56,0.561,0.561,0.56,0.559,0.559,0.56,0.558,0.557,0.56,0.556,0.56,0.554,0.554,0.55,0.553,0.552,0.55,0.551,0.55,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=1,0.992,0.978,0.97,0.97,0.97,0.97,0.97,0.971,0.97,0.973,0.973,0.974,0.97,0.976,0.977,0.978,0.979,0.98,0.981,0.982,0.983,0.984,0.985,0.987,0.988,0.989,0.99,0.991,0.992,0.993,0.994,0.995,0.996,0.996,0.997,1,0.998,1,0.999,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0.09,0.23,0.37,0.46,0.5
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=1,0.992,0.978,0.97,0.97,0.97,0.97,0.97,0.971,0.97,0.973,0.973,0.974,0.97,0.976,0.977,0.978,0.979,0.98,0.981,0.982,0.983,0.984,0.985,0.987,0.988,0.989,0.99,0.991,0.992,0.993,0.994,0.995,0.996,0.996,0.997,1,0.998,1,0.999,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0.09,0.23,0.37,0.46,0.5
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0,-0.001,-0.003,-0.006,-0.01,-0.015,-0.022,-0.029,-0.037,-0.047,-0.057,-0.068,-0.08,-0.092,-0.106,-0.12,-0.135,-0.15,-0.166,-0.183,-0.2,-0.217,-0.236,-0.254,-0.273,-0.292,-0.312,-0.332,-0.35,-0.372,-0.39,-0.414,-0.43,-0.46,-0.48,-0.5,-0.52,-0.54,-0.56,-0.58,-0.6,-0.623,-0.643,-0.66,-0.683,-0.702,-0.721,-0.74,-0.759,-0.777,-0.794,-0.811,-0.828,-0.844,-0.859,-0.874,-0.888,-0.901,-0.914,-0.926,-0.937,-0.947,-0.957,-0.966,-0.974,-0.98,-0.986,-0.991,-0.995,-0.998,-0.999,-1,-0.82,-0.54,-0.27,-0.08,0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=-0.18,-0.34,-0.61,-0.76,-0.76,-0.759,-0.757,-0.754,-0.752,-0.748,-0.744,-0.74,-0.735,-0.73,-0.725,-0.72,-0.714,-0.708,-0.703,-0.697,-0.691,-0.685,-0.679,-0.673,-0.667,-0.662,-0.657,-0.651,-0.646,-0.642,-0.638,-0.634,-0.63,-0.627,-0.625,-0.623,-0.621,-0.62,-0.62,-0.62,-0.62,-0.622,-0.624,-0.626,-0.628,-0.63,-0.633,-0.636,-0.639,-0.642,-0.645,-0.648,-0.651,-0.653,-0.656,-0.659,-0.661,-0.663,-0.665,-0.667,-0.668,-0.669,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.62,-0.5,-0.34,-0.17,-0.05,0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=-0.23,-0.43,-0.78,-0.97,-0.97,-0.969,-0.967,-0.964,-0.962,-0.958,-0.954,-0.95,-0.945,-0.94,-0.935,-0.93,-0.924,-0.918,-0.913,-0.907,-0.901,-0.895,-0.889,-0.883,-0.877,-0.872,-0.867,-0.861,-0.856,-0.852,-0.848,-0.844,-0.84,-0.837,-0.835,-0.833,-0.831,-0.83,-0.83,-0.83,-0.83,-0.83,-0.83,-0.831,-0.83,-0.832,-0.83,-0.833,-0.83,-0.834,-0.83,-0.836,-0.836,-0.84,-0.837,-0.84,-0.838,-0.84,-0.839,-0.84,-0.84,-0.84,-0.84,-0.84,-0.84,-0.84,-0.84,-0.839,-0.837,-0.834,-0.83,-0.76,-0.61,-0.41,-0.21,-0.06,0
|
||||||
|
|
||||||
|
PARAM_BROW_L_ANGLE=-0.24,-0.44,-0.8,-1,-1,-0.998,-0.996,-0.993,-0.989,-0.983,-0.978,-0.971,-0.963,-0.955,-0.945,-0.935,-0.924,-0.912,-0.899,-0.885,-0.871,-0.855,-0.839,-0.822,-0.804,-0.785,-0.765,-0.74,-0.72,-0.7,-0.68,-0.65,-0.63,-0.6,-0.58,-0.55,-0.52,-0.49,-0.46,0.44,0.457,0.473,0.488,0.503,0.517,0.53,0.542,0.553,0.564,0.574,0.583,0.592,0.6,0.607,0.613,0.619,0.624,0.628,0.632,0.635,0.637,0.639,0.64,0.64,0.627,0.59,0.54,0.48,0.41,0.33,0.25,0.19,0.12,0.07,0.03,0.01,0
|
||||||
|
|
||||||
|
PARAM_BROW_R_ANGLE=-0.24,-0.44,-0.8,-1,-1,-0.998,-0.996,-0.993,-0.989,-0.984,-0.978,-0.971,-0.964,-0.955,-0.946,-0.936,-0.925,-0.913,-0.901,-0.887,-0.873,-0.858,-0.842,-0.825,-0.807,-0.789,-0.77,-0.749,-0.73,-0.71,-0.68,-0.66,-0.64,-0.61,-0.58,-0.56,-0.53,-0.5,-0.47,0.4,0.43,0.46,0.49,0.51,0.54,0.56,0.58,0.6,0.624,0.642,0.658,0.674,0.688,0.7,0.712,0.722,0.731,0.739,0.745,0.751,0.755,0.758,0.759,0.76,0.745,0.7,0.64,0.57,0.48,0.39,0.3,0.22,0.15,0.08,0.04,0.01,0
|
||||||
|
|
||||||
|
PARAM_EAR_DEFORM=0.18,0.56,0.7,0.65,0.55,0.43,0.3,0.19,0.09,0.02,0,0,0.002,0.005,0.008,0.013,0.018,0.023,0.029,0.036,0.043,0.05,0.058,0.065,0.073,0.08,0.088,0.095,0.102,0.108,0.114,0.12,0.125,0.129,0.133,0.136,0.138,0.14,0.14,0.12,0.06,-0.04,-0.15,-0.28,-0.41,-0.55,-0.67,-0.78,-0.87,-0.94,-0.99,-1,-1,-1,-1,-1,-0.999,-1,-0.997,-0.996,-0.995,-0.994,-0.992,-0.99,-0.988,-0.986,-0.983,-0.98,-0.977,-0.974,-0.97,-0.89,-0.72,-0.48,-0.25,-0.07,0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=1,1,1,1,0.995,0.982,0.963,0.94,0.92,0.89,0.872,0.857,0.85,0.847,0.845,0.843,0.841,0.84,0.838,0.837,0.836,0.835,0.833,0.832,0.83,0.82,0.813,0.807,0.8,0.794,0.787,0.781,0.775,0.769,0.763,0.757,0.752,0.746,0.74,0.16,0.23,0.35,0.43,0.46,0.38,0.25,0.16,0.13,0.21,0.35,0.44,0.47,0.39,0.24,0.16,0.47,0.58,0.579,0.577,0.574,0.571,0.566,0.561,0.555,0.55,0.544,0.538,0.532,0.526,0.521,0.516,0.511,0.508,0.504,0.502,0.501,0.5
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0,-0.79,-2.21,-3,-2.86,-2.49,-1.96,-1.33,-0.67,-0.04,0.49,0.86,1,0.98,0.93,0.85,0.75,0.63,0.51,0.4,0.29,0.19,0.11,0.05,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Y=0,2.63,7.37,10,9.55,8.35,6.62,4.56,2.44,0.38,-1.35,-2.55,-3,-2.94,-2.78,-2.54,-2.24,-1.9,-1.54,-1.19,-0.87,-0.58,-0.34,-0.15,-0.04,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=-0.73,-1.32,-2.4,-3,-2.9,-2.62,-2.22,-1.75,-1.25,-0.78,-0.38,-0.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.62,0.72,0.9,1,0.97,0.89,0.78,0.65,0.52,0.39,0.26,0.16,0.07,0.02,0,0.03,0.11,0.22,0.35,0.48,0.61,0.74,0.84,0.93,0.98,1,0.99,0.96,0.92,0.87,0.82,0.76,0.7,0.64,0.6,0.56,0.53,0.507,0.5,0.506,0.521,0.54,0.57,0.6,0.64,0.67,0.7,0.73,0.75,0.766,0.776,0.78,0.77,0.74,0.7,0.65,0.59,0.53,0.46,0.4,0.35,0.31,0.28,0.27,0.275,0.287,0.305,0.33,0.35,0.38,0.41,0.43,0.46,0.474,0.488,0.497,0.5
|
||||||
|
|
||||||
|
PARAM_HAIR_SIDE=0.13,0.41,0.51,0.33,0.03,-0.17,-0.24,-0.13,0.05,0.17,0.21,0.16,0.08,0.02,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_HAIR_BACK=0
|
||||||
46
public/pio/models/pio/motions/Sleeping.mtn
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10.03,10.13,10.26,10.42,10.58,10.74,10.87,10.97,11,10.79,10.24,9.44,8.49,7.51,6.56,5.76,5.21,5,5.015,5.06,5.13,5.23,5.35,5.49,5.65,5.83,6.04,6.25,6.48,6.73,6.99,7.25,7.53,7.81,8.1,8.4,8.7,9.01,9.31,9.61,9.92,10.22,10.52,10.81,11.1,11.38,11.66,11.92,12.17,12.42,12.65,12.86,13.06,13.25,13.41,13.56,13.69,13.8,13.88,13.95,13.99,14,13.98,13.92,13.83,13.71,13.57,13.41,13.22,13.02,12.82,12.6,12.37,12.14,11.91,11.69,11.47,11.25,11.05,10.85,10.67,10.51,10.36,10.24,10.14,10.06,10.02,10
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=-8,-8.04,-8.15,-8.32,-8.56,-8.86,-9.21,-9.63,-10.09,-10.59,-11.14,-11.73,-12.35,-12.99,-13.68,-14.38,-15.11,-15.85,-16.6,-17.36,-18.13,-18.9,-19.68,-20.45,-21.19,-21.95,-22.69,-23.4,-24.09,-24.77,-25.41,-26.03,-26.61,-27.15,-27.66,-28.12,-28.54,-28.92,-29.24,-29.5,-29.72,-29.87,-29.97,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-28.52,-24.55,-18.81,-12.01,-4.99,1.81,7.55,11.52,13,12.93,12.72,12.38,11.92,11.34,10.66,9.87,9.01,8.05,7.02,5.91,4.73,3.51,2.23,0.91,-0.43,-1.83,-3.26,-4.68,-6.14,-7.59,-9.04,-10.51,-11.95,-13.38,-14.78,-16.16,-17.5,-18.81,-20.07,-21.27,-22.44,-23.54,-24.55,-25.52,-26.41,-27.2,-27.91,-28.52,-29.04,-29.45,-29.75,-29.94,-30,-29.89,-29.58,-29.08,-28.43,-27.65,-26.73,-25.72,-24.63,-23.49,-22.27,-21.05,-19.79,-18.52,-17.28,-16.07,-14.87,-13.75,-12.68,-11.68,-10.79,-9.99,-9.31,-8.76,-8.35,-8.09,-8
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=10,10.005,10.018,10.04,10.07,10.11,10.16,10.22,10.28,10.36,10.44,10.53,10.63,10.74,10.85,10.97,11.1,11.24,11.38,11.54,11.69,11.86,12.03,12.21,12.4,12.59,12.79,12.99,13.2,13.42,13.64,13.87,14.11,14.34,14.59,14.84,15.09,15.35,15.61,15.88,16.16,16.43,16.71,17,17.27,17.49,17.66,17.79,17.88,17.94,17.98,17.995,18,17.52,16.23,14.36,12.14,9.86,7.64,5.77,4.48,4,4.02,4.08,4.19,4.33,4.5,4.71,4.95,5.21,5.5,5.81,6.14,6.5,6.87,7.26,7.66,8.06,8.48,8.91,9.34,9.79,10.22,10.66,11.11,11.54,11.97,12.4,12.82,13.22,13.62,14,14.36,14.71,15.05,15.35,15.65,15.91,16.15,16.37,16.55,16.71,16.83,16.93,16.98,17,16.96,16.86,16.71,16.5,16.25,15.96,15.64,15.29,14.93,14.54,14.15,13.75,13.35,12.95,12.57,12.19,11.83,11.49,11.17,10.89,10.63,10.42,10.24,10.11,10.03,10
|
||||||
|
|
||||||
|
PARAM_EMOTION=0
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=-1
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=-1
|
||||||
|
|
||||||
|
PARAM_BROW_L_ANGLE=0
|
||||||
|
|
||||||
|
PARAM_BROW_R_ANGLE=0
|
||||||
|
|
||||||
|
PARAM_EAR_DEFORM=0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0.79,0.79,0.79,0.79,0.79,0.79,0.79,0.789,0.79,0.79,0.788,0.79,0.79,0.787,0.79,0.786,0.79,0.785,0.78,0.784,0.78,0.783,0.78,0.782,0.781,0.78,0.78,0.78,0.779,0.78,0.777,0.777,0.78,0.776,0.78,0.775,0.77,0.774,0.77,0.773,0.77,0.77,0.772,0.77,0.77,0.771,0.77,0.77,0.77,0.77,0.77,0.77,0.77,0.773,0.783,0.796,0.812,0.828,0.844,0.857,0.867,0.87,0.87,0.87,0.87,0.869,0.867,0.864,0.86,0.84,0.79,0.74,0.69,0.64,0.62,0.61,0.619,0.639,0.66,0.69,0.71,0.732,0.745,0.75,0.742,0.722,0.7,0.67,0.656,0.644,0.64,0.642,0.647,0.656,0.666,0.679,0.693,0.708,0.722,0.737,0.751,0.764,0.774,0.783,0.788,0.79,0.79,0.79,0.79,0.79,0.79,0.79,0.79,0.79,0.79,0.79,0.79,0.79,0.79,0.79,0.79,0.79,0.79,0.79,0.79,0.79,0.79,0.79,0.79,0.79,0.79,0.79
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Y=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.5,0.5,0.5,0.498,0.498,0.497,0.495,0.494,0.492,0.49,0.488,0.486,0.483,0.48,0.477,0.474,0.47,0.466,0.462,0.458,0.454,0.449,0.444,0.439,0.433,0.427,0.422,0.415,0.409,0.402,0.395,0.388,0.38,0.372,0.364,0.356,0.347,0.338,0.329,0.32,0.31,0.3,0.29,0.278,0.264,0.25,0.235,0.221,0.209,0.199,0.192,0.19,0.19,0.191,0.193,0.195,0.198,0.202,0.206,0.21,0.215,0.22,0.226,0.232,0.239,0.246,0.253,0.26,0.268,0.276,0.284,0.292,0.301,0.309,0.318,0.326,0.335,0.344,0.353,0.361,0.37,0.379,0.387,0.395,0.404,0.412,0.419,0.427,0.434,0.441,0.448,0.455,0.461,0.467,0.472,0.477,0.482,0.486,0.489,0.492,0.495,0.497,0.499,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5
|
||||||
|
|
||||||
|
PARAM_HAIR_SIDE=0
|
||||||
|
|
||||||
|
PARAM_HAIR_BACK=0
|
||||||
46
public/pio/models/pio/motions/Success.mtn
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0,0.95,3.27,6.37,9.5,11.91,13,13.17,13.31,13.44,13.56,13.65,13.73,13.8,13.85,13.9,13.93,13.96,13.974,13.987,13.995,13.999,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,12.97,10.47,7.41,4.43,2.04,0.51,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0,1.78,6.1,11.86,17.66,22.07,24,24.19,24.36,24.54,24.7,24.85,25,25.14,25.28,25.41,25.53,25.65,25.76,25.87,25.96,26.06,26.15,26.23,26.31,26.38,26.45,26.52,26.58,26.63,26.68,26.73,26.77,26.81,26.84,26.87,26.9,26.93,26.946,26.963,26.976,26.987,26.994,26.999,27,25.01,20.19,14.29,8.54,3.93,0.99,0
|
||||||
|
|
||||||
|
PARAM_EMOTION=0
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.5,0.52,0.58,0.66,0.74,0.8,0.83,0.831,0.832,0.834,0.835,0.836,0.837,0.838,0.839,0.839,0.84,0.841,0.84,0.843,0.843,0.84,0.844,0.84,0.845,0.85,0.846,0.85,0.847,0.85,0.85,0.848,0.85,0.85,0.85,0.849,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.85,0.82,0.76,0.69,0.61,0.55,0.51,0.5
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.5,0.52,0.58,0.66,0.74,0.8,0.83,0.832,0.834,0.835,0.837,0.839,0.84,0.842,0.843,0.844,0.845,0.847,0.848,0.849,0.85,0.851,0.852,0.852,0.853,0.85,0.855,0.855,0.86,0.856,0.86,0.857,0.86,0.858,0.86,0.86,0.859,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.86,0.83,0.77,0.69,0.61,0.55,0.51,0.5
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0,-0.08,-0.26,-0.5,-0.74,-0.92,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-0.93,-0.75,-0.53,-0.32,-0.15,-0.04,0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0,-0.04,-0.15,-0.29,-0.43,-0.54,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.579,-0.58,-0.578,-0.58,-0.577,-0.576,-0.58,-0.574,-0.573,-0.572,-0.571,-0.57,-0.569,-0.567,-0.566,-0.564,-0.562,-0.561,-0.559,-0.557,-0.554,-0.552,-0.55,-0.547,-0.545,-0.542,-0.539,-0.537,-0.533,-0.53,-0.527,-0.524,-0.52,-0.48,-0.38,-0.27,-0.16,-0.07,-0.02,0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0,-0.06,-0.21,-0.4,-0.59,-0.74,-0.8,-0.8,-0.8,-0.8,-0.8,-0.799,-0.798,-0.8,-0.796,-0.795,-0.794,-0.793,-0.791,-0.79,-0.788,-0.786,-0.784,-0.781,-0.779,-0.776,-0.774,-0.771,-0.768,-0.764,-0.761,-0.757,-0.753,-0.749,-0.745,-0.74,-0.736,-0.731,-0.726,-0.72,-0.715,-0.709,-0.703,-0.696,-0.69,-0.63,-0.51,-0.36,-0.21,-0.1,-0.02,0
|
||||||
|
|
||||||
|
PARAM_BROW_L_ANGLE=0
|
||||||
|
|
||||||
|
PARAM_BROW_R_ANGLE=0
|
||||||
|
|
||||||
|
PARAM_EAR_DEFORM=0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0.5,0.46,0.37,0.25,0.13,0.04,0,0,0,0,0,0,0,0,0,0,0.001,0,0,0,0.002,0,0,0.003,0,0.004,0,0.005,0.01,0.006,0.007,0.01,0.008,0.009,0.01,0.01,0.012,0.013,0.014,0.014,0.016,0.017,0.018,0.019,0.02,0.06,0.14,0.25,0.35,0.43,0.48,0.5
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Y=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0,-0.014,-0.05,-0.11,-0.19,-0.28,-0.39,-0.5,-0.61,-0.72,-0.82,-0.92,-1,-1.08,-1.15,-1.22,-1.29,-1.35,-1.41,-1.46,-1.51,-1.56,-1.6,-1.65,-1.68,-1.72,-1.75,-1.78,-1.81,-1.84,-1.86,-1.88,-1.901,-1.919,-1.934,-1.948,-1.959,-1.969,-1.978,-1.985,-1.991,-1.995,-1.998,-1.999,-2,-1.85,-1.5,-1.06,-0.63,-0.29,-0.07,0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.498,0.491,0.481,0.469,0.455,0.44,0.425,0.411,0.399,0.389,0.382,0.38,0.381,0.385,0.392,0.401,0.411,0.424,0.438,0.452,0.469,0.485,0.502,0.52,0.538,0.555,0.571,0.588,0.602,0.616,0.629,0.639,0.648,0.655,0.659,0.66,0.658,0.652,0.643,0.632,0.618,0.604,0.588,0.572,0.556,0.542,0.528,0.517,0.508,0.502,0.5
|
||||||
|
|
||||||
|
PARAM_HAIR_SIDE=0,0.07,0.21,0.38,0.57,0.73,0.87,0.97,1,0.75,0.34,-0.04,-0.31,-0.42,-0.23,0.08,0.3,0.37,0.3,0.2,0.1,0.03,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_HAIR_BACK=0,0.07,0.21,0.38,0.57,0.73,0.87,0.97,1,0.91,0.77,0.63,0.54,0.5,0.62,0.82,0.96,1,1,1,1,1,1,1,1,1,0.995,0.981,0.96,0.93,0.89,0.85,0.81,0.76,0.7,0.65,0.59,0.54,0.48,0.42,0.37,0.31,0.26,0.21,0.17,0.13,0.09,0.06,0.03,0.016,0.004,0
|
||||||
46
public/pio/models/pio/motions/Sukebei1.mtn
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0,-0.53,-1.47,-2,-1.93,-1.75,-1.49,-1.19,-0.88,-0.59,-0.35,-0.16,-0.04,0,0,0,0,0,0,0,0,0.18,0.7,1.48,2.49,3.68,5.03,6.47,7.97,9.52,11.08,12.61,14.09,15.51,16.8,17.99,19.01,19.84,20.46,20.86,21,21,21,21,21,21,21,21,21,21,21,21,21,20.28,18.34,15.54,12.22,8.78,5.46,2.66,0.72,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0,4.73,13.27,18,16.35,12.02,5.76,-1.39,-8.81,-15.73,-21.64,-26.15,-29,-30,-28.01,-23.19,-17.29,-11.54,-6.93,-3.99,-3,-3.23,-3.9,-4.9,-6.2,-7.73,-9.47,-11.32,-13.25,-15.24,-17.25,-19.21,-21.12,-22.94,-24.6,-26.13,-27.44,-28.51,-29.31,-29.82,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-28.97,-26.2,-22.2,-17.45,-12.55,-7.8,-3.8,-1.03,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0,0.006,0.023,0.05,0.09,0.13,0.19,0.25,0.33,0.4,0.49,0.58,0.68,0.77,0.88,0.98,1.09,1.2,1.32,1.43,1.54,1.66,1.77,1.88,1.98,2.09,2.19,2.29,2.39,2.47,2.56,2.64,2.71,2.77,2.83,2.88,2.92,2.96,2.98,2.995,3,3,3,3,3,3,3,3,3,3,3,3,3,2.9,2.62,2.22,1.75,1.25,0.78,0.38,0.1,0
|
||||||
|
|
||||||
|
PARAM_EMOTION=0
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.56,0.65,0.73,0.8,0.82,0.82,0.82,0.821,0.82,0.818,0.815,0.81,0.794,0.77,0.73,0.69,0.65,0.61,0.58,0.55,0.52,0.506,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.56,0.65,0.73,0.8,0.82,0.82,0.82,0.821,0.82,0.818,0.815,0.81,0.794,0.77,0.73,0.69,0.65,0.61,0.58,0.55,0.52,0.506,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0,0.003,0.007,0.01,0.01,0.01,0.01,0.01,0.009,0.01,0.008,0.007,0.006,0.005,0.003,0.002,0,-0.002,-0.004,-0.006,-0.009,-0.011,-0.014,-0.017,-0.02,-0.024,-0.028,-0.032,-0.036,-0.04,-0.045,-0.05,-0.059,-0.073,-0.091,-0.111,-0.131,-0.15,-0.165,-0.176,-0.18,-0.18,-0.18,-0.18,-0.18,-0.18,-0.18,-0.18,-0.18,-0.18,-0.18,-0.18,-0.18,-0.174,-0.157,-0.13,-0.1,-0.08,-0.05,-0.02,-0.006,0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0,-0.09,-0.24,-0.33,-0.328,-0.324,-0.317,-0.307,-0.295,-0.281,-0.264,-0.246,-0.226,-0.2,-0.18,-0.16,-0.13,-0.11,-0.08,-0.05,-0.03,0,0.03,0.06,0.08,0.11,0.13,0.16,0.18,0.21,0.23,0.25,0.269,0.282,0.29,0.294,0.295,0.29,0.293,0.291,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.28,0.25,0.21,0.17,0.12,0.08,0.04,0.01,0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0,0,0,0,0,0,0,0,0,-0.12,-0.32,-0.5,-0.63,-0.68,-0.68,-0.677,-0.675,-0.673,-0.671,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.65,-0.59,-0.5,-0.39,-0.28,-0.17,-0.08,-0.02,0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0,0,0,0,0,0,0,0,0,-0.12,-0.32,-0.51,-0.64,-0.69,-0.689,-0.685,-0.681,-0.676,-0.673,-0.671,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.65,-0.59,-0.5,-0.39,-0.28,-0.17,-0.08,-0.02,0
|
||||||
|
|
||||||
|
PARAM_BROW_L_ANGLE=0,-0.16,-0.42,-0.6,-0.66,-0.61,-0.49,-0.3,-0.09,0.14,0.35,0.54,0.66,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.71,0.69,0.62,0.53,0.41,0.3,0.18,0.09,0.02,0
|
||||||
|
|
||||||
|
PARAM_BROW_R_ANGLE=0,-0.16,-0.43,-0.61,-0.67,-0.62,-0.5,-0.31,-0.1,0.13,0.34,0.53,0.65,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.7,0.68,0.61,0.52,0.41,0.29,0.18,0.09,0.02,0
|
||||||
|
|
||||||
|
PARAM_EAR_DEFORM=0,0.08,0.22,0.34,0.43,0.47,0.468,0.46,0.448,0.432,0.41,0.39,0.36,0.32,0.29,0.25,0.2,0.16,0.11,0.06,0,-0.06,-0.11,-0.16,-0.21,-0.26,-0.31,-0.36,-0.41,-0.46,-0.51,-0.56,-0.61,-0.67,-0.72,-0.78,-0.86,-0.92,-0.96,-0.99,-1,-0.997,-0.988,-0.972,-0.95,-0.92,-0.88,-0.84,-0.78,-0.72,-0.65,-0.57,-0.48,-0.39,-0.31,-0.23,-0.16,-0.11,-0.06,-0.03,-0.01,0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0.5,0.61,0.8,0.91,0.91,0.91,0.908,0.905,0.9,0.87,0.83,0.79,0.76,0.75,0.75,0.751,0.753,0.755,0.758,0.761,0.765,0.769,0.773,0.778,0.783,0.788,0.792,0.798,0.802,0.807,0.812,0.817,0.821,0.825,0.829,0.832,0.835,0.837,0.839,0.84,0.84,0.84,0.84,0.838,0.836,0.833,0.828,0.821,0.812,0.801,0.787,0.77,0.75,0.72,0.69,0.66,0.62,0.58,0.55,0.52,0.506,0.5
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Y=0,0.97,2.56,3.65,4,3.79,3.24,2.44,1.49,0.51,-0.44,-1.24,-1.79,-2,-1.85,-1.5,-1.06,-0.63,-0.29,-0.07,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.6,0.77,0.89,0.93,0.915,0.88,0.82,0.75,0.68,0.61,0.55,0.51,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5
|
||||||
|
|
||||||
|
PARAM_HAIR_SIDE=0
|
||||||
|
|
||||||
|
PARAM_HAIR_BACK=0
|
||||||
53
public/pio/models/pio/motions/Sukebei2.mtn
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0,-0.5,-1.63,-3.26,-5.36,-8,-12.01,-14.49,-15.68,-16,-15.24,-13.21,-10.15,-6.31,-2.07,2.44,6.87,11.01,14.67,17.75,20.06,21.51,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,21.58,20.49,18.89,16.93,14.74,12.45,10.13,7.88,5.78,3.88,2.31,1.08,0.28,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0,5.36,13.95,21.96,27.75,30,30,30,30,30,28.92,26.03,21.68,16.23,10.2,3.79,-2.5,-8.38,-13.59,-17.96,-21.25,-23.3,-24,-24,-24,-24,-24,-24,-24,-24,-24,-24,-24,-24,-24,-24,-24,-24,-24,-24,-24,-24,-24,-24,-24,-24,-23.54,-22.35,-20.61,-18.46,-16.07,-13.58,-11.05,-8.6,-6.31,-4.24,-2.52,-1.17,-0.3,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0,1.25,3.25,5.12,6.47,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,6.87,6.52,6.01,5.39,4.69,3.96,3.22,2.51,1.84,1.24,0.74,0.34,0.09,0
|
||||||
|
|
||||||
|
PARAM_EMOTION=-1
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.62,0.73,0.84,0.91,0.94,0.94,0.94,0.94,0.94,0.94,0.85,0.69,0.58,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.62,0.73,0.84,0.91,0.94,0.94,0.94,0.94,0.94,0.94,0.85,0.69,0.58,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN2=-0.94,-0.94,-0.94,-0.94,-0.941,-0.942,-0.94,-0.944,-0.945,-0.946,-0.948,-0.949,-0.951,-0.952,-0.954,-0.956,-0.957,-0.959,-0.961,-0.963,-0.965,-0.967,-0.969,-0.971,-0.973,-0.975,-0.977,-0.979,-0.981,-0.983,-0.984,-0.986,-0.988,-0.989,-0.991,-0.992,-0.994,-0.995,-0.996,-0.997,-1,-0.999,-0.999,-1,-1,-1,-0.999,-0.997,-0.994,-0.991,-0.987,-0.983,-0.978,-0.974,-0.971,-0.967,-0.964,-0.962,-0.961,-0.96
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN2=-0.94,-0.94,-0.94,-0.94,-0.941,-0.942,-0.94,-0.944,-0.945,-0.946,-0.948,-0.949,-0.951,-0.952,-0.954,-0.956,-0.957,-0.959,-0.961,-0.963,-0.965,-0.967,-0.969,-0.971,-0.973,-0.975,-0.977,-0.979,-0.981,-0.983,-0.984,-0.986,-0.988,-0.989,-0.991,-0.992,-0.994,-0.995,-0.996,-0.997,-1,-0.999,-0.999,-1,-1,-1,-0.999,-0.997,-0.993,-0.988,-0.983,-0.978,-0.973,-0.968,-0.963,-0.959,-0.955,-0.952,-0.951,-0.95
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0,-0.011,-0.028,-0.044,-0.055,-0.06,-0.06,-0.06,-0.06,-0.06,-0.063,-0.071,-0.083,-0.098,-0.115,-0.133,-0.15,-0.167,-0.181,-0.193,-0.202,-0.208,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.206,-0.196,-0.18,-0.162,-0.14,-0.12,-0.1,-0.08,-0.055,-0.037,-0.022,-0.01,-0.003,0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0,-0.12,-0.31,-0.49,-0.62,-0.67,-0.67,-0.67,-0.67,-0.67,-0.652,-0.61,-0.53,-0.45,-0.35,-0.24,-0.14,-0.04,0.04,0.11,0.17,0.2,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.206,0.196,0.18,0.162,0.14,0.12,0.1,0.08,0.055,0.037,0.022,0.01,0.003,0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0,0.11,0.27,0.43,0.55,0.59,0.59,0.59,0.59,0.59,0.56,0.49,0.39,0.26,0.11,-0.05,-0.2,-0.34,-0.47,-0.57,-0.65,-0.7,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.72,-0.67,-0.54,-0.38,-0.23,-0.1,-0.03,0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0,0.1,0.27,0.42,0.54,0.58,0.58,0.58,0.58,0.58,0.55,0.49,0.38,0.25,0.11,-0.05,-0.2,-0.34,-0.46,-0.57,-0.64,-0.69,-0.71,-0.71,-0.71,-0.71,-0.71,-0.71,-0.71,-0.71,-0.71,-0.71,-0.71,-0.71,-0.71,-0.71,-0.71,-0.71,-0.71,-0.71,-0.71,-0.71,-0.71,-0.71,-0.71,-0.71,-0.71,-0.71,-0.71,-0.71,-0.71,-0.71,-0.71,-0.66,-0.53,-0.38,-0.22,-0.1,-0.03,0
|
||||||
|
|
||||||
|
PARAM_BROW_ANGLE=0.2,0.15,0.07,0,-0.05,-0.07,-0.07,-0.07,-0.07,-0.07,-0.07,-0.07,-0.07,-0.07,-0.07,-0.07,-0.07,-0.56,-0.62,-0.65,-0.67,-0.678,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,0,0.13,0.19,0.2
|
||||||
|
|
||||||
|
PARAM_BROW_SELECT=-0.5,-0.46,-0.39,-0.33,-0.29,-0.27,-0.27,-0.27,-0.27,-0.27,-0.268,-0.262,-0.252,-0.238,-0.221,-0.202,-0.18,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,-0.43,-0.48,-0.495,-0.5
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN2=0.9,0.74,0.48,0.24,0.07,0,0,0,0,0,-0.007,-0.03,-0.07,-0.12,-0.18,-0.26,-0.34,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0.85,0.88,0.897,0.9
|
||||||
|
|
||||||
|
PARAM_MOUTH_EMO=0,0,0.002,0.005,0.01,0.015,0.022,0.03,0.039,0.049,0.061,0.073,0.087,0.101,0.116,0.133,0.15,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.259,0.26,0.257,0.256,0.254,0.252,0.25,0.19,0.09,0.02,0
|
||||||
|
|
||||||
|
PARAM_CHEEK=0,0,0,0,0,0,0,0,0,0,0.02,0.07,0.15,0.25,0.37,0.49,0.6,0.71,0.81,0.89,0.95,0.99,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.981,0.93,0.86,0.77,0.67,0.57,0.46,0.36,0.26,0.18,0.11,0.05,0.01,0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0,0.34,0.96,1.66,2.35,3,3.67,3.92,3.99,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3.97,3.9,3.78,3.64,3.46,3.25,3.03,2.79,2.54,2.29,2.03,1.77,1.52,1.28,1.05,0.83,0.63,0.45,0.3,0.17,0.08,0.02,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0,1.43,3.72,5.86,7.4,8,8.08,8.02,7.65,7,5.64,4.16,2.58,0.95,-0.65,-2.2,-3.62,-4.89,-5.96,-6.84,-7.48,-7.87,-8,-7.95,-7.8,-7.57,-7.28,-6.91,-6.51,-6.06,-5.59,-5.09,-4.58,-4.06,-3.55,-3.05,-2.55,-2.09,-1.66,-1.26,-0.9,-0.59,-0.34,-0.16,-0.04,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_BODY_Y=0,0.03,0.09,0.14,0.18,0.19,0.182,0.16,0.13,0.08,0.03,-0.02,-0.08,-0.14,-0.19,-0.25,-0.3,-0.35,-0.4,-0.43,-0.46,-0.481,-0.49,-0.493,-0.496,-0.498,-0.5,-0.502,-0.504,-0.505,-0.506,-0.507,-0.51,-0.508,-0.51,-0.509,-0.51,-0.51,-0.51,-0.51,-0.51,-0.51,-0.51,-0.51,-0.51,-0.51,-0.5,-0.47,-0.44,-0.39,-0.34,-0.29,-0.23,-0.18,-0.13,-0.09,-0.05,-0.02,-0.006,0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.59,0.73,0.87,0.96,1,1,1,1,1,0.98,0.93,0.85,0.75,0.63,0.51,0.4,0.29,0.19,0.11,0.05,0.01,0,0.006,0.025,0.05,0.09,0.14,0.19,0.24,0.3,0.36,0.43,0.49,0.56,0.62,0.68,0.74,0.79,0.84,0.89,0.93,0.96,0.98,0.995,1,0.99,0.97,0.93,0.88,0.83,0.78,0.73,0.68,0.63,0.59,0.55,0.52,0.506,0.5
|
||||||
|
|
||||||
|
PARAM_BOING=0,-0.2,-0.57,-0.77,-0.64,-0.31,0.11,0.54,0.87,1,0.9,0.7,0.44,0.18,-0.07,-0.27,-0.4,-0.45,-0.33,-0.15,0.03,0.15,0.2,0.18,0.12,0.04,-0.05,-0.11,-0.13,-0.12,-0.1,-0.07,-0.03,-0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
53
public/pio/models/pio/motions/Sukebei3.mtn
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0,-1.52,-4.1,-6.79,-9.18,-11,-12.79,-14.45,-15.92,-17.28,-18.5,-19.62,-20.62,-21.5,-22.3,-23,-23.62,-24.15,-24.62,-25,-25.32,-25.57,-25.76,-25.9,-25.97,-26,-25.96,-25.85,-25.66,-25.4,-25.09,-24.72,-24.3,-23.84,-23.34,-22.8,-22.23,-21.64,-21.03,-20.4,-19.76,-19.13,-18.49,-17.86,-17.24,-16.62,-16.03,-15.46,-14.92,-14.41,-13.93,-13.49,-13.1,-12.75,-12.45,-12.19,-12,-11.82,-11.65,-11.51,-11.38,-11.27,-11.16,-11.07,-10.99,-10.92,-10.85,-10.79,-10.73,-10.67,-10.62,-10.56,-10.51,-10.45,-10.39,-10.32,-10.25,-10.18,-10.09,-10,-0.26,15.6,26.46,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,29.62,28.55,26.9,24.77,22.31,19.59,16.8,13.95,11.17,8.52,6.14,4.05,2.33,1.07,0.27,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0,-4.31,-11.27,-17.86,-22.77,-25,-25.63,-26.2,-26.71,-27.17,-27.59,-27.96,-28.29,-28.58,-28.84,-29.07,-29.27,-29.44,-29.58,-29.7,-29.8,-29.87,-29.93,-29.97,-29.99,-30,-29.997,-29.989,-29.975,-29.956,-29.93,-29.9,-29.86,-29.82,-29.77,-29.72,-29.66,-29.59,-29.52,-29.44,-29.36,-29.27,-29.18,-29.07,-28.97,-28.85,-28.73,-28.61,-28.47,-28.33,-28.19,-28.03,-27.87,-27.71,-27.54,-27.36,-27.17,-26.98,-26.78,-26.58,-26.37,-26.15,-25.92,-25.69,-25.45,-25.2,-24.95,-24.69,-24.42,-24.15,-23.86,-23.58,-23.28,-22.98,-22.67,-22.35,-22.02,-21.69,-21.35,-21,-18.9,-15.84,-13.75,-13,-12.85,-12.71,-12.6,-12.49,-12.39,-12.29,-12.2,-12.11,-12.01,-11.9,-11.79,-11.66,-11.52,-11.36,-11.19,-11,-10.65,-10.11,-9.41,-8.57,-7.65,-6.67,-5.68,-4.69,-3.74,-2.84,-2.04,-1.34,-0.77,-0.35,-0.09,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0,-0.02,-0.09,-0.18,-0.3,-0.44,-0.6,-0.79,-1,-1.26,-1.5,-1.72,-1.92,-2.11,-2.27,-2.42,-2.55,-2.66,-2.75,-2.83,-2.89,-2.94,-2.97,-2.994,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-0.82,2.75,5.2,6,5.981,5.92,5.83,5.71,5.57,5.4,5.2,4.99,4.76,4.52,4.26,4,3.73,3.46,3.18,2.89,2.62,2.35,2.08,1.82,1.56,1.32,1.1,0.89,0.7,0.52,0.37,0.24,0.14,0.06,0.02,0
|
||||||
|
|
||||||
|
PARAM_EMOTION=-1
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.55,0.48,0.38,0.28,0.21,0.18,0.18,0.18,0.18,0.181,0.183,0.186,0.19,0.21,0.26,0.31,0.36,0.41,0.44,0.46,0.472,0.483,0.493,0.502,0.51,0.517,0.523,0.529,0.533,0.537,0.541,0.544,0.546,0.547,0.549,0.549,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.66,0.84,0.96,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.994,0.978,0.95,0.92,0.88,0.84,0.8,0.76,0.72,0.68,0.64,0.61,0.58,0.566,0.554,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.55,0.48,0.38,0.28,0.21,0.18,0.18,0.18,0.18,0.181,0.183,0.186,0.19,0.21,0.26,0.31,0.36,0.41,0.44,0.46,0.472,0.483,0.493,0.502,0.51,0.517,0.523,0.529,0.533,0.537,0.541,0.544,0.546,0.547,0.549,0.549,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.66,0.84,0.96,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.994,0.978,0.95,0.92,0.88,0.84,0.8,0.76,0.72,0.68,0.64,0.61,0.58,0.566,0.554,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN2=-1
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN2=-1
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0,0,-0.002,-0.004,-0.007,-0.011,-0.016,-0.02,-0.026,-0.031,-0.037,-0.043,-0.049,-0.055,-0.061,-0.067,-0.073,-0.078,-0.082,-0.087,-0.091,-0.094,-0.096,-0.098,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.1,-0.098,-0.091,-0.08,-0.067,-0.051,-0.033,-0.014,0.004,0.023,0.041,0.057,0.07,0.081,0.088,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.09,0.089,0.086,0.081,0.074,0.067,0.059,0.05,0.042,0.034,0.026,0.018,0.012,0.007,0.003,0.001,0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0,-0.002,-0.007,-0.016,-0.028,-0.042,-0.059,-0.078,-0.098,-0.12,-0.14,-0.16,-0.19,-0.21,-0.23,-0.25,-0.28,-0.295,-0.313,-0.33,-0.344,-0.357,-0.367,-0.374,-0.378,-0.38,-0.38,-0.38,-0.38,-0.38,-0.38,-0.38,-0.38,-0.38,-0.38,-0.38,-0.38,-0.38,-0.38,-0.38,-0.38,-0.38,-0.38,-0.38,-0.38,-0.38,-0.374,-0.358,-0.33,-0.3,-0.26,-0.22,-0.17,-0.13,-0.08,-0.04,0,0.03,0.06,0.074,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.08,0.079,0.076,0.072,0.066,0.06,0.052,0.045,0.037,0.03,0.023,0.016,0.011,0.006,0.003,0.001,0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0,-0.15,-0.39,-0.61,-0.78,-0.84,-0.84,-0.84,-0.84,-0.84,-0.84,-0.84,-0.829,-0.8,-0.76,-0.72,-0.68,-0.63,-0.59,-0.55,-0.53,-0.507,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.49,-0.46,-0.42,-0.37,-0.31,-0.25,-0.19,-0.13,-0.08,-0.04,-0.01,0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0,-0.15,-0.4,-0.62,-0.79,-0.85,-0.85,-0.85,-0.85,-0.85,-0.85,-0.85,-0.839,-0.81,-0.77,-0.73,-0.68,-0.64,-0.59,-0.56,-0.53,-0.507,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.5,-0.49,-0.46,-0.42,-0.37,-0.31,-0.25,-0.19,-0.13,-0.08,-0.04,-0.01,0
|
||||||
|
|
||||||
|
PARAM_BROW_ANGLE=0.2,0.05,-0.18,-0.4,-0.56,-0.62,-0.62,-0.62,-0.62,-0.62,-0.62,-0.62,-0.609,-0.58,-0.54,-0.5,-0.45,-0.41,-0.36,-0.33,-0.3,-0.277,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.27,-0.35,-0.49,-0.59,-0.62,-0.62,-0.62,-0.62,-0.62,-0.62,-0.62,-0.62,-0.62,-0.62,-0.62,-0.62,-0.62,-0.62,-0.62,-0.62,-0.62,-0.62,-0.62,-0.62,-0.62,0.32,0.316,0.306,0.293,0.278,0.262,0.246,0.232,0.219,0.209,0.202,0.2
|
||||||
|
|
||||||
|
PARAM_BROW_SELECT=-0.5,-0.34,-0.09,0.14,0.31,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.36,0.3,0.21,0.1,-0.56,-0.558,-0.553,-0.547,-0.539,-0.531,-0.523,-0.516,-0.51,-0.504,-0.501,-0.5
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN2=0.9,0.79,0.62,0.46,0.35,0.3,0.301,0.305,0.311,0.32,0.332,0.345,0.361,0.379,0.399,0.42,0.45,0.48,0.487,0.49,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-0.98,-0.91,-0.8,-0.67,-0.51,-0.34,-0.16,0.02,0.19,0.36,0.51,0.64,0.75,0.83,0.88,0.9
|
||||||
|
|
||||||
|
PARAM_MOUTH_EMO=0,0,0.002,0.005,0.008,0.013,0.019,0.025,0.033,0.042,0.052,0.062,0.074,0.087,0.1,0.114,0.13,0.146,0.162,0.18,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.247,0.238,0.224,0.206,0.19,0.16,0.14,0.12,0.09,0.07,0.051,0.034,0.019,0.009,0.002,0
|
||||||
|
|
||||||
|
PARAM_CHEEK=0,0,0,0,0.006,0.03,0.08,0.14,0.21,0.29,0.37,0.45,0.54,0.62,0.7,0.77,0.84,0.89,0.94,0.97,0.99,1,1,0.999,0.998,0.996,0.994,0.992,0.99,0.987,0.985,0.983,0.98,0.978,0.976,0.974,0.972,0.971,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.97,0.958,0.92,0.87,0.8,0.72,0.63,0.54,0.45,0.36,0.28,0.2,0.13,0.08,0.03,0.01,0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0,0.36,0.93,1.46,1.85,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1.999,1.996,1.99,1.982,1.973,1.961,1.946,1.929,1.91,1.89,1.87,1.84,1.81,1.78,1.75,1.71,1.67,1.63,1.59,1.55,1.5,1.45,1.4,1.34,1.28,1.22,1.16,1.09,1.03,0.96,0.88,0.81,0.73,0.65,0.56,0.48,0.39,0.29,0.2,0.1,0,-0.1,-0.21,-0.32,-0.43,-0.55,-0.66,-0.78,-0.91,-1.03,-1.16,-1.29,-1.43,-1.57,-1.71,-1.85,-2,-2.81,-3.98,-4.75,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-5,-4.97,-4.87,-4.72,-4.53,-4.28,-4.01,-3.71,-3.38,-3.03,-2.68,-2.32,-1.97,-1.62,-1.29,-0.99,-0.72,-0.47,-0.28,-0.13,-0.03,0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0,0.89,2.32,3.66,4.62,5,4.94,4.77,4.51,4.19,3.82,3.42,2.99,2.56,2.12,1.71,1.31,0.95,0.63,0.37,0.17,0.04,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_BODY_Y=0,0,-0.003,-0.006,-0.011,-0.017,-0.024,-0.032,-0.04,-0.05,-0.06,-0.071,-0.082,-0.094,-0.106,-0.118,-0.131,-0.144,-0.157,-0.17,-0.183,-0.196,-0.208,-0.22,-0.232,-0.244,-0.255,-0.266,-0.276,-0.285,-0.294,-0.302,-0.309,-0.315,-0.32,-0.324,-0.327,-0.329,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.33,-0.2,0.01,0.15,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.199,0.195,0.189,0.181,0.171,0.16,0.148,0.135,0.121,0.107,0.093,0.079,0.065,0.052,0.04,0.029,0.019,0.011,0.005,0.001,0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.59,0.73,0.87,0.96,1,0.998,0.991,0.981,0.968,0.951,0.932,0.91,0.89,0.86,0.83,0.8,0.77,0.74,0.71,0.68,0.65,0.62,0.59,0.56,0.53,0.5,0.47,0.44,0.42,0.4,0.379,0.362,0.347,0.336,0.327,0.322,0.32,0.32,0.32,0.32,0.321,0.322,0.323,0.324,0.326,0.327,0.329,0.331,0.333,0.335,0.338,0.34,0.343,0.346,0.35,0.353,0.357,0.361,0.365,0.37,0.374,0.379,0.384,0.39,0.395,0.401,0.407,0.414,0.42,0.427,0.434,0.441,0.449,0.457,0.465,0.473,0.482,0.491,0.5,0.57,0.68,0.76,0.78,0.779,0.776,0.772,0.767,0.76,0.752,0.743,0.733,0.722,0.711,0.699,0.687,0.674,0.661,0.648,0.635,0.622,0.609,0.597,0.585,0.573,0.562,0.551,0.541,0.533,0.524,0.517,0.511,0.507,0.503,0.501,0.5
|
||||||
|
|
||||||
|
PARAM_BOING=0,0.17,0.43,0.68,0.86,0.93,0.82,0.54,0.18,-0.18,-0.46,-0.57,-0.51,-0.37,-0.2,-0.04,0.1,0.18,0.21,0.203,0.184,0.16,0.12,0.09,0.06,0.03,0.008,0,0,0,-0.001,0,-0.002,0,0,-0.003,0,0,-0.004,0,0,-0.005,-0.01,-0.01,-0.006,-0.01,-0.01,-0.01,-0.007,-0.01,-0.01,-0.01,-0.01,-0.01,-0.008,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.009,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,-0.01,0.1,0.27,0.43,0.54,0.59,0.52,0.36,0.14,-0.09,-0.25,-0.32,-0.309,-0.28,-0.24,-0.19,-0.13,-0.08,-0.04,-0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
53
public/pio/models/pio/motions/Touch Dere1.mtn
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0,0.38,1.4,2.97,4.94,7.13,9.5,11.87,14.06,16.03,17.6,18.62,19,18.94,18.76,18.46,18.06,17.55,16.96,16.27,15.51,14.67,13.77,12.79,11.78,10.7,9.59,8.43,7.27,6.05,4.85,3.61,2.39,1.15,-0.05,-1.27,-2.43,-3.59,-4.7,-5.78,-6.79,-7.77,-8.67,-9.51,-10.27,-10.96,-11.55,-12.06,-12.46,-12.76,-12.94,-13,-12.84,-12.4,-11.73,-10.9,-9.94,-8.89,-7.77,-6.65,-5.51,-4.44,-3.42,-2.48,-1.65,-0.97,-0.45,-0.12,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0,-0.56,-2.06,-4.38,-7.28,-10.51,-14,-17.49,-20.72,-23.63,-25.94,-27.44,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-28,-27.65,-26.71,-25.26,-23.47,-21.4,-19.14,-16.73,-14.33,-11.87,-9.56,-7.36,-5.33,-3.55,-2.08,-0.96,-0.25,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0,0.08,0.29,0.62,1.05,1.54,2.08,2.64,3.21,3.77,4.3,4.77,5.19,5.53,5.79,5.95,6,5.96,5.86,5.7,5.48,5.22,4.9,4.54,4.14,3.72,3.26,2.78,2.27,1.75,1.21,0.67,0.13,-0.43,-0.99,-1.53,-2.07,-2.6,-3.12,-3.61,-4.09,-4.54,-4.96,-5.35,-5.71,-6.03,-6.31,-6.55,-6.74,-6.88,-6.97,-7,-6.91,-6.68,-6.32,-5.87,-5.35,-4.79,-4.18,-3.58,-2.97,-2.39,-1.84,-1.33,-0.89,-0.52,-0.24,-0.06,0
|
||||||
|
|
||||||
|
PARAM_EMOTION=-1
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN2=-1
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN2=-1
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0,-0.001,-0.005,-0.011,-0.018,-0.026,-0.035,-0.044,-0.052,-0.059,-0.065,-0.069,-0.07,-0.07,-0.069,-0.067,-0.065,-0.063,-0.06,-0.056,-0.053,-0.048,-0.044,-0.039,-0.034,-0.028,-0.023,-0.017,-0.011,-0.005,0.001,0.007,0.013,0.019,0.025,0.031,0.037,0.043,0.048,0.054,0.059,0.064,0.068,0.073,0.076,0.08,0.083,0.085,0.087,0.089,0.09,0.09,0.089,0.086,0.081,0.075,0.069,0.062,0.054,0.046,0.038,0.031,0.024,0.017,0.011,0.007,0.003,0.001,0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0,0.006,0.021,0.04,0.07,0.11,0.14,0.18,0.21,0.24,0.27,0.282,0.29,0.293,0.295,0.297,0.3,0.302,0.304,0.306,0.308,0.31,0.311,0.313,0.314,0.316,0.317,0.318,0.319,0.321,0.322,0.322,0.323,0.324,0.32,0.326,0.326,0.33,0.327,0.33,0.328,0.33,0.33,0.329,0.33,0.33,0.33,0.33,0.33,0.33,0.33,0.33,0.326,0.315,0.298,0.28,0.25,0.23,0.2,0.17,0.14,0.11,0.09,0.06,0.04,0.025,0.011,0.003,0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0,0,0,0,0,0,0.01,0.03,0.06,0.09,0.12,0.14,0.154,0.16,0.158,0.152,0.144,0.132,0.117,0.101,0.083,0.063,0.04,0.02,0,-0.02,-0.04,-0.061,-0.08,-0.098,-0.113,-0.127,-0.139,-0.149,-0.156,-0.16,-0.163,-0.165,-0.167,-0.168,-0.169,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.168,-0.164,-0.157,-0.148,-0.138,-0.126,-0.113,-0.099,-0.085,-0.071,-0.057,-0.044,-0.032,-0.022,-0.013,-0.006,-0.002,0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0,0,0,0,0,0,0.01,0.03,0.06,0.09,0.12,0.14,0.154,0.16,0.158,0.152,0.144,0.132,0.117,0.101,0.083,0.063,0.04,0.02,0,-0.02,-0.04,-0.061,-0.08,-0.098,-0.113,-0.127,-0.139,-0.149,-0.156,-0.16,-0.163,-0.165,-0.167,-0.168,-0.169,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.17,-0.168,-0.164,-0.157,-0.148,-0.138,-0.126,-0.113,-0.099,-0.085,-0.071,-0.057,-0.044,-0.032,-0.022,-0.013,-0.006,-0.002,0
|
||||||
|
|
||||||
|
PARAM_BROW_ANGLE=0.2,0.205,0.218,0.24,0.27,0.29,0.33,0.36,0.38,0.41,0.43,0.445,0.45,0.45,0.449,0.448,0.446,0.444,0.442,0.439,0.435,0.432,0.428,0.424,0.419,0.414,0.409,0.404,0.399,0.393,0.387,0.381,0.375,0.368,0.362,0.356,0.349,0.343,0.336,0.329,0.322,0.316,0.309,0.303,0.296,0.29,0.283,0.277,0.271,0.265,0.259,0.254,0.248,0.243,0.238,0.233,0.229,0.224,0.22,0.217,0.213,0.21,0.208,0.205,0.204,0.202,0.201,0.2,0.2
|
||||||
|
|
||||||
|
PARAM_BROW_SELECT=-0.5
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN2=0.9,0.89,0.86,0.81,0.75,0.68,0.59,0.49,0.39,0.28,0.17,0.06,-0.05,-0.16,-0.26,-0.36,-0.45,-0.52,-0.58,-0.63,-0.66,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.67,-0.666,-0.653,-0.634,-0.61,-0.57,-0.53,-0.49,-0.44,-0.38,-0.33,-0.27,-0.2,-0.14,-0.07,0,0.07,0.14,0.21,0.28,0.35,0.41,0.48,0.53,0.59,0.65,0.7,0.74,0.78,0.82,0.85,0.87,0.886,0.896,0.9
|
||||||
|
|
||||||
|
PARAM_MOUTH_EMO=0
|
||||||
|
|
||||||
|
PARAM_CHEEK=0,0.003,0.01,0.022,0.038,0.059,0.08,0.11,0.14,0.17,0.2,0.24,0.28,0.32,0.36,0.4,0.43,0.47,0.51,0.55,0.59,0.62,0.65,0.68,0.71,0.73,0.752,0.768,0.78,0.787,0.79,0.79,0.79,0.79,0.79,0.79,0.79,0.788,0.787,0.784,0.782,0.778,0.774,0.768,0.762,0.754,0.746,0.735,0.724,0.711,0.696,0.68,0.65,0.62,0.58,0.53,0.48,0.42,0.37,0.31,0.26,0.2,0.16,0.11,0.07,0.04,0.02,0.005,0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0,-0.019,-0.07,-0.14,-0.23,-0.33,-0.43,-0.54,-0.64,-0.74,-0.82,-0.89,-0.95,-0.99,-1,-0.992,-0.97,-0.93,-0.88,-0.83,-0.76,-0.68,-0.6,-0.51,-0.41,-0.32,-0.22,-0.12,-0.01,0.09,0.19,0.29,0.39,0.48,0.57,0.65,0.72,0.79,0.85,0.9,0.94,0.97,0.994,1,0.995,0.98,0.96,0.93,0.89,0.84,0.8,0.74,0.69,0.63,0.57,0.51,0.45,0.39,0.33,0.27,0.22,0.18,0.13,0.09,0.06,0.04,0.016,0.004,0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0,0.04,0.14,0.28,0.46,0.66,0.87,1.08,1.28,1.47,1.65,1.79,1.9,1.97,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1.99,1.96,1.91,1.85,1.78,1.69,1.59,1.48,1.37,1.26,1.14,1.01,0.89,0.78,0.66,0.55,0.45,0.35,0.26,0.19,0.12,0.07,0.03,0.01,0
|
||||||
|
|
||||||
|
PARAM_BODY_Y=0,0.004,0.014,0.029,0.049,0.07,0.1,0.12,0.15,0.18,0.2,0.22,0.242,0.258,0.27,0.277,0.28,0.277,0.268,0.255,0.236,0.21,0.19,0.16,0.13,0.1,0.07,0.03,0,-0.04,-0.07,-0.11,-0.14,-0.17,-0.2,-0.23,-0.25,-0.27,-0.294,-0.309,-0.32,-0.328,-0.33,-0.328,-0.324,-0.316,-0.306,-0.295,-0.281,-0.266,-0.249,-0.232,-0.214,-0.196,-0.177,-0.158,-0.139,-0.121,-0.103,-0.086,-0.07,-0.055,-0.042,-0.03,-0.02,-0.011,-0.005,-0.001,0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.501,0.505,0.511,0.519,0.529,0.541,0.554,0.568,0.584,0.601,0.619,0.637,0.656,0.676,0.695,0.714,0.734,0.753,0.771,0.789,0.806,0.822,0.836,0.849,0.861,0.871,0.879,0.885,0.889,0.89,0.885,0.871,0.85,0.82,0.79,0.75,0.71,0.67,0.63,0.58,0.54,0.5,0.46,0.43,0.39,0.37,0.34,0.325,0.314,0.31,0.312,0.317,0.324,0.334,0.346,0.359,0.374,0.389,0.405,0.421,0.436,0.451,0.464,0.476,0.486,0.493,0.498,0.5
|
||||||
|
|
||||||
|
PARAM_BOING=0
|
||||||
|
|
||||||
53
public/pio/models/pio/motions/Touch Dere2.mtn
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0,-0.12,-0.47,-1.02,-1.72,-2.58,-3.54,-4.6,-5.73,-6.91,-8.11,-9.35,-10.57,-11.76,-12.94,-14.03,-15.06,-16.01,-16.86,-17.59,-18.18,-18.63,-18.9,-19,-18.98,-18.9,-18.78,-18.62,-18.42,-18.19,-17.92,-17.62,-17.29,-16.94,-16.56,-16.17,-15.75,-15.33,-14.89,-14.43,-13.97,-13.51,-13.03,-12.56,-12.09,-11.62,-11.16,-10.69,-10.25,-9.81,-9.38,-8.97,-8.58,-8.21,-7.86,-7.54,-7.23,-6.97,-6.72,-6.51,-6.33,-6.19,-6.09,-6.02,-6,-6,-6,-6,-6,-6,-5.81,-5.32,-4.67,-3.9,-3.11,-2.32,-1.58,-0.95,-0.45,-0.12,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0,-0.19,-0.74,-1.61,-2.72,-4.08,-5.59,-7.26,-9.04,-10.92,-12.81,-14.76,-16.69,-18.57,-20.43,-22.16,-23.78,-25.28,-26.62,-27.77,-28.71,-29.41,-29.85,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-29.04,-26.62,-23.34,-19.51,-15.53,-11.6,-7.88,-4.75,-2.23,-0.6,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0,-0.013,-0.05,-0.11,-0.18,-0.27,-0.37,-0.48,-0.6,-0.73,-0.85,-0.98,-1.11,-1.24,-1.36,-1.48,-1.59,-1.69,-1.77,-1.85,-1.91,-1.96,-1.99,-2,-1.996,-1.985,-1.967,-1.94,-1.91,-1.87,-1.83,-1.79,-1.74,-1.68,-1.62,-1.56,-1.5,-1.43,-1.37,-1.3,-1.23,-1.15,-1.08,-1.01,-0.94,-0.86,-0.79,-0.72,-0.65,-0.59,-0.52,-0.46,-0.4,-0.34,-0.29,-0.24,-0.19,-0.15,-0.11,-0.08,-0.05,-0.03,-0.013,-0.003,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_EMOTION=-1
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.551,0.55,0.55,0.55,0.55,0.55,0.552,0.55,0.55,0.55,0.553,0.55,0.55,0.55,0.554,0.55,0.55,0.555,0.56,0.56,0.556,0.56,0.56,0.557,0.56,0.56,0.558,0.56,0.559,0.56,0.56,0.56,0.56,0.561,0.56,0.562,0.56,0.563,0.564,0.56,0.565,0.57,0.566,0.57,0.567,0.568,0.57,0.569,0.57,0.63,0.73,0.82,0.88,0.91,0.898,0.87,0.83,0.78,0.74,0.69,0.64,0.61,0.58,0.557,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.551,0.55,0.55,0.55,0.55,0.55,0.552,0.55,0.55,0.55,0.553,0.55,0.55,0.55,0.554,0.55,0.55,0.555,0.56,0.56,0.556,0.56,0.56,0.557,0.56,0.56,0.558,0.56,0.559,0.56,0.56,0.56,0.56,0.561,0.56,0.562,0.56,0.563,0.564,0.56,0.565,0.57,0.566,0.57,0.567,0.568,0.57,0.569,0.57,0.63,0.73,0.82,0.88,0.91,0.898,0.87,0.83,0.78,0.74,0.69,0.64,0.61,0.58,0.557,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN2=-1
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN2=-1
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0,0.001,0.005,0.011,0.019,0.029,0.039,0.051,0.063,0.076,0.09,0.103,0.117,0.13,0.143,0.155,0.166,0.177,0.186,0.194,0.201,0.206,0.209,0.21,0.21,0.208,0.206,0.204,0.201,0.197,0.193,0.188,0.182,0.177,0.171,0.164,0.158,0.151,0.144,0.136,0.129,0.121,0.114,0.106,0.098,0.091,0.083,0.076,0.069,0.062,0.055,0.048,0.042,0.036,0.03,0.025,0.02,0.016,0.012,0.008,0.005,0.003,0.001,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0,0.003,0.013,0.028,0.047,0.07,0.1,0.13,0.16,0.19,0.22,0.26,0.29,0.32,0.36,0.39,0.42,0.45,0.47,0.49,0.51,0.525,0.535,0.54,0.543,0.546,0.549,0.551,0.554,0.556,0.558,0.56,0.562,0.564,0.565,0.567,0.568,0.569,0.571,0.572,0.573,0.574,0.574,0.575,0.58,0.576,0.577,0.58,0.58,0.578,0.58,0.58,0.579,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.58,0.561,0.51,0.45,0.38,0.3,0.22,0.15,0.09,0.04,0.01,0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0,0,-0.002,-0.005,-0.009,-0.014,-0.019,-0.024,-0.03,-0.036,-0.043,-0.049,-0.056,-0.062,-0.068,-0.074,-0.079,-0.084,-0.089,-0.093,-0.096,-0.098,-0.099,-0.1,-0.1,-0.1,-0.099,-0.098,-0.097,-0.095,-0.094,-0.092,-0.09,-0.087,-0.085,-0.083,-0.08,-0.077,-0.074,-0.071,-0.068,-0.065,-0.062,-0.059,-0.055,-0.052,-0.049,-0.046,-0.042,-0.039,-0.036,-0.033,-0.03,-0.027,-0.024,-0.021,-0.019,-0.016,-0.014,-0.011,-0.009,-0.008,-0.006,-0.004,-0.003,-0.002,0,-0.001,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0,0,-0.002,-0.005,-0.009,-0.014,-0.019,-0.024,-0.03,-0.036,-0.043,-0.049,-0.056,-0.062,-0.068,-0.074,-0.079,-0.084,-0.089,-0.093,-0.096,-0.098,-0.099,-0.1,-0.1,-0.1,-0.099,-0.098,-0.097,-0.095,-0.094,-0.092,-0.09,-0.087,-0.085,-0.083,-0.08,-0.077,-0.074,-0.071,-0.068,-0.065,-0.062,-0.059,-0.055,-0.052,-0.049,-0.046,-0.042,-0.039,-0.036,-0.033,-0.03,-0.027,-0.024,-0.021,-0.019,-0.016,-0.014,-0.011,-0.009,-0.008,-0.006,-0.004,-0.003,-0.002,0,-0.001,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_BROW_ANGLE=0.2,-0.3,-0.298,-0.294,-0.287,-0.278,-0.267,-0.255,-0.241,-0.226,-0.211,-0.195,-0.179,-0.164,-0.148,-0.134,-0.12,-0.108,-0.097,-0.088,-0.08,-0.075,-0.071,-0.07,-0.07,-0.07,-0.07,-0.07,-0.071,-0.07,-0.07,-0.073,-0.073,-0.07,-0.074,-0.075,-0.076,-0.08,-0.078,-0.079,-0.08,-0.08,-0.081,-0.082,-0.083,-0.084,-0.085,-0.086,-0.087,-0.088,-0.089,-0.09,-0.091,-0.09,-0.093,-0.094,-0.094,-0.095,-0.1,-0.097,-0.097,-0.1,-0.098,-0.1,-0.099,-0.1,-0.1,-0.1,-0.1,-0.1,0.4,0.393,0.375,0.35,0.32,0.29,0.26,0.23,0.216,0.204,0.2
|
||||||
|
|
||||||
|
PARAM_BROW_SELECT=-0.5,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,-0.14,-0.22,-0.29,-0.35,-0.39,-0.43,-0.46,-0.478,-0.491,-0.498,-0.5
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN2=0.9,0.86,0.75,0.63,0.5,0.4,0.34,0.32,0.34,0.39,0.46,0.53,0.58,0.6,0.592,0.57,0.54,0.51,0.47,0.44,0.41,0.39,0.375,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.37,0.85,0.861,0.871,0.879,0.885,0.891,0.894,0.897,0.899,0.9,0.9
|
||||||
|
|
||||||
|
PARAM_MOUTH_EMO=0.01,0.01,0.014,0.019,0.026,0.035,0.046,0.059,0.073,0.09,0.108,0.127,0.148,0.17,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.25,0.04,0.033,0.027,0.023,0.019,0.016,0.013,0.012,0.011,0.01,0.01
|
||||||
|
|
||||||
|
PARAM_CHEEK=0,0.006,0.025,0.05,0.09,0.14,0.19,0.24,0.3,0.36,0.43,0.49,0.56,0.62,0.68,0.74,0.79,0.84,0.89,0.93,0.96,0.98,0.995,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.97,0.89,0.78,0.65,0.52,0.39,0.26,0.16,0.07,0.02,0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0
|
||||||
|
|
||||||
|
PARAM_BODY_Y=0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.497,0.488,0.475,0.457,0.44,0.41,0.39,0.36,0.33,0.3,0.27,0.24,0.21,0.18,0.15,0.13,0.1,0.083,0.065,0.05,0.039,0.032,0.03,0.034,0.045,0.063,0.09,0.12,0.15,0.19,0.23,0.27,0.32,0.37,0.42,0.46,0.51,0.56,0.6,0.64,0.68,0.71,0.74,0.77,0.785,0.796,0.8,0.796,0.786,0.771,0.751,0.73,0.71,0.68,0.65,0.63,0.6,0.58,0.56,0.538,0.522,0.51,0.503,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5
|
||||||
|
|
||||||
|
PARAM_BOING=0,-0.002,-0.01,-0.021,-0.035,-0.053,-0.073,-0.09,-0.12,-0.14,-0.17,-0.19,-0.22,-0.24,-0.27,-0.29,-0.31,-0.329,-0.346,-0.361,-0.373,-0.382,-0.388,-0.39,-0.386,-0.375,-0.358,-0.33,-0.31,-0.27,-0.24,-0.2,-0.15,-0.11,-0.06,-0.02,0.03,0.08,0.12,0.17,0.21,0.24,0.28,0.3,0.33,0.345,0.356,0.36,0.355,0.343,0.325,0.3,0.28,0.25,0.22,0.18,0.15,0.12,0.09,0.07,0.05,0.027,0.012,0.003,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
46
public/pio/models/pio/motions/Touch Dere3.mtn
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0,0.18,0.68,1.45,2.44,3.59,4.86,6.16,7.49,8.79,10.03,11.13,12.11,12.91,13.5,13.87,14,14,13.998,13.996,13.994,13.99,13.985,13.978,13.971,13.962,13.952,13.941,13.928,13.913,13.897,13.879,13.859,13.84,13.81,13.79,13.76,13.73,13.7,13.66,13.63,13.59,13.55,13.51,13.46,13.41,13.36,13.3,13.25,13.19,13.12,13.06,12.99,12.92,12.84,12.76,12.68,12.59,12.5,12.41,12.31,12.21,12.11,12,11.74,11.26,10.59,9.79,8.89,7.92,6.91,5.9,4.88,3.92,3.01,2.18,1.45,0.85,0.39,0.1,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0,0.14,0.53,1.14,1.92,2.82,3.82,4.84,5.89,6.9,7.88,8.75,9.52,10.15,10.61,10.9,11,10.983,10.93,10.85,10.74,10.59,10.43,10.23,10.02,9.78,9.52,9.25,8.95,8.64,8.32,7.99,7.65,7.29,6.93,6.56,6.19,5.81,5.43,5.04,4.67,4.29,3.92,3.54,3.17,2.81,2.46,2.12,1.79,1.47,1.17,0.88,0.61,0.35,0.11,-0.11,-0.31,-0.48,-0.64,-0.76,-0.87,-0.94,-0.98,-1,-0.987,-0.95,-0.9,-0.84,-0.76,-0.68,-0.6,-0.51,-0.42,-0.34,-0.26,-0.19,-0.13,-0.07,-0.03,-0.01,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0,0.25,0.95,2.04,3.44,5.08,6.89,8.77,10.7,12.59,14.43,16.1,17.61,18.89,19.89,20.61,21,21.25,21.47,21.68,21.87,22.03,22.18,22.32,22.43,22.54,22.63,22.71,22.77,22.83,22.87,22.91,22.94,22.96,22.977,22.988,22.995,22.999,23,23,23,22.8,22.23,21.33,20.19,18.79,17.22,15.5,13.66,11.72,9.76,7.75,5.76,3.81,1.89,0.1,-1.58,-3.12,-4.5,-5.7,-6.67,-7.39,-7.84,-8,-7.9,-7.63,-7.22,-6.71,-6.11,-5.47,-4.78,-4.09,-3.39,-2.73,-2.1,-1.52,-1.01,-0.59,-0.28,-0.07,0
|
||||||
|
|
||||||
|
PARAM_EMOTION=0
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.5,0.511,0.54,0.59,0.64,0.69,0.74,0.79,0.82,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.829,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.828,0.83,0.83,0.83,0.83,0.83,0.827,0.83,0.83,0.83,0.83,0.826,0.83,0.83,0.83,0.825,0.82,0.82,0.82,0.824,0.82,0.82,0.823,0.82,0.82,0.822,0.82,0.82,0.821,0.82,0.82,0.809,0.78,0.75,0.71,0.67,0.62,0.58,0.55,0.52,0.506,0.5
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.5,0.511,0.54,0.59,0.64,0.69,0.74,0.79,0.82,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.829,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.828,0.83,0.83,0.83,0.83,0.83,0.827,0.83,0.83,0.83,0.83,0.826,0.83,0.83,0.83,0.825,0.82,0.82,0.82,0.824,0.82,0.82,0.823,0.82,0.82,0.822,0.82,0.82,0.821,0.82,0.82,0.809,0.78,0.75,0.71,0.67,0.62,0.58,0.55,0.52,0.506,0.5
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0,-0.02,-0.07,-0.15,-0.24,-0.34,-0.43,-0.51,-0.56,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.561,-0.51,-0.45,-0.38,-0.3,-0.22,-0.15,-0.09,-0.04,-0.01,0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_L_ANGLE=0
|
||||||
|
|
||||||
|
PARAM_BROW_R_ANGLE=0
|
||||||
|
|
||||||
|
PARAM_EAR_DEFORM=0,-0.01,-0.04,-0.08,-0.13,-0.18,-0.24,-0.3,-0.35,-0.41,-0.45,-0.49,-0.52,-0.543,-0.55,-0.55,-0.55,-0.55,-0.55,-0.55,-0.55,-0.55,-0.549,-0.55,-0.55,-0.548,-0.55,-0.546,-0.546,-0.55,-0.544,-0.543,-0.542,-0.541,-0.54,-0.539,-0.538,-0.536,-0.535,-0.533,-0.532,-0.53,-0.528,-0.526,-0.524,-0.521,-0.519,-0.517,-0.514,-0.511,-0.509,-0.506,-0.503,-0.499,-0.496,-0.493,-0.489,-0.485,-0.481,-0.477,-0.473,-0.469,-0.465,-0.46,-0.449,-0.431,-0.4,-0.37,-0.34,-0.3,-0.26,-0.22,-0.19,-0.15,-0.11,-0.08,-0.06,-0.03,-0.015,-0.004,0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0.5,0.488,0.45,0.41,0.35,0.29,0.23,0.19,0.15,0.14,0.141,0.143,0.147,0.152,0.158,0.166,0.175,0.184,0.194,0.205,0.217,0.23,0.242,0.256,0.269,0.283,0.297,0.311,0.325,0.339,0.353,0.367,0.38,0.393,0.406,0.418,0.43,0.441,0.451,0.461,0.469,0.477,0.484,0.489,0.494,0.497,0.499,0.5,0.496,0.485,0.467,0.44,0.42,0.39,0.36,0.33,0.3,0.27,0.25,0.22,0.205,0.191,0.183,0.18,0.184,0.195,0.211,0.232,0.26,0.28,0.31,0.34,0.36,0.39,0.42,0.44,0.459,0.476,0.489,0.497,0.5
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0,-0.03,-0.1,-0.21,-0.35,-0.51,-0.69,-0.88,-1.07,-1.26,-1.43,-1.59,-1.73,-1.84,-1.93,-1.98,-2,-1.999,-1.994,-1.987,-1.977,-1.964,-1.949,-1.931,-1.911,-1.89,-1.86,-1.84,-1.81,-1.78,-1.75,-1.71,-1.68,-1.64,-1.6,-1.56,-1.52,-1.48,-1.44,-1.4,-1.35,-1.31,-1.26,-1.22,-1.17,-1.12,-1.08,-1.03,-0.98,-0.94,-0.89,-0.84,-0.8,-0.75,-0.71,-0.66,-0.62,-0.57,-0.53,-0.49,-0.45,-0.41,-0.37,-0.34,-0.3,-0.27,-0.24,-0.21,-0.18,-0.15,-0.13,-0.1,-0.08,-0.063,-0.047,-0.033,-0.021,-0.012,-0.005,-0.001,0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Y=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.499,0.497,0.492,0.487,0.48,0.473,0.464,0.454,0.444,0.433,0.423,0.411,0.4,0.389,0.377,0.366,0.356,0.346,0.337,0.328,0.321,0.314,0.308,0.303,0.3,0.297,0.295,0.293,0.292,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.292,0.297,0.305,0.315,0.328,0.342,0.358,0.374,0.392,0.41,0.428,0.446,0.463,0.481,0.497,0.512,0.526,0.538,0.549,0.558,0.565,0.569,0.57,0.569,0.567,0.563,0.559,0.553,0.548,0.542,0.536,0.53,0.524,0.518,0.513,0.509,0.505,0.502,0.501,0.5
|
||||||
|
|
||||||
|
PARAM_HAIR_SIDE=0
|
||||||
|
|
||||||
|
PARAM_HAIR_BACK=0
|
||||||
53
public/pio/models/pio/motions/Touch Dere4.mtn
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0,1.25,4.29,8,11.62,14.53,16.37,17,16.63,15.6,13.98,11.92,9.46,6.78,3.94,1.06,-1.78,-4.46,-6.92,-8.98,-10.6,-11.63,-12,-11.94,-11.77,-11.5,-11.14,-10.72,-10.22,-9.66,-9.07,-8.45,-7.79,-7.12,-6.43,-5.74,-5.06,-4.4,-3.75,-3.14,-2.55,-2.01,-1.52,-1.09,-0.71,-0.41,-0.19,-0.05,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0,1.54,5.3,9.89,14.36,17.95,20.23,21,20.47,18.97,16.62,13.64,10.07,6.19,2.09,-2.09,-6.19,-10.07,-13.64,-16.62,-18.97,-20.47,-21,-20.89,-20.59,-20.12,-19.5,-18.75,-17.88,-16.91,-15.88,-14.78,-13.63,-12.46,-11.25,-10.04,-8.86,-7.7,-6.56,-5.49,-4.47,-3.51,-2.66,-1.9,-1.25,-0.72,-0.33,-0.08,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0,1.18,4.04,7.53,10.94,13.67,15.41,16,15.75,15.04,13.92,12.49,10.8,8.95,6.99,5.01,3.05,1.2,-0.49,-1.92,-3.04,-3.75,-4,-3.98,-3.92,-3.83,-3.71,-3.57,-3.41,-3.22,-3.02,-2.82,-2.6,-2.37,-2.14,-1.91,-1.69,-1.47,-1.25,-1.05,-0.85,-0.67,-0.51,-0.36,-0.24,-0.14,-0.06,-0.02,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_EMOTION=-1,-0.7,-0.698,-0.697,-0.695,-0.694,-0.693,-0.692,-0.692,-0.69,-0.691,-0.69,-0.69,-0.69,-0.69,-0.691,-0.694,-0.698,-0.701,-0.705,-0.707,-0.709,-0.71,-0.709,-0.708,-0.705,-0.702,-0.699,-0.695,-0.692,-0.689,-0.686,-0.683,-0.682,-0.68,-0.68,-0.68,-0.68,-0.682,-0.683,-0.685,-0.687,-0.689,-0.692,-0.695,-0.698,-0.702,-0.706,-0.71,-0.94,-0.945,-0.95,-0.955,-0.959,-0.963,-0.967,-0.971,-0.974,-0.977,-0.98,-0.983,-0.985,-0.988,-0.99,-0.992,-0.993,-0.995,-0.996,-0.997,-1,-0.999,-0.999,-1,-1,-1
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.55,0,0,0,0,0,0,0,0,0,0.001,0,0,0.002,0,0,0.003,0,0,0.004,0,0.006,0.006,0.01,0.007,0.01,0.009,0.009,0.01,0.011,0.011,0.012,0.013,0.01,0.015,0.016,0.017,0.018,0.019,0.02,0.021,0.022,0.023,0.024,0.025,0.026,0.028,0.029,0.03,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.55,0,0,0,0,0,0,0,0,0,0.001,0,0,0.002,0,0,0.003,0,0,0.004,0,0.006,0.006,0.01,0.007,0.01,0.009,0.009,0.01,0.011,0.011,0.012,0.013,0.01,0.015,0.016,0.017,0.018,0.019,0.02,0.021,0.022,0.023,0.024,0.025,0.026,0.028,0.029,0.03,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN2=-1,-1,-1,-1,-1,-0.999,-1,-0.998,-1,-0.996,-0.996,-0.995,-0.994,-0.993,-0.992,-0.991,-0.99,-0.989,-0.987,-0.986,-0.985,-0.984,-0.983,-0.981,-0.98,-0.979,-0.978,-0.976,-0.975,-0.974,-0.973,-0.972,-0.971,-0.97,-0.969,-0.968,-0.967,-0.966,-0.965,-0.96,-0.963,-0.963,-0.96,-0.962,-0.96,-0.961,-0.96,-0.96,-0.96,-0.96,-0.96,-0.96,-0.962,-0.963,-0.964,-0.966,-0.968,-0.97,-0.973,-0.975,-0.977,-0.98,-0.982,-0.984,-0.987,-0.989,-0.991,-0.993,-0.995,-0.996,-0.998,-0.999,-0.999,-1,-1
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN2=-1,-1,-1,-1,-1,-0.999,-1,-0.998,-1,-0.996,-0.996,-0.995,-0.994,-0.993,-0.992,-0.991,-0.99,-0.989,-0.987,-0.986,-0.985,-0.984,-0.983,-0.981,-0.98,-0.979,-0.978,-0.976,-0.975,-0.974,-0.973,-0.972,-0.971,-0.97,-0.969,-0.968,-0.967,-0.966,-0.965,-0.96,-0.963,-0.963,-0.96,-0.962,-0.96,-0.961,-0.96,-0.96,-0.96,-0.96,-0.96,-0.96,-0.962,-0.963,-0.964,-0.966,-0.968,-0.97,-0.973,-0.975,-0.977,-0.98,-0.982,-0.984,-0.987,-0.989,-0.991,-0.993,-0.995,-0.996,-0.998,-0.999,-0.999,-1,-1
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0,0,0,0,0,0,0,-0.017,-0.05,-0.1,-0.15,-0.19,-0.23,-0.25,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.241,-0.19,-0.14,-0.08,-0.04,-0.01,0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0,0,0,0,0,0,0,-0.017,-0.05,-0.1,-0.15,-0.19,-0.23,-0.25,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.241,-0.19,-0.14,-0.08,-0.04,-0.01,0
|
||||||
|
|
||||||
|
PARAM_BROW_ANGLE=0.2,-0.29,-0.29,-0.29,-0.29,-0.29,-0.29,-0.311,-0.36,-0.41,-0.47,-0.53,-0.57,-0.6,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,0,0.07,0.12,0.16,0.18,0.196,0.2
|
||||||
|
|
||||||
|
PARAM_BROW_SELECT=-0.5,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.21,0.209,0.21,0.21,0.21,0.208,0.21,0.21,0.207,0.21,0.21,0.206,0.21,0.205,0.2,0.204,0.2,0.203,0.2,0.202,0.201,0.2,0.2,0.199,0.2,0.197,0.197,0.196,0.2,0.194,0.194,0.193,0.192,0.191,0.19,0.19,0.188,0.187,0.186,0.185,0.184,0.183,0.182,0.181,0.18,0.179,0.177,0.176,0.175,0.174,0.173,0.171,0.17,-0.22,-0.31,-0.39,-0.44,-0.47,-0.494,-0.5
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN2=0.9,0.83,0.67,0.48,0.28,0.13,0.03,0,0,0,0,0,0,0,0,0,0,0,-0.008,-0.03,-0.08,-0.15,-0.24,-0.37,-0.97,-0.97,-0.97,-0.97,-0.968,-0.968,-0.966,-0.965,-0.964,-0.962,-0.96,-0.958,-0.956,-0.953,-0.95,-0.947,-0.944,-0.941,-0.937,-0.933,-0.929,-0.925,-0.92,-0.915,-0.91,-0.69,-0.43,-0.28,-0.22,-0.2,-0.27,-0.39,-0.46,-0.49,-0.43,-0.32,-0.23,-0.16,-0.13,-0.21,-0.33,-0.41,-0.44,-0.42,-0.33,-0.18,0,0.39,0.69,0.85,0.9
|
||||||
|
|
||||||
|
PARAM_MOUTH_EMO=0,0.16,0.16,0.162,0.163,0.164,0.165,0.166,0.167,0.168,0.169,0.169,0.17,0.171,0.172,0.173,0.17,0.175,0.176,0.177,0.177,0.178,0.179,0.18,0.25,0.25,0.25,0.25,0.25,0.25,0.249,0.25,0.248,0.25,0.247,0.246,0.25,0.244,0.243,0.242,0.241,0.24,0.239,0.238,0.236,0.235,0.233,0.232,0.23,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_CHEEK=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0,0.1,0.37,0.76,1.21,1.68,2.11,2.48,2.76,2.94,3,2.89,2.59,2.15,1.62,1.02,0.39,-0.24,-0.85,-1.42,-1.94,-2.37,-2.71,-2.92,-3,-2.9,-2.66,-2.33,-1.95,-1.55,-1.16,-0.79,-0.48,-0.22,-0.06,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0,0.14,0.5,1.02,1.62,2.23,2.81,3.3,3.68,3.92,4,3.92,3.73,3.44,3.08,2.68,2.26,1.84,1.43,1.05,0.71,0.42,0.2,0.05,0,0,0,0,0,0,0,0,0,0,0,0,-0.019,-0.07,-0.16,-0.27,-0.41,-0.56,-0.73,-0.9,-1.09,-1.28,-1.48,-1.67,-1.86,-2.04,-2.22,-2.38,-2.53,-2.66,-2.78,-2.87,-2.94,-2.98,-3,-2.96,-2.86,-2.69,-2.48,-2.23,-1.96,-1.68,-1.39,-1.12,-0.85,-0.61,-0.4,-0.23,-0.11,-0.03,0
|
||||||
|
|
||||||
|
PARAM_BODY_Y=0,-0.011,-0.04,-0.08,-0.13,-0.17,-0.22,-0.26,-0.29,-0.304,-0.31,-0.307,-0.3,-0.288,-0.272,-0.254,-0.23,-0.21,-0.18,-0.16,-0.13,-0.1,-0.07,-0.03,0,0.04,0.07,0.09,0.113,0.128,0.139,0.148,0.153,0.157,0.159,0.16,0.157,0.148,0.135,0.119,0.101,0.082,0.064,0.046,0.031,0.018,0.008,0.002,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.517,0.56,0.63,0.7,0.78,0.85,0.91,0.96,0.99,1,0.987,0.95,0.9,0.84,0.77,0.7,0.62,0.55,0.48,0.42,0.37,0.33,0.31,0.3,0.316,0.36,0.41,0.47,0.54,0.6,0.66,0.71,0.75,0.78,0.79,0.788,0.783,0.773,0.76,0.744,0.72,0.7,0.67,0.64,0.61,0.58,0.54,0.5,0.45,0.41,0.37,0.33,0.31,0.29,0.269,0.258,0.252,0.25,0.253,0.262,0.276,0.294,0.31,0.34,0.36,0.38,0.41,0.43,0.449,0.466,0.481,0.491,0.498,0.5
|
||||||
|
|
||||||
|
PARAM_BOING=0,0.04,0.13,0.23,0.35,0.45,0.53,0.59,0.61,0.53,0.34,0.1,-0.13,-0.31,-0.43,-0.47,-0.42,-0.31,-0.17,-0.02,0.09,0.14,0.08,-0.01,-0.08,-0.1,-0.08,-0.04,-0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
46
public/pio/models/pio/motions/Touch Dere5.mtn
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0,1.97,6.22,11.51,17.02,22.04,26.2,28.97,30,30,30,30,30,30,30,30,30,30,30,29.96,29.73,29.21,28.33,27.05,25.41,23.45,20.66,17.93,15.17,12.48,9.99,7.62,5.48,3.66,2.12,0.97,0.26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0,0.92,2.9,5.37,7.94,10.29,12.23,13.52,14,13.97,13.89,13.75,13.55,13.27,12.93,12.54,12.08,11.57,11,10.08,9.01,7.93,6.86,5.87,4.98,4.22,3.35,2.59,1.88,1.26,0.72,0.26,-0.14,-0.45,-0.69,-0.87,-0.97,-1,-0.993,-0.975,-0.94,-0.91,-0.86,-0.8,-0.74,-0.68,-0.61,-0.54,-0.47,-0.41,-0.34,-0.28,-0.22,-0.17,-0.12,-0.08,-0.04,-0.02,-0.005,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0,-0.59,-1.86,-3.45,-5.1,-6.61,-7.86,-8.69,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-9,-8.7,-7.9,-6.66,-5.1,-3.37,-1.5,0.37,2.1,3.66,4.9,5.7,6,5.96,5.85,5.67,5.43,5.15,4.82,4.45,4.08,3.67,3.26,2.84,2.44,2.04,1.66,1.31,0.99,0.71,0.46,0.27,0.12,0.03,0
|
||||||
|
|
||||||
|
PARAM_EMOTION=0
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.5,0.39,0.22,0.1,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.067,0.087,0.12,0.16,0.2,0.25,0.29,0.33,0.37,0.4,0.423,0.43,0.43,0.43,0.429,0.428,0.426,0.424,0.422,0.419,0.416,0.412,0.407,0.402,0.396,0.39,0.31,0.19,0.11,0.08,0.18,0.35,0.46,0.5
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.5,0.39,0.22,0.1,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.067,0.087,0.12,0.16,0.2,0.25,0.29,0.33,0.37,0.4,0.423,0.43,0.43,0.43,0.429,0.428,0.426,0.424,0.422,0.419,0.416,0.412,0.407,0.402,0.396,0.39,0.31,0.19,0.11,0.08,0.18,0.35,0.46,0.5
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0,-0.07,-0.21,-0.38,-0.57,-0.73,-0.87,-0.97,-1,-0.999,-0.998,-0.995,-0.991,-0.987,-0.983,-0.978,-0.972,-0.966,-0.961,-0.955,-0.948,-0.942,-0.937,-0.931,-0.925,-0.92,-0.915,-0.911,-0.908,-0.905,-0.903,-0.902,-0.901,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.74,-0.48,-0.24,-0.07,0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0,-0.07,-0.21,-0.38,-0.57,-0.73,-0.87,-0.97,-1,-1,-0.998,-0.996,-0.994,-0.991,-0.988,-0.984,-0.979,-0.975,-0.97,-0.965,-0.959,-0.954,-0.948,-0.942,-0.936,-0.93,-0.924,-0.919,-0.914,-0.911,-0.908,-0.905,-0.903,-0.902,-0.901,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.74,-0.48,-0.24,-0.07,0
|
||||||
|
|
||||||
|
PARAM_BROW_L_ANGLE=0,-0.07,-0.21,-0.38,-0.57,-0.73,-0.87,-0.97,-1,-1,-1,-1,-1,-1,-1,-1,-1,-0.999,-1,-0.998,-0.997,-0.996,-0.995,-0.993,-0.992,-0.99,-0.97,-0.91,-0.83,-0.73,-0.62,-0.49,-0.37,-0.26,-0.15,-0.07,-0.02,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_BROW_R_ANGLE=0,-0.07,-0.21,-0.38,-0.57,-0.73,-0.87,-0.97,-1,-1,-1,-1,-1,-1,-1,-1,-1,-0.999,-1,-0.998,-0.997,-0.996,-0.995,-0.993,-0.992,-0.99,-0.97,-0.91,-0.83,-0.73,-0.62,-0.49,-0.37,-0.26,-0.15,-0.07,-0.02,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_EAR_DEFORM=0,0.04,0.13,0.24,0.35,0.44,0.49,0.51,0.509,0.505,0.499,0.49,0.479,0.464,0.446,0.42,0.4,0.37,0.34,0.3,0.26,0.22,0.17,0.12,0.06,0,-0.06,-0.13,-0.19,-0.24,-0.29,-0.34,-0.38,-0.42,-0.45,-0.47,-0.485,-0.49,-0.487,-0.478,-0.463,-0.443,-0.42,-0.39,-0.36,-0.33,-0.3,-0.27,-0.23,-0.2,-0.17,-0.14,-0.11,-0.08,-0.06,-0.038,-0.022,-0.01,-0.003,0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0.5,0.53,0.6,0.68,0.77,0.85,0.91,0.95,0.97,0.91,0.81,0.74,0.72,0.732,0.76,0.8,0.84,0.87,0.88,0.877,0.867,0.852,0.832,0.81,0.78,0.75,0.71,0.68,0.64,0.61,0.59,0.57,0.545,0.529,0.517,0.507,0.502,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0,0.03,0.11,0.22,0.35,0.48,0.61,0.74,0.84,0.93,0.98,1,0.994,0.979,0.95,0.92,0.89,0.84,0.79,0.74,0.69,0.63,0.57,0.5,0.43,0.37,0.3,0.24,0.18,0.14,0.1,0.07,0.05,0.029,0.016,0.007,0.002,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Y=0,0.13,0.45,0.89,1.4,1.93,2.45,2.95,3.37,3.7,3.92,4,3.98,3.92,3.82,3.69,3.54,3.37,3.18,2.97,2.75,2.51,2.26,2.01,1.74,1.47,1.19,0.95,0.74,0.56,0.41,0.29,0.19,0.12,0.06,0.03,0.006,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0,-0.46,-1.45,-2.69,-3.97,-5.14,-6.11,-6.76,-7,-7,-7,-7,-7,-7,-7,-6.94,-6.79,-6.56,-6.26,-5.92,-5.53,-5.1,-4.64,-4.15,-3.64,-3.11,-2.54,-2.06,-1.62,-1.24,-0.93,-0.66,-0.45,-0.28,-0.15,-0.06,-0.02,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5
|
||||||
|
|
||||||
|
PARAM_HAIR_SIDE=0
|
||||||
|
|
||||||
|
PARAM_HAIR_BACK=0
|
||||||
53
public/pio/models/pio/motions/Touch Dere6.mtn
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0,0.6,2.07,4.08,6.18,7.93,9,9.47,9.76,9.92,9.99,10.004,10,10,9.995,9.977,9.94,9.88,9.78,9.66,9.49,9.28,9.03,8.73,8.39,8,7.44,6.76,5.95,5.08,4.19,3.29,2.43,1.66,0.98,0.46,0.12,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0,1.65,5.75,11.4,17.41,22.56,26,27.79,28.93,29.6,29.91,30,30,29.3,27.43,24.61,21.08,17.17,13.01,8.93,5.12,1.75,-1.09,-3.22,-4.54,-5,-4.9,-4.63,-4.22,-3.7,-3.12,-2.5,-1.88,-1.3,-0.78,-0.37,-0.1,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0,-0.06,-0.22,-0.47,-0.78,-1.13,-1.5,-1.87,-2.22,-2.53,-2.78,-2.94,-3,-2.84,-2.41,-1.77,-0.96,-0.07,0.88,1.82,2.69,3.46,4.11,4.59,4.9,5,4.9,4.63,4.22,3.7,3.12,2.5,1.88,1.3,0.78,0.37,0.1,0
|
||||||
|
|
||||||
|
PARAM_EMOTION=-1
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.55,0.64,0.78,0.88,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.903,0.884,0.85,0.82,0.77,0.73,0.69,0.64,0.61,0.58,0.557,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.55,0.64,0.78,0.88,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.903,0.884,0.85,0.82,0.77,0.73,0.69,0.64,0.61,0.58,0.557,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN2=-1
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN2=-1
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0,-0.06,-0.15,-0.21,-0.23,-0.23,-0.228,-0.225,-0.221,-0.216,-0.21,-0.203,-0.196,-0.188,-0.18,-0.17,-0.161,-0.151,-0.141,-0.131,-0.12,-0.11,-0.099,-0.089,-0.079,-0.069,-0.06,-0.05,-0.042,-0.034,-0.027,-0.02,-0.014,-0.009,-0.005,-0.002,-0.001,0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0,-0.06,-0.15,-0.21,-0.23,-0.23,-0.228,-0.225,-0.221,-0.216,-0.21,-0.203,-0.196,-0.188,-0.18,-0.17,-0.161,-0.151,-0.141,-0.131,-0.12,-0.11,-0.099,-0.089,-0.079,-0.069,-0.06,-0.05,-0.042,-0.034,-0.027,-0.02,-0.014,-0.009,-0.005,-0.002,-0.001,0
|
||||||
|
|
||||||
|
PARAM_BROW_ANGLE=0.2,0.11,-0.03,-0.13,-0.16,-0.159,-0.156,-0.152,-0.145,-0.138,-0.129,-0.118,-0.107,-0.094,-0.081,-0.067,-0.052,-0.036,-0.021,-0.004,0.012,0.028,0.044,0.061,0.076,0.092,0.107,0.121,0.134,0.147,0.158,0.169,0.178,0.185,0.192,0.196,0.199,0.2
|
||||||
|
|
||||||
|
PARAM_BROW_SELECT=-0.5
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0,0.92,0.89,0.81,0.72,0.63,0.56,0.52,0.5,0.5,0.5,0.5,0.5,0.5,0.514,0.55,0.61,0.68,0.74,0.81,0.87,0.9,0.92,0.04,0.033,0.028,0.023,0.018,0.014,0.011,0.008,0.006,0.004,0.003,0.001,0.001,0,0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN2=0.9,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.98,-0.979,-0.98,-0.98,-0.978,-0.98,-0.977,-0.98,-0.976,-0.98,-0.974,-0.974,-0.973,-0.972,-0.971,-0.97,0.83,0.842,0.852,0.861,0.868,0.875,0.881,0.885,0.89,0.893,0.896,0.897,0.899,0.9,0.9
|
||||||
|
|
||||||
|
PARAM_MOUTH_EMO=0
|
||||||
|
|
||||||
|
PARAM_CHEEK=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0,-0.15,-0.52,-1,-1.48,-1.85,-2,-2,-2,-2,-2,-2,-2,-1.94,-1.78,-1.54,-1.24,-0.9,-0.54,-0.19,0.13,0.42,0.66,0.85,0.96,1,0.98,0.93,0.84,0.74,0.62,0.5,0.38,0.26,0.16,0.07,0.02,0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0,0.38,1.29,2.5,3.71,4.62,5,5,5,5,5,5,5,4.86,4.49,3.92,3.22,2.43,1.6,0.79,0.02,-0.65,-1.22,-1.64,-1.91,-2,-1.96,-1.85,-1.69,-1.48,-1.25,-1,-0.75,-0.52,-0.31,-0.15,-0.04,0
|
||||||
|
|
||||||
|
PARAM_BODY_Y=0,0.019,0.07,0.14,0.21,0.28,0.33,0.36,0.382,0.394,0.399,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.4,0.392,0.37,0.34,0.3,0.25,0.2,0.15,0.1,0.06,0.03,0.01,0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.512,0.55,0.59,0.65,0.71,0.77,0.82,0.85,0.87,0.884,0.889,0.89,0.888,0.882,0.873,0.861,0.846,0.829,0.81,0.79,0.77,0.74,0.72,0.7,0.67,0.65,0.63,0.61,0.587,0.568,0.551,0.537,0.524,0.514,0.506,0.502,0.5
|
||||||
|
|
||||||
|
PARAM_BOING=0,0.02,0.07,0.14,0.2,0.25,0.28,0.29,0.25,0.17,0.06,-0.04,-0.12,-0.17,-0.19,-0.176,-0.14,-0.1,-0.05,-0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
53
public/pio/models/pio/motions/Touch1.mtn
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0,-0.36,-0.93,-1.46,-1.85,-2,-1.52,-0.23,1.64,3.86,6.14,8.36,10.23,11.52,12,11.76,11.12,10.13,8.88,7.5,6,4.5,3.12,1.88,0.88,0.24,0,0,0,0,0,0,0,0,0,0,0,0,0.79,2.92,6.02,9.71,13.55,17.31,20.55,22.91,24,24.33,24.65,24.95,25.25,25.54,25.82,26.08,26.33,26.58,26.81,27.03,27.24,27.45,27.65,27.83,28.01,28.18,28.34,28.48,28.63,28.76,28.89,29.01,29.12,29.22,29.32,29.41,29.49,29.56,29.63,29.7,29.75,29.8,29.84,29.88,29.91,29.94,29.96,29.979,29.991,29.998,30,30,29.96,29.85,29.65,29.36,28.99,28.52,27.95,27.28,26.5,25.6,24.6,23.47,22.22,20.87,19.36,17.71,15.93,14,11.67,9.55,7.65,5.93,4.44,3.14,2.03,1.17,0.53,0.14,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0,5.36,13.95,21.96,27.75,30,28.66,25.06,19.86,13.69,7.31,1.14,-4.06,-7.66,-9,-8.66,-7.75,-6.34,-4.58,-2.62,-0.5,1.62,3.58,5.34,6.75,7.66,8,7.984,7.9,7.73,7.43,6.99,6.38,5.56,4.56,3.3,1.81,0,-2.71,-6.37,-10.64,-15.17,-19.55,-23.62,-26.94,-29.18,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-30,-29.04,-26.62,-23.34,-19.51,-15.53,-11.6,-7.88,-4.75,-2.23,-0.6,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0,-1.07,-2.79,-4.39,-5.55,-6,-5.69,-4.86,-3.66,-2.24,-0.76,0.66,1.86,2.69,3,2.94,2.78,2.53,2.22,1.87,1.5,1.13,0.78,0.47,0.22,0.06,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.007,0.027,0.06,0.1,0.16,0.22,0.3,0.38,0.47,0.57,0.68,0.79,0.91,1.04,1.17,1.3,1.44,1.58,1.71,1.86,2,2.14,2.29,2.42,2.56,2.7,2.83,2.96,3.09,3.21,3.32,3.43,3.53,3.62,3.7,3.78,3.84,3.9,3.94,3.97,3.993,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3.87,3.55,3.11,2.6,2.07,1.55,1.05,0.63,0.3,0.08,0
|
||||||
|
|
||||||
|
PARAM_EMOTION=-1
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.552,0.554,0.557,0.56,0.562,0.565,0.567,0.569,0.57,0.57,0.01,0.007,0.005,0.003,0.002,0.001,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.92,0.907,0.87,0.83,0.77,0.71,0.66,0.61,0.58,0.56,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.55,0.552,0.554,0.557,0.56,0.562,0.565,0.567,0.569,0.57,0.57,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.92,0.907,0.87,0.83,0.77,0.71,0.66,0.61,0.58,0.56,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN2=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0.1,0.094,0.08,0.063,0.044,0.028,0.014,0.004,0,-0.001,-0.002,-0.003,-0.004,-0.005,-0.006,-0.01,-0.008,-0.009,-0.009,-0.01,-0.01,-0.012,-0.012,-0.01,-0.013,-0.01,-0.014,-0.01,-0.015,-0.02,-0.016,-0.02,-0.017,-0.02,-0.02,-0.018,-0.02,-0.02,-0.02,-0.02,-0.019,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,0.2,0.53,0.71,0.81,0.86,0.88,0.88,0.88,0.88,0.88,0.88,0.88,0.88,0.88,0.88,0.88,0.88,0.88,0.88,-0.96,-0.969,-0.977,-0.983,-0.988,-0.992,-0.995,-0.998,-0.999,-1,-1
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN2=-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0.1,0.094,0.08,0.063,0.044,0.028,0.014,0.004,0,-0.001,-0.002,-0.003,-0.004,-0.005,-0.006,-0.01,-0.008,-0.009,-0.009,-0.01,-0.01,-0.012,-0.012,-0.01,-0.013,-0.01,-0.014,-0.01,-0.015,-0.02,-0.016,-0.02,-0.017,-0.02,-0.02,-0.018,-0.02,-0.02,-0.02,-0.02,-0.019,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,-0.02,0.2,0.53,0.71,0.81,0.86,0.88,0.88,0.88,0.88,0.88,0.88,0.88,0.88,0.88,0.88,0.88,0.88,0.88,0.88,-0.98,-0.985,-0.988,-0.992,-0.994,-0.996,-0.998,-0.999,-0.999,-1,-1
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0,0.03,0.07,0.12,0.15,0.16,0.159,0.156,0.151,0.145,0.137,0.128,0.119,0.108,0.097,0.086,0.074,0.063,0.052,0.041,0.032,0.023,0.015,0.009,0.004,0.001,0,0,0,0,0,0,0,0,0,0,0,0,-0.06,-0.16,-0.25,-0.31,-0.34,-0.29,-0.2,-0.14,-0.12,-0.12,-0.122,-0.125,-0.128,-0.133,-0.138,-0.144,-0.151,-0.159,-0.167,-0.176,-0.185,-0.195,-0.206,-0.216,-0.227,-0.238,-0.25,-0.261,-0.273,-0.285,-0.297,-0.309,-0.32,-0.332,-0.343,-0.354,-0.364,-0.375,-0.385,-0.394,-0.403,-0.411,-0.419,-0.426,-0.432,-0.437,-0.442,-0.445,-0.448,-0.449,-0.45,-0.45,-0.45,-0.45,-0.45,-0.45,-0.45,-0.45,-0.45,-0.45,-0.45,-0.45,-0.45,-0.45,-0.45,-0.45,-0.45,-0.45,-0.45,-0.45,-0.436,-0.4,-0.35,-0.29,-0.23,-0.17,-0.12,-0.07,-0.03,-0.01,0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0,-0.014,-0.04,-0.06,-0.074,-0.08,-0.079,-0.078,-0.076,-0.072,-0.069,-0.064,-0.059,-0.054,-0.048,-0.043,-0.037,-0.032,-0.026,-0.021,-0.016,-0.011,-0.008,-0.004,-0.002,-0.001,0,0,0,0,0,0,0,0,0,0,0,0,0.015,0.05,0.09,0.15,0.21,0.3,0.35,0.37,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.38,0.368,0.34,0.3,0.25,0.2,0.15,0.1,0.06,0.03,0.01,0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0,0.09,0.24,0.38,0.48,0.52,0.5,0.44,0.36,0.26,0.16,0.07,-0.02,-0.08,-0.1,-0.103,-0.105,-0.106,-0.108,-0.109,-0.11,-0.111,-0.112,-0.114,-0.115,-0.117,-0.12,-0.125,-0.134,-0.144,-0.157,-0.171,-0.186,-0.203,-0.221,-0.24,-0.259,-0.28,-0.31,-0.35,-0.4,-0.45,-0.49,-0.54,-0.58,-0.6,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.68,-0.79,-0.89,-0.96,-0.99,-0.99,-0.99,-0.99,-0.99,-0.99,-0.99,-0.99,-0.99,-0.99,-0.99,-0.99,-0.99,-0.99,-0.96,-0.88,-0.77,-0.64,-0.51,-0.38,-0.26,-0.16,-0.07,-0.02,0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0,0.09,0.24,0.38,0.48,0.52,0.5,0.45,0.37,0.27,0.18,0.08,0,-0.06,-0.09,-0.098,-0.104,-0.109,-0.114,-0.118,-0.121,-0.125,-0.128,-0.132,-0.137,-0.143,-0.15,-0.161,-0.173,-0.187,-0.203,-0.22,-0.239,-0.259,-0.28,-0.3,-0.33,-0.35,-0.38,-0.43,-0.47,-0.52,-0.57,-0.61,-0.65,-0.67,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.68,-0.74,-0.83,-0.91,-0.98,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-0.97,-0.89,-0.78,-0.65,-0.52,-0.39,-0.26,-0.16,-0.07,-0.02,0
|
||||||
|
|
||||||
|
PARAM_BROW_ANGLE=0.2,0.198,0.192,0.182,0.169,0.154,0.136,0.116,0.1,0.07,0.05,0.03,0,-0.02,-0.05,-0.07,-0.1,-0.12,-0.14,-0.158,-0.176,-0.191,-0.204,-0.215,-0.223,-0.228,-0.23,-0.227,-0.22,-0.21,-0.199,-0.187,-0.175,-0.164,-0.154,-0.147,-0.142,-0.14,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.58,-0.52,-0.43,-0.35,-0.28,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.26,-0.245,-0.21,-0.16,-0.1,-0.04,0.02,0.08,0.13,0.17,0.19,0.2
|
||||||
|
|
||||||
|
PARAM_BROW_SELECT=-0.5,-0.5,-0.5,-0.498,-0.496,-0.494,-0.492,-0.489,-0.485,-0.481,-0.477,-0.472,-0.467,-0.461,-0.455,-0.448,-0.441,-0.434,-0.426,-0.417,-0.408,-0.399,-0.389,-0.379,-0.368,-0.357,-0.345,-0.333,-0.321,-0.308,-0.294,-0.281,-0.267,-0.252,-0.237,-0.222,-0.206,-0.19,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.18,0.16,0.1,0.03,-0.06,-0.15,-0.24,-0.32,-0.39,-0.45,-0.49,-0.5
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN2=0.9,0.74,0.49,0.25,0.08,0,-0.013,-0.026,-0.038,-0.05,-0.06,-0.071,-0.08,-0.089,-0.098,-0.106,-0.113,-0.12,-0.127,-0.133,-0.138,-0.144,-0.148,-0.153,-0.157,-0.161,-0.164,-0.167,-0.169,-0.172,-0.174,-0.175,-0.177,-0.178,-0.18,-0.18,-0.18,-0.18,-0.174,-0.157,-0.13,-0.1,-0.08,-0.05,-0.02,-0.006,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.06,0.21,0.41,0.61,0.77,0.86,0.89,0.9,0.902,0.901,0.9
|
||||||
|
|
||||||
|
PARAM_MOUTH_EMO=0.13,0.13,0.13,0.13,0.13,0.13,0.13,0.13,0.13,0.13,0.131,0.13,0.13,0.132,0.13,0.13,0.133,0.13,0.13,0.134,0.13,0.135,0.14,0.136,0.14,0.137,0.138,0.14,0.139,0.14,0.14,0.141,0.142,0.14,0.144,0.145,0.145,0.146,0.147,0.148,0.149,0.15,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.435,0.444,0.452,0.458,0.46,0.11,0.112,0.115,0.117,0.119,0.12
|
||||||
|
|
||||||
|
PARAM_CHEEK=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0,-0.72,-1.86,-2.93,-3.7,-4,-3.83,-3.37,-2.7,-1.91,-1.09,-0.3,0.37,0.83,1,0.98,0.93,0.84,0.74,0.62,0.5,0.38,0.26,0.16,0.07,0.02,0,0,0,0,0,0,0,0,0,0,0,0,0.001,0.004,0.01,0.018,0.027,0.038,0.051,0.066,0.082,0.1,0.12,0.14,0.16,0.18,0.21,0.23,0.26,0.29,0.31,0.34,0.37,0.4,0.43,0.46,0.49,0.51,0.54,0.57,0.6,0.63,0.66,0.69,0.71,0.74,0.77,0.79,0.82,0.84,0.86,0.88,0.9,0.918,0.934,0.949,0.962,0.973,0.982,0.99,0.996,0.999,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.97,0.89,0.78,0.65,0.52,0.39,0.26,0.16,0.07,0.02,0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0,1.25,3.25,5.12,6.47,7,6.69,5.86,4.66,3.24,1.76,0.34,-0.86,-1.69,-2,-1.96,-1.85,-1.69,-1.48,-1.25,-1,-0.75,-0.52,-0.31,-0.15,-0.04,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_BODY_Y=0,0.04,0.12,0.18,0.23,0.25,0.248,0.244,0.236,0.226,0.214,0.2,0.185,0.169,0.152,0.134,0.116,0.098,0.081,0.065,0.05,0.036,0.024,0.014,0.006,0.002,0,0,0,0,0,0,0,0,0,0,0,0,0,0.002,0.005,0.009,0.014,0.02,0.027,0.034,0.043,0.052,0.062,0.073,0.084,0.096,0.108,0.121,0.135,0.149,0.163,0.177,0.192,0.207,0.222,0.237,0.252,0.268,0.283,0.298,0.313,0.328,0.343,0.357,0.371,0.385,0.399,0.412,0.424,0.436,0.447,0.458,0.468,0.477,0.486,0.493,0.5,0.506,0.511,0.515,0.518,0.519,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.52,0.503,0.46,0.4,0.34,0.27,0.2,0.14,0.08,0.04,0.01,0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.59,0.73,0.87,0.96,1,0.97,0.9,0.79,0.67,0.53,0.41,0.3,0.23,0.2,0.203,0.212,0.225,0.242,0.26,0.28,0.3,0.318,0.335,0.348,0.357,0.36,0.355,0.341,0.322,0.3,0.28,0.26,0.23,0.217,0.203,0.193,0.19,0.19,0.191,0.193,0.195,0.198,0.202,0.206,0.21,0.216,0.221,0.227,0.233,0.24,0.247,0.254,0.262,0.27,0.278,0.287,0.295,0.304,0.313,0.321,0.33,0.339,0.348,0.357,0.366,0.375,0.384,0.392,0.401,0.409,0.417,0.425,0.433,0.44,0.447,0.454,0.46,0.466,0.472,0.477,0.481,0.486,0.489,0.492,0.495,0.497,0.499,0.5,0.5,0.497,0.489,0.477,0.461,0.442,0.42,0.4,0.37,0.35,0.32,0.29,0.27,0.25,0.229,0.213,0.201,0.193,0.19,0.2,0.22,0.26,0.3,0.34,0.38,0.42,0.45,0.48,0.494,0.5
|
||||||
|
|
||||||
|
PARAM_BOING=0,-0.04,-0.06,0.02,0.14,0.25,0.34,0.37,0.21,-0.05,-0.23,-0.29,-0.19,-0.02,0.09,0.13,0.1,0.05,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
46
public/pio/models/pio/motions/Touch2.mtn
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0,0.3,1.03,2,2.97,3.7,4,3.71,2.99,2.12,1.27,0.58,0.15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0,5.78,16.22,22,18.09,8.61,-4,-16.61,-26.09,-30,-28.61,-26.11,-24.73,-24.73,-24.73,-24.73,-24.73,-24.73,-24.73,-24.73,-24.73,-24.73,-24.73,-24.73,-24.73,-24.73,-24.73,-24.73,-24.73,-24.73,-24.73,-24.73,-24.73,-24.23,-22.91,-20.86,-18.29,-15.45,-12.36,-9.28,-6.43,-3.86,-1.82,-0.49,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0,1.45,2,-0.35,-6.07,-13.06,-19.88,-25.35,-28.82,-30,-29.03,-27.44,-26.35,-26,-26,-26,-26,-26,-26,-26,-26,-26,-26,-26,-26,-26,-26,-26,-26,-26,-25.67,-24.75,-23.29,-21.44,-19.24,-16.83,-14.29,-11.71,-9.17,-6.76,-4.56,-2.71,-1.25,-0.33,0
|
||||||
|
|
||||||
|
PARAM_EMOTION=0
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.482,0.45,0.434,0.427,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.429,0.433,0.439,0.446,0.455,0.464,0.473,0.481,0.489,0.495,0.499,0.5
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.6,0.76,0.86,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.9,0.8,0.64,0.54,0.5,0.5,0.5,0.5
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0,0,0,0,0,0.012,0.05,0.09,0.15,0.21,0.27,0.31,0.35,0.36,0.36,0.36,0.36,0.36,0.36,0.36,0.36,0.36,0.36,0.36,0.36,0.36,0.357,0.348,0.334,0.315,0.29,0.27,0.24,0.21,0.18,0.15,0.13,0.1,0.08,0.05,0.036,0.021,0.009,0.002,0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0,0.49,0.67,0.6,0.42,0.19,-0.05,-0.23,-0.3,-0.299,-0.297,-0.294,-0.29,-0.284,-0.278,-0.27,-0.262,-0.253,-0.243,-0.233,-0.222,-0.211,-0.199,-0.187,-0.175,-0.163,-0.15,-0.137,-0.125,-0.113,-0.101,-0.089,-0.078,-0.067,-0.057,-0.047,-0.038,-0.03,-0.022,-0.016,-0.01,-0.006,-0.003,-0.001,0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0,0.49,0.67,0.6,0.42,0.18,-0.06,-0.24,-0.31,-0.309,-0.307,-0.304,-0.299,-0.294,-0.287,-0.279,-0.271,-0.262,-0.252,-0.241,-0.23,-0.218,-0.206,-0.193,-0.181,-0.168,-0.155,-0.142,-0.129,-0.117,-0.104,-0.092,-0.08,-0.069,-0.058,-0.048,-0.039,-0.031,-0.023,-0.016,-0.011,-0.006,-0.003,-0.001,0
|
||||||
|
|
||||||
|
PARAM_BROW_L_ANGLE=0,0.24,0.64,0.91,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.93,0.79,0.62,0.43,0.27,0.13,0.03,0
|
||||||
|
|
||||||
|
PARAM_BROW_R_ANGLE=0,0.24,0.64,0.91,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0.93,0.79,0.62,0.43,0.27,0.13,0.03,0
|
||||||
|
|
||||||
|
PARAM_EAR_DEFORM=0,0.08,0.23,0.31,0.22,0,-0.29,-0.59,-0.81,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.9,-0.893,-0.876,-0.85,-0.81,-0.77,-0.72,-0.67,-0.61,-0.55,-0.48,-0.42,-0.35,-0.29,-0.23,-0.18,-0.13,-0.09,-0.05,-0.02,-0.006,0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0.5,0.59,0.73,0.87,0.96,1,1,1,1,1,1,1,1,1,1,0.986,0.95,0.91,0.86,0.83,0.818,0.82,0.826,0.834,0.842,0.848,0.85,0.832,0.8,0.783,0.777,0.797,0.83,0.85,0.86,0.86,0.858,0.853,0.842,0.826,0.8,0.71,0.6,0.52,0.5
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Y=0,0.73,1.92,2.73,3,2.71,2.01,1.08,0.15,-0.55,-0.84,-0.69,-0.45,-0.23,-0.06,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0,0,0,0,0,0,0,0,-0.23,-0.77,-1.5,-2.23,-2.77,-3,-2.96,-2.86,-2.69,-2.47,-2.22,-1.94,-1.65,-1.35,-1.06,-0.78,-0.53,-0.31,-0.14,-0.04,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.54,0.63,0.75,0.87,0.96,1,0.93,0.79,0.62,0.43,0.27,0.13,0.03,0,0.011,0.04,0.08,0.14,0.2,0.26,0.32,0.39,0.44,0.49,0.54,0.57,0.59,0.6,0.599,0.595,0.59,0.583,0.574,0.565,0.556,0.546,0.537,0.528,0.52,0.513,0.508,0.504,0.501,0.5
|
||||||
|
|
||||||
|
PARAM_HAIR_SIDE=0
|
||||||
|
|
||||||
|
PARAM_HAIR_BACK=0,-0.03,-0.12,-0.25,-0.4,-0.56,-0.7,-0.83,-0.92,-0.98,-1,-0.97,-0.87,-0.74,-0.58,-0.42,-0.26,-0.13,-0.03,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
53
public/pio/models/pio/motions/Touch3.mtn
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0,7.88,22.12,30,27.93,22.52,14.7,5.77,-3.51,-12.16,-19.55,-25.19,-28.75,-30,-28.69,-25.19,-20.12,-14.1,-7.9,-1.88,3.19,6.69,8,7.84,7.41,6.77,5.96,5.07,4.12,3.18,2.31,1.54,0.89,0.41,0.1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0
|
||||||
|
|
||||||
|
PARAM_EMOTION=-1,-0.5,-0.515,-0.52,-0.519,-0.516,-0.512,-0.508,-0.503,-0.499,-0.495,-0.492,-0.491,-0.49,-0.49,-0.493,-0.496,-0.5,-0.505,-0.509,-0.513,-0.517,-0.52,-0.522,-0.524,-0.526,-0.528,-0.529,-0.531,-0.532,-0.533,-0.535,-0.536,-0.537,-0.539,-0.54,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.95,-0.953,-0.957,-0.962,-0.967,-0.972,-0.977,-0.982,-0.987,-0.991,-0.995,-0.998,-0.999,-1
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.55,0.549,0.544,0.537,0.528,0.517,0.503,0.488,0.471,0.454,0.434,0.41,0.39,0.37,0.35,0.32,0.3,0.28,0.25,0.23,0.21,0.19,0.16,0.14,0.123,0.104,0.086,0.07,0.054,0.041,0.029,0.019,0.011,0.005,0.001,0,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.037,0.03,0.02,0.01,0.003,0,0.91,0.88,0.82,0.74,0.66,0.6,0.56,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.55,0.549,0.544,0.537,0.528,0.517,0.503,0.488,0.471,0.454,0.434,0.41,0.39,0.37,0.35,0.32,0.3,0.28,0.25,0.23,0.21,0.19,0.16,0.14,0.123,0.104,0.086,0.07,0.054,0.041,0.029,0.019,0.011,0.005,0.001,0,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.04,0.037,0.03,0.02,0.01,0.003,0,0.91,0.88,0.82,0.74,0.66,0.6,0.56,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN2=-0.92,-0.92,-0.92,-0.922,-0.923,-0.925,-0.927,-0.929,-0.931,-0.934,-0.937,-0.94,-0.943,-0.946,-0.949,-0.953,-0.956,-0.96,-0.963,-0.966,-0.97,-0.973,-0.976,-0.979,-0.982,-0.985,-0.987,-0.99,-0.992,-0.994,-0.996,-0.997,-0.998,-0.999,-1,-1,-0.11,-0.08,-0.06,-0.03,-0.013,0.005,0.022,0.036,0.049,0.06,0.07,0.078,0.085,0.091,0.095,0.098,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.15,0.29,0.47,0.64,0.78,0.83,-1,-1,-1,-1,-1,-1,-1,-1
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN2=-0.91,-0.91,-0.91,-0.912,-0.914,-0.915,-0.918,-0.92,-0.923,-0.926,-0.929,-0.932,-0.936,-0.939,-0.943,-0.947,-0.951,-0.955,-0.958,-0.962,-0.966,-0.97,-0.973,-0.977,-0.98,-0.983,-0.986,-0.989,-0.991,-0.993,-0.995,-0.997,-0.998,-0.999,-1,-1,-0.11,-0.08,-0.06,-0.03,-0.013,0.005,0.022,0.036,0.049,0.06,0.07,0.078,0.085,0.091,0.095,0.098,0.099,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.15,0.29,0.47,0.64,0.78,0.83,-1,-1,-1,-1,-1,-1,-1,-1
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0,-0.17,-0.47,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.62,-0.56,-0.47,-0.37,-0.27,-0.17,-0.08,-0.02,0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0,-0.17,-0.47,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.64,-0.62,-0.56,-0.47,-0.37,-0.27,-0.17,-0.08,-0.02,0
|
||||||
|
|
||||||
|
PARAM_BROW_ANGLE=-0.53,-0.53,-0.53,-0.532,-0.533,-0.534,-0.536,-0.538,-0.541,-0.543,-0.546,-0.549,-0.553,-0.556,-0.56,-0.564,-0.567,-0.571,-0.575,-0.58,-0.584,-0.588,-0.592,-0.597,-0.601,-0.605,-0.609,-0.613,-0.617,-0.621,-0.625,-0.629,-0.632,-0.636,-0.639,-0.642,-0.645,-0.648,-0.65,-0.652,-0.654,-0.656,-0.657,-0.659,-0.659,-0.66,-0.66,-0.66,-0.66,-0.66,-0.66,-0.66,-0.66,-0.66,-0.66,-0.66,-0.66,-0.66,-0.66,-0.66,-0.66,-0.66,-0.66,-0.66,-0.66,-0.66,-0.66,-0.66,-0.653,-0.636,-0.61,-0.58,-0.53,-0.17,-0.06,0.02,0.09,0.13,0.16,0.18,0.196,0.2
|
||||||
|
|
||||||
|
PARAM_BROW_SELECT=0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,-0.19,-0.29,-0.36,-0.41,-0.44,-0.47,-0.487,-0.497,-0.5
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.08,0.2,0.31,0.39,0.42,0.38,0.3,0.26,0.31,0.39,0.44,0.46,0.44,0.37,0.28,0.18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN2=0.9,0.66,0.24,0,0,0,0,0,0,0,0,0,0,0,-0.004,-0.018,-0.04,-0.08,-0.12,-0.18,-0.25,-0.33,-0.43,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-0.63,-0.26,-0.06,0,-0.009,-0.04,-0.09,-0.17,-0.28,-0.43,-1,-0.983,-0.93,-0.86,-0.76,-0.64,-0.51,-0.37,-0.22,-0.07,0.08,0.23,0.37,0.5,0.61,0.71,0.79,0.85,0.89,0.9
|
||||||
|
|
||||||
|
PARAM_MOUTH_EMO=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.23,0.233,0.236,0.239,0.242,0.244,0.245,0.247,0.248,0.25,0.25,0.25,0.25,0.24,0.22,0.202,0.184,0.167,0.15,0.135,0.121,0.107,0.094,0.082,0.071,0.061,0.052,0.043,0.035,0.028,0.022,0.017,0.012,0.009,0.005,0.003,0.001,0,0,0.47,0.47,0.47,0.47,0.47,0.47,0.469,0.47,0.47,0.468,0.47,0.466,0.466,0.465,0.46,0.463,0.462,0.461,0.46,0
|
||||||
|
|
||||||
|
PARAM_CHEEK=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0,1.58,4.42,6,5.62,4.63,3.2,1.56,-0.14,-1.73,-3.08,-4.12,-4.77,-5,-4.76,-4.11,-3.18,-2.07,-0.93,0.18,1.11,1.76,2,1.96,1.85,1.69,1.49,1.27,1.03,0.8,0.58,0.39,0.22,0.1,0.03,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_BODY_Y=0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.63,0.87,1,0.998,0.99,0.979,0.964,0.945,0.92,0.9,0.87,0.84,0.81,0.78,0.75,0.71,0.68,0.64,0.61,0.57,0.54,0.5,0.47,0.44,0.41,0.38,0.35,0.33,0.31,0.287,0.271,0.258,0.248,0.242,0.24,0.244,0.255,0.272,0.3,0.32,0.35,0.39,0.43,0.47,0.5,0.55,0.58,0.62,0.66,0.69,0.72,0.75,0.78,0.794,0.808,0.817,0.82,0.818,0.814,0.806,0.796,0.784,0.77,0.754,0.737,0.719,0.699,0.68,0.66,0.64,0.621,0.601,0.583,0.566,0.55,0.536,0.524,0.514,0.506,0.502,0.5
|
||||||
|
|
||||||
|
PARAM_BOING=0,0.18,0.46,0.73,0.92,1,0.88,0.58,0.18,-0.23,-0.53,-0.65,-0.48,-0.21,0.04,0.22,0.29,0.26,0.17,0.06,-0.05,-0.14,-0.17,-0.157,-0.13,-0.08,-0.04,-0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
53
public/pio/models/pio/motions/Touch4.mtn
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0,0.45,1.51,2.94,4.62,6.42,8.31,10.17,12,14.13,16.1,17.86,19.48,20.94,22.28,23.48,24.54,25.5,26.35,27.09,27.75,28.31,28.77,29.17,29.48,29.71,29.87,29.97,30,29.85,29.41,28.71,27.77,26.65,25.31,23.82,22.24,20.51,18.7,16.89,15,13.11,11.3,9.49,7.76,6.18,4.69,3.35,2.23,1.29,0.59,0.15,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0,-0.26,-0.85,-1.63,-2.52,-3.44,-4.36,-5.22,-6,-6.86,-7.65,-8.35,-8.99,-9.57,-10.09,-10.56,-10.97,-11.33,-11.66,-11.94,-12.18,-12.39,-12.56,-12.7,-12.81,-12.9,-12.96,-12.99,-13,-12.93,-12.75,-12.44,-12.03,-11.55,-10.97,-10.32,-9.64,-8.89,-8.1,-7.32,-6.5,-5.68,-4.9,-4.11,-3.36,-2.68,-2.03,-1.45,-0.97,-0.56,-0.25,-0.07,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0,0.83,2.63,4.88,7.23,9.39,11.21,12.46,13,13.14,13.27,13.38,13.48,13.57,13.64,13.71,13.76,13.81,13.86,13.89,13.92,13.94,13.96,13.974,13.985,13.992,13.997,13.999,14,13.91,13.65,13.23,12.66,11.99,11.19,10.29,9.34,8.3,7.22,6.13,5,3.87,2.78,1.7,0.66,-0.29,-1.19,-1.99,-2.66,-3.23,-3.65,-3.91,-4,-4,-3.71,-2.99,-2.12,-1.27,-0.58,-0.15,0
|
||||||
|
|
||||||
|
PARAM_EMOTION=-1
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.94,0.91,0.84,0.76,0.67,0.61,0.56,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.55,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.94,0.91,0.84,0.76,0.67,0.61,0.56,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN2=-1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.116,0.16,0.22,0.3,0.39,0.49,0.59,0.68,0.76,0.82,0.86,0.88,0.88,0.88,0.88,0.88,0.88,0.88,0.88,0.88,0.88,0.88,0.88,0.88,-0.94,-0.96,-0.975,-0.986,-0.993,-0.997,-0.999,-1
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN2=-1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.115,0.16,0.22,0.3,0.38,0.48,0.58,0.66,0.74,0.81,0.85,0.87,0.873,0.875,0.877,0.878,0.879,0.88,0.88,0.88,0.88,0.88,0.88,0.88,-0.96,-0.973,-0.984,-0.991,-0.995,-0.998,-1,-1
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0,-0.011,-0.04,-0.07,-0.1,-0.13,-0.15,-0.171,-0.18,-0.184,-0.188,-0.191,-0.194,-0.197,-0.199,-0.201,-0.203,-0.204,-0.206,-0.207,-0.208,-0.208,-0.21,-0.209,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.21,-0.195,-0.16,-0.11,-0.07,-0.03,-0.01,0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0,0.009,0.028,0.05,0.08,0.11,0.13,0.15,0.17,0.186,0.2,0.213,0.224,0.234,0.243,0.251,0.258,0.264,0.27,0.274,0.278,0.281,0.284,0.286,0.287,0.289,0.289,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.29,0.27,0.22,0.15,0.09,0.04,0.01,0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0,-0.05,-0.16,-0.3,-0.44,-0.57,-0.67,-0.74,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.77,-0.71,-0.58,-0.41,-0.24,-0.11,-0.03,0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0,-0.05,-0.17,-0.31,-0.45,-0.59,-0.7,-0.77,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.8,-0.74,-0.6,-0.42,-0.25,-0.12,-0.03,0
|
||||||
|
|
||||||
|
PARAM_BROW_ANGLE=0.2,-0.58,-0.59,-0.598,-0.603,-0.607,-0.609,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.61,-0.55,-0.41,-0.23,-0.06,0.08,0.17,0.2
|
||||||
|
|
||||||
|
PARAM_BROW_SELECT=-0.5,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.43,0.36,0.2,-0.01,-0.21,-0.36,-0.47,-0.5
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN2=0.9,0.85,0.73,0.59,0.45,0.31,0.2,0.13,0.1,0.1,0.102,0.105,0.109,0.114,0.12,0.128,0.136,0.145,0.155,0.166,0.178,0.191,0.204,0.218,0.233,0.249,0.266,0.283,0.301,0.319,0.338,0.358,0.378,0.4,0.42,0.44,0.46,0.49,0.51,0.53,0.55,0.58,0.6,0.63,0.65,0.67,0.7,0.72,0.75,0.77,0.8,0.82,0.85,0.87,0.89,0.903,0.906,0.906,0.903,0.901,0.9
|
||||||
|
|
||||||
|
PARAM_MOUTH_EMO=0,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.26,0.259,0.26,0.26,0.26,0.26,0.26,0.26,0.258,0.26,0.26,0.26,0.26,0.257,0.26,0.26,0.26,0.256,0.26,0.26,0.26,0.255,0.25,0.25,0.254,0.25,0.25,0.253,0.25,0.25,0.252,0.25,0.25,0.251,0.25,0.25,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_CHEEK=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0
|
||||||
|
|
||||||
|
PARAM_BODY_Y=0,0.002,0.006,0.014,0.024,0.036,0.05,0.067,0.084,0.103,0.123,0.14,0.17,0.19,0.21,0.23,0.25,0.27,0.291,0.309,0.327,0.343,0.357,0.369,0.38,0.389,0.395,0.399,0.4,0.398,0.392,0.383,0.37,0.355,0.338,0.318,0.3,0.27,0.25,0.23,0.2,0.17,0.15,0.13,0.1,0.08,0.063,0.045,0.03,0.017,0.008,0.002,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.498,0.492,0.483,0.47,0.455,0.437,0.42,0.39,0.37,0.35,0.32,0.29,0.27,0.24,0.21,0.19,0.16,0.14,0.11,0.09,0.072,0.054,0.038,0.025,0.014,0.007,0.002,0,0.003,0.01,0.021,0.037,0.056,0.08,0.1,0.13,0.16,0.19,0.22,0.25,0.28,0.31,0.34,0.37,0.4,0.42,0.44,0.463,0.479,0.49,0.497,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5
|
||||||
|
|
||||||
|
PARAM_BOING=0
|
||||||
|
|
||||||
53
public/pio/models/pio/motions/Touch5.mtn
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0,-0.24,-0.88,-1.85,-3.06,-4.4,-5.82,-7.22,-8.53,-9.69,-10.66,-11.39,-11.84,-12,-11.88,-11.55,-11.06,-10.46,-9.77,-9.04,-8.28,-7.52,-6.77,-6.06,-5.42,-4.85,-4.36,-4,-3.67,-3.35,-3.06,-2.78,-2.53,-2.29,-2.06,-1.85,-1.66,-1.48,-1.31,-1.16,-1.02,-0.89,-0.77,-0.67,-0.57,-0.48,-0.4,-0.33,-0.27,-0.22,-0.17,-0.13,-0.1,-0.07,-0.05,-0.028,-0.015,-0.007,-0.002,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0,-0.34,-1.25,-2.64,-4.39,-6.35,-8.46,-10.57,-12.59,-14.44,-16.07,-17.4,-18.39,-19,-19.5,-19.89,-20.2,-20.45,-20.63,-20.77,-20.87,-20.93,-20.97,-21,-21.005,-21.01,-21.002,-21,-20.93,-20.73,-20.42,-20,-19.49,-18.89,-18.21,-17.46,-16.67,-15.81,-14.93,-14.01,-13.06,-12.09,-11.11,-10.13,-9.17,-8.21,-7.27,-6.36,-5.48,-4.63,-3.85,-3.11,-2.44,-1.84,-1.3,-0.85,-0.49,-0.22,-0.06,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0,-0.16,-0.59,-1.23,-2.04,-2.93,-3.88,-4.82,-5.69,-6.46,-7.11,-7.59,-7.9,-8,-7.79,-7.24,-6.45,-5.46,-4.37,-3.22,-2.07,-0.94,0.11,1.06,1.84,2.46,2.86,3,2.9,2.61,2.17,1.61,0.95,0.22,-0.52,-1.28,-2.02,-2.73,-3.36,-3.92,-4.38,-4.72,-4.93,-5,-4.94,-4.76,-4.48,-4.13,-3.72,-3.27,-2.8,-2.32,-1.86,-1.42,-1.02,-0.67,-0.39,-0.18,-0.04,0
|
||||||
|
|
||||||
|
PARAM_EMOTION=-1
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.55,0.549,0.546,0.542,0.537,0.532,0.526,0.52,0.514,0.51,0.506,0.503,0.501,0.5,0.5,0.5,0.5,0.501,0.5,0.502,0.503,0.504,0.505,0.506,0.507,0.509,0.51,0.511,0.513,0.514,0.516,0.517,0.519,0.521,0.522,0.524,0.526,0.527,0.529,0.53,0.532,0.534,0.535,0.537,0.538,0.539,0.541,0.542,0.543,0.544,0.545,0.546,0.547,0.55,0.548,0.549,0.55,0.55,0.55,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.55,0.549,0.546,0.542,0.537,0.532,0.526,0.52,0.514,0.51,0.506,0.503,0.501,0.5,0.5,0.5,0.5,0.501,0.5,0.502,0.503,0.504,0.505,0.506,0.507,0.509,0.51,0.511,0.513,0.514,0.516,0.517,0.519,0.521,0.522,0.524,0.526,0.527,0.529,0.53,0.532,0.534,0.535,0.537,0.538,0.539,0.541,0.542,0.543,0.544,0.545,0.546,0.547,0.55,0.548,0.549,0.55,0.55,0.55,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN2=-1
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN2=-1
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0,0,0.004,0.008,0.013,0.018,0.024,0.03,0.036,0.04,0.044,0.047,0.049,0.05,0.049,0.047,0.043,0.038,0.033,0.028,0.023,0.018,0.013,0.009,0.005,0.002,0.001,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0,0.002,0.009,0.019,0.033,0.048,0.067,0.086,0.107,0.13,0.15,0.17,0.19,0.21,0.23,0.253,0.27,0.283,0.295,0.304,0.311,0.317,0.322,0.325,0.327,0.329,0.33,0.33,0.329,0.326,0.321,0.314,0.306,0.297,0.286,0.274,0.262,0.248,0.235,0.22,0.205,0.19,0.175,0.159,0.144,0.129,0.114,0.1,0.086,0.073,0.061,0.049,0.038,0.029,0.02,0.013,0.008,0.003,0.001,0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0,-0.002,-0.009,-0.018,-0.031,-0.044,-0.058,-0.072,-0.085,-0.097,-0.107,-0.114,-0.118,-0.12,-0.12,-0.12,-0.12,-0.12,-0.12,-0.12,-0.12,-0.12,-0.12,-0.12,-0.12,-0.12,-0.12,-0.12,-0.12,-0.118,-0.117,-0.114,-0.111,-0.108,-0.104,-0.1,-0.095,-0.09,-0.085,-0.08,-0.075,-0.069,-0.064,-0.058,-0.052,-0.047,-0.042,-0.036,-0.031,-0.026,-0.022,-0.018,-0.014,-0.01,-0.007,-0.005,-0.003,-0.001,0,0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0,-0.002,-0.007,-0.015,-0.026,-0.037,-0.049,-0.062,-0.073,-0.084,-0.093,-0.101,-0.107,-0.11,-0.113,-0.115,-0.116,-0.118,-0.119,-0.119,-0.12,-0.12,-0.12,-0.12,-0.12,-0.12,-0.12,-0.12,-0.12,-0.118,-0.117,-0.114,-0.111,-0.108,-0.104,-0.1,-0.095,-0.09,-0.085,-0.08,-0.075,-0.069,-0.064,-0.058,-0.052,-0.047,-0.042,-0.036,-0.031,-0.026,-0.022,-0.018,-0.014,-0.01,-0.007,-0.005,-0.003,-0.001,0,0
|
||||||
|
|
||||||
|
PARAM_BROW_ANGLE=0.2,0.205,0.22,0.24,0.27,0.3,0.33,0.36,0.39,0.42,0.44,0.456,0.466,0.47,0.47,0.47,0.47,0.47,0.47,0.47,0.47,0.47,0.47,0.47,0.47,0.47,0.47,0.47,0.469,0.467,0.463,0.457,0.451,0.443,0.434,0.425,0.414,0.403,0.392,0.38,0.368,0.355,0.343,0.33,0.318,0.306,0.293,0.282,0.27,0.26,0.25,0.24,0.231,0.224,0.217,0.211,0.206,0.203,0.201,0.2
|
||||||
|
|
||||||
|
PARAM_BROW_SELECT=-0.5
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0,0.91,0.904,0.887,0.86,0.83,0.79,0.75,0.72,0.68,0.65,0.62,0.606,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.6,0.601,0.604,0.609,0.616,0.624,0.633,0.644,0.656,0.669,0.682,0.697,0.712,0.727,0.742,0.758,0.774,0.789,0.804,0.819,0.833,0.846,0.859,0.871,0.882,0.891,0.9,0.907,0.912,0.917,0.919,0.92,0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN2=0.9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-0.999,-1,-1,-0.998,-1,-1,-0.997,-1,-0.996,-1,-0.995,-0.994,-0.99,-0.993,-0.99,-0.991,-0.991,-0.99,-0.989,-0.99,-0.987,-0.986,-0.985,-0.984,-0.983,-0.982,-0.981,-0.98,-0.979,-0.978,-0.977,-0.976,-0.974,-0.973,-0.972,-0.97,-0.969,-0.968,-0.966,-0.965,-0.963,-0.962,-0.96,-0.959,-0.957,-0.955,-0.954,-0.952,-0.95,0.9
|
||||||
|
|
||||||
|
PARAM_MOUTH_EMO=0
|
||||||
|
|
||||||
|
PARAM_CHEEK=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0,-0.02,-0.07,-0.15,-0.25,-0.37,-0.49,-0.6,-0.71,-0.81,-0.89,-0.95,-0.99,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-0.987,-0.95,-0.9,-0.83,-0.74,-0.65,-0.56,-0.46,-0.37,-0.28,-0.2,-0.13,-0.08,-0.04,-0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0,-0.04,-0.16,-0.33,-0.56,-0.83,-1.12,-1.42,-1.72,-2.02,-2.3,-2.57,-2.8,-3,-3.23,-3.41,-3.55,-3.67,-3.76,-3.84,-3.89,-3.93,-3.96,-3.98,-3.991,-3.997,-4,-4,-4,-3.997,-3.992,-3.981,-3.963,-3.94,-3.9,-3.86,-3.8,-3.73,-3.64,-3.54,-3.43,-3.3,-3.16,-3,-2.79,-2.56,-2.31,-2.05,-1.79,-1.53,-1.28,-1.04,-0.82,-0.61,-0.43,-0.28,-0.16,-0.07,-0.02,0
|
||||||
|
|
||||||
|
PARAM_BODY_Y=0,-0.007,-0.026,-0.06,-0.09,-0.13,-0.17,-0.22,-0.26,-0.29,-0.32,-0.34,-0.355,-0.36,-0.352,-0.33,-0.3,-0.26,-0.21,-0.17,-0.12,-0.08,-0.04,0,0.03,0.06,0.074,0.08,0.077,0.069,0.057,0.042,0.024,0.004,-0.017,-0.04,-0.06,-0.078,-0.095,-0.11,-0.123,-0.132,-0.138,-0.14,-0.138,-0.133,-0.126,-0.116,-0.104,-0.091,-0.078,-0.065,-0.052,-0.04,-0.029,-0.019,-0.011,-0.005,-0.001,0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.494,0.479,0.46,0.43,0.4,0.36,0.33,0.3,0.27,0.25,0.234,0.224,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.22,0.221,0.22,0.222,0.22,0.223,0.22,0.224,0.225,0.23,0.227,0.228,0.229,0.23,0.232,0.233,0.235,0.236,0.238,0.24,0.245,0.256,0.271,0.29,0.31,0.33,0.36,0.38,0.41,0.43,0.449,0.466,0.481,0.491,0.498,0.5
|
||||||
|
|
||||||
|
PARAM_BOING=0
|
||||||
|
|
||||||
53
public/pio/models/pio/motions/Touch6.mtn
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=0,-5.36,-13.95,-21.96,-27.75,-30,-25.49,-14.55,0,14.55,25.49,30,25.87,15.84,2.5,-10.84,-20.87,-25,-21.54,-13.14,-2.88,7.13,15.17,20.27,22,20.03,15.78,10.49,4.98,-0.04,-4.2,-6.97,-8,-7.55,-6.38,-4.69,-2.75,-0.74,1.13,2.74,3.96,4.73,5,4.94,4.77,4.51,4.19,3.82,3.42,2.99,2.56,2.12,1.71,1.31,0.95,0.63,0.37,0.17,0.04,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=0,0.82,2.22,3.69,5,6,6.81,7.36,7.71,7.91,7.98,8,7.991,7.93,7.75,7.41,6.85,6,4.68,3.19,1.79,0.6,-0.29,-0.83,-1,-0.93,-0.79,-0.62,-0.43,-0.27,-0.13,-0.03,0,-0.31,-1.12,-2.29,-3.63,-5.03,-6.32,-7.43,-8.28,-8.81,-9,-8.89,-8.58,-8.12,-7.54,-6.88,-6.15,-5.38,-4.61,-3.82,-3.07,-2.36,-1.71,-1.14,-0.67,-0.31,-0.08,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=0,-1.79,-4.65,-7.32,-9.25,-10,-9.02,-6.65,-3.5,-0.35,2.02,3,2.62,1.71,0.5,-0.71,-1.62,-2,-1.56,-0.49,0.82,2.1,3.13,3.78,4,3.28,1.72,-0.22,-2.24,-4.08,-5.61,-6.62,-7,-6.62,-5.63,-4.2,-2.56,-0.86,0.73,2.08,3.12,3.77,4,3.95,3.82,3.61,3.35,3.06,2.73,2.39,2.05,1.7,1.37,1.05,0.76,0.51,0.3,0.14,0.04,0
|
||||||
|
|
||||||
|
PARAM_EMOTION=-1,-0.47,-0.471,-0.475,-0.48,-0.487,-0.493,-0.5,-0.505,-0.509,-0.51,-0.51,-0.51,-0.51,-0.51,-0.509,-0.51,-0.508,-0.507,-0.51,-0.505,-0.504,-0.503,-0.503,-0.502,-0.501,-0.499,-0.498,-0.497,-0.496,-0.495,-0.494,-0.493,-0.492,-0.491,-0.49,-0.489,-0.488,-0.487,-0.486,-0.49,-0.484,-0.484,-0.483,-0.48,-0.482,-0.48,-0.481,-0.48,-0.48,-0.48,-0.48,-0.481,-0.485,-0.492,-0.501,-0.512,-0.525,-0.54,-1
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.55,0.02,0.019,0.019,0.018,0.02,0.017,0.016,0.02,0.015,0.01,0.014,0.013,0.01,0.012,0.01,0.011,0.01,0.01,0.01,0.009,0.01,0.008,0.01,0.01,0.007,0.01,0.006,0.01,0.01,0.005,0,0,0.004,0,0,0.003,0,0,0,0.002,0,0,0,0,0,0.001,0,0,0,0,0,0,0,0,0,0,0,0,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.55,0.02,0.019,0.019,0.018,0.02,0.017,0.016,0.02,0.015,0.01,0.014,0.013,0.01,0.012,0.01,0.011,0.01,0.01,0.01,0.009,0.01,0.008,0.01,0.01,0.007,0.01,0.006,0.01,0.01,0.005,0,0,0.004,0,0,0.003,0,0,0,0.002,0,0,0,0,0,0.001,0,0,0,0,0,0,0,0,0,0,0,0,0.55
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN2=-1,-1,-1,-1,-1,-0.999,-1,-0.998,-0.997,-1,-0.995,-0.994,-0.993,-0.992,-0.991,-0.99,-0.989,-0.987,-0.986,-0.985,-0.983,-0.982,-0.981,-0.979,-0.978,-0.976,-0.975,-0.973,-0.972,-0.97,-0.969,-0.967,-0.966,-0.964,-0.963,-0.961,-0.96,-0.958,-0.957,-0.956,-0.954,-0.953,-0.952,-0.951,-0.949,-0.948,-0.947,-0.946,-0.945,-0.944,-0.944,-0.943,-0.94,-0.942,-0.94,-0.941,-0.94,-0.94,-0.94,-0.94
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN2=-1,-1,-1,-1,-1,-0.999,-1,-0.998,-0.997,-1,-0.995,-0.994,-0.993,-0.992,-0.991,-0.99,-0.989,-0.987,-0.986,-0.985,-0.983,-0.982,-0.981,-0.979,-0.978,-0.976,-0.975,-0.973,-0.972,-0.97,-0.969,-0.967,-0.966,-0.964,-0.963,-0.961,-0.96,-0.958,-0.957,-0.956,-0.954,-0.953,-0.952,-0.951,-0.949,-0.948,-0.947,-0.946,-0.945,-0.944,-0.944,-0.943,-0.94,-0.942,-0.94,-0.941,-0.94,-0.94,-0.94,-0.94
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=0,-0.008,-0.03,-0.06,-0.1,-0.13,-0.17,-0.2,-0.22,-0.235,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.24,-0.224,-0.19,-0.15,-0.1,-0.06,-0.03,-0.01,0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=0,-0.008,-0.03,-0.06,-0.09,-0.13,-0.16,-0.19,-0.21,-0.225,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.23,-0.215,-0.18,-0.14,-0.1,-0.06,-0.03,-0.01,0
|
||||||
|
|
||||||
|
PARAM_BROW_ANGLE=0.2,0.195,0.183,0.164,0.14,0.12,0.102,0.084,0.071,0.063,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.06,0.069,0.089,0.11,0.14,0.16,0.182,0.195,0.2
|
||||||
|
|
||||||
|
PARAM_BROW_SELECT=-0.5
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0,0.91,0.896,0.86,0.8,0.74,0.67,0.61,0.55,0.51,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.53,0.6,0.69,0.78,0.85,0.89,0.91,0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN2=0.9,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0.9
|
||||||
|
|
||||||
|
PARAM_MOUTH_EMO=0
|
||||||
|
|
||||||
|
PARAM_CHEEK=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0,-0.54,-1.39,-2.2,-2.77,-3,-2.83,-2.38,-1.73,-0.98,-0.21,0.51,1.13,1.6,1.9,2,1.9,1.66,1.33,0.95,0.55,0.16,-0.21,-0.52,-0.78,-0.94,-1,-0.997,-0.989,-0.977,-0.96,-0.94,-0.91,-0.88,-0.85,-0.82,-0.78,-0.74,-0.7,-0.66,-0.61,-0.57,-0.52,-0.48,-0.43,-0.39,-0.34,-0.3,-0.26,-0.22,-0.18,-0.15,-0.12,-0.09,-0.06,-0.04,-0.023,-0.011,-0.003,0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0,1.25,3.25,5.12,6.47,7,6.93,6.73,6.43,6.08,5.69,5.29,4.91,4.56,4.26,4,3.7,3.44,3.21,3.01,2.83,2.67,2.52,2.38,2.25,2.12,2,1.87,1.75,1.63,1.51,1.4,1.3,1.19,1.1,1.01,0.92,0.83,0.76,0.68,0.61,0.55,0.48,0.43,0.37,0.32,0.28,0.23,0.2,0.16,0.13,0.1,0.08,0.056,0.039,0.025,0.014,0.006,0.002,0
|
||||||
|
|
||||||
|
PARAM_BODY_Y=0,0.05,0.13,0.2,0.25,0.27,0.27,0.27,0.27,0.27,0.27,0.27,0.27,0.27,0.27,0.27,0.27,0.27,0.27,0.27,0.269,0.268,0.267,0.265,0.264,0.262,0.26,0.257,0.253,0.248,0.243,0.236,0.228,0.22,0.211,0.202,0.192,0.182,0.171,0.16,0.149,0.138,0.126,0.115,0.104,0.093,0.082,0.072,0.062,0.052,0.043,0.035,0.027,0.021,0.015,0.01,0.005,0.002,0.001,0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.56,0.66,0.75,0.81,0.84,0.73,0.57,0.41,0.29,0.25,0.35,0.52,0.67,0.79,0.83,0.73,0.57,0.41,0.3,0.26,0.3,0.4,0.53,0.66,0.76,0.8,0.794,0.78,0.76,0.73,0.7,0.66,0.62,0.59,0.55,0.51,0.48,0.44,0.42,0.39,0.375,0.364,0.36,0.362,0.367,0.374,0.384,0.396,0.409,0.422,0.435,0.448,0.46,0.471,0.481,0.489,0.495,0.499,0.5
|
||||||
|
|
||||||
|
PARAM_BOING=0,0.04,0.14,0.27,0.39,0.49,0.53,0.46,0.29,0.08,-0.13,-0.29,-0.39,-0.43,-0.37,-0.22,-0.03,0.15,0.3,0.39,0.42,0.37,0.26,0.13,0,-0.11,-0.18,-0.2,-0.15,-0.06,0.02,0.08,0.1,0.08,0.04,0.01,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
46
public/pio/models/pio/motions/WakeUp.mtn
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# Live2D Animator Motion Data
|
||||||
|
$fps=30
|
||||||
|
|
||||||
|
$fadein=0
|
||||||
|
|
||||||
|
$fadeout=0
|
||||||
|
|
||||||
|
PARAM_ANGLE_X=10,9.54,8.55,7.31,6.03,4.86,3.89,3.24,3,3.007,3.027,3.06,3.1,3.16,3.22,3.3,3.38,3.47,3.56,3.67,3.77,3.89,4,4.12,4.24,4.36,4.48,4.61,4.73,4.85,4.97,5.08,5.19,5.3,5.4,5.49,5.58,5.66,5.74,5.8,5.86,5.91,5.95,5.98,5.994,6,5.92,5.72,5.41,5.03,4.59,4.1,3.59,3.07,2.54,2.05,1.58,1.14,0.76,0.45,0.21,0.05,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Y=-8,-6.49,-3.23,0.83,5.05,8.9,12.09,14.21,15,14.998,14.993,14.984,14.971,14.954,14.93,14.9,14.87,14.83,14.78,14.73,14.67,14.6,14.53,14.44,14.35,14.25,14.14,14.02,13.89,13.75,13.6,13.45,13.28,13.09,12.9,12.7,12.49,12.26,12.02,11.77,11.5,11.23,10.94,10.64,10.33,10,9.53,8.95,8.27,7.54,6.76,5.96,5.15,4.36,3.58,2.85,2.18,1.57,1.04,0.6,0.28,0.07,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
|
PARAM_ANGLE_Z=10,8.82,6.27,3.09,-0.21,-3.22,-5.72,-7.38,-8,-7.999,-7.996,-7.99,-7.981,-7.969,-7.954,-7.934,-7.91,-7.88,-7.85,-7.81,-7.76,-7.71,-7.66,-7.59,-7.52,-7.45,-7.36,-7.27,-7.17,-7.06,-6.94,-6.81,-6.68,-6.53,-6.38,-6.21,-6.04,-5.85,-5.66,-5.46,-5.24,-5.02,-4.78,-4.53,-4.27,-4,-3.54,-2.87,-2.01,-1.03,0.03,1.16,2.32,3.47,4.61,5.69,6.69,7.61,8.42,9.07,9.57,9.89,10,9.19,7.81,6.35,5.03,4,2.98,2.16,1.5,0.99,0.62,0.35,0.18,0.07,0.02,0
|
||||||
|
|
||||||
|
PARAM_EMOTION=0
|
||||||
|
|
||||||
|
PARAM_EYE_L_OPEN=0.06,0.08,0.14,0.21,0.28,0.34,0.39,0.43,0.44,0.44,0.44,0.44,0.439,0.438,0.44,0.436,0.435,0.434,0.432,0.431,0.43,0.428,0.427,0.425,0.423,0.422,0.42,0.419,0.417,0.415,0.414,0.412,0.411,0.409,0.408,0.407,0.406,0.404,0.403,0.403,0.402,0.4,0.401,0.4,0.4,0.4,0.59,0.64,0.69,0.73,0.76,0.79,0.807,0.82,0.828,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.819,0.79,0.75,0.7,0.65,0.6,0.56,0.53,0.507,0.5
|
||||||
|
|
||||||
|
PARAM_EYE_R_OPEN=0.05,0.08,0.13,0.2,0.27,0.34,0.39,0.43,0.44,0.44,0.44,0.44,0.439,0.438,0.44,0.436,0.435,0.434,0.432,0.431,0.43,0.428,0.427,0.425,0.423,0.422,0.42,0.419,0.417,0.415,0.414,0.412,0.411,0.409,0.408,0.407,0.406,0.404,0.403,0.403,0.402,0.4,0.401,0.4,0.4,0.4,0.59,0.64,0.69,0.73,0.76,0.79,0.807,0.82,0.828,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.83,0.819,0.79,0.75,0.7,0.65,0.6,0.56,0.53,0.507,0.5
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_X=0,0.004,0.014,0.026,0.039,0.05,0.06,0.067,0.07,0.071,0.072,0.073,0.074,0.075,0.076,0.076,0.077,0.078,0.08,0.08,0.08,0.081,0.08,0.083,0.083,0.084,0.08,0.086,0.086,0.087,0.09,0.088,0.089,0.09,0.091,0.092,0.092,0.093,0.09,0.095,0.096,0.096,0.097,0.098,0.099,0.1,0.102,0.105,0.109,0.113,0.118,0.122,0.125,0.128,0.129,0.13,0.13,0.13,0.13,0.13,0.13,0.128,0.127,0.125,0.122,0.119,0.115,0.11,0.101,0.089,0.074,0.058,0.042,0.028,0.016,0.007,0.002,0
|
||||||
|
|
||||||
|
PARAM_EYE_BALL_Y=-1,-0.97,-0.89,-0.79,-0.7,-0.61,-0.53,-0.48,-0.46,-0.457,-0.455,-0.452,-0.45,-0.448,-0.446,-0.444,-0.442,-0.44,-0.438,-0.437,-0.435,-0.434,-0.433,-0.431,-0.43,-0.429,-0.428,-0.427,-0.426,-0.425,-0.425,-0.424,-0.42,-0.423,-0.42,-0.422,-0.42,-0.42,-0.421,-0.42,-0.42,-0.42,-0.42,-0.42,-0.42,-0.42,-0.429,-0.45,-0.49,-0.53,-0.58,-0.62,-0.66,-0.7,-0.73,-0.75,-0.769,-0.785,-0.798,-0.808,-0.816,-0.821,-0.825,-0.828,-0.829,-0.83,-0.83,-0.83,-0.8,-0.73,-0.62,-0.49,-0.37,-0.25,-0.14,-0.07,-0.02,0
|
||||||
|
|
||||||
|
PARAM_BROW_L_Y=-1,-0.99,-0.97,-0.94,-0.91,-0.88,-0.85,-0.83,-0.81,-0.794,-0.778,-0.763,-0.749,-0.735,-0.722,-0.709,-0.698,-0.686,-0.675,-0.665,-0.655,-0.646,-0.637,-0.629,-0.621,-0.613,-0.607,-0.6,-0.594,-0.589,-0.584,-0.579,-0.575,-0.571,-0.567,-0.564,-0.561,-0.559,-0.557,-0.555,-0.553,-0.552,-0.551,-0.55,-0.55,-0.55,-0.561,-0.59,-0.63,-0.68,-0.73,-0.78,-0.82,-0.85,-0.873,-0.88,-0.88,-0.88,-0.88,-0.88,-0.879,-0.876,-0.872,-0.867,-0.859,-0.849,-0.836,-0.82,-0.78,-0.69,-0.59,-0.46,-0.34,-0.23,-0.13,-0.06,-0.02,0
|
||||||
|
|
||||||
|
PARAM_BROW_R_Y=-1,-0.988,-0.96,-0.93,-0.9,-0.87,-0.84,-0.819,-0.81,-0.806,-0.802,-0.799,-0.795,-0.792,-0.789,-0.786,-0.783,-0.78,-0.778,-0.775,-0.773,-0.771,-0.769,-0.767,-0.765,-0.764,-0.762,-0.761,-0.759,-0.758,-0.757,-0.756,-0.755,-0.754,-0.754,-0.753,-0.75,-0.752,-0.75,-0.751,-0.75,-0.75,-0.75,-0.75,-0.75,-0.75,-0.759,-0.78,-0.81,-0.85,-0.89,-0.93,-0.96,-0.98,-0.995,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-0.97,-0.88,-0.75,-0.6,-0.44,-0.3,-0.17,-0.08,-0.02,0
|
||||||
|
|
||||||
|
PARAM_BROW_L_ANGLE=0
|
||||||
|
|
||||||
|
PARAM_BROW_R_ANGLE=0
|
||||||
|
|
||||||
|
PARAM_EAR_DEFORM=0,0.02,0.07,0.13,0.19,0.24,0.29,0.32,0.33,0.33,0.33,0.328,0.327,0.325,0.323,0.32,0.318,0.315,0.311,0.308,0.304,0.299,0.295,0.29,0.285,0.28,0.274,0.269,0.263,0.257,0.251,0.244,0.238,0.231,0.225,0.218,0.211,0.204,0.197,0.19,0.183,0.176,0.169,0.161,0.154,0.147,0.14,0.133,0.126,0.119,0.112,0.105,0.099,0.092,0.086,0.079,0.073,0.067,0.061,0.056,0.05,0.045,0.04,0.035,0.031,0.026,0.022,0.019,0.015,0.012,0.01,0.007,0.005,0.003,0.002,0.001,0,0
|
||||||
|
|
||||||
|
PARAM_MOUTH_OPEN_Y=0.79,0.79,0.79,0.788,0.786,0.784,0.782,0.779,0.776,0.773,0.769,0.765,0.76,0.756,0.751,0.745,0.74,0.734,0.729,0.722,0.716,0.71,0.703,0.697,0.69,0.683,0.676,0.669,0.662,0.655,0.648,0.641,0.634,0.626,0.62,0.612,0.606,0.599,0.592,0.586,0.579,0.573,0.567,0.561,0.555,0.55,0.545,0.54,0.535,0.531,0.527,0.523,0.52,0.517,0.515,0.512,0.51,0.509,0.507,0.506,0.504,0.503,0.502,0.502,0.5,0.501,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_X=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Y=0
|
||||||
|
|
||||||
|
PARAM_BODY_ANGLE_Z=0
|
||||||
|
|
||||||
|
PARAM_BREATH=0.5,0.514,0.55,0.58,0.62,0.66,0.69,0.712,0.72,0.719,0.717,0.714,0.71,0.704,0.698,0.69,0.682,0.673,0.664,0.653,0.643,0.631,0.62,0.608,0.596,0.584,0.572,0.559,0.547,0.535,0.523,0.512,0.501,0.49,0.48,0.471,0.462,0.454,0.446,0.44,0.434,0.429,0.425,0.422,0.421,0.42,0.42,0.421,0.422,0.424,0.426,0.428,0.431,0.433,0.436,0.44,0.443,0.447,0.45,0.454,0.458,0.461,0.465,0.469,0.472,0.476,0.479,0.482,0.485,0.488,0.491,0.493,0.495,0.497,0.498,0.499,0.5,0.5
|
||||||
|
|
||||||
|
PARAM_HAIR_SIDE=0
|
||||||
|
|
||||||
|
PARAM_HAIR_BACK=0
|
||||||
BIN
public/pio/models/pio/textures/default-costume.png
Normal file
|
After Width: | Height: | Size: 589 KiB |
BIN
public/pio/models/pio/textures/pajamas-costume.png
Normal file
|
After Width: | Height: | Size: 459 KiB |
BIN
public/pio/models/pio/textures/school-costume.png
Normal file
|
After Width: | Height: | Size: 552 KiB |
BIN
public/pio/static/avatar.jpg
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
1
public/pio/static/l2d.js
Normal file
120
public/pio/static/pio.css
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
/* ----
|
||||||
|
|
||||||
|
# Pio Plugin
|
||||||
|
# By: Dreamer-Paul
|
||||||
|
# Last Update: 2022.8.12
|
||||||
|
|
||||||
|
一个支持更换 Live2D 模型的 Typecho 插件。
|
||||||
|
|
||||||
|
本代码为奇趣保罗原创,并遵守 GPL 2.0 开源协议。欢迎访问我的博客:https://paugram.com
|
||||||
|
|
||||||
|
---- */
|
||||||
|
|
||||||
|
.pio-container{
|
||||||
|
bottom: 0;
|
||||||
|
z-index: 52;
|
||||||
|
color: #666;
|
||||||
|
position: fixed;
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pio-container .pio-show{
|
||||||
|
left: -1em;
|
||||||
|
bottom: 1em;
|
||||||
|
width: 3em;
|
||||||
|
height: 3em;
|
||||||
|
display: none;
|
||||||
|
cursor: pointer;
|
||||||
|
position: absolute;
|
||||||
|
border-radius: 3em;
|
||||||
|
border: 3px solid #fff;
|
||||||
|
transition: transform .3s;
|
||||||
|
background: url(avatar.jpg) center/contain;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pio-container.hidden .pio-show{
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.pio-container.hidden .pio-show:hover{
|
||||||
|
transform: translateX(.5em);
|
||||||
|
}
|
||||||
|
|
||||||
|
.pio-container.hidden #pio,
|
||||||
|
.pio-container.hidden .pio-action,
|
||||||
|
.pio-container.hidden .pio-dialog{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pio-container.left{ left: 0 }
|
||||||
|
.pio-container.right{ right: 0 }
|
||||||
|
.pio-container.active{ cursor: move }
|
||||||
|
.pio-container.static{ pointer-events: none }
|
||||||
|
|
||||||
|
.pio-container .pio-action{
|
||||||
|
top: 3em;
|
||||||
|
opacity: 0;
|
||||||
|
position: absolute;
|
||||||
|
transition: opacity .3s;
|
||||||
|
}
|
||||||
|
.pio-container.left .pio-action{ right: 0 }
|
||||||
|
.pio-container.right .pio-action{ left: 0 }
|
||||||
|
.pio-container:hover .pio-action{ opacity: 1 }
|
||||||
|
|
||||||
|
.pio-action span{
|
||||||
|
color: #fff;
|
||||||
|
width: 1.5em;
|
||||||
|
height: 1.5em;
|
||||||
|
display: block;
|
||||||
|
cursor: pointer;
|
||||||
|
text-align: center;
|
||||||
|
border-radius: 66%;
|
||||||
|
margin-bottom: .5em;
|
||||||
|
border: 1px solid #666;
|
||||||
|
background: #fff center/70% no-repeat;
|
||||||
|
}
|
||||||
|
.pio-action .pio-home{
|
||||||
|
background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTg5My43IDUwNS45SDEyOS4zYy0xMyAwLTI0LjgtNy45LTI5LjgtMTkuOS01LTEyLTIuMi0yNS45IDctMzUuMmwzMDctMzA3YzI2LjEtMjYuMSA2MC45LTQwLjUgOTgtNDAuNXM3MS45IDE0LjQgOTggNDAuNWwzMDcgMzA3YzkuMiA5LjIgMTIgMjMuMSA3IDM1LjItNSAxMi4xLTE2LjcgMTkuOS0yOS44IDE5Ljl6TTY3My4yIDkxOS45aC0zMS41Yy0xNy44IDAtMzIuMy0xNC40LTMyLjMtMzIuM3YtNzcuNGMwLTIzLjEtMTguOC00Mi4xLTQxLjktNDIuNC0yMi4zIDAuMy00MS4xIDE5LjMtNDEuMSA0Mi40djc3LjRjMCAxNy44LTE0LjQgMzIuMy0zMi4zIDMyLjNIMzQ5LjhjLTcwLjkgMC0xMjguNy02My43LTEyOC43LTE0MS45VjU4MS45YzAtMTcuOCAxNC40LTMyLjMgMzIuMy0zMi4zaDUxNi4yYzE3LjggMCAzMi4zIDE0LjQgMzIuMyAzMi4zVjc3OGMtMC4xIDc4LjMtNTcuOCAxNDEuOS0xMjguNyAxNDEuOXoiPjwvcGF0aD48L3N2Zz4=);
|
||||||
|
}
|
||||||
|
.pio-action .pio-close{
|
||||||
|
background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTE1NS4yNTIgOTQzLjgyNWMtMTkuMjEzIDAtMzguNDI5LTcuMzMyLTUzLjA4OS0yMS45ODgtMjkuMzE3LTI5LjMyMS0yOS4zMTctNzYuODU1IDAtMTA2LjE3NWw3MTMuNDk0LTcxMy40OTRjMjkuMzE3LTI5LjMyMSA3Ni44NTMtMjkuMzIxIDEwNi4xNzUgMCAyOS4zMTcgMjkuMzE3IDI5LjMxNyA3Ni44NTUgMCAxMDYuMTc1bC03MTMuNDk0IDcxMy40OTRjLTE0LjY2IDE0LjY2LTMzLjg3NCAyMS45ODgtNTMuMDg5IDIxLjk4OHoiIGZpbGw9IiI+PC9wYXRoPjxwYXRoIGQ9Ik04NjguNzQ5IDk0My44MjRjLTE5LjIxMyAwLTM4LjQyOC03LjMzMi01My4wODktMjEuOTg4bC03MTMuNDk0LTcxMy40OTNjLTI5LjMxNy0yOS4zMTctMjkuMzE3LTc2Ljg1NyAwLTEwNi4xNzUgMjkuMzE2LTI5LjMxNyA3Ni44NTUtMjkuMzIxIDEwNi4xNzQgMGw3MTMuNDk0IDcxMy40OTJjMjkuMzE3IDI5LjMyMSAyOS4zMTcgNzYuODU1IDAgMTA2LjE3NS0xNC42NTcgMTQuNjYxLTMzLjg3MSAyMS45OTMtNTMuMDg3IDIxLjk5M3oiIGZpbGw9IiI+PC9wYXRoPjwvc3ZnPg==);
|
||||||
|
}
|
||||||
|
.pio-action .pio-skin{
|
||||||
|
background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTk2NS45MTEgMzEwLjUzMWwtMTc0LjQtMTc0LjM5OGMtMTMuMDIyLTEzLjAyMS0zMC45MzMtMTkuNjQ5LTQ5LjM4MS0xOC4yMjgtMS43NC0wLjE1LTMuNDIyLTAuMjI0LTUuMDctMC4yMjRsLTkyLjkxNCAwLTYuNTE3IDMuNjI1Yy0zNC40MjEgMTkuMTQ2LTc4LjM0MSAyOS42ODktMTIzLjY2OCAyOS42ODktNDUuMzI4IDAtODkuMjQ2LTEwLjU0My0xMjMuNjY3LTI5LjY4OWwtNi41MTgtMy42MjVMMjkwLjg2IDExNy42ODFjLTIzLjY5MSAwLTQ0Ljk4NiAxMi45MjQtNTUuOTk1IDMzLjQ1MUw2Mi40NzcgMzIzLjUyMWMtMTEuOSAxMS44OTktMTguNDU0IDI3LjcyLTE4LjQ1NCA0NC41NDggMCAxNi44MjkgNi41NTQgMzIuNjQ5IDE4LjQ1MyA0NC41NDlsMTI1Ljk1MyAxMjUuOTU1YzEwLjU0IDEwLjUzOCAyNC4xNTcgMTYuODc4IDM4LjgyNiAxOC4xODFsMCAzMDQuMzk5YzAgMzUuMDczIDI4LjUzMyA2My42MDYgNjMuNjA0IDYzLjYwNmw0NDYuMTk5IDBjMzUuMDc0IDAgNjMuNjA3LTI4LjUzMyA2My42MDctNjMuNjA2bC0wLjAwMS0zMTcuMzQ1YzE0Ljg0NC0xLjIxMSAyOC42MzktNy41NzcgMzkuMjg4LTE4LjIyNEw5NjUuOTEgMzk5LjYyOEM5OTAuNDc1IDM3NS4wNjQgOTkwLjQ3NSAzMzUuMDk1IDk2NS45MTEgMzEwLjUzMXoiPjwvcGF0aD48L3N2Zz4=);
|
||||||
|
}
|
||||||
|
.pio-action .pio-info{
|
||||||
|
background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTY4Mi45IDgyNS45SDI2Ny44Yy0yMS44IDAtMzkuNS0xNy43LTM5LjUtMzkuNXMxNy43LTM5LjUgMzkuNS0zOS41aDQxNS4xYzIxLjggMCAzOS41IDE3LjcgMzkuNSAzOS41cy0xNy43IDM5LjUtMzkuNSAzOS41ek04NjQuNyAxMDAuNGMtMTguNSAzLjctMzEuMyAyMC45LTMxLjMgMzkuN3Y2NDUuOGMwIDQ4LTM4LjkgODctODcgODdIMjE5LjNjLTE2LjQgMC0yOS42LTEzLjMtMjkuNi0yOS42VjczMi43YzAtMTYuMSAxMy4xLTI5LjIgMjkuMi0yOS4yaDM3NS45Yzg4LjEgMCAxNTkuNS03MS40IDE1OS41LTE1OS41VjE4NS41YzAtNjYuMi01My43LTExOS45LTExOS45LTExOS45aC00MDRjLTY2LjIgMC0xMTkuOSA1My43LTExOS45IDExOS45djY1Ny44YzAgNjAgNDguNyAxMDguNyAxMDguNyAxMDguN2g1MjcuMWM5MS43IDAgMTY2LjEtNzQuMyAxNjYuMS0xNjYuMVYxMzkuMWMwLjEtMjQuNi0yMi4yLTQzLjktNDcuNy0zOC43eiI+PC9wYXRoPjwvc3ZnPg==);
|
||||||
|
}
|
||||||
|
.pio-action .pio-night{
|
||||||
|
background-image: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTUxMiAyMDkuNDAzMjQxYy0yMDEuNzMxNTE0IDAtMzc0LjAwOTIwNiAxMjUuNDc2NzgzLTQ0My44MDg5MjIgMzAyLjU5Njc1OSA2OS43OTg2OTIgMTc3LjExOTk3NyAyNDIuMDc3NDA4IDMwMi41OTY3NTkgNDQzLjgwODkyMiAzMDIuNTk2NzU5IDIwMS45MzMxMDUgMCAzNzQuMDEwMjI5LTEyNS40NzY3ODMgNDQzLjgwODkyMi0zMDIuNTk2NzU5Qzg4Ni4wMDkyMDYgMzM0Ljg4MDAyMyA3MTMuOTMzMTA1IDIwOS40MDMyNDEgNTEyIDIwOS40MDMyNDF6TTUxMiA3MTMuNzMxNTE0Yy0xMTEuMzU1MTU3IDAtMjAxLjczMTUxNC05MC4zNzUzMzQtMjAxLjczMTUxNC0yMDEuNzMxNTE0czkwLjM3NTMzNC0yMDEuNzMxNTE0IDIwMS43MzE1MTQtMjAxLjczMTUxNCAyMDEuNzMxNTE0IDkwLjM3NTMzNCAyMDEuNzMxNTE0IDIwMS43MzE1MTRTNjIzLjM1NTE1NyA3MTMuNzMxNTE0IDUxMiA3MTMuNzMxNTE0ek01MTIgMzkwLjk2MTI5NmMtNjYuNzcyNzc2IDAtMTIxLjAzODcwNCA1NC4yNjU5MjgtMTIxLjAzODcwNCAxMjEuMDM4NzA0czU0LjI2NTkyOCAxMjEuMDM4NzA0IDEyMS4wMzg3MDQgMTIxLjAzODcwNCAxMjEuMDM4NzA0LTU0LjI2NTkyOCAxMjEuMDM4NzA0LTEyMS4wMzg3MDRTNTc4Ljc3Mjc3NiAzOTAuOTYxMjk2IDUxMiAzOTAuOTYxMjk2eiI+PC9wYXRoPjwvc3ZnPg==);
|
||||||
|
}
|
||||||
|
|
||||||
|
.pio-container .pio-dialog{
|
||||||
|
bottom: 90%;
|
||||||
|
bottom: calc(100% - 2em);
|
||||||
|
opacity: 0;
|
||||||
|
z-index: -1;
|
||||||
|
font-size: .8em;
|
||||||
|
min-width: 12em;
|
||||||
|
background: #fff;
|
||||||
|
padding: .75em 1em;
|
||||||
|
border-radius: 1em;
|
||||||
|
visibility: hidden;
|
||||||
|
position: absolute;
|
||||||
|
word-break: break-all;
|
||||||
|
border: 1px solid #eee;
|
||||||
|
transition: opacity .3s, visibility .3s;
|
||||||
|
}
|
||||||
|
.pio-container .pio-dialog.active{
|
||||||
|
opacity: 1;
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pio-container.left .pio-dialog{ left: 1em }
|
||||||
|
.pio-container.right .pio-dialog{ right: 1em }
|
||||||
|
|
||||||
|
#pio{ vertical-align: middle }
|
||||||
|
|
||||||
|
@media screen and (max-width: 768px){
|
||||||
|
#pio{ width: 8em }
|
||||||
|
.pio-container{ pointer-events: none }
|
||||||
|
}
|
||||||
347
public/pio/static/pio.js
Normal file
@@ -0,0 +1,347 @@
|
|||||||
|
/* ----
|
||||||
|
|
||||||
|
# Pio Plugin
|
||||||
|
# By: Dreamer-Paul
|
||||||
|
# Last Update: 2022.8.12
|
||||||
|
|
||||||
|
一个支持更换 Live2D 模型的 JS 插件
|
||||||
|
|
||||||
|
本代码为奇趣保罗原创,并遵守 GPL 2.0 开源协议。欢迎访问我的博客:https://paugram.com
|
||||||
|
|
||||||
|
---- */
|
||||||
|
|
||||||
|
var Paul_Pio = function (prop) {
|
||||||
|
const that = this;
|
||||||
|
|
||||||
|
const current = {
|
||||||
|
idol: 0,
|
||||||
|
timeout: undefined,
|
||||||
|
menu: document.querySelector(".pio-container .pio-action"),
|
||||||
|
canvas: document.getElementById("pio"),
|
||||||
|
body: document.querySelector(".pio-container"),
|
||||||
|
root: document.location.origin + "/"
|
||||||
|
};
|
||||||
|
|
||||||
|
// 工具通用函数
|
||||||
|
const tools = {
|
||||||
|
// 创建内容
|
||||||
|
create: (tag, options) => {
|
||||||
|
const el = document.createElement(tag);
|
||||||
|
options.class && (el.className = options.class);
|
||||||
|
|
||||||
|
return el;
|
||||||
|
},
|
||||||
|
// 随机内容
|
||||||
|
rand: (arr) => {
|
||||||
|
return arr[Math.floor(Math.random() * arr.length + 1) - 1];
|
||||||
|
},
|
||||||
|
// 是否为移动设备
|
||||||
|
isMobile: () => {
|
||||||
|
let ua = window.navigator.userAgent.toLowerCase();
|
||||||
|
ua = ua.indexOf("mobile") || ua.indexOf("android") || ua.indexOf("ios");
|
||||||
|
|
||||||
|
return window.innerWidth < 500 || ua !== -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const elements = {
|
||||||
|
home: tools.create("span", { class: "pio-home" }),
|
||||||
|
skin: tools.create("span", { class: "pio-skin" }),
|
||||||
|
info: tools.create("span", { class: "pio-info" }),
|
||||||
|
night: tools.create("span", { class: "pio-night" }),
|
||||||
|
close: tools.create("span", { class: "pio-close" }),
|
||||||
|
|
||||||
|
dialog: tools.create("div", { class: "pio-dialog" }),
|
||||||
|
show: tools.create("div", { class: "pio-show" })
|
||||||
|
};
|
||||||
|
|
||||||
|
current.body.appendChild(elements.dialog);
|
||||||
|
current.body.appendChild(elements.show);
|
||||||
|
|
||||||
|
/* - 方法 */
|
||||||
|
const modules = {
|
||||||
|
// 更换模型
|
||||||
|
idol: () => {
|
||||||
|
current.idol < (prop.model.length - 1) ? current.idol++ : current.idol = 0;
|
||||||
|
|
||||||
|
return current.idol;
|
||||||
|
},
|
||||||
|
// 创建对话框方法
|
||||||
|
message: (text, options = {}) => {
|
||||||
|
const { dialog } = elements;
|
||||||
|
|
||||||
|
if (text.constructor === Array) {
|
||||||
|
dialog.innerText = tools.rand(text);
|
||||||
|
}
|
||||||
|
else if (text.constructor === String) {
|
||||||
|
dialog[options.html ? "innerHTML" : "innerText"] = text;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
dialog.innerText = "输入内容出现问题了 X_X";
|
||||||
|
}
|
||||||
|
|
||||||
|
dialog.classList.add("active");
|
||||||
|
|
||||||
|
current.timeout = clearTimeout(current.timeout) || undefined;
|
||||||
|
current.timeout = setTimeout(() => {
|
||||||
|
dialog.classList.remove("active");
|
||||||
|
}, options.time || 3000);
|
||||||
|
},
|
||||||
|
// 移除方法
|
||||||
|
destroy: () => {
|
||||||
|
that.initHidden();
|
||||||
|
localStorage.setItem("posterGirl", "0");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
this.destroy = modules.destroy;
|
||||||
|
this.message = modules.message;
|
||||||
|
|
||||||
|
/* - 提示操作 */
|
||||||
|
const action = {
|
||||||
|
// 欢迎
|
||||||
|
welcome: () => {
|
||||||
|
if (document.referrer && document.referrer.includes(current.root)) {
|
||||||
|
const referrer = document.createElement("a");
|
||||||
|
referrer.href = document.referrer;
|
||||||
|
|
||||||
|
if (prop.content.referer) {
|
||||||
|
modules.message(prop.content.referer.replace(/%t/, `“${referrer.hostname}”`));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
modules.message(`欢迎来自 “${referrer.hostname}” 的朋友!`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (prop.tips) {
|
||||||
|
let text, hour = new Date().getHours();
|
||||||
|
|
||||||
|
if (hour > 22 || hour <= 5) {
|
||||||
|
text = "你是夜猫子呀?这么晚还不睡觉,明天起的来嘛";
|
||||||
|
}
|
||||||
|
else if (hour > 5 && hour <= 8) {
|
||||||
|
text = "早上好!";
|
||||||
|
}
|
||||||
|
else if (hour > 8 && hour <= 11) {
|
||||||
|
text = "上午好!工作顺利嘛,不要久坐,多起来走动走动哦!";
|
||||||
|
}
|
||||||
|
else if (hour > 11 && hour <= 14) {
|
||||||
|
text = "中午了,工作了一个上午,现在是午餐时间!";
|
||||||
|
}
|
||||||
|
else if (hour > 14 && hour <= 17) {
|
||||||
|
text = "午后很容易犯困呢,今天的运动目标完成了吗?";
|
||||||
|
}
|
||||||
|
else if (hour > 17 && hour <= 19) {
|
||||||
|
text = "傍晚了!窗外夕阳的景色很美丽呢,最美不过夕阳红~";
|
||||||
|
}
|
||||||
|
else if (hour > 19 && hour <= 21) {
|
||||||
|
text = "晚上好,今天过得怎么样?";
|
||||||
|
}
|
||||||
|
else if (hour > 21 && hour <= 23) {
|
||||||
|
text = "已经这么晚了呀,早点休息吧,晚安~";
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
text = "奇趣保罗说:这个是无法被触发的吧,哈哈";
|
||||||
|
}
|
||||||
|
|
||||||
|
modules.message(text);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
modules.message(prop.content.welcome || "欢迎来到本站!");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 触摸
|
||||||
|
touch: () => {
|
||||||
|
current.canvas.onclick = () => {
|
||||||
|
modules.message(prop.content.touch || ["你在干什么?", "再摸我就报警了!", "HENTAI!", "不可以这样欺负我啦!"]);
|
||||||
|
};
|
||||||
|
},
|
||||||
|
// 右侧按钮
|
||||||
|
buttons: () => {
|
||||||
|
// 返回首页 - 使用 Swup 无刷新跳转
|
||||||
|
elements.home.onclick = () => {
|
||||||
|
// 检查 Swup 是否可用
|
||||||
|
if (typeof window !== 'undefined' && window.swup) {
|
||||||
|
try {
|
||||||
|
// 使用 Swup 进行无刷新跳转
|
||||||
|
window.swup.navigate('/');
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Swup navigation failed:', error);
|
||||||
|
// 降级到普通跳转
|
||||||
|
location.href = current.root;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Swup 不可用时使用普通跳转
|
||||||
|
location.href = current.root;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
elements.home.onmouseover = () => {
|
||||||
|
modules.message(prop.content.home || "点击这里回到首页!");
|
||||||
|
};
|
||||||
|
current.menu.appendChild(elements.home);
|
||||||
|
|
||||||
|
// 更换模型
|
||||||
|
if (prop.model && prop.model.length > 1) {
|
||||||
|
elements.skin.onclick = () => {
|
||||||
|
loadlive2d("pio", prop.model[modules.idol()]);
|
||||||
|
|
||||||
|
prop.content.skin && modules.message(prop.content.skin[1] || "新衣服真漂亮~");
|
||||||
|
};
|
||||||
|
elements.skin.onmouseover = () => {
|
||||||
|
prop.content.skin && modules.message(prop.content.skin[0] || "想看看我的新衣服吗?");
|
||||||
|
};
|
||||||
|
current.menu.appendChild(elements.skin);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关于我
|
||||||
|
elements.info.onclick = () => {
|
||||||
|
window.open(prop.content.link || "https://paugram.com/coding/add-poster-girl-with-plugin.html");
|
||||||
|
};
|
||||||
|
elements.info.onmouseover = () => {
|
||||||
|
modules.message("想了解更多关于我的信息吗?");
|
||||||
|
};
|
||||||
|
current.menu.appendChild(elements.info);
|
||||||
|
|
||||||
|
// 夜间模式
|
||||||
|
if (prop.night) {
|
||||||
|
elements.night.onclick = () => {
|
||||||
|
typeof prop.night === "function" ? prop.night() : eval(prop.night);
|
||||||
|
};
|
||||||
|
elements.night.onmouseover = () => {
|
||||||
|
modules.message("夜间点击这里可以保护眼睛呢");
|
||||||
|
};
|
||||||
|
current.menu.appendChild(elements.night);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 关闭看板娘
|
||||||
|
elements.close.onclick = () => {
|
||||||
|
modules.destroy();
|
||||||
|
};
|
||||||
|
elements.close.onmouseover = () => {
|
||||||
|
modules.message(prop.content.close || "QWQ 下次再见吧~");
|
||||||
|
};
|
||||||
|
current.menu.appendChild(elements.close);
|
||||||
|
},
|
||||||
|
// 自定义选择器
|
||||||
|
custom: () => {
|
||||||
|
prop.content.custom.forEach((item) => {
|
||||||
|
const el = document.querySelectorAll(item.selector);
|
||||||
|
|
||||||
|
if (!el.length) return;
|
||||||
|
|
||||||
|
for (let i = 0; i < el.length; i++) {
|
||||||
|
if (item.type === "read") {
|
||||||
|
el[i].onmouseover = (ev) => {
|
||||||
|
const text = ev.currentTarget.title || ev.currentTarget.innerText;
|
||||||
|
modules.message("想阅读 %t 吗?".replace(/%t/, "“" + text + "”"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (item.type === "link") {
|
||||||
|
el[i].onmouseover = (ev) => {
|
||||||
|
const text = ev.currentTarget.title || ev.currentTarget.innerText;
|
||||||
|
modules.message("想了解一下 %t 吗?".replace(/%t/, "“" + text + "”"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (item.text) {
|
||||||
|
el[i].onmouseover = () => {
|
||||||
|
modules.message(t.text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/* - 运行 */
|
||||||
|
const begin = {
|
||||||
|
static: () => {
|
||||||
|
current.body.classList.add("static");
|
||||||
|
},
|
||||||
|
fixed: () => {
|
||||||
|
action.touch();
|
||||||
|
action.buttons();
|
||||||
|
},
|
||||||
|
draggable: () => {
|
||||||
|
action.touch();
|
||||||
|
action.buttons();
|
||||||
|
|
||||||
|
const body = current.body;
|
||||||
|
|
||||||
|
const location = {
|
||||||
|
x: 0,
|
||||||
|
y: 0
|
||||||
|
};
|
||||||
|
|
||||||
|
const mousedown = (ev) => {
|
||||||
|
const { offsetLeft, offsetTop } = ev.currentTarget;
|
||||||
|
|
||||||
|
location.x = ev.clientX - offsetLeft;
|
||||||
|
location.y = ev.clientY - offsetTop;
|
||||||
|
|
||||||
|
document.addEventListener("mousemove", mousemove);
|
||||||
|
document.addEventListener("mouseup", mouseup);
|
||||||
|
};
|
||||||
|
|
||||||
|
const mousemove = (ev) => {
|
||||||
|
body.classList.add("active");
|
||||||
|
body.classList.remove("right");
|
||||||
|
|
||||||
|
body.style.left = (ev.clientX - location.x) + "px";
|
||||||
|
body.style.top = (ev.clientY - location.y) + "px";
|
||||||
|
body.style.bottom = "auto";
|
||||||
|
}
|
||||||
|
|
||||||
|
const mouseup = () => {
|
||||||
|
body.classList.remove("active");
|
||||||
|
document.removeEventListener("mousemove", mousemove);
|
||||||
|
}
|
||||||
|
|
||||||
|
body.onmousedown = mousedown;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 运行
|
||||||
|
this.init = (noModel) => {
|
||||||
|
// 未隐藏 + 非手机版,出现操作功能
|
||||||
|
if (!(prop.hidden && tools.isMobile())) {
|
||||||
|
if (!noModel) {
|
||||||
|
action.welcome();
|
||||||
|
loadlive2d("pio", prop.model[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (prop.mode) {
|
||||||
|
case "static": begin.static(); break;
|
||||||
|
case "fixed": begin.fixed(); break;
|
||||||
|
case "draggable": begin.draggable(); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
prop.content.custom && action.custom();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 隐藏状态
|
||||||
|
this.initHidden = () => {
|
||||||
|
// ! 清除预设好的间距
|
||||||
|
if (prop.mode === "draggable") {
|
||||||
|
current.body.style.top = null;
|
||||||
|
current.body.style.left = null;
|
||||||
|
current.body.style.bottom = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
current.body.classList.add("hidden");
|
||||||
|
elements.dialog.classList.remove("active");
|
||||||
|
|
||||||
|
elements.show.onclick = () => {
|
||||||
|
current.body.classList.remove("hidden");
|
||||||
|
localStorage.setItem("posterGirl", "1");
|
||||||
|
|
||||||
|
that.init();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
localStorage.getItem("posterGirl") === "0" ? this.initHidden() : this.init();
|
||||||
|
};
|
||||||
|
|
||||||
|
// 请保留版权说明
|
||||||
|
if (window.console && window.console.log) {
|
||||||
|
console.log("%c Pio %c https://paugram.com ","color: #fff; margin: 1em 0; padding: 5px 0; background: #673ab7;","margin: 1em 0; padding: 5px 0; background: #efefef;");
|
||||||
|
}
|
||||||
83
scripts/build-with-pagefind.cjs
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
/* This is a script to build the site with Pagefind */
|
||||||
|
|
||||||
|
const { execSync } = require('child_process');
|
||||||
|
const { existsSync } = require('fs');
|
||||||
|
const { join } = require('path');
|
||||||
|
|
||||||
|
// Detect the platform
|
||||||
|
function detectPlatform() {
|
||||||
|
// Check environment variables
|
||||||
|
if (process.env.VERCEL) {
|
||||||
|
return 'vercel';
|
||||||
|
}
|
||||||
|
if (process.env.CF_PAGES) {
|
||||||
|
return 'cloudflare';
|
||||||
|
}
|
||||||
|
if (process.env.NETLIFY) {
|
||||||
|
return 'netlify';
|
||||||
|
}
|
||||||
|
if (process.env.GITHUB_ACTIONS) {
|
||||||
|
return 'github';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if specific directories exist
|
||||||
|
if (existsSync('.vercel')) {
|
||||||
|
return 'vercel';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Default to standard dist directory
|
||||||
|
return 'default';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get Pagefind output directory
|
||||||
|
function getPagefindOutputDir(platform) {
|
||||||
|
const outputDirs = {
|
||||||
|
vercel: '.vercel/output/static',
|
||||||
|
cloudflare: 'dist',
|
||||||
|
netlify: 'dist',
|
||||||
|
github: 'dist',
|
||||||
|
default: 'dist'
|
||||||
|
};
|
||||||
|
|
||||||
|
return outputDirs[platform] || 'dist';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Main function
|
||||||
|
function main() {
|
||||||
|
const platform = detectPlatform();
|
||||||
|
const outputDir = getPagefindOutputDir(platform);
|
||||||
|
|
||||||
|
console.log(`🚀 Detected deployment platform: ${platform}`);
|
||||||
|
console.log(`📁 Pagefind output directory: ${outputDir}`);
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Run Astro build
|
||||||
|
console.log('🔨 Running Astro build...');
|
||||||
|
execSync(`npx astro build`.trim(), {
|
||||||
|
stdio: 'inherit',
|
||||||
|
cwd: process.cwd() // Ensure in the correct directory
|
||||||
|
});
|
||||||
|
|
||||||
|
// Check if output directory exists
|
||||||
|
if (!existsSync(outputDir)) {
|
||||||
|
console.error(`❌ Output directory does not exist: ${outputDir}`);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Run Pagefind
|
||||||
|
console.log(`🔍 Running Pagefind search index generation...`);
|
||||||
|
execSync(`npx pagefind --site ${outputDir}`, {
|
||||||
|
stdio: 'inherit',
|
||||||
|
cwd: process.cwd() // Ensure in the correct directory
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log('✅ Build completed!');
|
||||||
|
console.log(`📊 Search index generated at: ${outputDir}/pagefind/`);
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.error('❌ Build failed:', error.message);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
main();
|
||||||
86
scripts/compile-inline-stylus.cjs
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
/* This is a script to compile inline Stylus */
|
||||||
|
|
||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
const { execSync } = require('child_process');
|
||||||
|
|
||||||
|
// Recursively list files under a directory
|
||||||
|
function walk(dir) {
|
||||||
|
const res = [];
|
||||||
|
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
||||||
|
for (const e of entries) {
|
||||||
|
const full = path.join(dir, e.name);
|
||||||
|
if (e.isDirectory()) res.push(...walk(full));
|
||||||
|
else res.push(full);
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
const srcDir = path.resolve('src');
|
||||||
|
if (!fs.existsSync(srcDir)) {
|
||||||
|
console.error('No src directory found.');
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
const files = walk(srcDir);
|
||||||
|
|
||||||
|
const styleBlockRe = /<style[^>]*lang=["']stylus["'][^>]*>([\s\S]*?)<\/style>/ig;
|
||||||
|
const npxCmd = process.platform === 'win32' ? 'npx.cmd' : 'npx';
|
||||||
|
const outNull = process.platform === 'win32' ? 'nul' : '/dev/null';
|
||||||
|
|
||||||
|
let failed = false;
|
||||||
|
|
||||||
|
function compileStylusContent(content, tmpPath) {
|
||||||
|
fs.writeFileSync(tmpPath, content, 'utf8');
|
||||||
|
try {
|
||||||
|
execSync(`${npxCmd} stylus "${tmpPath}" -o ${outNull}`, { stdio: 'pipe' });
|
||||||
|
fs.unlinkSync(tmpPath);
|
||||||
|
return { ok: true };
|
||||||
|
} catch (err) {
|
||||||
|
const msg = err.stderr ? err.stderr.toString() : err.message;
|
||||||
|
// keep temp file for debugging
|
||||||
|
return { ok: false, error: msg };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check .styl files
|
||||||
|
const stylFiles = files.filter(f => f.endsWith('.styl'));
|
||||||
|
for (const f of stylFiles) {
|
||||||
|
const content = fs.readFileSync(f, 'utf8');
|
||||||
|
const tmp = f + '.tmp.styl';
|
||||||
|
const r = compileStylusContent(content, tmp);
|
||||||
|
if (r.ok) console.log(`${f}: OK`);
|
||||||
|
else {
|
||||||
|
failed = true;
|
||||||
|
console.error(`${f}: ERROR\n${r.error}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check inline <style lang="stylus"> blocks in component files
|
||||||
|
const candidateExt = ['.astro', '.svelte', '.vue', '.html'];
|
||||||
|
for (const f of files) {
|
||||||
|
if (!candidateExt.includes(path.extname(f))) continue;
|
||||||
|
const text = fs.readFileSync(f, 'utf8');
|
||||||
|
let m;
|
||||||
|
styleBlockRe.lastIndex = 0;
|
||||||
|
let idx = 0;
|
||||||
|
while ((m = styleBlockRe.exec(text)) !== null) {
|
||||||
|
idx += 1;
|
||||||
|
const content = m[1].trim();
|
||||||
|
const tmp = `${f}.style.${idx}.tmp.styl`;
|
||||||
|
const r = compileStylusContent(content, tmp);
|
||||||
|
if (r.ok) console.log(`${f} [style #${idx}]: OK`);
|
||||||
|
else {
|
||||||
|
failed = true;
|
||||||
|
console.error(`${f} [style #${idx}]: ERROR\n${r.error}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (failed) {
|
||||||
|
console.error('\nStylus check failed. Fix above errors.');
|
||||||
|
process.exit(1);
|
||||||
|
} else {
|
||||||
|
console.log('\nAll Stylus checks passed.');
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
59
scripts/new-post.js
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
/* This is a script to create a new post markdown file with front-matter */
|
||||||
|
|
||||||
|
import fs from "fs"
|
||||||
|
import path from "path"
|
||||||
|
|
||||||
|
function getDate() {
|
||||||
|
const today = new Date()
|
||||||
|
const year = today.getFullYear()
|
||||||
|
const month = String(today.getMonth() + 1).padStart(2, "0")
|
||||||
|
const day = String(today.getDate()).padStart(2, "0")
|
||||||
|
|
||||||
|
return `${year}-${month}-${day}`
|
||||||
|
}
|
||||||
|
|
||||||
|
const args = process.argv.slice(2)
|
||||||
|
|
||||||
|
if (args.length === 0) {
|
||||||
|
console.error(`Error: No filename argument provided
|
||||||
|
Usage: npm run new-post -- <filename>`)
|
||||||
|
process.exit(1) // Terminate the script and return error code 1
|
||||||
|
}
|
||||||
|
|
||||||
|
let fileName = args[0]
|
||||||
|
|
||||||
|
// Add .md extension if not present
|
||||||
|
const fileExtensionRegex = /\.(md|mdx)$/i
|
||||||
|
if (!fileExtensionRegex.test(fileName)) {
|
||||||
|
fileName += ".md"
|
||||||
|
}
|
||||||
|
|
||||||
|
const targetDir = "./src/content/posts/"
|
||||||
|
const fullPath = path.join(targetDir, fileName)
|
||||||
|
|
||||||
|
if (fs.existsSync(fullPath)) {
|
||||||
|
console.error(`Error: File ${fullPath} already exists `)
|
||||||
|
process.exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
// recursive mode creates multi-level directories
|
||||||
|
const dirPath = path.dirname(fullPath)
|
||||||
|
if (!fs.existsSync(dirPath)) {
|
||||||
|
fs.mkdirSync(dirPath, { recursive: true })
|
||||||
|
}
|
||||||
|
|
||||||
|
const content = `---
|
||||||
|
title: ${args[0]}
|
||||||
|
published: ${getDate()}
|
||||||
|
description: ''
|
||||||
|
image: ''
|
||||||
|
tags: []
|
||||||
|
category: ''
|
||||||
|
draft: false
|
||||||
|
lang: ''
|
||||||
|
---
|
||||||
|
`
|
||||||
|
|
||||||
|
fs.writeFileSync(path.join(targetDir, fileName), content)
|
||||||
|
|
||||||
|
console.log(`Post ${fullPath} created`)
|
||||||
157
src/components/archivePanel.svelte
Normal file
@@ -0,0 +1,157 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import { onMount } from "svelte";
|
||||||
|
|
||||||
|
import { getPostUrl } from "@utils/url";
|
||||||
|
import { i18n } from "@i18n/translation";
|
||||||
|
import I18nKey from "@i18n/i18nKey";
|
||||||
|
|
||||||
|
|
||||||
|
interface Post {
|
||||||
|
id: string;
|
||||||
|
data: {
|
||||||
|
title: string;
|
||||||
|
tags: string[];
|
||||||
|
category?: string | null;
|
||||||
|
published: Date | string;
|
||||||
|
routeName?: string;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Group {
|
||||||
|
year: number;
|
||||||
|
posts: Post[];
|
||||||
|
}
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
sortedPosts?: Post[];
|
||||||
|
}
|
||||||
|
|
||||||
|
let { sortedPosts = [] }: Props = $props();
|
||||||
|
|
||||||
|
let tags = $state<string[]>([]);
|
||||||
|
let categories = $state<string[]>([]);
|
||||||
|
let uncategorized = $state<string | null>(null);
|
||||||
|
|
||||||
|
onMount(() => {
|
||||||
|
const params = new URLSearchParams(window.location.search);
|
||||||
|
tags = params.has("tag") ? params.getAll("tag") : [];
|
||||||
|
categories = params.has("category") ? params.getAll("category") : [];
|
||||||
|
uncategorized = params.get("uncategorized");
|
||||||
|
});
|
||||||
|
|
||||||
|
function formatDate(date: Date | string) {
|
||||||
|
const d = new Date(date);
|
||||||
|
const month = (d.getMonth() + 1).toString().padStart(2, "0");
|
||||||
|
const day = d.getDate().toString().padStart(2, "0");
|
||||||
|
return `${month}-${day}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function formatTag(tagList: string[]) {
|
||||||
|
return tagList.map((t) => `#${t}`).join(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
let groups = $derived.by(() => {
|
||||||
|
let filteredPosts = sortedPosts.map((post) => ({
|
||||||
|
...post,
|
||||||
|
data: {
|
||||||
|
...post.data,
|
||||||
|
published: new Date(post.data.published),
|
||||||
|
},
|
||||||
|
}));
|
||||||
|
|
||||||
|
if (tags.length > 0) {
|
||||||
|
filteredPosts = filteredPosts.filter(
|
||||||
|
(post) =>
|
||||||
|
Array.isArray(post.data.tags) &&
|
||||||
|
post.data.tags.some((tag) => tags.includes(tag)),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (categories.length > 0) {
|
||||||
|
filteredPosts = filteredPosts.filter(
|
||||||
|
(post) => post.data.category && categories.includes(post.data.category),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (uncategorized !== null) {
|
||||||
|
filteredPosts = filteredPosts.filter((post) => !post.data.category);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 按发布时间倒序排序,确保不受置顶影响
|
||||||
|
filteredPosts = filteredPosts.slice().sort((a, b) => b.data.published.getTime() - a.data.published.getTime());
|
||||||
|
|
||||||
|
const grouped = filteredPosts.reduce(
|
||||||
|
(acc, post) => {
|
||||||
|
const year = post.data.published.getFullYear();
|
||||||
|
if (!acc[year]) {
|
||||||
|
acc[year] = [];
|
||||||
|
}
|
||||||
|
acc[year].push(post);
|
||||||
|
return acc;
|
||||||
|
},
|
||||||
|
{} as Record<number, Post[]>,
|
||||||
|
);
|
||||||
|
|
||||||
|
const groupedPostsArray = Object.keys(grouped).map((yearStr) => ({
|
||||||
|
year: Number.parseInt(yearStr, 10),
|
||||||
|
posts: grouped[Number.parseInt(yearStr, 10)],
|
||||||
|
}));
|
||||||
|
|
||||||
|
groupedPostsArray.sort((a, b) => b.year - a.year);
|
||||||
|
|
||||||
|
return groupedPostsArray;
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
{#each groups as group}
|
||||||
|
<div>
|
||||||
|
<div class="flex flex-row w-full items-center h-15">
|
||||||
|
<div class="w-[15%] md:w-[10%] transition text-2xl font-bold text-right text-75">
|
||||||
|
{group.year}
|
||||||
|
</div>
|
||||||
|
<div class="w-[15%] md:w-[10%]">
|
||||||
|
<div class="h-3 w-3 bg-none rounded-full outline-solid outline-(--primary) mx-auto outline-offset-2 z-50 outline-3"></div>
|
||||||
|
</div>
|
||||||
|
<div class="w-[70%] md:w-[80%] transition text-left text-50">
|
||||||
|
{group.posts.length} {i18n(group.posts.length === 1 ? I18nKey.postCount : I18nKey.postsCount)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{#each group.posts as post}
|
||||||
|
<a href={getPostUrl(post)}
|
||||||
|
aria-label={post.data.title}
|
||||||
|
class="group btn-plain block! h-10 w-full rounded-lg hover:text-[initial]"
|
||||||
|
>
|
||||||
|
<div class="flex flex-row justify-start items-center h-full">
|
||||||
|
<!-- date -->
|
||||||
|
<div class="w-[15%] md:w-[10%] transition text-sm text-right text-50">
|
||||||
|
{formatDate(post.data.published)}
|
||||||
|
</div>
|
||||||
|
<!-- dot and line -->
|
||||||
|
<div class="w-[15%] md:w-[10%] relative dash-line h-full flex items-center">
|
||||||
|
<div class="transition-all mx-auto w-1 h-1 rounded group-hover:h-5
|
||||||
|
bg-[oklch(0.5_0.05_var(--hue))] group-hover:bg-(--primary)
|
||||||
|
outline-4 z-50
|
||||||
|
outline-(--card-bg)
|
||||||
|
group-hover:outline-(--btn-plain-bg-hover)
|
||||||
|
group-active:outline-(--btn-plain-bg-active)"
|
||||||
|
></div>
|
||||||
|
</div>
|
||||||
|
<!-- post title -->
|
||||||
|
<div class="w-[70%] md:max-w-[65%] md:w-[65%] text-left font-bold
|
||||||
|
group-hover:translate-x-1 transition-all group-hover:text-(--primary)
|
||||||
|
text-75 pr-8 whitespace-nowrap text-ellipsis overflow-hidden"
|
||||||
|
>
|
||||||
|
{post.data.title}
|
||||||
|
</div>
|
||||||
|
<!-- tag list -->
|
||||||
|
<div class="hidden md:block md:w-[15%] text-left text-sm transition whitespace-nowrap text-ellipsis overflow-hidden text-30"
|
||||||
|
>
|
||||||
|
{formatTag(post.data.tags)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
{/each}
|
||||||
|
</div>
|
||||||
|
{/each}
|
||||||
|
</div>
|
||||||
75
src/components/back2TopButton.astro
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
---
|
||||||
|
import { Icon } from "astro-icon/components";
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- There can't be a filter on parent element, or it will break `fixed` -->
|
||||||
|
<div class="back-to-top-wrapper block">
|
||||||
|
<div id="back-to-top-btn" class="back-to-top-btn z-100 hide flex items-center rounded-2xl overflow-hidden transition"
|
||||||
|
onclick="backToTop()">
|
||||||
|
<button aria-label="Back to Top" class="btn-card h-full w-full">
|
||||||
|
<Icon name="material-symbols:keyboard-arrow-up-rounded" class="mx-auto"></Icon>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style lang="stylus">
|
||||||
|
.back-to-top-wrapper
|
||||||
|
width: 3rem
|
||||||
|
height: 3rem
|
||||||
|
position: absolute
|
||||||
|
right: 0
|
||||||
|
top: 0
|
||||||
|
pointer-events: none
|
||||||
|
|
||||||
|
.back-to-top-btn
|
||||||
|
color: var(--primary)
|
||||||
|
font-size: 2.25rem
|
||||||
|
font-weight: bold
|
||||||
|
border: none
|
||||||
|
position: fixed
|
||||||
|
bottom: 6.78rem
|
||||||
|
opacity: 1
|
||||||
|
right: 1rem
|
||||||
|
cursor: pointer
|
||||||
|
translate: 0 0
|
||||||
|
pointer-events: auto
|
||||||
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1)
|
||||||
|
box-shadow:
|
||||||
|
0 0 0 1px var(--btn-regular-bg),
|
||||||
|
0 0 1em var(--btn-regular-bg);
|
||||||
|
|
||||||
|
button
|
||||||
|
width: 3rem
|
||||||
|
height: 3rem
|
||||||
|
|
||||||
|
i
|
||||||
|
font-size: 1.75rem
|
||||||
|
|
||||||
|
&.hide
|
||||||
|
translate: 0 2rem
|
||||||
|
scale: 0.9
|
||||||
|
opacity: 0
|
||||||
|
pointer-events: none
|
||||||
|
|
||||||
|
&:active
|
||||||
|
scale: 0.9
|
||||||
|
|
||||||
|
// Mobile
|
||||||
|
@media (max-width: 768px)
|
||||||
|
.back-to-top-btn
|
||||||
|
bottom: 5.5rem
|
||||||
|
right: 0.5rem
|
||||||
|
font-size: 2rem
|
||||||
|
&.hide
|
||||||
|
translate: 0 2rem
|
||||||
|
scale: 0.9
|
||||||
|
&:active
|
||||||
|
scale: 0.9
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<script is:raw is:inline>
|
||||||
|
function backToTop() {
|
||||||
|
// 直接使用原生滚动,避免OverlayScrollbars冲突
|
||||||
|
window.scroll({ top: 0, behavior: 'smooth' });
|
||||||
|
}
|
||||||
|
</script>
|
||||||
45
src/components/backwardButton.astro
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
---
|
||||||
|
import { getParentLink } from "@utils/navigation";
|
||||||
|
import { url } from "@utils/url";
|
||||||
|
import { i18n } from "@i18n/translation";
|
||||||
|
import I18nKey from "@i18n/i18nKey";
|
||||||
|
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
currentPath?: string;
|
||||||
|
href?: string;
|
||||||
|
text?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const { currentPath, href, text } = Astro.props;
|
||||||
|
|
||||||
|
let targetUrl = href;
|
||||||
|
let targetText = text;
|
||||||
|
|
||||||
|
if (currentPath && !targetUrl) {
|
||||||
|
const parentLink = getParentLink(currentPath);
|
||||||
|
if (parentLink) {
|
||||||
|
targetUrl = url(parentLink.url);
|
||||||
|
targetText = `${i18n(I18nKey.backTo)} ${parentLink.name}`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果既没有传入 href,也没能根据 currentPath 找到父级菜单,则不渲染
|
||||||
|
if (!targetUrl) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
---
|
||||||
|
|
||||||
|
<div class="mb-6">
|
||||||
|
<a
|
||||||
|
href={targetUrl}
|
||||||
|
class="inline-flex items-center gap-2 text-neutral-600 dark:text-neutral-400 hover:text-(--primary) transition-colors group"
|
||||||
|
>
|
||||||
|
<svg class="w-4 h-4 transition-transform group-hover:-translate-x-1" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"></path>
|
||||||
|
</svg>
|
||||||
|
<span class="text-sm font-medium">
|
||||||
|
{targetText}
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
364
src/components/banner.astro
Normal file
@@ -0,0 +1,364 @@
|
|||||||
|
---
|
||||||
|
import type { SiteConfig } from "@/types/config";
|
||||||
|
import { BANNER_HEIGHT_EXTEND } from "@constants/constants";
|
||||||
|
import TypewriterText from "@components/common/typewriterText.astro";
|
||||||
|
import ImageWrapper from "@components/common/imageWrapper.astro";
|
||||||
|
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
config: SiteConfig["wallpaper"];
|
||||||
|
isHomePage: boolean;
|
||||||
|
class?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const { config, isHomePage, class: className } = Astro.props;
|
||||||
|
|
||||||
|
// 获取当前设备类型的图片源
|
||||||
|
const getImageSources = () => {
|
||||||
|
const toArray = (src: any) => [src || []].flat();
|
||||||
|
const { src } = config;
|
||||||
|
const isObj = src && typeof src === "object" && !Array.isArray(src);
|
||||||
|
const desktop = toArray(isObj ? (src as any).desktop : src);
|
||||||
|
const mobile = toArray(isObj ? (src as any).mobile : src);
|
||||||
|
return {
|
||||||
|
desktop: desktop.length > 0 ? desktop : mobile,
|
||||||
|
mobile: mobile.length > 0 ? mobile : desktop,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
const imageSources = getImageSources();
|
||||||
|
|
||||||
|
// 轮播配置
|
||||||
|
const carouselConfig = config.carousel;
|
||||||
|
const isCarouselEnabled = imageSources.desktop.length > 1 || imageSources.mobile.length > 1;
|
||||||
|
const carouselInterval = carouselConfig?.interval || 6
|
||||||
|
|
||||||
|
// 样式配置
|
||||||
|
const showHomeText = config.banner?.homeText?.enable && isHomePage;
|
||||||
|
const showWaves = config.banner?.waves?.enable;
|
||||||
|
const isPerformanceMode = config.banner?.waves?.performanceMode;
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- Banner Wrapper -->
|
||||||
|
<div
|
||||||
|
id="banner-wrapper"
|
||||||
|
class:list={[
|
||||||
|
"absolute z-10 w-full transition-all duration-600 overflow-hidden",
|
||||||
|
className
|
||||||
|
]}
|
||||||
|
style={`top: -${BANNER_HEIGHT_EXTEND}vh`}
|
||||||
|
>
|
||||||
|
{isCarouselEnabled ? (
|
||||||
|
<div id="banner-carousel" class="relative h-full w-full" data-carousel-config={JSON.stringify(carouselConfig)}>
|
||||||
|
<ul class="carousel-list h-full w-full">
|
||||||
|
{imageSources.desktop.map((src, index) => (
|
||||||
|
<li class:list={[
|
||||||
|
"carousel-item desktop-item hidden md:block absolute inset-0 transition-opacity duration-1200",
|
||||||
|
index === 0 ? 'opacity-100' : 'opacity-0',
|
||||||
|
carouselConfig?.kenBurns !== false ? 'ken-burns-enabled' : ''
|
||||||
|
]}>
|
||||||
|
<ImageWrapper
|
||||||
|
alt={`Desktop banner ${index + 1}`}
|
||||||
|
class:list={["object-cover h-full w-full"]}
|
||||||
|
src={src}
|
||||||
|
position={config.position}
|
||||||
|
loading={index === 0 ? "eager" : "lazy"}
|
||||||
|
/>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
{imageSources.mobile.map((src, index) => (
|
||||||
|
<li class:list={[
|
||||||
|
"carousel-item mobile-item block md:hidden absolute inset-0 transition-opacity duration-1200",
|
||||||
|
index === 0 ? 'opacity-100' : 'opacity-0',
|
||||||
|
carouselConfig?.kenBurns !== false ? 'ken-burns-enabled' : ''
|
||||||
|
]}>
|
||||||
|
<ImageWrapper
|
||||||
|
alt={`Mobile banner ${index + 1}`}
|
||||||
|
class:list={["object-cover h-full w-full"]}
|
||||||
|
src={src}
|
||||||
|
position={config.position}
|
||||||
|
loading={index === 0 ? "eager" : "lazy"}
|
||||||
|
/>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
|
<div class="relative h-full w-full">
|
||||||
|
<ImageWrapper
|
||||||
|
alt="Mobile banner"
|
||||||
|
class:list={["block md:hidden object-cover h-full w-full transition duration-600 opacity-100"]}
|
||||||
|
src={imageSources.mobile[0] || imageSources.desktop[0] || ''}
|
||||||
|
position={config.position}
|
||||||
|
loading="eager"
|
||||||
|
/>
|
||||||
|
<ImageWrapper
|
||||||
|
id="banner"
|
||||||
|
alt="Desktop banner"
|
||||||
|
class:list={["hidden md:block object-cover h-full w-full transition duration-600 opacity-100"]}
|
||||||
|
src={imageSources.desktop[0] || imageSources.mobile[0] || ''}
|
||||||
|
position={config.position}
|
||||||
|
loading="eager"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
|
||||||
|
<!-- Home page text overlay -->
|
||||||
|
{config.banner?.homeText?.enable && (
|
||||||
|
<div class={`banner-text-overlay absolute inset-0 z-20 flex items-center justify-center ${!showHomeText ? 'hidden' : ''}`}>
|
||||||
|
<div class="w-4/5 lg:w-3/4 text-center mb-0">
|
||||||
|
<div class="flex flex-col">
|
||||||
|
{config.banner?.homeText?.title && (
|
||||||
|
<h1 class="banner-title text-6xl lg:text-8xl text-white mb-2 lg:mb-4">
|
||||||
|
{config.banner.homeText.title}
|
||||||
|
</h1>
|
||||||
|
)}
|
||||||
|
{config.banner?.homeText?.subtitle && (
|
||||||
|
<h2 class="banner-subtitle text-xl lg:text-3xl text-white/90">
|
||||||
|
{config.banner.homeText.typewriter?.enable ? (
|
||||||
|
<TypewriterText
|
||||||
|
text={config.banner.homeText.subtitle}
|
||||||
|
speed={config.banner.homeText.typewriter.speed}
|
||||||
|
deleteSpeed={config.banner.homeText.typewriter.deleteSpeed}
|
||||||
|
pauseTime={config.banner.homeText.typewriter.pauseTime}
|
||||||
|
/>
|
||||||
|
) : (
|
||||||
|
Array.isArray(config.banner.homeText.subtitle)
|
||||||
|
? config.banner.homeText.subtitle[0]
|
||||||
|
: config.banner.homeText.subtitle
|
||||||
|
)}
|
||||||
|
</h2>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
|
||||||
|
<!-- Water waves effect -->
|
||||||
|
{showWaves && (
|
||||||
|
<div class="waves-container absolute -bottom-px h-[10vh] max-h-37.5 min-h-12.5 w-full md:h-[15vh]" id="header-waves">
|
||||||
|
<svg
|
||||||
|
class="waves"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
viewBox="0 21 150 30"
|
||||||
|
preserveAspectRatio="none"
|
||||||
|
shape-rendering="geometricPrecision"
|
||||||
|
>
|
||||||
|
<defs>
|
||||||
|
<path
|
||||||
|
id="gentle-wave"
|
||||||
|
d="M-160 44c30 0 58-18 88-18s 58 18 88 18 58-18 88-18 58 18 88 18 v48h-352z"
|
||||||
|
>
|
||||||
|
</path>
|
||||||
|
</defs>
|
||||||
|
<g class="parallax">
|
||||||
|
{isPerformanceMode ? (
|
||||||
|
// 性能模式:只渲染二个波浪层
|
||||||
|
<use
|
||||||
|
xlink:href="#gentle-wave"
|
||||||
|
x="48"
|
||||||
|
y="7"
|
||||||
|
class="fill-(--page-bg)"
|
||||||
|
></use>
|
||||||
|
<use
|
||||||
|
xlink:href="#gentle-wave"
|
||||||
|
x="48"
|
||||||
|
y="5"
|
||||||
|
class="opacity-75 fill-(--page-bg)"
|
||||||
|
></use>
|
||||||
|
) : (
|
||||||
|
// 正常模式:渲染四个波浪层
|
||||||
|
<>
|
||||||
|
<use
|
||||||
|
xlink:href="#gentle-wave"
|
||||||
|
x="48"
|
||||||
|
y="0"
|
||||||
|
class="opacity-25 fill-(--page-bg)"
|
||||||
|
></use>
|
||||||
|
<use
|
||||||
|
xlink:href="#gentle-wave"
|
||||||
|
x="48"
|
||||||
|
y="3"
|
||||||
|
class="opacity-50 fill-(--page-bg)"
|
||||||
|
></use>
|
||||||
|
<use
|
||||||
|
xlink:href="#gentle-wave"
|
||||||
|
x="48"
|
||||||
|
y="5"
|
||||||
|
class="opacity-75 fill-(--page-bg)"
|
||||||
|
></use>
|
||||||
|
<use
|
||||||
|
xlink:href="#gentle-wave"
|
||||||
|
x="48"
|
||||||
|
y="7"
|
||||||
|
class="fill-(--page-bg)"
|
||||||
|
></use>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script define:vars={{ carouselInterval }}>
|
||||||
|
// 轮播图初始化函数
|
||||||
|
window.initBannerCarousel = function() {
|
||||||
|
const carousel = document.getElementById('banner-carousel');
|
||||||
|
if (!carousel) return;
|
||||||
|
|
||||||
|
// 检查是否是同一个 DOM 元素且定时器正在运行,避免重复初始化导致动画重置
|
||||||
|
if (window.bannerCarouselTimer && window.currentBannerCarousel === carousel) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
window.currentBannerCarousel = carousel;
|
||||||
|
|
||||||
|
// 初始化全局状态
|
||||||
|
if (!window.bannerCarouselState) {
|
||||||
|
window.bannerCarouselState = {
|
||||||
|
currentIndex: 0,
|
||||||
|
lastSwitchTime: Date.now()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// 清理旧的定时器,防止重复初始化导致的闪烁
|
||||||
|
if (window.bannerCarouselTimer) {
|
||||||
|
clearTimeout(window.bannerCarouselTimer);
|
||||||
|
window.bannerCarouselTimer = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
const carouselConfigData = carousel.getAttribute('data-carousel-config');
|
||||||
|
const carouselConfig = carouselConfigData ? JSON.parse(carouselConfigData) : {};
|
||||||
|
|
||||||
|
const desktopItems = carousel.querySelectorAll('.carousel-item.desktop-item');
|
||||||
|
const mobileItems = carousel.querySelectorAll('.carousel-item.mobile-item');
|
||||||
|
|
||||||
|
function setupCarousel(items, isEnabled) {
|
||||||
|
if (items.length === 0) return null;
|
||||||
|
|
||||||
|
// 如果禁用了轮播但有多张图,则随机显示一张
|
||||||
|
if (items.length > 1 && !isEnabled) {
|
||||||
|
items.forEach(item => {
|
||||||
|
item.classList.add('opacity-0');
|
||||||
|
item.classList.remove('opacity-100');
|
||||||
|
});
|
||||||
|
const randomIndex = Math.floor(Math.random() * items.length);
|
||||||
|
const randomItem = items[randomIndex];
|
||||||
|
randomItem.classList.add('opacity-100');
|
||||||
|
randomItem.classList.remove('opacity-0');
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (items.length > 1 && isEnabled) {
|
||||||
|
// 使用全局状态中的索引
|
||||||
|
let currentIndex = window.bannerCarouselState.currentIndex;
|
||||||
|
// 确保索引有效
|
||||||
|
if (currentIndex >= items.length) {
|
||||||
|
currentIndex = 0;
|
||||||
|
window.bannerCarouselState.currentIndex = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
function switchToSlide(index) {
|
||||||
|
const currentItem = items[currentIndex];
|
||||||
|
currentItem.classList.remove('opacity-100');
|
||||||
|
currentItem.classList.add('opacity-0');
|
||||||
|
currentIndex = index;
|
||||||
|
// 更新全局状态
|
||||||
|
window.bannerCarouselState.currentIndex = index;
|
||||||
|
window.bannerCarouselState.lastSwitchTime = Date.now();
|
||||||
|
|
||||||
|
const nextItem = items[currentIndex];
|
||||||
|
nextItem.classList.add('opacity-100');
|
||||||
|
nextItem.classList.remove('opacity-0');
|
||||||
|
// 通过切换 is-animating 类来重置下一张图片的动画
|
||||||
|
if (nextItem.classList.contains('ken-burns-enabled')) {
|
||||||
|
nextItem.classList.remove('is-animating');
|
||||||
|
nextItem.offsetHeight; // 强制重绘
|
||||||
|
nextItem.classList.add('is-animating');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 初始化:根据当前索引显示图片
|
||||||
|
items.forEach((item, index) => {
|
||||||
|
if (index === currentIndex) {
|
||||||
|
item.classList.add('opacity-100');
|
||||||
|
item.classList.remove('opacity-0');
|
||||||
|
// 初始图片开启动画
|
||||||
|
if (item.classList.contains('ken-burns-enabled')) {
|
||||||
|
item.classList.add('is-animating');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
item.classList.add('opacity-0');
|
||||||
|
item.classList.remove('opacity-100');
|
||||||
|
item.classList.remove('is-animating');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
next: () => switchToSlide((currentIndex + 1) % items.length),
|
||||||
|
prev: () => switchToSlide((currentIndex - 1 + items.length) % items.length),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
const desktopCtrl = setupCarousel(desktopItems, carouselConfig?.enable);
|
||||||
|
const mobileCtrl = setupCarousel(mobileItems, carouselConfig?.enable);
|
||||||
|
|
||||||
|
if (carouselConfig?.enable && (desktopCtrl || mobileCtrl)) {
|
||||||
|
function startCarousel() {
|
||||||
|
if (window.bannerCarouselTimer) clearTimeout(window.bannerCarouselTimer);
|
||||||
|
|
||||||
|
const runLoop = () => {
|
||||||
|
const now = Date.now();
|
||||||
|
const intervalMs = carouselInterval * 1000;
|
||||||
|
const elapsed = now - window.bannerCarouselState.lastSwitchTime;
|
||||||
|
let delay = intervalMs - elapsed;
|
||||||
|
|
||||||
|
if (delay < 0) delay = 0;
|
||||||
|
|
||||||
|
window.bannerCarouselTimer = setTimeout(() => {
|
||||||
|
desktopCtrl?.next();
|
||||||
|
mobileCtrl?.next();
|
||||||
|
runLoop();
|
||||||
|
}, delay);
|
||||||
|
};
|
||||||
|
|
||||||
|
runLoop();
|
||||||
|
}
|
||||||
|
|
||||||
|
startCarousel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Banner显示控制函数
|
||||||
|
function showBanner() {
|
||||||
|
requestAnimationFrame(() => {
|
||||||
|
const banner = document.getElementById('banner');
|
||||||
|
if (banner) {
|
||||||
|
banner.classList.remove('opacity-0');
|
||||||
|
}
|
||||||
|
const mobileBanner = document.querySelector('.block.lg\\:hidden[alt="Mobile banner"]');
|
||||||
|
if (mobileBanner && !document.getElementById('banner-carousel')) {
|
||||||
|
mobileBanner.classList.remove('opacity-0');
|
||||||
|
mobileBanner.classList.add('opacity-100');
|
||||||
|
}
|
||||||
|
const carousel = document.getElementById('banner-carousel');
|
||||||
|
if (carousel) {
|
||||||
|
window.initBannerCarousel();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 监听 Astro 页面切换事件
|
||||||
|
document.addEventListener('astro:after-swap', () => {
|
||||||
|
showBanner();
|
||||||
|
});
|
||||||
|
|
||||||
|
if (document.readyState === 'loading') {
|
||||||
|
document.addEventListener('DOMContentLoaded', showBanner);
|
||||||
|
} else {
|
||||||
|
showBanner();
|
||||||
|
}
|
||||||
|
</script>
|
||||||
45
src/components/common/DropdownItem.svelte
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
/**
|
||||||
|
* 公共下拉面板选项组件 (Svelte 5 版本)
|
||||||
|
* 用于下拉面板中的选项项
|
||||||
|
*/
|
||||||
|
import type { Snippet } from "svelte";
|
||||||
|
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
isActive?: boolean;
|
||||||
|
isLast?: boolean;
|
||||||
|
class?: string;
|
||||||
|
onclick?: (event: MouseEvent) => void;
|
||||||
|
children?: Snippet;
|
||||||
|
}
|
||||||
|
|
||||||
|
let {
|
||||||
|
isActive = false,
|
||||||
|
isLast = false,
|
||||||
|
class: className = "",
|
||||||
|
onclick,
|
||||||
|
children,
|
||||||
|
...restProps
|
||||||
|
}: Props = $props();
|
||||||
|
|
||||||
|
const baseClasses =
|
||||||
|
"flex transition whitespace-nowrap items-center justify-start! w-full btn-plain scale-animation rounded-lg h-9 px-3 font-medium active:scale-95";
|
||||||
|
|
||||||
|
// 使用 $derived 使类名响应式
|
||||||
|
const allClasses = $derived.by(() => {
|
||||||
|
const spacingClass = isLast ? "" : "mb-0.5";
|
||||||
|
const activeClass = isActive ? "current-theme-btn" : "";
|
||||||
|
return `${baseClasses} ${spacingClass} ${activeClass} ${className}`.trim();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<button
|
||||||
|
class={allClasses}
|
||||||
|
{onclick}
|
||||||
|
{...restProps}
|
||||||
|
>
|
||||||
|
{#if children}
|
||||||
|
{@render children()}
|
||||||
|
{/if}
|
||||||
|
</button>
|
||||||
23
src/components/common/DropdownPanel.svelte
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
/**
|
||||||
|
* 公共下拉面板组件 (Svelte 5 版本)
|
||||||
|
* 用于壁纸切换、亮暗色切换等下拉面板
|
||||||
|
*/
|
||||||
|
import type { Snippet } from "svelte";
|
||||||
|
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
id?: string;
|
||||||
|
class?: string;
|
||||||
|
children?: Snippet;
|
||||||
|
element?: HTMLElement;
|
||||||
|
}
|
||||||
|
|
||||||
|
let { id, class: className = "", children, element = $bindable(), ...restProps }: Props = $props();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div {id} bind:this={element} class={`card-base float-panel p-2 ${className}`.trim()} {...restProps}>
|
||||||
|
{#if children}
|
||||||
|
{@render children()}
|
||||||
|
{/if}
|
||||||
|
</div>
|
||||||
43
src/components/common/buttonLink.astro
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
---
|
||||||
|
interface Props {
|
||||||
|
badge?: string;
|
||||||
|
url?: string;
|
||||||
|
label?: string;
|
||||||
|
}
|
||||||
|
const { badge, url, label } = Astro.props;
|
||||||
|
---
|
||||||
|
|
||||||
|
<a href={url} aria-label={label}>
|
||||||
|
<button
|
||||||
|
class:list={`
|
||||||
|
w-full
|
||||||
|
h-10
|
||||||
|
rounded-lg
|
||||||
|
bg-none
|
||||||
|
hover:bg-(--btn-plain-bg-hover)
|
||||||
|
active:bg-(--btn-plain-bg-active)
|
||||||
|
transition-all
|
||||||
|
pl-2
|
||||||
|
hover:pl-3
|
||||||
|
text-neutral-700
|
||||||
|
hover:text-(--primary)
|
||||||
|
dark:text-neutral-300
|
||||||
|
dark:hover:text-(--primary)
|
||||||
|
`
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<div class="flex items-center justify-between relative mr-2">
|
||||||
|
<div class="overflow-hidden text-left whitespace-nowrap text-ellipsis">
|
||||||
|
<slot></slot>
|
||||||
|
</div>
|
||||||
|
{ badge !== undefined && badge !== null && badge !== '' &&
|
||||||
|
<div class="transition px-2 h-7 ml-4 min-w-8 rounded-lg text-sm font-bold
|
||||||
|
text-(--btn-content) dark:text-(--deep-text)
|
||||||
|
bg-[oklch(0.95_0.025_var(--hue))] dark:bg-(--primary)
|
||||||
|
flex items-center justify-center">
|
||||||
|
{ badge }
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
</a>
|
||||||
14
src/components/common/buttonTag.astro
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
---
|
||||||
|
interface Props {
|
||||||
|
size?: string;
|
||||||
|
dot?: boolean;
|
||||||
|
href?: string;
|
||||||
|
label?: string;
|
||||||
|
}
|
||||||
|
const { dot, href, label }: Props = Astro.props;
|
||||||
|
---
|
||||||
|
|
||||||
|
<a href={href} aria-label={label} class="btn-regular h-8 text-sm px-3 rounded-lg">
|
||||||
|
{dot && <div class="h-1 w-1 bg-(--btn-content) dark:bg-(--card-bg) transition rounded-md mr-2"></div>}
|
||||||
|
<slot></slot>
|
||||||
|
</a>
|
||||||
181
src/components/common/icon.astro
Normal file
@@ -0,0 +1,181 @@
|
|||||||
|
---
|
||||||
|
// 可靠的图标组件
|
||||||
|
// 提供加载状态管理和错误处理
|
||||||
|
|
||||||
|
export interface Props {
|
||||||
|
icon: string;
|
||||||
|
class?: string;
|
||||||
|
style?: string;
|
||||||
|
size?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
|
||||||
|
color?: string;
|
||||||
|
fallback?: string; // 备用图标或文本
|
||||||
|
loading?: "lazy" | "eager";
|
||||||
|
}
|
||||||
|
|
||||||
|
const {
|
||||||
|
icon,
|
||||||
|
class: className = "",
|
||||||
|
style = "",
|
||||||
|
size = "md",
|
||||||
|
color,
|
||||||
|
fallback = "●",
|
||||||
|
loading = "lazy",
|
||||||
|
} = Astro.props;
|
||||||
|
|
||||||
|
// 尺寸映射
|
||||||
|
const sizeClasses = {
|
||||||
|
xs: "text-xs",
|
||||||
|
sm: "text-sm",
|
||||||
|
md: "text-base",
|
||||||
|
lg: "text-lg",
|
||||||
|
xl: "text-xl",
|
||||||
|
"2xl": "text-2xl",
|
||||||
|
};
|
||||||
|
|
||||||
|
const sizeClass = sizeClasses[size] || sizeClasses.md;
|
||||||
|
const colorStyle = color ? `color: ${color};` : "";
|
||||||
|
const combinedStyle = `${colorStyle}${style}`;
|
||||||
|
const combinedClass = `${sizeClass} ${className}`.trim();
|
||||||
|
|
||||||
|
// 生成唯一ID
|
||||||
|
const iconId = `icon-${Math.random().toString(36).substr(2, 9)}`;
|
||||||
|
---
|
||||||
|
|
||||||
|
<span
|
||||||
|
class={`inline-flex items-center justify-center ${combinedClass}`}
|
||||||
|
style={combinedStyle}
|
||||||
|
data-icon-container={iconId}
|
||||||
|
>
|
||||||
|
<!-- 加载状态指示器 -->
|
||||||
|
<span
|
||||||
|
class="icon-loading animate-pulse opacity-50"
|
||||||
|
data-loading-indicator
|
||||||
|
>
|
||||||
|
{fallback}
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<!-- 实际图标 -->
|
||||||
|
<iconify-icon
|
||||||
|
icon={icon}
|
||||||
|
class="icon-content opacity-0 transition-opacity duration-200"
|
||||||
|
data-icon-element
|
||||||
|
loading={loading}
|
||||||
|
></iconify-icon>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<script define:vars={{ iconId, icon }}>
|
||||||
|
// 图标加载和显示逻辑
|
||||||
|
(function() {
|
||||||
|
const container = document.querySelector(`[data-icon-container="${iconId}"]`);
|
||||||
|
if (!container) return;
|
||||||
|
|
||||||
|
const loadingIndicator = container.querySelector('[data-loading-indicator]');
|
||||||
|
const iconElement = container.querySelector('[data-icon-element]');
|
||||||
|
|
||||||
|
if (!loadingIndicator || !iconElement) return;
|
||||||
|
|
||||||
|
// 检查图标是否已经加载
|
||||||
|
function checkIconLoaded() {
|
||||||
|
// 检查iconify-icon元素是否已经渲染
|
||||||
|
const hasContent = iconElement.shadowRoot &&
|
||||||
|
iconElement.shadowRoot.children.length > 0;
|
||||||
|
|
||||||
|
if (hasContent) {
|
||||||
|
showIcon();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 显示图标,隐藏加载指示器
|
||||||
|
function showIcon() {
|
||||||
|
loadingIndicator.style.display = 'none';
|
||||||
|
iconElement.classList.remove('opacity-0');
|
||||||
|
iconElement.classList.add('opacity-100');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 显示加载指示器,隐藏图标
|
||||||
|
function showLoading() {
|
||||||
|
loadingIndicator.style.display = 'inline-flex';
|
||||||
|
iconElement.classList.remove('opacity-100');
|
||||||
|
iconElement.classList.add('opacity-0');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 初始状态
|
||||||
|
showLoading();
|
||||||
|
|
||||||
|
// 监听图标加载事件
|
||||||
|
iconElement.addEventListener('load', () => {
|
||||||
|
showIcon();
|
||||||
|
});
|
||||||
|
|
||||||
|
// 监听图标加载错误
|
||||||
|
iconElement.addEventListener('error', () => {
|
||||||
|
// 保持显示fallback
|
||||||
|
console.warn(`Failed to load icon: ${icon}`);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 使用MutationObserver监听shadow DOM变化
|
||||||
|
if (window.MutationObserver) {
|
||||||
|
const observer = new MutationObserver(() => {
|
||||||
|
if (checkIconLoaded()) {
|
||||||
|
observer.disconnect();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 监听iconify-icon元素的变化
|
||||||
|
observer.observe(iconElement, {
|
||||||
|
childList: true,
|
||||||
|
subtree: true,
|
||||||
|
attributes: true
|
||||||
|
});
|
||||||
|
|
||||||
|
// 设置超时,避免无限等待
|
||||||
|
setTimeout(() => {
|
||||||
|
observer.disconnect();
|
||||||
|
if (!checkIconLoaded()) {
|
||||||
|
console.warn(`Icon load timeout: ${icon}`);
|
||||||
|
}
|
||||||
|
}, 5000);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 立即检查一次(可能已经加载完成)
|
||||||
|
setTimeout(() => {
|
||||||
|
checkIconLoaded();
|
||||||
|
}, 100);
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.icon-loading {
|
||||||
|
min-width: 1em;
|
||||||
|
min-height: 1em;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-content {
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-icon-container] {
|
||||||
|
position: relative;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
min-width: 1em;
|
||||||
|
min-height: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
[data-icon-container] .icon-loading,
|
||||||
|
[data-icon-container] .icon-content {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
266
src/components/common/iconifyLoader.astro
Normal file
@@ -0,0 +1,266 @@
|
|||||||
|
---
|
||||||
|
// 全局Iconify加载器组件
|
||||||
|
// 在页面头部加载,确保图标库尽早可用
|
||||||
|
|
||||||
|
export interface Props {
|
||||||
|
preloadIcons?: string[]; // 需要预加载的图标列表
|
||||||
|
timeout?: number; // 加载超时时间
|
||||||
|
retryCount?: number; // 重试次数
|
||||||
|
}
|
||||||
|
|
||||||
|
const { preloadIcons = [], timeout = 10000, retryCount = 3 } = Astro.props;
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- Iconify图标库加载器 -->
|
||||||
|
<script define:vars={{ preloadIcons, timeout, retryCount }}>
|
||||||
|
// 全局图标加载逻辑
|
||||||
|
(function() {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
// 避免重复加载
|
||||||
|
if (window.__iconifyLoaderInitialized) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
window.__iconifyLoaderInitialized = true;
|
||||||
|
|
||||||
|
// 图标加载器类
|
||||||
|
class IconifyLoader {
|
||||||
|
constructor() {
|
||||||
|
this.isLoaded = false;
|
||||||
|
this.isLoading = false;
|
||||||
|
this.loadPromise = null;
|
||||||
|
this.observers = new Set();
|
||||||
|
this.preloadQueue = new Set();
|
||||||
|
}
|
||||||
|
|
||||||
|
async load(options = {}) {
|
||||||
|
const { timeout: loadTimeout = timeout, retryCount: maxRetries = retryCount } = options;
|
||||||
|
|
||||||
|
if (this.isLoaded) {
|
||||||
|
return Promise.resolve();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.isLoading && this.loadPromise) {
|
||||||
|
return this.loadPromise;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.isLoading = true;
|
||||||
|
this.loadPromise = this.loadWithRetry(loadTimeout, maxRetries);
|
||||||
|
|
||||||
|
try {
|
||||||
|
await this.loadPromise;
|
||||||
|
this.isLoaded = true;
|
||||||
|
this.notifyObservers();
|
||||||
|
await this.processPreloadQueue();
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Failed to load Iconify:', error);
|
||||||
|
throw error;
|
||||||
|
} finally {
|
||||||
|
this.isLoading = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async loadWithRetry(timeout, retryCount) {
|
||||||
|
for (let attempt = 1; attempt <= retryCount; attempt++) {
|
||||||
|
try {
|
||||||
|
await this.loadScript(timeout);
|
||||||
|
return;
|
||||||
|
} catch (error) {
|
||||||
|
console.warn(`Iconify load attempt ${attempt} failed:`, error);
|
||||||
|
if (attempt === retryCount) {
|
||||||
|
throw new Error(`Failed to load Iconify after ${retryCount} attempts`);
|
||||||
|
}
|
||||||
|
await new Promise(resolve => setTimeout(resolve, 1000));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
loadScript(timeout) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
// 检查是否已经存在
|
||||||
|
if (this.isIconifyReady()) {
|
||||||
|
resolve();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const existingScript = document.querySelector('script[src*="iconify-icon"]');
|
||||||
|
if (existingScript) {
|
||||||
|
this.waitForIconifyReady().then(resolve).catch(reject);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const script = document.createElement('script');
|
||||||
|
script.src = 'https://code.iconify.design/iconify-icon/1.0.7/iconify-icon.min.js';
|
||||||
|
script.async = true;
|
||||||
|
script.crossOrigin = 'anonymous';
|
||||||
|
|
||||||
|
const timeoutId = setTimeout(() => {
|
||||||
|
script.remove();
|
||||||
|
reject(new Error('Script load timeout'));
|
||||||
|
}, timeout);
|
||||||
|
|
||||||
|
script.onload = () => {
|
||||||
|
clearTimeout(timeoutId);
|
||||||
|
this.waitForIconifyReady().then(resolve).catch(reject);
|
||||||
|
};
|
||||||
|
|
||||||
|
script.onerror = () => {
|
||||||
|
clearTimeout(timeoutId);
|
||||||
|
script.remove();
|
||||||
|
reject(new Error('Script load error'));
|
||||||
|
};
|
||||||
|
|
||||||
|
document.head.appendChild(script);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
waitForIconifyReady(maxWait = 5000) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const startTime = Date.now();
|
||||||
|
|
||||||
|
const checkReady = () => {
|
||||||
|
if (this.isIconifyReady()) {
|
||||||
|
resolve();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Date.now() - startTime > maxWait) {
|
||||||
|
reject(new Error('Iconify initialization timeout'));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
setTimeout(checkReady, 50);
|
||||||
|
};
|
||||||
|
|
||||||
|
checkReady();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
isIconifyReady() {
|
||||||
|
return typeof window !== 'undefined' && 'customElements' in window && customElements.get('iconify-icon') !== undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
onLoad(callback) {
|
||||||
|
if (this.isLoaded) {
|
||||||
|
callback();
|
||||||
|
} else {
|
||||||
|
this.observers.add(callback);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
notifyObservers() {
|
||||||
|
this.observers.forEach(callback => {
|
||||||
|
try {
|
||||||
|
callback();
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error in icon load observer:', error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
this.observers.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
addToPreloadQueue(icons) {
|
||||||
|
if (Array.isArray(icons)) {
|
||||||
|
icons.forEach(icon => this.preloadQueue.add(icon));
|
||||||
|
} else {
|
||||||
|
this.preloadQueue.add(icons);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.isLoaded) {
|
||||||
|
this.processPreloadQueue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async processPreloadQueue() {
|
||||||
|
if (this.preloadQueue.size === 0) return;
|
||||||
|
|
||||||
|
const iconsToLoad = Array.from(this.preloadQueue);
|
||||||
|
this.preloadQueue.clear();
|
||||||
|
|
||||||
|
await this.preloadIcons(iconsToLoad);
|
||||||
|
}
|
||||||
|
|
||||||
|
async preloadIcons(icons) {
|
||||||
|
if (!this.isLoaded || icons.length === 0) return;
|
||||||
|
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
let loadedCount = 0;
|
||||||
|
const totalIcons = icons.length;
|
||||||
|
const tempElements = [];
|
||||||
|
|
||||||
|
const cleanup = () => {
|
||||||
|
tempElements.forEach(el => {
|
||||||
|
if (el.parentNode) {
|
||||||
|
el.parentNode.removeChild(el);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const checkComplete = () => {
|
||||||
|
loadedCount++;
|
||||||
|
if (loadedCount >= totalIcons) {
|
||||||
|
cleanup();
|
||||||
|
resolve();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
icons.forEach(icon => {
|
||||||
|
const tempIcon = document.createElement('iconify-icon');
|
||||||
|
tempIcon.setAttribute('icon', icon);
|
||||||
|
tempIcon.style.cssText = 'position:absolute;top:-9999px;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none;';
|
||||||
|
|
||||||
|
tempIcon.addEventListener('load', checkComplete);
|
||||||
|
tempIcon.addEventListener('error', checkComplete);
|
||||||
|
|
||||||
|
tempElements.push(tempIcon);
|
||||||
|
document.body.appendChild(tempIcon);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 设置超时清理
|
||||||
|
setTimeout(() => {
|
||||||
|
cleanup();
|
||||||
|
resolve();
|
||||||
|
}, 3000);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建全局实例
|
||||||
|
window.__iconifyLoader = new IconifyLoader();
|
||||||
|
|
||||||
|
// 立即开始加载
|
||||||
|
window.__iconifyLoader.load().catch(error => {
|
||||||
|
console.error('Failed to initialize Iconify:', error);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 如果有预加载图标,添加到队列
|
||||||
|
if (preloadIcons && preloadIcons.length > 0) {
|
||||||
|
window.__iconifyLoader.addToPreloadQueue(preloadIcons);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导出便捷函数到全局
|
||||||
|
window.loadIconify = () => window.__iconifyLoader.load();
|
||||||
|
window.preloadIcons = (icons) => window.__iconifyLoader.addToPreloadQueue(icons);
|
||||||
|
window.onIconifyReady = (callback) => window.__iconifyLoader.onLoad(callback);
|
||||||
|
|
||||||
|
// 页面可见性变化时重新检查
|
||||||
|
document.addEventListener('visibilitychange', () => {
|
||||||
|
if (!document.hidden && !window.__iconifyLoader.isLoaded) {
|
||||||
|
window.__iconifyLoader.load().catch(console.error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!-- 为不支持JavaScript的情况提供备用方案 -->
|
||||||
|
<noscript>
|
||||||
|
<style>
|
||||||
|
iconify-icon {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.icon-fallback {
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</noscript>
|
||||||
61
src/components/common/imageWrapper.astro
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
---
|
||||||
|
import type { ImageMetadata } from "astro";
|
||||||
|
import { Image } from "astro:assets";
|
||||||
|
import path from "node:path";
|
||||||
|
|
||||||
|
import { url } from "@utils/url";
|
||||||
|
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
id?: string;
|
||||||
|
src: string;
|
||||||
|
class?: string;
|
||||||
|
alt?: string;
|
||||||
|
position?: string;
|
||||||
|
basePath?: string;
|
||||||
|
style?: string;
|
||||||
|
loading?: "lazy" | "eager";
|
||||||
|
decoding?: "async" | "auto" | "sync";
|
||||||
|
}
|
||||||
|
|
||||||
|
const { id, src, alt, position = "center", basePath = "/", style, loading = "lazy", decoding = "async" } = Astro.props;
|
||||||
|
const className = Astro.props.class;
|
||||||
|
|
||||||
|
const isLocal = !(
|
||||||
|
src.startsWith("/") ||
|
||||||
|
src.startsWith("http") ||
|
||||||
|
src.startsWith("https") ||
|
||||||
|
src.startsWith("data:")
|
||||||
|
);
|
||||||
|
const isPublic = src.startsWith("/");
|
||||||
|
|
||||||
|
// TODO temporary workaround for images dynamic import
|
||||||
|
// https://github.com/withastro/astro/issues/3373
|
||||||
|
// biome-ignore lint/suspicious/noImplicitAnyLet: <check later>
|
||||||
|
let img;
|
||||||
|
if (isLocal) {
|
||||||
|
const files = import.meta.glob<ImageMetadata>("../../**", {
|
||||||
|
import: "default",
|
||||||
|
});
|
||||||
|
let normalizedPath = path
|
||||||
|
.normalize(path.join("../../", basePath, src))
|
||||||
|
.replace(/\\/g, "/");
|
||||||
|
const file = files[normalizedPath];
|
||||||
|
if (!file) {
|
||||||
|
console.error(
|
||||||
|
`\n[ERROR] Image file not found: ${normalizedPath.replace("../../", "src/")}`,
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
img = await file();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const imageClass = "w-full h-full object-cover";
|
||||||
|
const imageStyle = `object-position: ${position}`;
|
||||||
|
---
|
||||||
|
|
||||||
|
<div id={id} class:list={[className, 'overflow-hidden relative']} style={style}>
|
||||||
|
<div class="transition absolute inset-0 bg-black/3 dark:bg-black/9 pointer-events-none"></div>
|
||||||
|
{isLocal && img && <Image src={img} alt={alt || ""} class={imageClass} style={imageStyle} loading={loading} decoding={decoding}/>}
|
||||||
|
{!isLocal && <img src={isPublic ? url(src) : src} alt={alt || ""} class={imageClass} style={imageStyle} loading={loading} decoding={decoding}/>}
|
||||||
|
</div>
|
||||||
16
src/components/common/markdown.astro
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
// 只加载基础的等宽字体,减少加载时间
|
||||||
|
import "@fontsource-variable/jetbrains-mono";
|
||||||
|
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
class: string;
|
||||||
|
}
|
||||||
|
const className = Astro.props.class;
|
||||||
|
---
|
||||||
|
|
||||||
|
<div data-pagefind-body class={`prose dark:prose-invert prose-base max-w-none! custom-md ${className}`}>
|
||||||
|
<!--<div class="prose dark:prose-invert max-w-none custom-md">-->
|
||||||
|
<!--<div class="max-w-none custom-md">-->
|
||||||
|
<slot/>
|
||||||
|
</div>
|
||||||
285
src/components/common/passwordProtection.astro
Normal file
@@ -0,0 +1,285 @@
|
|||||||
|
---
|
||||||
|
import { i18n } from "@i18n/translation";
|
||||||
|
import I18nKey from "@i18n/i18nKey";
|
||||||
|
import CryptoJS from 'crypto-js';
|
||||||
|
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
isEncrypted?: boolean;
|
||||||
|
password?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const { isEncrypted = false, password = "" } = Astro.props;
|
||||||
|
|
||||||
|
let encryptedContent = "";
|
||||||
|
if (isEncrypted) {
|
||||||
|
const html = await Astro.slots.render('default');
|
||||||
|
encryptedContent = CryptoJS.AES.encrypt(html, password).toString();
|
||||||
|
}
|
||||||
|
---
|
||||||
|
|
||||||
|
{!isEncrypted ? (
|
||||||
|
<slot />
|
||||||
|
) : (
|
||||||
|
<div id="password-protection" class="password-protection">
|
||||||
|
<div class="password-container">
|
||||||
|
<div class="lock-icon">
|
||||||
|
<svg width="48" height="48" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zM9 6c0-1.66 1.34-3 3-3s3 1.34 3 3v2H9V6z" fill="currentColor"/>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
<h2 class="text-90">{i18n(I18nKey.passwordProtectedTitle)}</h2>
|
||||||
|
<p class="text-75">{i18n(I18nKey.passwordProtectedDescription)}</p>
|
||||||
|
<div class="password-input-group">
|
||||||
|
<div class="password-input-wrapper">
|
||||||
|
<input
|
||||||
|
type="password"
|
||||||
|
id="password-input"
|
||||||
|
placeholder={i18n(I18nKey.passwordPlaceholder)}
|
||||||
|
class="password-input text-90"
|
||||||
|
autocomplete="current-password"
|
||||||
|
/>
|
||||||
|
<button id="toggle-password" class="toggle-password-btn text-50" type="button" aria-label="Toggle password visibility">
|
||||||
|
<svg id="eye-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||||
|
<path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path>
|
||||||
|
<circle cx="12" cy="12" r="3"></circle>
|
||||||
|
</svg>
|
||||||
|
<svg id="eye-off-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="display: none;">
|
||||||
|
<path d="M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24"></path>
|
||||||
|
<line x1="1" y1="1" x2="23" y2="23"></line>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<button id="unlock-btn" class="unlock-button">{i18n(I18nKey.passwordUnlock)}</button>
|
||||||
|
</div>
|
||||||
|
<div id="error-message" class="error-message" style="display: none;">{i18n(I18nKey.passwordIncorrect)}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="decrypted-content" class="decrypted-content" style="display: none;" data-encrypted={encryptedContent}></div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import CryptoJS from 'crypto-js';
|
||||||
|
|
||||||
|
function initPasswordProtection() {
|
||||||
|
const passwordInput = document.getElementById('password-input') as HTMLInputElement;
|
||||||
|
const unlockBtn = document.getElementById('unlock-btn');
|
||||||
|
const togglePasswordBtn = document.getElementById('toggle-password');
|
||||||
|
const eyeIcon = document.getElementById('eye-icon');
|
||||||
|
const eyeOffIcon = document.getElementById('eye-off-icon');
|
||||||
|
const errorMessage = document.getElementById('error-message');
|
||||||
|
const passwordProtection = document.getElementById('password-protection');
|
||||||
|
const decryptedContent = document.getElementById('decrypted-content');
|
||||||
|
|
||||||
|
if (!passwordInput || !unlockBtn || !decryptedContent || !passwordProtection) return;
|
||||||
|
|
||||||
|
// 切换密码可见性
|
||||||
|
if (togglePasswordBtn && eyeIcon && eyeOffIcon) {
|
||||||
|
togglePasswordBtn.addEventListener('click', () => {
|
||||||
|
const isPassword = passwordInput.type === 'password';
|
||||||
|
passwordInput.type = isPassword ? 'text' : 'password';
|
||||||
|
eyeIcon.style.display = isPassword ? 'none' : 'block';
|
||||||
|
eyeOffIcon.style.display = isPassword ? 'block' : 'none';
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleUnlock = () => {
|
||||||
|
const password = passwordInput.value;
|
||||||
|
const encrypted = decryptedContent.getAttribute('data-encrypted');
|
||||||
|
|
||||||
|
if (!password || !encrypted) return;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const bytes = CryptoJS.AES.decrypt(encrypted, password);
|
||||||
|
const decryptedHtml = bytes.toString(CryptoJS.enc.Utf8);
|
||||||
|
|
||||||
|
if (decryptedHtml) {
|
||||||
|
decryptedContent.innerHTML = decryptedHtml;
|
||||||
|
decryptedContent.style.display = 'block';
|
||||||
|
passwordProtection.style.display = 'none';
|
||||||
|
|
||||||
|
// 执行解密内容中的脚本
|
||||||
|
decryptedContent.querySelectorAll('script').forEach(oldScript => {
|
||||||
|
const newScript = document.createElement('script');
|
||||||
|
Array.from(oldScript.attributes).forEach(attr => newScript.setAttribute(attr.name, attr.value));
|
||||||
|
newScript.appendChild(document.createTextNode(oldScript.innerHTML));
|
||||||
|
oldScript.parentNode?.replaceChild(newScript, oldScript);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 触发可能需要的重新渲染或初始化
|
||||||
|
window.dispatchEvent(new Event('resize'));
|
||||||
|
window.dispatchEvent(new CustomEvent('content-decrypted'));
|
||||||
|
} else {
|
||||||
|
if (errorMessage) errorMessage.style.display = 'block';
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
if (errorMessage) errorMessage.style.display = 'block';
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
unlockBtn.addEventListener('click', handleUnlock);
|
||||||
|
passwordInput.addEventListener('keypress', (e) => {
|
||||||
|
if (e.key === 'Enter') handleUnlock();
|
||||||
|
if (errorMessage) errorMessage.style.display = 'none';
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 页面加载时初始化
|
||||||
|
initPasswordProtection();
|
||||||
|
|
||||||
|
// 支持 View Transitions
|
||||||
|
document.addEventListener('astro:after-swap', initPasswordProtection);
|
||||||
|
</script>
|
||||||
|
)}
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.password-protection {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
min-height: 40vh;
|
||||||
|
padding: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.password-container {
|
||||||
|
text-align: center;
|
||||||
|
max-width: 400px;
|
||||||
|
width: 100%;
|
||||||
|
padding: 2.5rem;
|
||||||
|
border-radius: 1rem;
|
||||||
|
background: var(--card-bg);
|
||||||
|
border: 1px solid var(--line-divider);
|
||||||
|
box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.lock-icon {
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
color: var(--primary);
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.password-container h2 {
|
||||||
|
margin-bottom: 0.75rem;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.password-container p {
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
font-size: 0.95rem;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.password-input-group {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 0.75rem;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.password-input-wrapper {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.password-input {
|
||||||
|
width: 100%;
|
||||||
|
padding: 0.75rem 3rem 0.75rem 1rem;
|
||||||
|
border: 1px solid var(--line-divider);
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
background: var(--card-bg);
|
||||||
|
font-size: 1rem;
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.password-input::-ms-reveal,
|
||||||
|
.password-input::-ms-clear {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toggle-password-btn {
|
||||||
|
position: absolute;
|
||||||
|
right: 0.75rem;
|
||||||
|
top: 50%;
|
||||||
|
translate: 0 -50%;
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
padding: 0.25rem;
|
||||||
|
cursor: pointer;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
transition: color 0.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toggle-password-btn:hover {
|
||||||
|
color: var(--primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.password-input::placeholder {
|
||||||
|
color: var(--content-meta);
|
||||||
|
opacity: 0.7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.password-input:focus {
|
||||||
|
outline: none;
|
||||||
|
border-color: var(--primary);
|
||||||
|
box-shadow: 0 0 0 3px var(--primary-light);
|
||||||
|
}
|
||||||
|
|
||||||
|
.unlock-button {
|
||||||
|
width: 100%;
|
||||||
|
padding: 0.75rem 1.5rem;
|
||||||
|
background: var(--primary);
|
||||||
|
color: white;
|
||||||
|
border: none;
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
font-size: 1rem;
|
||||||
|
font-weight: 600;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.unlock-button:hover {
|
||||||
|
background: var(--primary-hover);
|
||||||
|
translate: 0 -1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.unlock-button:active {
|
||||||
|
translate: 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.error-message {
|
||||||
|
color: #ef4444;
|
||||||
|
font-size: 0.875rem;
|
||||||
|
margin-top: 0.75rem;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.decrypted-content {
|
||||||
|
animation: fadeIn 0.5s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes fadeIn {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
translate: 0 10px;
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
translate: 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 响应式适配 */
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
.password-protection {
|
||||||
|
padding: 1rem;
|
||||||
|
min-height: 30vh;
|
||||||
|
}
|
||||||
|
.password-container {
|
||||||
|
padding: 1.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
154
src/components/common/typewriterText.astro
Normal file
@@ -0,0 +1,154 @@
|
|||||||
|
---
|
||||||
|
export interface Props {
|
||||||
|
text: string | string[];
|
||||||
|
speed?: number;
|
||||||
|
deleteSpeed?: number;
|
||||||
|
pauseTime?: number;
|
||||||
|
class?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const {
|
||||||
|
text,
|
||||||
|
speed = 100,
|
||||||
|
deleteSpeed = 50,
|
||||||
|
pauseTime = 2000,
|
||||||
|
class: className = "",
|
||||||
|
} = Astro.props;
|
||||||
|
const textData = Array.isArray(text) ? JSON.stringify(text) : text;
|
||||||
|
---
|
||||||
|
|
||||||
|
<span class={`typewriter ${className}`} data-text={textData} data-speed={speed} data-delete-speed={deleteSpeed} data-pause-time={pauseTime}></span>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
class TypewriterEffect {
|
||||||
|
private element: HTMLElement;
|
||||||
|
private texts: string[];
|
||||||
|
private currentTextIndex: number = 0;
|
||||||
|
private speed: number;
|
||||||
|
private deleteSpeed: number;
|
||||||
|
private pauseTime: number;
|
||||||
|
private currentIndex: number = 0;
|
||||||
|
private isDeleting: boolean = false;
|
||||||
|
private timeoutId: number | null = null;
|
||||||
|
|
||||||
|
constructor(element: HTMLElement) {
|
||||||
|
this.element = element;
|
||||||
|
const textData = element.dataset.text || '';
|
||||||
|
|
||||||
|
// 尝试解析为JSON数组,如果失败则作为单个字符串处理
|
||||||
|
try {
|
||||||
|
const parsed = JSON.parse(textData);
|
||||||
|
this.texts = Array.isArray(parsed) ? parsed : [textData];
|
||||||
|
} catch {
|
||||||
|
this.texts = [textData];
|
||||||
|
}
|
||||||
|
|
||||||
|
this.speed = parseInt(element.dataset.speed || '100');
|
||||||
|
this.deleteSpeed = parseInt(element.dataset.deleteSpeed || '50');
|
||||||
|
this.pauseTime = parseInt(element.dataset.pauseTime || '2000');
|
||||||
|
|
||||||
|
// 如果有多条文本且未启用打字机效果,随机显示一条
|
||||||
|
if (this.texts.length > 1 && !this.isTypewriterEnabled()) {
|
||||||
|
this.showRandomText();
|
||||||
|
} else {
|
||||||
|
this.start();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private isTypewriterEnabled(): boolean {
|
||||||
|
// 检查是否有打字机相关的数据属性
|
||||||
|
return this.element.dataset.speed !== undefined ||
|
||||||
|
this.element.dataset.deleteSpeed !== undefined ||
|
||||||
|
this.element.dataset.pauseTime !== undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
private showRandomText() {
|
||||||
|
const randomIndex = Math.floor(Math.random() * this.texts.length);
|
||||||
|
this.element.textContent = this.texts[randomIndex];
|
||||||
|
}
|
||||||
|
|
||||||
|
private start() {
|
||||||
|
if (this.texts.length === 0) return;
|
||||||
|
this.type();
|
||||||
|
}
|
||||||
|
|
||||||
|
private getCurrentText(): string {
|
||||||
|
return this.texts[this.currentTextIndex] || '';
|
||||||
|
}
|
||||||
|
|
||||||
|
private type() {
|
||||||
|
const currentText = this.getCurrentText();
|
||||||
|
|
||||||
|
if (this.isDeleting) {
|
||||||
|
// 删除字符
|
||||||
|
if (this.currentIndex > 0) {
|
||||||
|
this.currentIndex--;
|
||||||
|
this.element.textContent = currentText.substring(0, this.currentIndex);
|
||||||
|
this.timeoutId = window.setTimeout(() => this.type(), this.deleteSpeed);
|
||||||
|
} else {
|
||||||
|
// 删除完成,切换到下一条文本
|
||||||
|
this.isDeleting = false;
|
||||||
|
this.currentTextIndex = (this.currentTextIndex + 1) % this.texts.length;
|
||||||
|
this.timeoutId = window.setTimeout(() => this.type(), this.speed);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 添加字符
|
||||||
|
if (this.currentIndex < currentText.length) {
|
||||||
|
this.currentIndex++;
|
||||||
|
this.element.textContent = currentText.substring(0, this.currentIndex);
|
||||||
|
this.timeoutId = window.setTimeout(() => this.type(), this.speed);
|
||||||
|
} else {
|
||||||
|
// 打字完成,暂停后开始删除(如果有多条文本)
|
||||||
|
if (this.texts.length > 1) {
|
||||||
|
this.isDeleting = true;
|
||||||
|
this.timeoutId = window.setTimeout(() => this.type(), this.pauseTime);
|
||||||
|
}
|
||||||
|
// 如果只有一条文本,保持显示不删除
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public destroy() {
|
||||||
|
if (this.timeoutId) {
|
||||||
|
clearTimeout(this.timeoutId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 初始化所有打字机效果
|
||||||
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
const typewriterElements = document.querySelectorAll('.typewriter');
|
||||||
|
typewriterElements.forEach((element) => {
|
||||||
|
new TypewriterEffect(element as HTMLElement);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// 支持页面切换时重新初始化
|
||||||
|
document.addEventListener('swup:contentReplaced', () => {
|
||||||
|
const typewriterElements = document.querySelectorAll('.typewriter');
|
||||||
|
typewriterElements.forEach((element) => {
|
||||||
|
new TypewriterEffect(element as HTMLElement);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.typewriter {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.typewriter::after {
|
||||||
|
content: '|';
|
||||||
|
animation: blink 1s infinite;
|
||||||
|
margin-left: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes blink {
|
||||||
|
0%, 50% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
51%, 100% {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
13
src/components/configCarrier.astro
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
import { siteConfig } from "@/config";
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- 全局配置载体 -->
|
||||||
|
<div
|
||||||
|
id="config-carrier"
|
||||||
|
data-hue={siteConfig.themeColor.hue}
|
||||||
|
data-lang={siteConfig.lang}
|
||||||
|
data-theme={siteConfig.defaultTheme}
|
||||||
|
data-wallpaper-mode={siteConfig.wallpaper.mode}
|
||||||
|
>
|
||||||
|
</div>
|
||||||
179
src/components/data/projectCard.astro
Normal file
@@ -0,0 +1,179 @@
|
|||||||
|
---
|
||||||
|
import { i18n } from "@i18n/translation";
|
||||||
|
import I18nKey from "@i18n/i18nKey";
|
||||||
|
|
||||||
|
|
||||||
|
export interface Props {
|
||||||
|
project: {
|
||||||
|
id: string;
|
||||||
|
title: string;
|
||||||
|
description: string;
|
||||||
|
image?: string;
|
||||||
|
category: string;
|
||||||
|
techStack: string[];
|
||||||
|
status: "completed" | "in-progress" | "planned";
|
||||||
|
demoUrl?: string;
|
||||||
|
sourceUrl?: string;
|
||||||
|
startDate: string;
|
||||||
|
endDate?: string;
|
||||||
|
featured?: boolean;
|
||||||
|
tags?: string[];
|
||||||
|
};
|
||||||
|
size?: "small" | "medium" | "large";
|
||||||
|
showImage?: boolean;
|
||||||
|
maxTechStack?: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
const {
|
||||||
|
project,
|
||||||
|
size = "medium",
|
||||||
|
showImage = true,
|
||||||
|
maxTechStack = 4,
|
||||||
|
} = Astro.props;
|
||||||
|
|
||||||
|
// 状态样式映射
|
||||||
|
const getStatusStyle = (status: string) => {
|
||||||
|
switch (status) {
|
||||||
|
case "completed":
|
||||||
|
return "bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400";
|
||||||
|
case "in-progress":
|
||||||
|
return "bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400";
|
||||||
|
case "planned":
|
||||||
|
return "bg-gray-100 text-gray-700 dark:bg-gray-900/30 dark:text-gray-400";
|
||||||
|
default:
|
||||||
|
return "bg-gray-100 text-gray-700 dark:bg-gray-900/30 dark:text-gray-400";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 状态文本映射
|
||||||
|
const getStatusText = (status: string) => {
|
||||||
|
switch (status) {
|
||||||
|
case "completed":
|
||||||
|
return i18n(I18nKey.projectsCompleted);
|
||||||
|
case "in-progress":
|
||||||
|
return i18n(I18nKey.projectsInProgress);
|
||||||
|
case "planned":
|
||||||
|
return i18n(I18nKey.projectsPlanned);
|
||||||
|
default:
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 尺寸样式映射
|
||||||
|
const getSizeClasses = (size: string) => {
|
||||||
|
switch (size) {
|
||||||
|
case "small":
|
||||||
|
return {
|
||||||
|
container: "p-4",
|
||||||
|
title: "text-lg",
|
||||||
|
description: "text-sm line-clamp-2",
|
||||||
|
tech: "text-xs",
|
||||||
|
links: "text-sm",
|
||||||
|
};
|
||||||
|
case "large":
|
||||||
|
return {
|
||||||
|
container: "p-6",
|
||||||
|
title: "text-xl",
|
||||||
|
description: "text-base line-clamp-3",
|
||||||
|
tech: "text-sm",
|
||||||
|
links: "text-base",
|
||||||
|
};
|
||||||
|
default: // medium
|
||||||
|
return {
|
||||||
|
container: "p-5",
|
||||||
|
title: "text-lg",
|
||||||
|
description: "text-sm line-clamp-2",
|
||||||
|
tech: "text-xs",
|
||||||
|
links: "text-sm",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const sizeClasses = getSizeClasses(size);
|
||||||
|
---
|
||||||
|
|
||||||
|
<div class="bg-white dark:bg-gray-800 rounded-lg border border-black/10 dark:border-white/10 overflow-hidden hover:shadow-lg transition-all duration-300 group">
|
||||||
|
<!-- 项目图片 -->
|
||||||
|
{showImage && project.image && (
|
||||||
|
<div class={`overflow-hidden ${size === 'large' ? 'aspect-video' : 'aspect-4/3'}`}>
|
||||||
|
<img
|
||||||
|
src={project.image}
|
||||||
|
alt={project.title}
|
||||||
|
class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-300"
|
||||||
|
loading="lazy"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
<!-- 项目内容 -->
|
||||||
|
<div class={sizeClasses.container}>
|
||||||
|
<!-- 标题和状态 -->
|
||||||
|
<div class="flex items-start justify-between mb-3">
|
||||||
|
<h3 class={`font-semibold text-black/90 dark:text-white/90 ${sizeClasses.title} ${size === 'small' ? 'line-clamp-1' : ''}`}>
|
||||||
|
{project.title}
|
||||||
|
</h3>
|
||||||
|
<span class={`px-2 py-1 text-xs rounded-full shrink-0 ml-2 ${getStatusStyle(project.status)}`}>
|
||||||
|
{getStatusText(project.status)}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<!-- 分类标签 -->
|
||||||
|
{project.category && (
|
||||||
|
<div class="mb-2">
|
||||||
|
<span class="px-2 py-1 text-xs bg-blue-50 text-blue-600 dark:bg-blue-900/20 dark:text-blue-400 rounded-sm">
|
||||||
|
{project.category}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
<!-- 项目描述 -->
|
||||||
|
<p class={`text-black/60 dark:text-white/60 mb-4 ${sizeClasses.description}`}>
|
||||||
|
{project.description}
|
||||||
|
</p>
|
||||||
|
<!-- 技术栈 -->
|
||||||
|
{project.techStack && project.techStack.length > 0 && (
|
||||||
|
<div class="flex flex-wrap gap-1 mb-4">
|
||||||
|
{project.techStack.slice(0, maxTechStack).map((tech) => (
|
||||||
|
<span class={`px-2 py-1 bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300 rounded-sm ${sizeClasses.tech}`}>
|
||||||
|
{tech}
|
||||||
|
</span>
|
||||||
|
))}
|
||||||
|
{project.techStack.length > maxTechStack && (
|
||||||
|
<span class={`px-2 py-1 bg-gray-100 text-gray-700 dark:bg-gray-900/30 dark:text-gray-400 rounded-sm ${sizeClasses.tech}`}>
|
||||||
|
+{project.techStack.length - maxTechStack}
|
||||||
|
</span>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
<!-- 标签 -->
|
||||||
|
{project.tags && project.tags.length > 0 && (
|
||||||
|
<div class="flex flex-wrap gap-1 mb-4">
|
||||||
|
{project.tags.map((tag) => (
|
||||||
|
<span class={`px-2 py-1 bg-purple-100 text-purple-700 dark:bg-purple-900/30 dark:text-purple-400 rounded-sm ${sizeClasses.tech}`}>
|
||||||
|
#{tag}
|
||||||
|
</span>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
<!-- 链接 -->
|
||||||
|
<div class="flex gap-3">
|
||||||
|
{project.demoUrl && (
|
||||||
|
<a
|
||||||
|
href={project.demoUrl}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
class={`inline-flex items-center px-3 py-1.5 rounded-md border border-blue-500 text-blue-600 dark:border-blue-400 dark:text-blue-300 bg-blue-50/60 dark:bg-blue-900/20 hover:bg-blue-100 dark:hover:bg-blue-900/40 font-medium transition-colors ${sizeClasses.links}`}
|
||||||
|
>
|
||||||
|
{i18n(I18nKey.projectsDemo)}
|
||||||
|
</a>
|
||||||
|
)}
|
||||||
|
{project.sourceUrl && (
|
||||||
|
<a
|
||||||
|
href={project.sourceUrl}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
class={`inline-flex items-center px-3 py-1.5 rounded-md border border-gray-400 text-gray-700 dark:border-gray-500 dark:text-gray-200 bg-gray-50/80 dark:bg-gray-800/60 hover:bg-gray-100 dark:hover:bg-gray-700 font-medium transition-colors ${sizeClasses.links}`}
|
||||||
|
>
|
||||||
|
{i18n(I18nKey.projectsSource)}
|
||||||
|
</a>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
219
src/components/data/skillCard.astro
Normal file
@@ -0,0 +1,219 @@
|
|||||||
|
---
|
||||||
|
import { i18n } from "@i18n/translation";
|
||||||
|
import I18nKey from "@i18n/i18nKey";
|
||||||
|
import Icon from "@components/common/icon.astro";
|
||||||
|
|
||||||
|
|
||||||
|
export interface Props {
|
||||||
|
skill: {
|
||||||
|
id: string;
|
||||||
|
name: string;
|
||||||
|
description: string;
|
||||||
|
icon?: string;
|
||||||
|
category: string;
|
||||||
|
level: "beginner" | "intermediate" | "advanced" | "expert";
|
||||||
|
experience: string | { years: number; months: number };
|
||||||
|
relatedProjects?: string[];
|
||||||
|
certifications?: string[];
|
||||||
|
color?: string;
|
||||||
|
};
|
||||||
|
size?: "small" | "medium" | "large";
|
||||||
|
showProgress?: boolean;
|
||||||
|
showIcon?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
const {
|
||||||
|
skill,
|
||||||
|
size = "medium",
|
||||||
|
showProgress = true,
|
||||||
|
showIcon = true,
|
||||||
|
} = Astro.props;
|
||||||
|
|
||||||
|
// 技能等级颜色映射
|
||||||
|
const getLevelColor = (level: string) => {
|
||||||
|
switch (level) {
|
||||||
|
case "expert":
|
||||||
|
return "bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400";
|
||||||
|
case "advanced":
|
||||||
|
return "bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400";
|
||||||
|
case "intermediate":
|
||||||
|
return "bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400";
|
||||||
|
case "beginner":
|
||||||
|
return "bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400";
|
||||||
|
default:
|
||||||
|
return "bg-gray-100 text-gray-700 dark:bg-gray-900/30 dark:text-gray-400";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 技能等级文本映射
|
||||||
|
const getLevelText = (level: string) => {
|
||||||
|
switch (level) {
|
||||||
|
case "expert":
|
||||||
|
return i18n(I18nKey.skillsExpert);
|
||||||
|
case "advanced":
|
||||||
|
return i18n(I18nKey.skillsAdvanced);
|
||||||
|
case "intermediate":
|
||||||
|
return i18n(I18nKey.skillsIntermediate);
|
||||||
|
case "beginner":
|
||||||
|
return i18n(I18nKey.skillsBeginner);
|
||||||
|
default:
|
||||||
|
return level;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 技能等级进度条宽度
|
||||||
|
const getLevelWidth = (level: string) => {
|
||||||
|
switch (level) {
|
||||||
|
case "expert":
|
||||||
|
return "100%";
|
||||||
|
case "advanced":
|
||||||
|
return "80%";
|
||||||
|
case "intermediate":
|
||||||
|
return "60%";
|
||||||
|
case "beginner":
|
||||||
|
return "40%";
|
||||||
|
default:
|
||||||
|
return "20%";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 尺寸样式映射
|
||||||
|
const getSizeClasses = (size: string) => {
|
||||||
|
switch (size) {
|
||||||
|
case "small":
|
||||||
|
return {
|
||||||
|
container: "p-4",
|
||||||
|
icon: "w-8 h-8",
|
||||||
|
iconText: "text-lg",
|
||||||
|
title: "text-base",
|
||||||
|
description: "text-xs line-clamp-2",
|
||||||
|
badge: "text-xs",
|
||||||
|
progress: "h-1.5",
|
||||||
|
};
|
||||||
|
case "large":
|
||||||
|
return {
|
||||||
|
container: "p-6",
|
||||||
|
icon: "w-14 h-14",
|
||||||
|
iconText: "text-3xl",
|
||||||
|
title: "text-xl",
|
||||||
|
description: "text-sm line-clamp-3",
|
||||||
|
badge: "text-sm",
|
||||||
|
progress: "h-3",
|
||||||
|
};
|
||||||
|
default: // medium
|
||||||
|
return {
|
||||||
|
container: "p-5",
|
||||||
|
icon: "w-10 h-10",
|
||||||
|
iconText: "text-xl",
|
||||||
|
title: "text-lg",
|
||||||
|
description: "text-sm line-clamp-2",
|
||||||
|
badge: "text-xs",
|
||||||
|
progress: "h-2",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const sizeClasses = getSizeClasses(size);
|
||||||
|
const skillColor = skill.color || "#3B82F6";
|
||||||
|
|
||||||
|
// 经验展示文本
|
||||||
|
const getExperienceText = (experience: Props["skill"]["experience"]) => {
|
||||||
|
if (typeof experience === "string") return experience;
|
||||||
|
const yearsText = `${experience.years}${i18n(I18nKey.skillYears)}`;
|
||||||
|
const monthsText =
|
||||||
|
experience.months > 0
|
||||||
|
? ` ${experience.months}${i18n(I18nKey.skillMonths)}`
|
||||||
|
: "";
|
||||||
|
return `${yearsText}${monthsText}`;
|
||||||
|
};
|
||||||
|
---
|
||||||
|
|
||||||
|
<div class="bg-white dark:bg-slate-800/50 rounded-lg border border-black/10 dark:border-white/10 overflow-hidden hover:shadow-lg transition-all duration-300 group">
|
||||||
|
<div class={sizeClasses.container}>
|
||||||
|
<div class="flex items-start gap-4">
|
||||||
|
<!-- 技能图标 -->
|
||||||
|
{showIcon && skill.icon && (
|
||||||
|
<div class={`rounded-lg flex items-center justify-center shrink-0 ${sizeClasses.icon}`} style={`background-color: ${skillColor}20`}>
|
||||||
|
<Icon
|
||||||
|
icon={skill.icon}
|
||||||
|
class={sizeClasses.iconText}
|
||||||
|
color={skillColor}
|
||||||
|
fallback={skill.name.charAt(0)}
|
||||||
|
loading="eager"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
<div class="flex-1 min-w-0">
|
||||||
|
<!-- 技能名称和等级 -->
|
||||||
|
<div class="flex items-center justify-between mb-2">
|
||||||
|
<h3 class={`font-semibold text-black/90 dark:text-white/90 ${sizeClasses.title} ${size === 'small' ? 'truncate' : ''}`}>
|
||||||
|
{skill.name}
|
||||||
|
</h3>
|
||||||
|
<span class={`px-2 py-1 rounded-full shrink-0 ml-2 ${sizeClasses.badge} ${getLevelColor(skill.level)}`}>
|
||||||
|
{getLevelText(skill.level)}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<!-- 分类标签 -->
|
||||||
|
{skill.category && (
|
||||||
|
<div class="mb-2">
|
||||||
|
<span class={`px-2 py-1 bg-blue-50 text-blue-600 dark:bg-blue-900/20 dark:text-blue-400 rounded-sm ${sizeClasses.badge}`}>
|
||||||
|
{skill.category}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
<!-- 技能描述 -->
|
||||||
|
<p class={`text-black/60 dark:text-white/60 mb-3 ${sizeClasses.description}`}>
|
||||||
|
{skill.description}
|
||||||
|
</p>
|
||||||
|
<!-- 经验和进度条 -->
|
||||||
|
{showProgress && (
|
||||||
|
<div class="mb-3">
|
||||||
|
<div class="flex justify-between text-sm mb-1">
|
||||||
|
<span class="text-black/60 dark:text-white/60">{i18n(I18nKey.skillExperience)}</span>
|
||||||
|
<span class="text-black/80 dark:text-white/80">{getExperienceText(skill.experience)}</span>
|
||||||
|
</div>
|
||||||
|
<div class={`w-full bg-gray-200 dark:bg-gray-700 rounded-full ${sizeClasses.progress}`}>
|
||||||
|
<div
|
||||||
|
class={`rounded-full transition-all duration-500 ${sizeClasses.progress}`}
|
||||||
|
style={`width: ${getLevelWidth(skill.level)}; background-color: ${skillColor}`}
|
||||||
|
></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
<!-- 认证信息 -->
|
||||||
|
{skill.certifications && skill.certifications.length > 0 && (
|
||||||
|
<div class="mb-3">
|
||||||
|
<div class="flex flex-wrap gap-1">
|
||||||
|
{skill.certifications.map((cert) => (
|
||||||
|
<span class={`px-2 py-1 bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400 rounded-sm ${sizeClasses.badge}`}>
|
||||||
|
🏆 {cert}
|
||||||
|
</span>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
<!-- 相关项目 -->
|
||||||
|
{skill.relatedProjects && skill.relatedProjects.length > 0 && (
|
||||||
|
<div class="text-sm text-black/60 dark:text-white/60">
|
||||||
|
{i18n(I18nKey.skillsProjects)}: {skill.relatedProjects.length}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// 监听图标加载完成事件
|
||||||
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
const skillCard = document.currentScript?.parentElement;
|
||||||
|
if (skillCard) {
|
||||||
|
skillCard.classList.add('skill-card');
|
||||||
|
// 监听图标准备就绪事件
|
||||||
|
skillCard.addEventListener('iconify-ready', () => {
|
||||||
|
// 图标加载完成,可以执行额外的初始化逻辑
|
||||||
|
skillCard.classList.add('icons-loaded');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
372
src/components/data/timelineItem.astro
Normal file
@@ -0,0 +1,372 @@
|
|||||||
|
---
|
||||||
|
import { i18n } from "@i18n/translation";
|
||||||
|
import I18nKey from "@i18n/i18nKey";
|
||||||
|
import Icon from "@components/common/icon.astro";
|
||||||
|
|
||||||
|
|
||||||
|
export interface Props {
|
||||||
|
item: {
|
||||||
|
id: string;
|
||||||
|
title: string;
|
||||||
|
description: string;
|
||||||
|
type: "education" | "work" | "project" | "achievement";
|
||||||
|
startDate: string;
|
||||||
|
endDate?: string;
|
||||||
|
location?: string;
|
||||||
|
organization?: string;
|
||||||
|
position?: string;
|
||||||
|
skills?: string[];
|
||||||
|
achievements?: string[];
|
||||||
|
links?: {
|
||||||
|
name: string;
|
||||||
|
url: string;
|
||||||
|
type: "certificate" | "project" | "other";
|
||||||
|
}[];
|
||||||
|
icon?: string;
|
||||||
|
color?: string;
|
||||||
|
featured?: boolean;
|
||||||
|
};
|
||||||
|
showTimeline?: boolean;
|
||||||
|
size?: "small" | "medium" | "large";
|
||||||
|
layout?: "card" | "timeline";
|
||||||
|
}
|
||||||
|
|
||||||
|
const {
|
||||||
|
item,
|
||||||
|
showTimeline = true,
|
||||||
|
size = "medium",
|
||||||
|
layout = "timeline",
|
||||||
|
} = Astro.props;
|
||||||
|
|
||||||
|
// 类型图标映射
|
||||||
|
const getTypeIcon = (type: string) => {
|
||||||
|
switch (type) {
|
||||||
|
case "education":
|
||||||
|
return "material-symbols:school";
|
||||||
|
case "work":
|
||||||
|
return "material-symbols:work";
|
||||||
|
case "project":
|
||||||
|
return "material-symbols:code";
|
||||||
|
case "achievement":
|
||||||
|
return "material-symbols:emoji-events";
|
||||||
|
default:
|
||||||
|
return "material-symbols:event";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 类型颜色映射
|
||||||
|
const getTypeColor = (type: string) => {
|
||||||
|
switch (type) {
|
||||||
|
case "education":
|
||||||
|
return "bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400";
|
||||||
|
case "work":
|
||||||
|
return "bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400";
|
||||||
|
case "project":
|
||||||
|
return "bg-purple-100 text-purple-700 dark:bg-purple-900/30 dark:text-purple-400";
|
||||||
|
case "achievement":
|
||||||
|
return "bg-orange-100 text-orange-700 dark:bg-orange-900/30 dark:text-orange-400";
|
||||||
|
default:
|
||||||
|
return "bg-gray-100 text-gray-700 dark:bg-gray-900/30 dark:text-gray-400";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 类型文本映射
|
||||||
|
const getTypeText = (type: string) => {
|
||||||
|
switch (type) {
|
||||||
|
case "education":
|
||||||
|
return i18n(I18nKey.timelineEducation);
|
||||||
|
case "work":
|
||||||
|
return i18n(I18nKey.timelineWork);
|
||||||
|
case "project":
|
||||||
|
return i18n(I18nKey.timelineProject);
|
||||||
|
case "achievement":
|
||||||
|
return i18n(I18nKey.timelineAchievement);
|
||||||
|
default:
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 链接图标映射
|
||||||
|
const getLinkIcon = (type: string) => {
|
||||||
|
switch (type) {
|
||||||
|
case "certificate":
|
||||||
|
return "🏆";
|
||||||
|
case "project":
|
||||||
|
return "📑";
|
||||||
|
case "other":
|
||||||
|
return "🔗";
|
||||||
|
default:
|
||||||
|
return "🔗";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 格式化日期
|
||||||
|
const formatDate = (dateString: string) => {
|
||||||
|
const date = new Date(dateString);
|
||||||
|
return date.toLocaleDateString("zh-CN", { year: "numeric", month: "long" });
|
||||||
|
};
|
||||||
|
|
||||||
|
// 计算持续时间
|
||||||
|
const getDuration = (startDate: string, endDate?: string) => {
|
||||||
|
const start = new Date(startDate);
|
||||||
|
const end = endDate ? new Date(endDate) : new Date();
|
||||||
|
const diffTime = Math.abs(end.getTime() - start.getTime());
|
||||||
|
const diffMonths = Math.ceil(diffTime / (1000 * 60 * 60 * 24 * 30));
|
||||||
|
|
||||||
|
if (diffMonths < 12) {
|
||||||
|
return `${diffMonths} ${i18n(I18nKey.timelineMonths)}`;
|
||||||
|
} else {
|
||||||
|
const years = Math.floor(diffMonths / 12);
|
||||||
|
const months = diffMonths % 12;
|
||||||
|
if (months === 0) {
|
||||||
|
return `${years} ${i18n(I18nKey.timelineYears)}`;
|
||||||
|
} else {
|
||||||
|
return `${years} ${i18n(I18nKey.timelineYears)} ${months} ${i18n(I18nKey.timelineMonths)}`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 尺寸样式映射
|
||||||
|
const getSizeClasses = (size: string) => {
|
||||||
|
switch (size) {
|
||||||
|
case "small":
|
||||||
|
return {
|
||||||
|
container: "p-4",
|
||||||
|
node: "w-8 h-8",
|
||||||
|
nodeIcon: "text-lg",
|
||||||
|
title: "text-lg",
|
||||||
|
meta: "text-xs",
|
||||||
|
description: "text-sm",
|
||||||
|
badge: "text-xs",
|
||||||
|
};
|
||||||
|
case "large":
|
||||||
|
return {
|
||||||
|
container: "p-8",
|
||||||
|
node: "w-16 h-16",
|
||||||
|
nodeIcon: "text-2xl",
|
||||||
|
title: "text-2xl",
|
||||||
|
meta: "text-base",
|
||||||
|
description: "text-base",
|
||||||
|
badge: "text-sm",
|
||||||
|
};
|
||||||
|
default: // medium
|
||||||
|
return {
|
||||||
|
container: "p-6",
|
||||||
|
node: "w-12 h-12",
|
||||||
|
nodeIcon: "text-xl",
|
||||||
|
title: "text-xl",
|
||||||
|
meta: "text-sm",
|
||||||
|
description: "text-sm",
|
||||||
|
badge: "text-xs",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const sizeClasses = getSizeClasses(size);
|
||||||
|
const itemColor = item.color || "#3B82F6";
|
||||||
|
---
|
||||||
|
|
||||||
|
{layout === 'timeline' ? (
|
||||||
|
<!-- 时间线布局 -->
|
||||||
|
<div class="relative flex items-start gap-6">
|
||||||
|
<!-- 时间线节点 -->
|
||||||
|
{showTimeline && (
|
||||||
|
<div class={`relative z-10 rounded-full flex items-center justify-center shrink-0 ${sizeClasses.node}`} style={`background-color: ${itemColor}`}>
|
||||||
|
<Icon
|
||||||
|
icon={item.icon || getTypeIcon(item.type)}
|
||||||
|
class={`text-white ${sizeClasses.nodeIcon}`}
|
||||||
|
color="white"
|
||||||
|
fallback={item.title.charAt(0)}
|
||||||
|
loading="eager"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
<!-- 内容卡片 -->
|
||||||
|
<div class="flex-1 bg-white dark:bg-gray-800 rounded-lg border border-black/10 dark:border-white/10 hover:shadow-lg transition-shadow duration-300">
|
||||||
|
<div class={sizeClasses.container}>
|
||||||
|
<!-- 标题和类型 -->
|
||||||
|
<div class="flex items-start justify-between mb-3">
|
||||||
|
<div>
|
||||||
|
<h3 class={`font-semibold text-black/90 dark:text-white/90 mb-1 ${sizeClasses.title}`}>
|
||||||
|
{item.title}
|
||||||
|
{item.featured && (
|
||||||
|
<span class="ml-2 text-yellow-500">⭐</span>
|
||||||
|
)}
|
||||||
|
</h3>
|
||||||
|
{item.organization && (
|
||||||
|
<div class={`text-black/70 dark:text-white/70 ${sizeClasses.meta}`}>
|
||||||
|
{item.organization} {item.position && `• ${item.position}`}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
<span class={`px-2 py-1 rounded-full shrink-0 ml-4 ${sizeClasses.badge} ${getTypeColor(item.type)}`}>
|
||||||
|
{getTypeText(item.type)}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<!-- 时间和地点信息 -->
|
||||||
|
<div class={`flex items-center gap-4 mb-3 text-black/60 dark:text-white/60 ${sizeClasses.meta}`}>
|
||||||
|
<div>
|
||||||
|
{formatDate(item.startDate)} - {item.endDate ? formatDate(item.endDate) : i18n(I18nKey.timelinePresent)}
|
||||||
|
</div>
|
||||||
|
<div>•</div>
|
||||||
|
<div>{getDuration(item.startDate, item.endDate)}</div>
|
||||||
|
{item.location && (
|
||||||
|
<>
|
||||||
|
<div>•</div>
|
||||||
|
<div>📍 {item.location}</div>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
<!-- 描述 -->
|
||||||
|
<p class={`text-black/70 dark:text-white/70 mb-4 ${sizeClasses.description}`}>
|
||||||
|
{item.description}
|
||||||
|
</p>
|
||||||
|
<!-- 成就 -->
|
||||||
|
{item.achievements && item.achievements.length > 0 && (
|
||||||
|
<div class="mb-4">
|
||||||
|
<h4 class={`font-semibold text-black/80 dark:text-white/80 mb-2 ${sizeClasses.meta}`}>
|
||||||
|
{i18n(I18nKey.timelineAchievements)}
|
||||||
|
</h4>
|
||||||
|
<ul class="space-y-1">
|
||||||
|
{item.achievements.map((achievement) => (
|
||||||
|
<li class={`text-black/70 dark:text-white/70 flex items-start gap-2 ${sizeClasses.description}`}>
|
||||||
|
<span class="text-green-500 mt-1">•</span>
|
||||||
|
<span>{achievement}</span>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
<!-- 技能 -->
|
||||||
|
{item.skills && item.skills.length > 0 && (
|
||||||
|
<div class="mb-4">
|
||||||
|
<div class="flex flex-wrap gap-1">
|
||||||
|
{item.skills.map((skill) => (
|
||||||
|
<span class={`px-2 py-1 bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300 rounded-sm ${sizeClasses.badge}`}>
|
||||||
|
{skill}
|
||||||
|
</span>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
<!-- 链接 -->
|
||||||
|
{item.links && item.links.length > 0 && (
|
||||||
|
<div class="flex gap-4">
|
||||||
|
{item.links.map((link) => (
|
||||||
|
<a
|
||||||
|
href={link.url}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
class={`inline-flex items-center px-3 py-1.5 rounded-md border border-(--primary) text-(--primary) bg-[color-mix(in_oklch,var(--primary)_8%,transparent)] hover:bg-[color-mix(in_oklch,var(--primary)_14%,transparent)] active:bg-[color-mix(in_oklch,var(--primary)_20%,transparent)] text-sm font-medium transition-colors gap-1 ${sizeClasses.meta}`}
|
||||||
|
>
|
||||||
|
{getLinkIcon(link.type)}
|
||||||
|
{link.name}
|
||||||
|
</a>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
) : (
|
||||||
|
<!-- 卡片布局 -->
|
||||||
|
<div class="bg-white dark:bg-gray-800 rounded-lg border border-black/10 dark:border-white/10 hover:shadow-lg transition-shadow duration-300">
|
||||||
|
<div class={sizeClasses.container}>
|
||||||
|
<!-- 图标和标题 -->
|
||||||
|
<div class="flex items-start gap-4 mb-3">
|
||||||
|
<div class={`rounded-lg flex items-center justify-center shrink-0 ${sizeClasses.node}`} style={`background-color: ${itemColor}20`}>
|
||||||
|
<Icon
|
||||||
|
icon={item.icon || getTypeIcon(item.type)}
|
||||||
|
class={sizeClasses.nodeIcon}
|
||||||
|
color={itemColor}
|
||||||
|
fallback={item.title.charAt(0)}
|
||||||
|
loading="eager"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="flex-1">
|
||||||
|
<div class="flex items-start justify-between mb-2">
|
||||||
|
<h3 class={`font-semibold text-black/90 dark:text-white/90 ${sizeClasses.title}`}>
|
||||||
|
{item.title}
|
||||||
|
{item.featured && (
|
||||||
|
<span class="ml-2 text-yellow-500">⭐</span>
|
||||||
|
)}
|
||||||
|
</h3>
|
||||||
|
<span class={`px-2 py-1 rounded-full shrink-0 ml-2 ${sizeClasses.badge} ${getTypeColor(item.type)}`}>
|
||||||
|
{getTypeText(item.type)}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
{item.organization && (
|
||||||
|
<div class={`text-black/70 dark:text-white/70 mb-1 ${sizeClasses.meta}`}>
|
||||||
|
{item.organization} {item.position && `• ${item.position}`}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
{item.location && (
|
||||||
|
<div class={`text-black/60 dark:text-white/60 mb-2 ${sizeClasses.meta}`}>
|
||||||
|
📍 {item.location}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 时间信息 -->
|
||||||
|
<div class={`text-black/70 dark:text-white/70 mb-3 ${sizeClasses.meta}`}>
|
||||||
|
{formatDate(item.startDate)} - {item.endDate ? formatDate(item.endDate) : i18n(I18nKey.timelinePresent)} ({getDuration(item.startDate, item.endDate)})
|
||||||
|
</div>
|
||||||
|
<!-- 描述 -->
|
||||||
|
<p class={`text-black/60 dark:text-white/60 mb-4 ${sizeClasses.description}`}>
|
||||||
|
{item.description}
|
||||||
|
</p>
|
||||||
|
<!-- 成就 -->
|
||||||
|
{item.achievements && item.achievements.length > 0 && (
|
||||||
|
<div class="mb-4">
|
||||||
|
<h4 class={`font-semibold text-black/80 dark:text-white/80 mb-2 ${sizeClasses.meta}`}>
|
||||||
|
{i18n(I18nKey.timelineAchievements)}
|
||||||
|
</h4>
|
||||||
|
<ul class="space-y-1">
|
||||||
|
{item.achievements.slice(0, 3).map((achievement) => (
|
||||||
|
<li class={`text-black/70 dark:text-white/70 flex items-start gap-2 ${sizeClasses.description}`}>
|
||||||
|
<span class="text-green-500 mt-1">•</span>
|
||||||
|
<span>{achievement}</span>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
{item.achievements.length > 3 && (
|
||||||
|
<li class={`text-black/60 dark:text-white/60 ${sizeClasses.description}`}>
|
||||||
|
... 还有 {item.achievements.length - 3} 项成就
|
||||||
|
</li>
|
||||||
|
)}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
<!-- 技能和链接 -->
|
||||||
|
<div class="flex items-center justify-between">
|
||||||
|
{item.skills && item.skills.length > 0 && (
|
||||||
|
<div class="flex flex-wrap gap-1">
|
||||||
|
{item.skills.slice(0, 3).map((skill) => (
|
||||||
|
<span class={`px-2 py-1 bg-gray-100 text-gray-700 dark:bg-gray-700 dark:text-gray-300 rounded-sm ${sizeClasses.badge}`}>
|
||||||
|
{skill}
|
||||||
|
</span>
|
||||||
|
))}
|
||||||
|
{item.skills.length > 3 && (
|
||||||
|
<span class={`px-2 py-1 bg-gray-100 text-gray-700 dark:bg-gray-900/30 dark:text-gray-400 rounded-sm ${sizeClasses.badge}`}>
|
||||||
|
+{item.skills.length - 3}
|
||||||
|
</span>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
{item.links && item.links.length > 0 && (
|
||||||
|
<div class="flex gap-3">
|
||||||
|
{item.links.slice(0, 2).map((link) => (
|
||||||
|
<a
|
||||||
|
href={link.url}
|
||||||
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
|
class={`inline-flex items-center px-3 py-1.5 rounded-md border border-(--primary) text-(--primary) bg-[color-mix(in_oklch,var(--primary)_8%,transparent)] hover:bg-[color-mix(in_oklch,var(--primary)_14%,transparent)] active:bg-[color-mix(in_oklch,var(--primary)_20%,transparent)] text-sm font-medium transition-colors ${sizeClasses.meta}`}
|
||||||
|
>
|
||||||
|
{getLinkIcon(link.type)} {link.name}
|
||||||
|
</a>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
75
src/components/fontLoader.astro
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
---
|
||||||
|
import { siteConfig } from "@/config";
|
||||||
|
|
||||||
|
|
||||||
|
// Get all fonts from config
|
||||||
|
const fontConfig = siteConfig.font || {};
|
||||||
|
const fonts = Object.entries(fontConfig).map(([id, font]) => (
|
||||||
|
{id, ...font}
|
||||||
|
));
|
||||||
|
|
||||||
|
// Generate font-family strings
|
||||||
|
const selectedFontFamilies = fonts
|
||||||
|
.filter(font => font && font.family)
|
||||||
|
.map(font => `"${font.family}"`);
|
||||||
|
|
||||||
|
const fallbacks = "system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif";
|
||||||
|
const customFontFamily = selectedFontFamilies.join(", ");
|
||||||
|
const finalFontFamily = customFontFamily ? `${customFontFamily}, ${fallbacks}` : fallbacks;
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- Font Loading -->
|
||||||
|
{
|
||||||
|
fonts.map((font) => {
|
||||||
|
const isCss = font.src.endsWith('.css') || font.src.includes('fonts.googleapis.com') || font.src.includes('unpkg.com');
|
||||||
|
if (isCss) {
|
||||||
|
// If it's a Google Font, we can append &display=swap if it's not already there
|
||||||
|
let fontSrc = font.src;
|
||||||
|
if (fontSrc.includes('fonts.googleapis.com') && !fontSrc.includes('display=')) {
|
||||||
|
fontSrc += (fontSrc.includes('?') ? '&' : '?') + 'display=swap';
|
||||||
|
}
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<link rel="preload" href={fontSrc} as="style" />
|
||||||
|
<link rel="stylesheet" href={fontSrc} />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
} else if (font.src) {
|
||||||
|
// Assume it's a font file (ttf, woff, woff2, etc.)
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<link rel="preload" href={font.src} as="font" crossorigin="anonymous" />
|
||||||
|
<style set:html={`
|
||||||
|
@font-face {
|
||||||
|
font-family: "${font.family}";
|
||||||
|
src: url("${font.src}");
|
||||||
|
font-display: swap;
|
||||||
|
}
|
||||||
|
`} />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
<!-- Apply Global Font Family -->
|
||||||
|
<style is:global set:html={`
|
||||||
|
:root {
|
||||||
|
--font-family-fallback: ${fallbacks};
|
||||||
|
--global-font-family: ${finalFontFamily};
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Apply to body as default */
|
||||||
|
body {
|
||||||
|
font-family: var(--global-font-family);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Generate specific classes for each font*/
|
||||||
|
${fonts.map(font => `
|
||||||
|
.font-${font.id},
|
||||||
|
.font-${font.id} * {
|
||||||
|
font-family: "${font.family}", var(--font-family-fallback) !important;
|
||||||
|
}
|
||||||
|
`).join('\n')}
|
||||||
|
`} />
|
||||||