diff --git a/main/xiaozhi-server/test/js/live2d/live2d.js b/main/xiaozhi-server/test/js/live2d/live2d.js index 8eafab16..0c583c86 100644 --- a/main/xiaozhi-server/test/js/live2d/live2d.js +++ b/main/xiaozhi-server/test/js/live2d/live2d.js @@ -12,7 +12,42 @@ class Live2DManager { this.audioContext = null; this.analyser = null; this.dataArray = null; - this.lastEmotionActionTime = null; // 上次情绪触发动作的时间 + this.lastEmotionActionTime = null; + this.currentModelName = null; + + // 模型特定配置 + this.modelConfig = { + 'hiyori_pro_zh': { + mouthParam: 'ParamMouthOpenY', + mouthAmplitude: 1.0, + mouthThresholds: { low: 0.3, high: 0.7 }, + motionMap: { + 'FlickUp': 'FlickUp', + 'FlickDown': 'FlickDown', + 'Tap': 'Tap', + 'Tap@Body': 'Tap@Body', + 'Flick': 'Flick', + 'Flick@Body': 'Flick@Body' + } + }, + 'natori_pro_zh': { + mouthParam: 'ParamMouthOpenY', + mouthAmplitude: 1.0, + mouthThresholds: { low: 0.1, high: 0.4 }, + mouthFormParam: 'ParamMouthForm', + mouthFormAmplitude: 1.0, + mouthForm2Param: 'ParamMouthForm2', + mouthForm2Amplitude: 0.8, + motionMap: { + 'FlickUp': 'FlickUp', + 'FlickDown': 'Flick@Body', + 'Tap': 'Tap', + 'Tap@Body': 'Tap@Head', + 'Flick': 'Tap', + 'Flick@Body': 'Flick@Body' + } + } + }; // 情绪到动作的映射 this.emotionToActionMap = { @@ -67,10 +102,33 @@ class Live2DManager { const currentPath = window.location.pathname; const lastSlashIndex = currentPath.lastIndexOf('/'); const basePath = currentPath.substring(0, lastSlashIndex + 1); - const modelPath = basePath + 'hiyori_pro_zh/runtime/hiyori_pro_t11.model3.json'; + + // 从 localStorage 读取上次选择的模型,如果没有则使用默认 + const savedModelName = localStorage.getItem('live2dModel') || 'hiyori_pro_zh'; + const modelFileMap = { + 'hiyori_pro_zh': 'hiyori_pro_t11.model3.json', + 'natori_pro_zh': 'natori_pro_t06.model3.json' + }; + const modelFileName = modelFileMap[savedModelName] || 'hiyori_pro_t11.model3.json'; + const modelPath = basePath + 'resources/' + savedModelName + '/runtime/' + modelFileName; + this.live2dModel = await PIXI.live2d.Live2DModel.from(modelPath); this.live2dApp.stage.addChild(this.live2dModel); + // 保存当前模型名称 + this.currentModelName = savedModelName; + + // 更新下拉框显示 + const modelSelect = document.getElementById('live2dModelSelect'); + if (modelSelect) { + modelSelect.value = savedModelName; + } + + // 设置模型特定的嘴部参数名 + if (this.modelConfig[savedModelName]) { + this.mouthParam = this.modelConfig[savedModelName].mouthParam || 'ParamMouthOpenY'; + } + // 设置模型属性 this.live2dModel.scale.set(0.33); this.live2dModel.x = (window.innerWidth - this.live2dModel.width) * 0.5; @@ -364,33 +422,88 @@ class Live2DManager { if (internal && internal.coreModel) { const coreModel = internal.coreModel; - // 获取音频分贝值 - let mouthValue = 0; + let mouthOpenY = 0; + let mouthForm = 0; + let mouthForm2 = 0; let average = 0; + if (this.analyser && this.dataArray) { this.analyser.getByteFrequencyData(this.dataArray); average = this.dataArray.reduce((a, b) => a + b) / this.dataArray.length; - // 优化音量映射函数,使中等音量范围变化更明显 - // 使用S形曲线函数,在中等音量范围有更好的响应 const normalizedVolume = average / 255; - // S形曲线:在0.3-0.7范围内有最大的斜率(变化最明显) - if (normalizedVolume < 0.3) { - // 低音量:缓慢增长 - mouthValue = Math.pow(normalizedVolume / 0.3, 1.5) * 0.3; - } else if (normalizedVolume < 0.7) { - // 中等音量:线性增长,变化最明显 - mouthValue = 0.3 + (normalizedVolume - 0.3) / 0.4 * 0.5; - } else { - // 高音量:缓慢接近最大值 - mouthValue = 0.8 + Math.pow((normalizedVolume - 0.7) / 0.3, 1.2) * 0.2; + // 获取模型特定的阈值 + let lowThreshold = 0.3; + let highThreshold = 0.7; + if (this.currentModelName && this.modelConfig[this.currentModelName]) { + lowThreshold = this.modelConfig[this.currentModelName].mouthThresholds?.low || 0.3; + highThreshold = this.modelConfig[this.currentModelName].mouthThresholds?.high || 0.7; } - // 确保嘴部参数在0-1范围内 - mouthValue = Math.min(Math.max(mouthValue, 0), 1); + // 使用模型特定的阈值进行映射 + let minOpenY = 0.1; + if (this.currentModelName && this.modelConfig[this.currentModelName]) { + minOpenY = this.modelConfig[this.currentModelName].mouthMinOpenY || 0.1; + } + + if (normalizedVolume < lowThreshold) { + mouthOpenY = minOpenY + Math.pow(normalizedVolume / lowThreshold, 1.5) * (0.4 - minOpenY); + } else if (normalizedVolume < highThreshold) { + mouthOpenY = 0.4 + (normalizedVolume - lowThreshold) / (highThreshold - lowThreshold) * 0.4; + } else { + mouthOpenY = 0.8 + Math.pow((normalizedVolume - highThreshold) / (1 - highThreshold), 1.2) * 0.2; + } + + // 应用模型特定的嘴部开合幅度 + let amplitudeMultiplier = 1.0; + let maxOpenY = 2.5; + if (this.currentModelName && this.modelConfig[this.currentModelName]) { + amplitudeMultiplier = this.modelConfig[this.currentModelName].mouthAmplitude; + maxOpenY = this.modelConfig[this.currentModelName].maxOpenY || 2.5; + } + mouthOpenY = mouthOpenY * amplitudeMultiplier; + mouthOpenY = Math.min(Math.max(mouthOpenY, 0), maxOpenY); + + // 计算嘴型参数(仅对支持嘴型变化的模型) + if (this.currentModelName && this.modelConfig[this.currentModelName]?.mouthFormParam) { + const config = this.modelConfig[this.currentModelName]; + const formAmplitude = config.mouthFormAmplitude || 0.5; + const form2Amplitude = config.mouthForm2Amplitude || 0; + + // 嘴型随音量变化: + // 低音量:嘴型偏"一"字(负值) + // 高音量:嘴型偏"o"字(正值) + // 音量=0时:嘴型=0(自然状态) + mouthForm = (normalizedVolume - 0.5) * 2 * formAmplitude; + mouthForm = Math.max(-formAmplitude, Math.min(formAmplitude, mouthForm)); + + // 第二嘴型参数(natori特有) + if (config.mouthForm2Param) { + mouthForm2 = (normalizedVolume - 0.3) * 2 * form2Amplitude; + mouthForm2 = Math.max(-form2Amplitude, Math.min(form2Amplitude, mouthForm2)); + } + } + + // 调试日志:输出嘴部参数 + console.log(`[Live2D] 模型: ${this.currentModelName || 'unknown'}, 音量: ${average?.toFixed(0)}, OpenY: ${mouthOpenY.toFixed(3)}, Form: ${mouthForm.toFixed(3)}, Form2: ${mouthForm2.toFixed(3)}`); } - coreModel.setParameterValueById(this.mouthParam, mouthValue); + + // 设置嘴部开合参数 + coreModel.setParameterValueById(this.mouthParam, mouthOpenY); + + // 设置嘴型参数(仅对支持嘴型变化的模型) + if (this.currentModelName && this.modelConfig[this.currentModelName]?.mouthFormParam) { + const config = this.modelConfig[this.currentModelName]; + const formParam = config.mouthFormParam; + coreModel.setParameterValueById(formParam, mouthForm); + + // 设置第二嘴型参数(natori特有) + if (config.mouthForm2Param) { + coreModel.setParameterValueById(config.mouthForm2Param, mouthForm2); + } + } + coreModel.update(); } this.mouthAnimationId = requestAnimationFrame(() => this.animateMouth()); @@ -473,12 +586,129 @@ class Live2DManager { motion(name) { try { if (!this.live2dModel) return; - this.live2dModel.motion(name); + + // 根据当前模型获取对应的动作名称 + let actualMotionName = name; + if (this.currentModelName && this.modelConfig[this.currentModelName]) { + const motionMap = this.modelConfig[this.currentModelName].motionMap; + actualMotionName = motionMap[name] || name; + } + + this.live2dModel.motion(actualMotionName); } catch (error) { console.error('触发动作失败:', error); } } + /** + * 设置模型交互事件 + */ + setupModelInteractions() { + if (!this.live2dModel) return; + + this.live2dModel.interactive = true; + + this.live2dModel.on('doublehit', (args) => { + const area = Array.isArray(args) ? args[0] : args; + + if (area === 'Body') { + this.motion('Flick@Body'); + } else if (area === 'Head' || area === 'Face') { + this.motion('Flick'); + } + + const app = window.chatApp; + const payload = JSON.stringify({ type: 'live2d', event: 'doublehit', area }); + if (app && app.dataChannel && app.dataChannel.readyState === 'open') { + app.dataChannel.send(payload); + } + }); + + this.live2dModel.on('singlehit', (args) => { + const area = Array.isArray(args) ? args[0] : args; + + if (area === 'Body') { + this.motion('Tap@Body'); + } else if (area === 'Head' || area === 'Face') { + this.motion('Tap'); + } + + const app = window.chatApp; + const payload = JSON.stringify({ type: 'live2d', event: 'singlehit', area }); + if (app && app.dataChannel && app.dataChannel.readyState === 'open') { + app.dataChannel.send(payload); + } + }); + + this.live2dModel.on('swipe', (args) => { + const area = Array.isArray(args) ? args[0] : args; + const dir = Array.isArray(args) ? args[1] : undefined; + + if (area === 'Body') { + if (dir === 'up') { + this.motion('FlickUp'); + } else if (dir === 'down') { + this.motion('FlickDown'); + } + } + + const app = window.chatApp; + const payload = JSON.stringify({ type: 'live2d', event: 'swipe', area, dir }); + if (app && app.dataChannel && app.dataChannel.readyState === 'open') { + app.dataChannel.send(payload); + } + }); + + this.live2dModel.on('pointerdown', (event) => { + try { + const global = event.data.global; + const bounds = this.live2dModel.getBounds(); + if (!bounds || !bounds.contains(global.x, global.y)) return; + + const relX = (global.x - bounds.x) / (bounds.width || 1); + const relY = (global.y - bounds.y) / (bounds.height || 1); + let area = ''; + + if (relX >= 0.4 && relX <= 0.6) { + if (relY <= 0.15) { + area = 'Head'; + } else if (relY >= 0.7) { + area = 'Body'; + } + } + + if (!area) return; + + const now = Date.now(); + const dt = now - (this._lastClickTime || 0); + const dx = global.x - (this._lastClickPos?.x || 0); + const dy = global.y - (this._lastClickPos?.y || 0); + const dist = Math.hypot(dx, dy); + + if (this._lastClickTime && dt <= this._doubleClickMs && dist <= this._doubleClickDist) { + if (this._singleClickTimer) { + clearTimeout(this._singleClickTimer); + this._singleClickTimer = null; + } + + this.live2dModel.emit('doublehit', area); + this._lastClickTime = null; + this._lastClickPos = null; + } else { + this._lastClickTime = now; + this._lastClickPos = { x: global.x, y: global.y }; + + this._singleClickTimer = setTimeout(() => { + this._singleClickTimer = null; + this.live2dModel.emit('singlehit', area); + }, this._doubleClickMs); + } + } catch (e) { + console.warn('pointerdown 处理出错:', e); + } + }); + } + /** * 清理资源 */ @@ -500,6 +730,94 @@ class Live2DManager { } this.live2dModel = null; } + + /** + * 切换 Live2D 模型 + * @param {string} modelName - 模型目录名称,如 'hiyori_pro_zh'、'natori_pro_zh' + * @returns {Promise} - 切换是否成功 + */ + async switchModel(modelName) { + try { + // 获取模型文件名映射 + const modelFileMap = { + 'hiyori_pro_zh': 'hiyori_pro_t11.model3.json', + 'natori_pro_zh': 'natori_pro_t06.model3.json', + 'chitose': 'chitose.model3.json', + 'haru_greeter_pro_jp': 'haru_greeter_t05.model3.json' + }; + + const modelFileName = modelFileMap[modelName]; + if (!modelFileName) { + console.error('未知的模型名称:', modelName); + return false; + } + + // 获取基础路径 + const currentPath = window.location.pathname; + const lastSlashIndex = currentPath.lastIndexOf('/'); + const basePath = currentPath.substring(0, lastSlashIndex + 1); + const modelPath = basePath + 'resources/' + modelName + '/runtime/' + modelFileName; + + // 如果已存在模型,先移除 + if (this.live2dModel) { + this.live2dApp.stage.removeChild(this.live2dModel); + this.live2dModel.destroy(); + this.live2dModel = null; + } + + // 显示加载状态 + const app = window.chatApp; + if (app) { + app.setModelLoadingStatus(true); + } + + // 加载新模型 + this.live2dModel = await PIXI.live2d.Live2DModel.from(modelPath); + this.live2dApp.stage.addChild(this.live2dModel); + + // 设置模型属性 + this.live2dModel.scale.set(0.33); + this.live2dModel.x = (window.innerWidth - this.live2dModel.width) * 0.5; + this.live2dModel.y = -50; + + // 重新绑定交互事件 + this.setupModelInteractions(); + + // 隐藏加载状态 + if (app) { + app.setModelLoadingStatus(false); + } + + // 保存当前模型名称 + this.currentModelName = modelName; + + // 设置模型特定的嘴部参数名 + if (this.modelConfig[modelName]) { + this.mouthParam = this.modelConfig[modelName].mouthParam || 'ParamMouthOpenY'; + } + + // 保存到 localStorage + localStorage.setItem('live2dModel', modelName); + + // 更新下拉框显示 + const modelSelect = document.getElementById('live2dModelSelect'); + if (modelSelect) { + modelSelect.value = modelName; + } + + console.log('模型切换成功:', modelName); + return true; + } catch (error) { + console.error('切换模型失败:', error); + const app = window.chatApp; + if (app) { + app.setModelLoadingStatus(false); + } + return false; + } + } + + } // 导出全局实例 diff --git a/main/xiaozhi-server/test/js/ui/controller.js b/main/xiaozhi-server/test/js/ui/controller.js index 4d9fd54e..399d46ba 100644 --- a/main/xiaozhi-server/test/js/ui/controller.js +++ b/main/xiaozhi-server/test/js/ui/controller.js @@ -11,7 +11,7 @@ class UIController { this.visualizerCanvas = null; this.visualizerContext = null; this.audioStatsTimer = null; - this.currentBackgroundIndex = 0; + this.currentBackgroundIndex = localStorage.getItem('backgroundIndex') ? parseInt(localStorage.getItem('backgroundIndex')) : 0; this.backgroundImages = ['1.png', '2.png', '3.png']; // Bind methods @@ -20,6 +20,7 @@ class UIController { this.updateDialButton = this.updateDialButton.bind(this); this.addChatMessage = this.addChatMessage.bind(this); this.switchBackground = this.switchBackground.bind(this); + this.switchLive2DModel = this.switchLive2DModel.bind(this); this.showModal = this.showModal.bind(this); this.hideModal = this.hideModal.bind(this); this.switchTab = this.switchTab.bind(this); @@ -51,6 +52,12 @@ class UIController { // Initialize status display this.updateConnectionUI(false); + // Apply saved background + const backgroundContainer = document.querySelector('.background-container'); + if (backgroundContainer) { + backgroundContainer.style.backgroundImage = `url('./images/${this.backgroundImages[this.currentBackgroundIndex]}')`; + } + this.updateDialButton(false); console.log('UIController init completed'); @@ -82,6 +89,14 @@ class UIController { backgroundBtn.addEventListener('click', this.switchBackground); } + // Model switch button + const switchModelBtn = document.getElementById('switchModelBtn'); + if (switchModelBtn) { + switchModelBtn.addEventListener('click', () => { + this.switchLive2DModel(); + }); + } + // Dial button const dialBtn = document.getElementById('dialBtn'); if (dialBtn) { @@ -324,6 +339,36 @@ class UIController { if (backgroundContainer) { backgroundContainer.style.backgroundImage = `url('./images/${this.backgroundImages[this.currentBackgroundIndex]}')`; } + localStorage.setItem('backgroundIndex', this.currentBackgroundIndex); + } + + // Switch Live2D model + switchLive2DModel() { + const modelSelect = document.getElementById('live2dModelSelect'); + if (!modelSelect) { + console.error('模型选择下拉框不存在'); + return; + } + + const selectedModel = modelSelect.value; + const app = window.chatApp; + + if (app && app.live2dManager) { + app.live2dManager.switchModel(selectedModel) + .then(success => { + if (success) { + this.addChatMessage(`已切换到模型: ${selectedModel}`, false); + } else { + this.addChatMessage('模型切换失败', false); + } + }) + .catch(error => { + console.error('模型切换错误:', error); + this.addChatMessage('模型切换出错', false); + }); + } else { + this.addChatMessage('Live2D管理器未初始化', false); + } } // Show modal diff --git a/main/xiaozhi-server/test/hiyori_pro_zh/ReadMe.txt b/main/xiaozhi-server/test/resources/hiyori_pro_zh/ReadMe.txt similarity index 100% rename from main/xiaozhi-server/test/hiyori_pro_zh/ReadMe.txt rename to main/xiaozhi-server/test/resources/hiyori_pro_zh/ReadMe.txt diff --git a/main/xiaozhi-server/test/hiyori_pro_zh/hiyori_pro_t04.can3 b/main/xiaozhi-server/test/resources/hiyori_pro_zh/hiyori_pro_t04.can3 similarity index 100% rename from main/xiaozhi-server/test/hiyori_pro_zh/hiyori_pro_t04.can3 rename to main/xiaozhi-server/test/resources/hiyori_pro_zh/hiyori_pro_t04.can3 diff --git a/main/xiaozhi-server/test/hiyori_pro_zh/hiyori_pro_t11.cmo3 b/main/xiaozhi-server/test/resources/hiyori_pro_zh/hiyori_pro_t11.cmo3 similarity index 100% rename from main/xiaozhi-server/test/hiyori_pro_zh/hiyori_pro_t11.cmo3 rename to main/xiaozhi-server/test/resources/hiyori_pro_zh/hiyori_pro_t11.cmo3 diff --git a/main/xiaozhi-server/test/hiyori_pro_zh/runtime/hiyori_pro_t11.2048/texture_00.png b/main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/hiyori_pro_t11.2048/texture_00.png similarity index 100% rename from main/xiaozhi-server/test/hiyori_pro_zh/runtime/hiyori_pro_t11.2048/texture_00.png rename to main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/hiyori_pro_t11.2048/texture_00.png diff --git a/main/xiaozhi-server/test/hiyori_pro_zh/runtime/hiyori_pro_t11.2048/texture_01.png b/main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/hiyori_pro_t11.2048/texture_01.png similarity index 100% rename from main/xiaozhi-server/test/hiyori_pro_zh/runtime/hiyori_pro_t11.2048/texture_01.png rename to main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/hiyori_pro_t11.2048/texture_01.png diff --git a/main/xiaozhi-server/test/hiyori_pro_zh/runtime/hiyori_pro_t11.cdi3.json b/main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/hiyori_pro_t11.cdi3.json similarity index 100% rename from main/xiaozhi-server/test/hiyori_pro_zh/runtime/hiyori_pro_t11.cdi3.json rename to main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/hiyori_pro_t11.cdi3.json diff --git a/main/xiaozhi-server/test/hiyori_pro_zh/runtime/hiyori_pro_t11.moc3 b/main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/hiyori_pro_t11.moc3 similarity index 100% rename from main/xiaozhi-server/test/hiyori_pro_zh/runtime/hiyori_pro_t11.moc3 rename to main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/hiyori_pro_t11.moc3 diff --git a/main/xiaozhi-server/test/hiyori_pro_zh/runtime/hiyori_pro_t11.model3.json b/main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/hiyori_pro_t11.model3.json similarity index 100% rename from main/xiaozhi-server/test/hiyori_pro_zh/runtime/hiyori_pro_t11.model3.json rename to main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/hiyori_pro_t11.model3.json diff --git a/main/xiaozhi-server/test/hiyori_pro_zh/runtime/hiyori_pro_t11.physics3.json b/main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/hiyori_pro_t11.physics3.json similarity index 100% rename from main/xiaozhi-server/test/hiyori_pro_zh/runtime/hiyori_pro_t11.physics3.json rename to main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/hiyori_pro_t11.physics3.json diff --git a/main/xiaozhi-server/test/hiyori_pro_zh/runtime/hiyori_pro_t11.pose3.json b/main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/hiyori_pro_t11.pose3.json similarity index 100% rename from main/xiaozhi-server/test/hiyori_pro_zh/runtime/hiyori_pro_t11.pose3.json rename to main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/hiyori_pro_t11.pose3.json diff --git a/main/xiaozhi-server/test/hiyori_pro_zh/runtime/motion/hiyori_m01.motion3.json b/main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/motion/hiyori_m01.motion3.json similarity index 100% rename from main/xiaozhi-server/test/hiyori_pro_zh/runtime/motion/hiyori_m01.motion3.json rename to main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/motion/hiyori_m01.motion3.json diff --git a/main/xiaozhi-server/test/hiyori_pro_zh/runtime/motion/hiyori_m02.motion3.json b/main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/motion/hiyori_m02.motion3.json similarity index 100% rename from main/xiaozhi-server/test/hiyori_pro_zh/runtime/motion/hiyori_m02.motion3.json rename to main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/motion/hiyori_m02.motion3.json diff --git a/main/xiaozhi-server/test/hiyori_pro_zh/runtime/motion/hiyori_m03.motion3.json b/main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/motion/hiyori_m03.motion3.json similarity index 100% rename from main/xiaozhi-server/test/hiyori_pro_zh/runtime/motion/hiyori_m03.motion3.json rename to main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/motion/hiyori_m03.motion3.json diff --git a/main/xiaozhi-server/test/hiyori_pro_zh/runtime/motion/hiyori_m04.motion3.json b/main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/motion/hiyori_m04.motion3.json similarity index 100% rename from main/xiaozhi-server/test/hiyori_pro_zh/runtime/motion/hiyori_m04.motion3.json rename to main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/motion/hiyori_m04.motion3.json diff --git a/main/xiaozhi-server/test/hiyori_pro_zh/runtime/motion/hiyori_m05.motion3.json b/main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/motion/hiyori_m05.motion3.json similarity index 100% rename from main/xiaozhi-server/test/hiyori_pro_zh/runtime/motion/hiyori_m05.motion3.json rename to main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/motion/hiyori_m05.motion3.json diff --git a/main/xiaozhi-server/test/hiyori_pro_zh/runtime/motion/hiyori_m06.motion3.json b/main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/motion/hiyori_m06.motion3.json similarity index 100% rename from main/xiaozhi-server/test/hiyori_pro_zh/runtime/motion/hiyori_m06.motion3.json rename to main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/motion/hiyori_m06.motion3.json diff --git a/main/xiaozhi-server/test/hiyori_pro_zh/runtime/motion/hiyori_m07.motion3.json b/main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/motion/hiyori_m07.motion3.json similarity index 100% rename from main/xiaozhi-server/test/hiyori_pro_zh/runtime/motion/hiyori_m07.motion3.json rename to main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/motion/hiyori_m07.motion3.json diff --git a/main/xiaozhi-server/test/hiyori_pro_zh/runtime/motion/hiyori_m08.motion3.json b/main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/motion/hiyori_m08.motion3.json similarity index 100% rename from main/xiaozhi-server/test/hiyori_pro_zh/runtime/motion/hiyori_m08.motion3.json rename to main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/motion/hiyori_m08.motion3.json diff --git a/main/xiaozhi-server/test/hiyori_pro_zh/runtime/motion/hiyori_m09.motion3.json b/main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/motion/hiyori_m09.motion3.json similarity index 100% rename from main/xiaozhi-server/test/hiyori_pro_zh/runtime/motion/hiyori_m09.motion3.json rename to main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/motion/hiyori_m09.motion3.json diff --git a/main/xiaozhi-server/test/hiyori_pro_zh/runtime/motion/hiyori_m10.motion3.json b/main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/motion/hiyori_m10.motion3.json similarity index 100% rename from main/xiaozhi-server/test/hiyori_pro_zh/runtime/motion/hiyori_m10.motion3.json rename to main/xiaozhi-server/test/resources/hiyori_pro_zh/runtime/motion/hiyori_m10.motion3.json diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/ReadMe.txt b/main/xiaozhi-server/test/resources/natori_pro_zh/ReadMe.txt new file mode 100644 index 00000000..f0cec40f --- /dev/null +++ b/main/xiaozhi-server/test/resources/natori_pro_zh/ReadMe.txt @@ -0,0 +1,79 @@ + +============================================================ + +示例模型 +名执 尽 - PRO + +============================================================ + + 该示例可用于学习商用的游戏和App中常用到的手臂切换等难度较高的制作方法。 + + 该模型角色由画师先崎真琴设计。 + 模型的手臂通过渐变实现不同部件间的切换,这种制作方法经常应用于商用的游戏和App中。 + 通过该模型,可以学习部件的切换来实现更丰富的动画。 + + 另外,可以通过Cubism3 Viewer (for OW)来查看嵌入式文件组的动画,了解完整的工作流程中使用到的数据结构。 + + +------------------------------ +素材使用许可 +------------------------------ + + 普通用户以及小规模企业在同意授权协议的情况下可用于商业用途。 + 中/大规模的企业只能用于非公开的内部试用。 + 在使用该素材时,请确认以下的【无偿提供素材使用授权协议】中的“授权类型”、“Live2D原创角色”等的相关内容, + 并必须接受【Live2D Cubism 示例模型的使用授权要求】中的利用条件。 + + 有关许可证的更多信息,请参阅以下页面。 + https://www.live2d.com/zh-CHS/download/sample-data/ + + +------------------------------ +创作者 +------------------------------ + + 插画:先崎 真琴【http://senzakimakoto.com/】 + 配音:小野友树【https://web.onoyuki.com/】 + (※配音数据的发布为限定发布,已于2018/06/04结束。) + 模型:Live2D + + +------------------------------ +素材内容 +------------------------------ + + 模型文件(cmo3) ※包含物理模拟的设定 + 表情动画文件(can3) + 基本动画文件(can3) + 嵌入文件组(runtime文件夹) + ・模型数据(moc3) + ・表情数据(exp3.json) + ・动作数据(motion3.json) + ・模型设定文件(model3.json) + ・姿势设定文件(pose3.json) + ・物理模拟设定文件(physics3.json) + ・辅助显示的文件(cdi3.json) + + +------------------------------ +更新记录 +------------------------------ + ※配音数据的发布已于2018/06/04结束。 + +【cmo3】 + + natori_pro_t06.cmo3 + 2021年6月10日 公开 + + +【can3】 + + natori_pro_exp_t03.can3 + 2021年6月10日 公开 + + +【can3】 + + natori_pro_motions_t03.can3 + 2021年6月10日 公开 + diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/natori_pro_exp_t03.can3 b/main/xiaozhi-server/test/resources/natori_pro_zh/natori_pro_exp_t03.can3 new file mode 100644 index 00000000..c179d487 Binary files /dev/null and b/main/xiaozhi-server/test/resources/natori_pro_zh/natori_pro_exp_t03.can3 differ diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/natori_pro_motions_t03.can3 b/main/xiaozhi-server/test/resources/natori_pro_zh/natori_pro_motions_t03.can3 new file mode 100644 index 00000000..1af88ba7 Binary files /dev/null and b/main/xiaozhi-server/test/resources/natori_pro_zh/natori_pro_motions_t03.can3 differ diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/natori_pro_t06.cmo3 b/main/xiaozhi-server/test/resources/natori_pro_zh/natori_pro_t06.cmo3 new file mode 100644 index 00000000..a5cce352 Binary files /dev/null and b/main/xiaozhi-server/test/resources/natori_pro_zh/natori_pro_t06.cmo3 differ diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/Angry.exp3.json b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/Angry.exp3.json new file mode 100644 index 00000000..4505fc03 --- /dev/null +++ b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/Angry.exp3.json @@ -0,0 +1,120 @@ +{ + "Type": "Live2D Expression", + "Parameters": [ + { + "Id": "ParamEyeLOpen", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeLSmile", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeLForm", + "Value": -2, + "Blend": "Add" + }, + { + "Id": "ParamEyeROpen", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeRSmile", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeRForm", + "Value": -2, + "Blend": "Add" + }, + { + "Id": "ParamEyeBallForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLY", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRY", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLX", + "Value": 0.3, + "Blend": "Add" + }, + { + "Id": "ParamBrowRX", + "Value": 0.3, + "Blend": "Add" + }, + { + "Id": "ParamBrowLAngle", + "Value": -0.4, + "Blend": "Add" + }, + { + "Id": "ParamBrowRAngle", + "Value": -0.4, + "Blend": "Add" + }, + { + "Id": "ParamBrowLForm", + "Value": -1, + "Blend": "Add" + }, + { + "Id": "ParamBrowLForm2", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRForm", + "Value": -1, + "Blend": "Add" + }, + { + "Id": "ParamBrowRForm2", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamTeethOn", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamCheek", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGlassUD", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassWhite", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassHighlight", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassHighlightMove", + "Value": 0, + "Blend": "Add" + } + ] +} diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/Blushing.exp3.json b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/Blushing.exp3.json new file mode 100644 index 00000000..6e442c4e --- /dev/null +++ b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/Blushing.exp3.json @@ -0,0 +1,120 @@ +{ + "Type": "Live2D Expression", + "Parameters": [ + { + "Id": "ParamEyeLOpen", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeLSmile", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeLForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeROpen", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeRSmile", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeRForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeBallForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLY", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRY", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLX", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRX", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLAngle", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRAngle", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLForm", + "Value": -1, + "Blend": "Add" + }, + { + "Id": "ParamBrowLForm2", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRForm", + "Value": -1, + "Blend": "Add" + }, + { + "Id": "ParamBrowRForm2", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamTeethOn", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamCheek", + "Value": 1, + "Blend": "Add" + }, + { + "Id": "ParamGlassUD", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassWhite", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassHighlight", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassHighlightMove", + "Value": 0, + "Blend": "Add" + } + ] +} diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/Normal.exp3.json b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/Normal.exp3.json new file mode 100644 index 00000000..bca84957 --- /dev/null +++ b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/Normal.exp3.json @@ -0,0 +1,120 @@ +{ + "Type": "Live2D Expression", + "Parameters": [ + { + "Id": "ParamEyeLOpen", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeLSmile", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeLForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeROpen", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeRSmile", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeRForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeBallForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLY", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRY", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLX", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRX", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLAngle", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRAngle", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLForm2", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRForm2", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamTeethOn", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamCheek", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGlassUD", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassWhite", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassHighlight", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassHighlightMove", + "Value": 0, + "Blend": "Add" + } + ] +} diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/Sad.exp3.json b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/Sad.exp3.json new file mode 100644 index 00000000..e2595511 --- /dev/null +++ b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/Sad.exp3.json @@ -0,0 +1,120 @@ +{ + "Type": "Live2D Expression", + "Parameters": [ + { + "Id": "ParamEyeLOpen", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeLSmile", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeLForm", + "Value": -2, + "Blend": "Add" + }, + { + "Id": "ParamEyeROpen", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeRSmile", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeRForm", + "Value": -2, + "Blend": "Add" + }, + { + "Id": "ParamEyeBallForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLY", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRY", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLX", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRX", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLAngle", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRAngle", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLForm", + "Value": -1, + "Blend": "Add" + }, + { + "Id": "ParamBrowLForm2", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRForm", + "Value": -1, + "Blend": "Add" + }, + { + "Id": "ParamBrowRForm2", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamTeethOn", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamCheek", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGlassUD", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassWhite", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassHighlight", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassHighlightMove", + "Value": 0, + "Blend": "Add" + } + ] +} diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/Smile.exp3.json b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/Smile.exp3.json new file mode 100644 index 00000000..e431584d --- /dev/null +++ b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/Smile.exp3.json @@ -0,0 +1,120 @@ +{ + "Type": "Live2D Expression", + "Parameters": [ + { + "Id": "ParamEyeLOpen", + "Value": -1, + "Blend": "Add" + }, + { + "Id": "ParamEyeLSmile", + "Value": 1, + "Blend": "Add" + }, + { + "Id": "ParamEyeLForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeROpen", + "Value": -1, + "Blend": "Add" + }, + { + "Id": "ParamEyeRSmile", + "Value": 1, + "Blend": "Add" + }, + { + "Id": "ParamEyeRForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeBallForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLY", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRY", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLX", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRX", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLAngle", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRAngle", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLForm", + "Value": 1, + "Blend": "Add" + }, + { + "Id": "ParamBrowLForm2", + "Value": 1, + "Blend": "Add" + }, + { + "Id": "ParamBrowRForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRForm2", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamTeethOn", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamCheek", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGlassUD", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassWhite", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassHighlight", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassHighlightMove", + "Value": 0, + "Blend": "Add" + } + ] +} diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/Surprised.exp3.json b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/Surprised.exp3.json new file mode 100644 index 00000000..43921870 --- /dev/null +++ b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/Surprised.exp3.json @@ -0,0 +1,120 @@ +{ + "Type": "Live2D Expression", + "Parameters": [ + { + "Id": "ParamEyeLOpen", + "Value": 0.3, + "Blend": "Add" + }, + { + "Id": "ParamEyeLSmile", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeLForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeROpen", + "Value": 0.3, + "Blend": "Add" + }, + { + "Id": "ParamEyeRSmile", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeRForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeBallForm", + "Value": -1, + "Blend": "Add" + }, + { + "Id": "ParamBrowLY", + "Value": 0.2, + "Blend": "Add" + }, + { + "Id": "ParamBrowRY", + "Value": 0.2, + "Blend": "Add" + }, + { + "Id": "ParamBrowLX", + "Value": -0.1, + "Blend": "Add" + }, + { + "Id": "ParamBrowRX", + "Value": -0.1, + "Blend": "Add" + }, + { + "Id": "ParamBrowLAngle", + "Value": 0.1, + "Blend": "Add" + }, + { + "Id": "ParamBrowRAngle", + "Value": 0.1, + "Blend": "Add" + }, + { + "Id": "ParamBrowLForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLForm2", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRForm2", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamTeethOn", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamCheek", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGlassUD", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassWhite", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassHighlight", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassHighlightMove", + "Value": 0, + "Blend": "Add" + } + ] +} diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/exp_01.exp3.json b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/exp_01.exp3.json new file mode 100644 index 00000000..6f0a8dc6 --- /dev/null +++ b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/exp_01.exp3.json @@ -0,0 +1,120 @@ +{ + "Type": "Live2D Expression", + "Parameters": [ + { + "Id": "ParamEyeLOpen", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeLSmile", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeLForm", + "Value": 3, + "Blend": "Add" + }, + { + "Id": "ParamEyeROpen", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeRSmile", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeRForm", + "Value": 3, + "Blend": "Add" + }, + { + "Id": "ParamEyeBallForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLY", + "Value": -0.1, + "Blend": "Add" + }, + { + "Id": "ParamBrowRY", + "Value": -0.1, + "Blend": "Add" + }, + { + "Id": "ParamBrowLX", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRX", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLAngle", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRAngle", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLForm2", + "Value": 1, + "Blend": "Add" + }, + { + "Id": "ParamBrowRForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRForm2", + "Value": 1, + "Blend": "Add" + }, + { + "Id": "ParamTeethOn", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamCheek", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGlassUD", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassWhite", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassHighlight", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassHighlightMove", + "Value": 0, + "Blend": "Add" + } + ] +} diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/exp_02.exp3.json b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/exp_02.exp3.json new file mode 100644 index 00000000..f3ccbadc --- /dev/null +++ b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/exp_02.exp3.json @@ -0,0 +1,120 @@ +{ + "Type": "Live2D Expression", + "Parameters": [ + { + "Id": "ParamEyeLOpen", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeLSmile", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeLForm", + "Value": 1, + "Blend": "Add" + }, + { + "Id": "ParamEyeROpen", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeRSmile", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeRForm", + "Value": 1, + "Blend": "Add" + }, + { + "Id": "ParamEyeBallForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLY", + "Value": 0.1, + "Blend": "Add" + }, + { + "Id": "ParamBrowRY", + "Value": 0.1, + "Blend": "Add" + }, + { + "Id": "ParamBrowLX", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRX", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLAngle", + "Value": 0.1, + "Blend": "Add" + }, + { + "Id": "ParamBrowRAngle", + "Value": 0.1, + "Blend": "Add" + }, + { + "Id": "ParamBrowLForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLForm2", + "Value": 1, + "Blend": "Add" + }, + { + "Id": "ParamBrowRForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRForm2", + "Value": 1, + "Blend": "Add" + }, + { + "Id": "ParamTeethOn", + "Value": 1, + "Blend": "Add" + }, + { + "Id": "ParamCheek", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGlassUD", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassWhite", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassHighlight", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassHighlightMove", + "Value": 0, + "Blend": "Add" + } + ] +} diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/exp_03.exp3.json b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/exp_03.exp3.json new file mode 100644 index 00000000..fea12162 --- /dev/null +++ b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/exp_03.exp3.json @@ -0,0 +1,120 @@ +{ + "Type": "Live2D Expression", + "Parameters": [ + { + "Id": "ParamEyeLOpen", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeLSmile", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeLForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeROpen", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeRSmile", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeRForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeBallForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLY", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRY", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLX", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRX", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLAngle", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRAngle", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLForm", + "Value": -1, + "Blend": "Add" + }, + { + "Id": "ParamBrowLForm2", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRForm", + "Value": -1, + "Blend": "Add" + }, + { + "Id": "ParamBrowRForm2", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamTeethOn", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamCheek", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGlassUD", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassWhite", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassHighlight", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassHighlightMove", + "Value": 0, + "Blend": "Add" + } + ] +} diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/exp_04.exp3.json b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/exp_04.exp3.json new file mode 100644 index 00000000..fdef0d72 --- /dev/null +++ b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/exp_04.exp3.json @@ -0,0 +1,120 @@ +{ + "Type": "Live2D Expression", + "Parameters": [ + { + "Id": "ParamEyeLOpen", + "Value": 0.2, + "Blend": "Add" + }, + { + "Id": "ParamEyeLSmile", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeLForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeROpen", + "Value": 0.2, + "Blend": "Add" + }, + { + "Id": "ParamEyeRSmile", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeRForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeBallForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLY", + "Value": 0.2, + "Blend": "Add" + }, + { + "Id": "ParamBrowRY", + "Value": 0.2, + "Blend": "Add" + }, + { + "Id": "ParamBrowLX", + "Value": -0.1, + "Blend": "Add" + }, + { + "Id": "ParamBrowRX", + "Value": -0.1, + "Blend": "Add" + }, + { + "Id": "ParamBrowLAngle", + "Value": 0.1, + "Blend": "Add" + }, + { + "Id": "ParamBrowRAngle", + "Value": 0.1, + "Blend": "Add" + }, + { + "Id": "ParamBrowLForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLForm2", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRForm2", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamTeethOn", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamCheek", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGlassUD", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassWhite", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassHighlight", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassHighlightMove", + "Value": 0, + "Blend": "Add" + } + ] +} diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/exp_05.exp3.json b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/exp_05.exp3.json new file mode 100644 index 00000000..6f8515fe --- /dev/null +++ b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/exp/exp_05.exp3.json @@ -0,0 +1,120 @@ +{ + "Type": "Live2D Expression", + "Parameters": [ + { + "Id": "ParamEyeLOpen", + "Value": -1, + "Blend": "Add" + }, + { + "Id": "ParamEyeLSmile", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeLForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeROpen", + "Value": -1, + "Blend": "Add" + }, + { + "Id": "ParamEyeRSmile", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeRForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamEyeBallForm", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLY", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRY", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLX", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRX", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLAngle", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRAngle", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowLForm", + "Value": 1, + "Blend": "Add" + }, + { + "Id": "ParamBrowLForm2", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamBrowRForm", + "Value": 1, + "Blend": "Add" + }, + { + "Id": "ParamBrowRForm2", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamTeethOn", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamCheek", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGlassUD", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassWhite", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassHighlight", + "Value": 0, + "Blend": "Add" + }, + { + "Id": "ParamGrassHighlightMove", + "Value": 0, + "Blend": "Add" + } + ] +} diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/motions/mtn_00.motion3.json b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/motions/mtn_00.motion3.json new file mode 100644 index 00000000..534066d8 --- /dev/null +++ b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/motions/mtn_00.motion3.json @@ -0,0 +1,1432 @@ +{ + "Version": 3, + "Meta": { + "Duration": 7.97, + "Fps": 30.0, + "Loop": true, + "AreBeziersRestricted": true, + "CurveCount": 93, + "TotalSegmentCount": 78, + "TotalPointCount": 362, + "UserDataCount": 0, + "TotalUserDataSize": 0 + }, + "Curves": [ + { + "Target": "Parameter", + "Id": "ParamAngleX", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleY", + "Segments": [ + 0, + 0, + 1, + 0.611, + 0, + 1.222, + 5, + 1.833, + 5, + 1, + 2.4, + 5, + 2.967, + 0, + 3.533, + 0, + 1, + 4.278, + 0, + 5.022, + 4, + 5.767, + 4, + 1, + 6.5, + 4, + 7.233, + 0.119, + 7.967, + 0.003 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleZ", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLOpen", + "Segments": [ + 0, + 1, + 1, + 2.656, + 1, + 5.311, + 1, + 7.967, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLSmile", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLForm", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeROpen", + "Segments": [ + 0, + 1, + 1, + 2.656, + 1, + 5.311, + 1, + 7.967, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeRSmile", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeRForm", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallX", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallY", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallForm", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLY", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRY", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLX", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRX", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLAngle", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRAngle", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLForm", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLForm2", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRForm", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRForm2", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamTeethOn", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamCheek", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGlassUD", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGrassWhite", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGrassHighlight", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGrassHighlightMove", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleX", + "Segments": [ + 0, + 1, + 1, + 0.589, + 1, + 1.178, + -1, + 1.767, + -1, + 1, + 2.333, + -1, + 2.9, + 1, + 3.467, + 1, + 1, + 4.2, + 1, + 4.933, + -1, + 5.667, + -1, + 1, + 6.433, + -1, + 7.2, + 0.943, + 7.967, + 0.999 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleY", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleZ", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWaistAngleZ", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyPosition", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBreath", + "Segments": [ + 0, + 0, + 1, + 0.6, + 0, + 1.2, + 1, + 1.8, + 1, + 1, + 2.367, + 1, + 2.933, + 0, + 3.5, + 0, + 1, + 4.244, + 0, + 4.989, + 1, + 5.733, + 1, + 1, + 6.478, + 1, + 7.222, + 0.029, + 7.967, + 0.001 + ] + }, + { + "Target": "Parameter", + "Id": "ParamLeftShoulderUp", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamRightShoulderUp", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAllX", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAllY", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAllRotate", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairFront", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairSide", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairBack", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairFrontFuwa", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairSideFuwa", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairBackFuwa", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamJacket", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamChainWaist", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchSwingA1", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchSwingA2", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchAX", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBSwitch", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBOpen", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBX", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL01", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL02", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL03", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL04", + "FadeInTime": 0.2, + "Segments": [ + 0, + 0, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR01", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR02", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR03", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR04", + "FadeInTime": 0.2, + "Segments": [ + 0, + 0, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBR01", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBR02", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBR03", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand01Roll", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand05Roll1", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand05Roll2", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand05Roll3", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCR01", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCR02", + "Segments": [ + 0, + -30, + 1, + 2.656, + -30, + 5.311, + -0.25, + 7.967, + -0.002 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCR03", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCLHandRoll1", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDL01", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDL02", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDL03", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDLHand03Roll", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER01", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER02", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER03", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER04", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand04Roll1", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand04Roll2", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand06", + "Segments": [ + 0, + 0, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand06Roll1", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand06Roll2", + "Segments": [ + 0, + 0, + 1, + 2.656, + 0, + 5.311, + 0, + 7.967, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartWatchA", + "Segments": [ + 0, + 1, + 0, + 7.97, + 1 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartWatchB", + "Segments": [ + 0, + 0, + 0, + 7.97, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmAL", + "Segments": [ + 0, + 1, + 0, + 7.97, + 1 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmAR", + "Segments": [ + 0, + 1, + 0, + 7.97, + 1 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmBR", + "Segments": [ + 0, + 0, + 0, + 7.97, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmCL", + "Segments": [ + 0, + 0, + 0, + 7.97, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmDL", + "Segments": [ + 0, + 0, + 0, + 7.97, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmER", + "Segments": [ + 0, + 0, + 0, + 7.97, + 0 + ] + } + ] +} \ No newline at end of file diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/motions/mtn_01.motion3.json b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/motions/mtn_01.motion3.json new file mode 100644 index 00000000..066dbfcd --- /dev/null +++ b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/motions/mtn_01.motion3.json @@ -0,0 +1,1971 @@ +{ + "Version": 3, + "Meta": { + "Duration": 5, + "Fps": 30.0, + "Loop": true, + "AreBeziersRestricted": true, + "CurveCount": 94, + "TotalSegmentCount": 228, + "TotalPointCount": 587, + "UserDataCount": 0, + "TotalUserDataSize": 0 + }, + "Curves": [ + { + "Target": "Parameter", + "Id": "ParamAngleX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.511, + 0, + 0.856, + 0, + 1.2, + 0, + 1, + 1.856, + 0, + 2.511, + -0.883, + 3.167, + -4, + 1, + 3.578, + -5.955, + 3.989, + -8.02, + 4.4, + -8.02, + 0, + 5, + -8.02 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.189, + 0, + 0.211, + 0, + 0.233, + 0, + 1, + 0.378, + 0, + 0.522, + 2.709, + 0.667, + 4.062, + 1, + 0.856, + 5.832, + 1.044, + 6, + 1.233, + 6, + 1, + 1.878, + 6, + 2.522, + -12, + 3.167, + -12, + 1, + 3.589, + -12, + 4.011, + -9, + 4.433, + -9, + 0, + 5, + -9 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.222, + 0, + 0.278, + 0, + 0.333, + 0, + 1, + 0.611, + 0, + 0.889, + 8, + 1.167, + 8, + 1, + 1.178, + 8, + 1.189, + 8, + 1.2, + 8, + 1, + 1.856, + 8, + 2.511, + -14, + 3.167, + -14, + 1, + 3.467, + -14, + 3.767, + -13, + 4.067, + -13, + 0, + 5, + -13 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLOpen", + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 1, + 0.722, + 1, + 1.278, + 1, + 1.833, + 1, + 1, + 1.933, + 1, + 2.033, + 0, + 2.133, + 0, + 1, + 2.478, + 0, + 2.822, + 0, + 3.167, + 0, + 1, + 3.322, + 0, + 3.478, + 0.7, + 3.633, + 0.7, + 0, + 5, + 0.7 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLSmile", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLForm", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeROpen", + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 1, + 0.722, + 1, + 1.278, + 1, + 1.833, + 1, + 1, + 1.933, + 1, + 2.033, + 0, + 2.133, + 0, + 1, + 2.478, + 0, + 2.822, + 0, + 3.167, + 0, + 1, + 3.322, + 0, + 3.478, + 0.7, + 3.633, + 0.7, + 0, + 5, + 0.7 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeRSmile", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeRForm", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.233, + 0, + 0.3, + 0, + 0.367, + 0, + 1, + 0.656, + 0, + 0.944, + 0, + 1.233, + 0, + 1, + 1.878, + 0, + 2.522, + -0.3, + 3.167, + -0.3, + 0, + 5, + -0.3 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.233, + 0, + 0.3, + 0, + 0.367, + 0, + 1, + 0.656, + 0, + 0.944, + -0.2, + 1.233, + -0.2, + 1, + 1.878, + -0.2, + 2.522, + -0.2, + 3.167, + -0.2, + 0, + 5, + -0.2 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLY", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRY", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLX", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRX", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLAngle", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRAngle", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLForm", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLForm2", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRForm", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRForm2", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamTeethOn", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamCheek", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGlassUD", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGrassWhite", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGrassHighlight", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGrassHighlightMove", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleX", + "Segments": [ + 0, + -1, + 1, + 0.056, + -1, + 0.111, + -1, + 0.167, + -1, + 1, + 0.489, + -1, + 0.811, + 0, + 1.133, + 0, + 1, + 1.778, + 0, + 2.422, + -3, + 3.067, + -3, + 0, + 5, + -3 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.256, + 0, + 0.344, + 1.011, + 0.433, + 1.616, + 1, + 0.6, + 2.751, + 0.767, + 3, + 0.933, + 3, + 1, + 1, + 3, + 1.067, + 3, + 1.133, + 3, + 1, + 1.778, + 3, + 2.422, + -2, + 3.067, + -2, + 1, + 3.511, + -2, + 3.956, + -1.5, + 4.4, + -1.5, + 0, + 5, + -1.5 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWaistAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyPosition", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBreath", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.467, + 0, + 0.767, + 1, + 1.067, + 1, + 1, + 1.089, + 1, + 1.111, + 1, + 1.133, + 1, + 1, + 1.911, + 1, + 2.689, + 0, + 3.467, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamLeftShoulderUp", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.489, + 0, + 0.811, + 0, + 1.133, + 0, + 1, + 1.778, + 0, + 2.422, + -9, + 3.067, + -9, + 0, + 5, + -9 + ] + }, + { + "Target": "Parameter", + "Id": "ParamRightShoulderUp", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.489, + 0, + 0.811, + 0, + 1.133, + 0, + 1, + 1.778, + 0, + 2.422, + 8, + 3.067, + 8, + 0, + 5, + 8 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAllX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAllY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAllRotate", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairFront", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairSide", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairBack", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairFrontFuwa", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairSideFuwa", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairBackFuwa", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamJacket", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamChainWaist", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchSwingA1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchSwingA2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchAX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBSwitch", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBOpen", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.544, + 0, + 0.922, + 1, + 1.3, + 1, + 1, + 1.911, + 1, + 2.522, + 0, + 3.133, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.556, + 0, + 0.944, + -1, + 1.333, + -1, + 1, + 1.944, + -1, + 2.556, + 0, + 3.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.556, + 0, + 0.944, + 0, + 1.333, + 0, + 1, + 1.944, + 0, + 2.556, + -3, + 3.167, + -3, + 0, + 5, + -3 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL04", + "FadeInTime": 0.2, + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR02", + "Segments": [ + 0, + -40, + 1, + 0.056, + -40, + 0.111, + -40, + 0.167, + -40, + 0, + 5, + -40 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR03", + "Segments": [ + 0, + -9, + 1, + 0.056, + -9, + 0.111, + -9, + 0.167, + -9, + 0, + 5, + -9 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR04", + "FadeInTime": 0.2, + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBR01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBR02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBR03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand01Roll", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand05Roll1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand05Roll2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand05Roll3", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCR01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCR02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCR03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCLHandRoll1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDL01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDL02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDL03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDLHand03Roll", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.2, + 0, + 0.233, + 0, + 0.267, + 0, + 1, + 0.6, + 0, + 0.933, + 6, + 1.267, + 6, + 1, + 1.9, + 6, + 2.533, + -2, + 3.167, + -2, + 0, + 5, + -2 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.544, + 0, + 0.922, + 3, + 1.3, + 3, + 1, + 1.933, + 3, + 2.567, + -2, + 3.2, + -2, + 1, + 3.589, + -2, + 3.978, + -1, + 4.367, + -1, + 0, + 5, + -1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.211, + 0, + 0.256, + 0.2, + 0.3, + 0.2, + 1, + 0.633, + 0.2, + 0.967, + 0, + 1.3, + 0, + 1, + 1.933, + 0, + 2.567, + 2, + 3.2, + 2, + 1, + 3.589, + 2, + 3.978, + 1, + 4.367, + 1, + 0, + 5, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER04", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.533, + 0, + 0.9, + 0, + 1.267, + 0, + 1, + 1.9, + 0, + 2.533, + 2, + 3.167, + 2, + 0, + 5, + 2 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand04", + "FadeInTime": 0.2, + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 0, + 5, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand04Roll1", + "Segments": [ + 0, + 9, + 1, + 0.056, + 9, + 0.111, + 9, + 0.167, + 9, + 1, + 0.556, + 9, + 0.944, + 11, + 1.333, + 11, + 1, + 2.067, + 11, + 2.8, + -23, + 3.533, + -23, + 0, + 5, + -23 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand04Roll2", + "Segments": [ + 0, + 9, + 1, + 0.056, + 9, + 0.111, + 9, + 0.167, + 9, + 1, + 0.556, + 9, + 0.944, + 14, + 1.333, + 14, + 1, + 2.067, + 14, + 2.8, + -14, + 3.533, + -14, + 0, + 5, + -14 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand06", + "FadeInTime": 0.2, + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand06Roll1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand06Roll2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartWatchA", + "Segments": [ + 0, + 1, + 0, + 5, + 1 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartWatchB", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmAL", + "Segments": [ + 0, + 1, + 0, + 5, + 1 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmAR", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmBR", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmCL", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmDL", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmER", + "Segments": [ + 0, + 1, + 0, + 5, + 1 + ] + } + ] +} diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/motions/mtn_02.motion3.json b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/motions/mtn_02.motion3.json new file mode 100644 index 00000000..6cff1918 --- /dev/null +++ b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/motions/mtn_02.motion3.json @@ -0,0 +1,2182 @@ +{ + "Version": 3, + "Meta": { + "Duration": 5.5, + "Fps": 30.0, + "Loop": true, + "AreBeziersRestricted": true, + "CurveCount": 93, + "TotalSegmentCount": 262, + "TotalPointCount": 690, + "UserDataCount": 0, + "TotalUserDataSize": 0 + }, + "Curves": [ + { + "Target": "Parameter", + "Id": "ParamAngleX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.822, + 0, + 1.478, + 0, + 2.133, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.222, + 0, + 0.278, + 0, + 0.333, + 0, + 1, + 0.544, + 0, + 0.756, + 10.2, + 0.967, + 10.2, + 1, + 1.356, + 10.2, + 1.744, + -30, + 2.133, + -30, + 1, + 2.267, + -30, + 2.4, + -27.952, + 2.533, + -27.952, + 1, + 2.867, + -27.952, + 3.2, + -30, + 3.533, + -30, + 1, + 3.822, + -30, + 4.111, + 2.617, + 4.4, + 2.617, + 1, + 4.533, + 2.617, + 4.667, + 0, + 4.8, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLOpen", + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 1, + 0.567, + 1, + 0.967, + 1, + 1.367, + 1, + 1, + 1.478, + 1, + 1.589, + 0, + 1.7, + 0, + 1, + 2.4, + 0, + 3.1, + 0, + 3.8, + 0, + 1, + 3.944, + 0, + 4.089, + 1, + 4.233, + 1, + 0, + 5.5, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLSmile", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeROpen", + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 1, + 0.567, + 1, + 0.967, + 1, + 1.367, + 1, + 1, + 1.478, + 1, + 1.589, + 0, + 1.7, + 0, + 1, + 2.4, + 0, + 3.1, + 0, + 3.8, + 0, + 1, + 3.944, + 0, + 4.089, + 1, + 4.233, + 1, + 0, + 5.5, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeRSmile", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeRForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLAngle", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRAngle", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLForm2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRForm2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamTeethOn", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamCheek", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGlassUD", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGrassWhite", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGrassHighlight", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGrassHighlightMove", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.411, + 0, + 0.656, + 1.24, + 0.9, + 1.24, + 1, + 1.3, + 1.24, + 1.7, + -5, + 2.1, + -5.92, + 1, + 2.533, + -6.917, + 2.967, + -6.78, + 3.4, + -6.78, + 1, + 3.856, + -6.78, + 4.311, + 0, + 4.767, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.411, + 0, + 0.656, + 1, + 0.9, + 1, + 1, + 1.311, + 1, + 1.722, + -1.464, + 2.133, + -2, + 1, + 2.567, + -2.564, + 3, + -2.5, + 3.433, + -2.5, + 1, + 3.878, + -2.5, + 4.322, + 0, + 4.767, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWaistAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.422, + 0, + 0.678, + 2, + 0.933, + 2, + 1, + 1.333, + 2, + 1.733, + -1.026, + 2.133, + -2, + 1, + 2.567, + -3.055, + 3, + -3, + 3.433, + -3, + 1, + 3.878, + -3, + 4.322, + 0, + 4.767, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyPosition", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.411, + 0, + 0.656, + -1, + 0.9, + -1, + 1, + 1.289, + -1, + 1.678, + 9.133, + 2.067, + 9.133, + 1, + 2.178, + 9.133, + 2.289, + 9, + 2.4, + 9, + 1, + 2.656, + 9, + 2.911, + 9, + 3.167, + 9, + 1, + 3.478, + 9, + 3.789, + -0.5, + 4.1, + -0.5, + 1, + 4.422, + -0.5, + 4.744, + 0, + 5.067, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBreath", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.411, + 0, + 0.656, + 1, + 0.9, + 1, + 1, + 1.733, + 1, + 2.567, + 0, + 3.4, + 0, + 1, + 3.633, + 0, + 3.867, + 0.6, + 4.1, + 0.6, + 1, + 4.333, + 0.6, + 4.567, + 0, + 4.8, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamLeftShoulderUp", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.422, + 0, + 0.678, + 0, + 0.933, + 0, + 1, + 1.322, + 0, + 1.711, + -9, + 2.1, + -9, + 1, + 2.989, + -9, + 3.878, + 0, + 4.767, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamRightShoulderUp", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.422, + 0, + 0.678, + 0, + 0.933, + 0, + 1, + 1.322, + 0, + 1.711, + 8, + 2.1, + 8, + 1, + 2.989, + 8, + 3.878, + 0, + 4.767, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAllX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAllY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAllRotate", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairFront", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairSide", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairBack", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairFrontFuwa", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairSideFuwa", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairBackFuwa", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamJacket", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamChainWaist", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchSwingA1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchSwingA2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchAX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBSwitch", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBOpen", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL02", + "Segments": [ + 0, + -28, + 1, + 0.056, + -28, + 0.111, + -28, + 0.167, + -28, + 0, + 5.5, + -28 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL03", + "Segments": [ + 0, + 19, + 1, + 0.056, + 19, + 0.111, + 19, + 0.167, + 19, + 0, + 5.5, + 19 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL04", + "FadeInTime": 0.2, + "Segments": [ + 0, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.422, + 0, + 0.678, + 0.8, + 0.933, + 0.8, + 1, + 1.322, + 0.8, + 1.711, + -3, + 2.1, + -3, + 1, + 2.556, + -3, + 3.011, + -3, + 3.467, + -3, + 1, + 3.789, + -3, + 4.111, + 0.8, + 4.433, + 0.8, + 1, + 4.589, + 0.8, + 4.744, + 0, + 4.9, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.433, + 0, + 0.7, + 0.8, + 0.967, + 0.8, + 1, + 1.356, + 0.8, + 1.744, + -6, + 2.133, + -6, + 1, + 2.589, + -6, + 3.044, + -6, + 3.5, + -6, + 1, + 3.822, + -6, + 4.144, + 1, + 4.467, + 1, + 1, + 4.622, + 1, + 4.778, + 0, + 4.933, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.433, + 0, + 0.7, + 0, + 0.967, + 0, + 1, + 1.356, + 0, + 1.744, + -10, + 2.133, + -10, + 1, + 2.589, + -10, + 3.044, + -10, + 3.5, + -10, + 1, + 3.822, + -10, + 4.144, + 1, + 4.467, + 1, + 1, + 4.622, + 1, + 4.778, + 0, + 4.933, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR04", + "FadeInTime": 0.2, + "Segments": [ + 0, + 0, + 1, + 0.311, + 0, + 0.622, + 0, + 0.933, + 0, + 1, + 0.944, + 0, + 0.956, + -1, + 0.967, + -1, + 1, + 2.111, + -1, + 3.256, + -1, + 4.4, + -1, + 1, + 4.411, + -1, + 4.422, + 0, + 4.433, + 0, + 1, + 4.733, + 0, + 5.033, + 0, + 5.333, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBR01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBR02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBR03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand01Roll", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand05Roll1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand05Roll2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand05Roll3", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCR01", + "Segments": [ + 0, + 3, + 1, + 0.056, + 3, + 0.111, + 3, + 0.167, + 3, + 1, + 0.422, + 3, + 0.678, + 5, + 0.933, + 5, + 1, + 1.311, + 5, + 1.689, + -6, + 2.067, + -6, + 1, + 2.522, + -6, + 2.978, + -6, + 3.433, + -6, + 1, + 3.922, + -6, + 4.411, + 3, + 4.9, + 3, + 0, + 5.5, + 3 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCR02", + "Segments": [ + 0, + -29, + 1, + 0.056, + -29, + 0.111, + -29, + 0.167, + -29, + 1, + 0.444, + -29, + 0.722, + -30, + 1, + -30, + 1, + 1.367, + -30, + 1.733, + -21, + 2.1, + -21, + 1, + 2.556, + -21, + 3.011, + -21, + 3.467, + -21, + 1, + 3.956, + -21, + 4.444, + -29, + 4.933, + -29, + 0, + 5.5, + -29 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCR03", + "Segments": [ + 0, + 11, + 1, + 0.056, + 11, + 0.111, + 11, + 0.167, + 11, + 1, + 0.444, + 11, + 0.722, + 9, + 1, + 9, + 1, + 1.367, + 9, + 1.733, + 28, + 2.1, + 28, + 1, + 2.556, + 28, + 3.011, + 28, + 3.467, + 28, + 1, + 3.956, + 28, + 4.444, + 11, + 4.933, + 11, + 0, + 5.5, + 11 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCLHandRoll1", + "Segments": [ + 0, + -18, + 1, + 0.056, + -18, + 0.111, + -18, + 0.167, + -18, + 1, + 0.456, + -18, + 0.744, + -18.077, + 1.033, + -21, + 1, + 1.411, + -24.822, + 1.789, + -30, + 2.167, + -30, + 1, + 2.622, + -30, + 3.078, + -30, + 3.533, + -30, + 1, + 4, + -30, + 4.467, + -18, + 4.933, + -18, + 0, + 5.5, + -18 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDL01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDL02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDL03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDLHand03Roll", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER04", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand04", + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 0, + 5.5, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand04Roll1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand04Roll2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand06Roll1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand06Roll2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartWatchA", + "Segments": [ + 0, + 1, + 0, + 5.5, + 1 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartWatchB", + "Segments": [ + 0, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmAL", + "Segments": [ + 0, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmAR", + "Segments": [ + 0, + 1, + 0, + 5.5, + 1 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmBR", + "Segments": [ + 0, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmCL", + "Segments": [ + 0, + 1, + 0, + 5.5, + 1 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmDL", + "Segments": [ + 0, + 0, + 0, + 5.5, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmER", + "Segments": [ + 0, + 0, + 0, + 5.5, + 0 + ] + } + ] +} diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/motions/mtn_03.motion3.json b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/motions/mtn_03.motion3.json new file mode 100644 index 00000000..bc247203 --- /dev/null +++ b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/motions/mtn_03.motion3.json @@ -0,0 +1,2596 @@ +{ + "Version": 3, + "Meta": { + "Duration": 5, + "Fps": 30.0, + "Loop": true, + "AreBeziersRestricted": true, + "CurveCount": 98, + "TotalSegmentCount": 318, + "TotalPointCount": 853, + "UserDataCount": 0, + "TotalUserDataSize": 0 + }, + "Curves": [ + { + "Target": "Parameter", + "Id": "ParamAngleX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.322, + 0, + 0.478, + 0, + 0.633, + 0, + 1, + 1.089, + 0, + 1.544, + -10.65, + 2, + -14, + 1, + 2.211, + -15.553, + 2.422, + -15, + 2.633, + -15, + 1, + 2.844, + -15, + 3.056, + 0, + 3.267, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.278, + 0, + 0.389, + 1, + 0.5, + 1, + 1, + 0.744, + 1, + 0.989, + -16.215, + 1.233, + -16.215, + 1, + 1.433, + -16.215, + 1.633, + -11.8, + 1.833, + -11.8, + 1, + 2.133, + -11.8, + 2.433, + -14.898, + 2.733, + -14.898, + 1, + 3.056, + -14.898, + 3.378, + 0, + 3.7, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.189, + 0, + 0.378, + 0, + 0.567, + 0, + 1, + 0.867, + 0, + 1.167, + 10, + 1.467, + 10, + 1, + 1.8, + 10, + 2.133, + 10, + 2.467, + 10, + 1, + 2.733, + 10, + 3, + 0, + 3.267, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLOpen", + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 1, + 0.378, + 1, + 0.589, + 1, + 0.8, + 1, + 1, + 0.833, + 1, + 0.867, + 0, + 0.9, + 0, + 1, + 0.922, + 0, + 0.944, + 0, + 0.967, + 0, + 1, + 1.044, + 0, + 1.122, + 1, + 1.2, + 1, + 1, + 1.711, + 1, + 2.222, + 1, + 2.733, + 1, + 1, + 2.767, + 1, + 2.8, + 0, + 2.833, + 0, + 1, + 2.856, + 0, + 2.878, + 0, + 2.9, + 0, + 1, + 2.978, + 0, + 3.056, + 1, + 3.133, + 1, + 0, + 5, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLSmile", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeROpen", + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 1, + 0.378, + 1, + 0.589, + 1, + 0.8, + 1, + 1, + 0.833, + 1, + 0.867, + 0, + 0.9, + 0, + 1, + 0.922, + 0, + 0.944, + 0, + 0.967, + 0, + 1, + 1.044, + 0, + 1.122, + 1, + 1.2, + 1, + 1, + 1.711, + 1, + 2.222, + 1, + 2.733, + 1, + 1, + 2.767, + 1, + 2.8, + 0, + 2.833, + 0, + 1, + 2.856, + 0, + 2.878, + 0, + 2.9, + 0, + 1, + 2.978, + 0, + 3.056, + 1, + 3.133, + 1, + 0, + 5, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeRSmile", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeRForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.322, + 0, + 0.478, + 0, + 0.633, + 0, + 1, + 0.833, + 0, + 1.033, + -0.5, + 1.233, + -0.5, + 1, + 1.7, + -0.5, + 2.167, + -0.5, + 2.633, + -0.5, + 1, + 2.833, + -0.5, + 3.033, + 0, + 3.233, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.322, + 0, + 0.478, + 0, + 0.633, + 0, + 1, + 0.833, + 0, + 1.033, + -0.2, + 1.233, + -0.2, + 1, + 1.7, + -0.2, + 2.167, + -0.2, + 2.633, + -0.2, + 1, + 2.833, + -0.2, + 3.033, + 0, + 3.233, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLY", + "Segments": [ + 0, + -0.1, + 1, + 0.056, + -0.1, + 0.111, + -0.1, + 0.167, + -0.1, + 0, + 5, + -0.1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRY", + "Segments": [ + 0, + -0.1, + 1, + 0.056, + -0.1, + 0.111, + -0.1, + 0.167, + -0.1, + 0, + 5, + -0.1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLAngle", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRAngle", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLForm", + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 0, + 5, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLForm2", + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 0, + 5, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRForm", + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 0, + 5, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRForm2", + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 0, + 5, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamTeethOn", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamCheek", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGlassUD", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGrassWhite", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGrassHighlight", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGrassHighlightMove", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.333, + 0, + 0.5, + 0.5, + 0.667, + 0.5, + 1, + 0.922, + 0.5, + 1.178, + -3, + 1.433, + -3, + 1, + 1.789, + -3, + 2.144, + -3, + 2.5, + -3, + 1, + 2.722, + -3, + 2.944, + 0, + 3.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.333, + 0, + 0.5, + -0.538, + 0.667, + -1, + 1, + 0.878, + -1.585, + 1.089, + -1.707, + 1.3, + -1.707, + 1, + 1.711, + -1.707, + 2.122, + 0.274, + 2.533, + 0.274, + 1, + 2.767, + 0.274, + 3, + 0, + 3.233, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWaistAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyPosition", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.356, + 0, + 0.544, + 0, + 0.733, + 0, + 1, + 1.489, + 0, + 2.244, + 0, + 3, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBreath", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.333, + 0, + 0.5, + 0, + 0.667, + 0, + 1, + 0.944, + 0, + 1.222, + 0.42, + 1.5, + 0.5, + 1, + 1.867, + 0.605, + 2.233, + 0.6, + 2.6, + 0.6, + 1, + 3.111, + 0.6, + 3.622, + 0, + 4.133, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamLeftShoulderUp", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.333, + 0, + 0.5, + 0, + 0.667, + 0, + 1, + 0.922, + 0, + 1.178, + -8.227, + 1.433, + -9, + 1, + 1.789, + -10.076, + 2.144, + -10, + 2.5, + -10, + 1, + 2.744, + -10, + 2.989, + 0, + 3.233, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamRightShoulderUp", + "Segments": [ + 0, + 8, + 1, + 0.056, + 8, + 0.111, + 8, + 0.167, + 8, + 1, + 0.267, + 8, + 0.367, + 8, + 0.467, + 8, + 1, + 0.533, + 8, + 0.6, + 4, + 0.667, + 4, + 1, + 0.767, + 4, + 0.867, + 9, + 0.967, + 9, + 1, + 1.5, + 9, + 2.033, + 9, + 2.567, + 9, + 1, + 2.722, + 9, + 2.878, + 0, + 3.033, + 0, + 1, + 3.267, + 0, + 3.5, + 8, + 3.733, + 8, + 0, + 5, + 8 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAllX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAllY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAllRotate", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairFront", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairSide", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairBack", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairFrontFuwa", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairSideFuwa", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairBackFuwa", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamJacket", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamChainWaist", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchSwingA1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchSwingA2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchAX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBSwitch", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.3, + 0, + 0.433, + 0, + 0.567, + 0, + 1, + 0.611, + 0, + 0.656, + -1, + 0.7, + -1, + 1, + 0.733, + -1, + 0.767, + 0, + 0.8, + 0, + 1, + 1.667, + 0, + 2.533, + 0, + 3.4, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBOpen", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 1.011, + 0, + 1.856, + 0, + 2.7, + 0, + 1, + 2.756, + 0, + 2.811, + 16, + 2.867, + 16, + 1, + 2.889, + 16, + 2.911, + 16, + 2.933, + 16, + 1, + 3.089, + 16, + 3.244, + 0, + 3.4, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBOpen2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.344, + 0, + 0.522, + 0, + 0.7, + 0, + 1, + 0.744, + 0, + 0.789, + 30, + 0.833, + 30, + 1, + 1.456, + 30, + 2.078, + 30, + 2.7, + 30, + 1, + 2.756, + 30, + 2.811, + 16, + 2.867, + 16, + 1, + 2.889, + 16, + 2.911, + 16, + 2.933, + 16, + 1, + 3.089, + 16, + 3.244, + 0, + 3.4, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.3, + 0, + 0.433, + 0, + 0.567, + 0, + 1, + 0.7, + 0, + 0.833, + -6.9, + 0.967, + -6.9, + 1, + 1.544, + -6.9, + 2.122, + -6.9, + 2.7, + -6.9, + 1, + 2.756, + -6.9, + 2.811, + 0, + 2.867, + 0, + 1, + 2.889, + 0, + 2.911, + 0, + 2.933, + 0, + 1, + 3.089, + 0, + 3.244, + 0, + 3.4, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBRoll", + "Segments": [ + 0, + -12, + 1, + 0.056, + -12, + 0.111, + -12, + 0.167, + -12, + 1, + 0.3, + -12, + 0.433, + -12, + 0.567, + -12, + 1, + 0.611, + -12, + 0.656, + -9, + 0.7, + -9, + 1, + 1.367, + -9, + 2.033, + -9, + 2.7, + -9, + 1, + 2.756, + -9, + 2.811, + -12, + 2.867, + -12, + 1, + 2.889, + -12, + 2.911, + -12, + 2.933, + -12, + 1, + 3.089, + -12, + 3.244, + -12, + 3.4, + -12, + 0, + 5, + -12 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBLR", + "Segments": [ + 0, + 2, + 1, + 0.056, + 2, + 0.111, + 2, + 0.167, + 2, + 1, + 0.3, + 2, + 0.433, + 2, + 0.567, + 2, + 1, + 0.7, + 2, + 0.833, + -3.4, + 0.967, + -3.4, + 1, + 1.544, + -3.4, + 2.122, + -3.331, + 2.7, + -3.144, + 1, + 2.756, + -3.126, + 2.811, + 0, + 2.867, + 0, + 1, + 2.889, + 0, + 2.911, + 0, + 2.933, + 0, + 1, + 3.089, + 0, + 3.244, + 2, + 3.4, + 2, + 0, + 5, + 2 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBUD", + "Segments": [ + 0, + -2, + 1, + 0.056, + -2, + 0.111, + -2, + 0.167, + -2, + 1, + 1.011, + -2, + 1.856, + 1.06, + 2.7, + 1.06, + 1, + 2.756, + 1.06, + 2.811, + 0.241, + 2.867, + 0, + 1, + 2.889, + -0.096, + 2.911, + 0.01, + 2.933, + -0.11, + 1, + 3.089, + -0.955, + 3.244, + -2, + 3.4, + -2, + 0, + 5, + -2 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL04", + "FadeInTime": 0.2, + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR01", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR02", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR03", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR04", + "FadeInTime": 0.2, + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBR01", + "Segments": [ + 0, + -7, + 1, + 0.056, + -7, + 0.111, + -7, + 0.167, + -7, + 1, + 0.378, + -7, + 0.589, + -7, + 0.8, + -7, + 1, + 0.989, + -7, + 1.178, + -5, + 1.367, + -5, + 1, + 1.744, + -5, + 2.122, + -5, + 2.5, + -5, + 1, + 2.589, + -5, + 2.678, + -6, + 2.767, + -6, + 1, + 2.789, + -6, + 2.811, + -6, + 2.833, + -6, + 1, + 3.022, + -6, + 3.211, + -7, + 3.4, + -7, + 0, + 5, + -7 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBR02", + "Segments": [ + 0, + 18, + 1, + 0.056, + 18, + 0.111, + 18, + 0.167, + 18, + 1, + 0.444, + 18, + 0.722, + 18, + 1, + 18, + 1, + 1.356, + 18, + 1.711, + 16.881, + 2.067, + 15, + 1, + 2.211, + 14.236, + 2.356, + 14, + 2.5, + 14, + 1, + 2.589, + 14, + 2.678, + 16.023, + 2.767, + 18, + 1, + 2.811, + 18.988, + 2.856, + 19, + 2.9, + 19, + 1, + 3.067, + 19, + 3.233, + 18, + 3.4, + 18, + 0, + 5, + 18 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBR03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.3, + 0, + 0.433, + -6, + 0.567, + -6, + 1, + 0.611, + -6, + 0.656, + 9, + 0.7, + 9, + 1, + 0.8, + 9, + 0.9, + 0.266, + 1, + 0, + 1, + 1.322, + -0.858, + 1.644, + -1, + 1.967, + -1, + 1, + 2.211, + -1, + 2.456, + -1, + 2.7, + -1, + 1, + 2.744, + -1, + 2.789, + 14, + 2.833, + 14, + 1, + 2.867, + 14, + 2.9, + 14, + 2.933, + 14, + 1, + 3.078, + 14, + 3.222, + 0, + 3.367, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand01", + "FadeInTime": 0.2, + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand01Roll", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand05", + "FadeInTime": 0.2, + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 0, + 5, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand05Roll1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 1.011, + 0, + 1.856, + 0, + 2.7, + 0, + 1, + 2.756, + 0, + 2.811, + 30, + 2.867, + 30, + 1, + 2.889, + 30, + 2.911, + 30, + 2.933, + 30, + 1, + 3.089, + 30, + 3.244, + 0, + 3.4, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand05Roll2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.3, + 0, + 0.433, + 0, + 0.567, + 0, + 1, + 0.611, + 0, + 0.656, + 7.5, + 0.7, + 7.5, + 1, + 0.811, + 7.5, + 0.922, + 0, + 1.033, + 0, + 1, + 1.589, + 0, + 2.144, + 0, + 2.7, + 0, + 1, + 2.756, + 0, + 2.811, + 21, + 2.867, + 21, + 1, + 2.889, + 21, + 2.911, + 21, + 2.933, + 21, + 1, + 3.089, + 21, + 3.244, + 0, + 3.4, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand05Roll3", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 1.011, + 0, + 1.856, + 0, + 2.7, + 0, + 1, + 2.756, + 0, + 2.811, + 30, + 2.867, + 30, + 1, + 2.889, + 30, + 2.911, + 30, + 2.933, + 30, + 1, + 3.089, + 30, + 3.244, + 0, + 3.4, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCR01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCR02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCR03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCLHandRoll1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDL01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDL02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDL03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDLHand03Roll", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER03", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER04", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand04Roll1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand04Roll2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand06Roll1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand06Roll2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartWatchA", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartWatchB", + "Segments": [ + 0, + 1, + 0, + 5, + 1 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmAL", + "Segments": [ + 0, + 1, + 0, + 5, + 1 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmAR", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmBR", + "Segments": [ + 0, + 1, + 0, + 5, + 1 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmCL", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmDL", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmER", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + } + ] +} diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/motions/mtn_04.motion3.json b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/motions/mtn_04.motion3.json new file mode 100644 index 00000000..8da50170 --- /dev/null +++ b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/motions/mtn_04.motion3.json @@ -0,0 +1,2316 @@ +{ + "Version": 3, + "Meta": { + "Duration": 3.33, + "Fps": 30.0, + "Loop": true, + "AreBeziersRestricted": true, + "CurveCount": 98, + "TotalSegmentCount": 278, + "TotalPointCount": 733, + "UserDataCount": 0, + "TotalUserDataSize": 0 + }, + "Curves": [ + { + "Target": "Parameter", + "Id": "ParamAngleX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.189, + 0, + 0.211, + 0, + 0.233, + 0, + 1, + 0.3, + 0, + 0.367, + 0, + 0.433, + 0, + 1, + 0.667, + 0, + 0.9, + 4.019, + 1.133, + 4.019, + 1, + 1.444, + 4.019, + 1.756, + 0, + 2.067, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleY", + "Segments": [ + 0, + -9.011, + 1, + 0.056, + -9.011, + 0.111, + -9.011, + 0.167, + -9.011, + 1, + 0.222, + -9.011, + 0.278, + -9.011, + 0.333, + -9.011, + 1, + 0.544, + -9.011, + 0.756, + -30, + 0.967, + -30, + 1, + 1.089, + -30, + 1.211, + -30, + 1.333, + -30, + 1, + 1.567, + -30, + 1.8, + 0, + 2.033, + 0, + 1, + 2.067, + 0, + 2.1, + 0, + 2.133, + 0, + 1, + 2.356, + 0, + 2.578, + -5, + 2.8, + -5, + 0, + 3.333, + -5 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.233, + 0, + 0.3, + 0, + 0.367, + 0, + 1, + 0.622, + 0, + 0.878, + -4, + 1.133, + -4, + 1, + 1.533, + -4, + 1.933, + 1, + 2.333, + 1, + 0, + 3.333, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLOpen", + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 1, + 0.311, + 1, + 0.456, + 1, + 0.6, + 1, + 1, + 0.689, + 1, + 0.778, + 0, + 0.867, + 0, + 1, + 1.133, + 0, + 1.4, + 0, + 1.667, + 0, + 1, + 1.756, + 0, + 1.844, + 1, + 1.933, + 1, + 0, + 3.333, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLSmile", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeROpen", + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 1, + 0.311, + 1, + 0.456, + 1, + 0.6, + 1, + 1, + 0.689, + 1, + 0.778, + 0, + 0.867, + 0, + 1, + 1.133, + 0, + 1.4, + 0, + 1.667, + 0, + 1, + 1.756, + 0, + 1.844, + 1, + 1.933, + 1, + 0, + 3.333, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeRSmile", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeRForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.311, + 0, + 0.456, + 0, + 0.6, + 0, + 1, + 0.689, + 0, + 0.778, + 0.2, + 0.867, + 0.2, + 1, + 1.133, + 0.2, + 1.4, + 0.2, + 1.667, + 0.2, + 1, + 1.756, + 0.2, + 1.844, + 0, + 1.933, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.311, + 0, + 0.456, + 0, + 0.6, + 0, + 1, + 0.689, + 0, + 0.778, + -0.8, + 0.867, + -0.8, + 1, + 1.133, + -0.8, + 1.4, + -0.8, + 1.667, + -0.8, + 1, + 1.756, + -0.8, + 1.844, + 0, + 1.933, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLAngle", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRAngle", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLForm2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRForm2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamTeethOn", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamCheek", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGlassUD", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.222, + 0, + 0.278, + 0, + 0.333, + 0, + 1, + 0.544, + 0, + 0.756, + -10, + 0.967, + -10, + 1, + 1.044, + -10, + 1.122, + 10, + 1.2, + 10, + 1, + 1.222, + 10, + 1.244, + 10, + 1.267, + 10, + 1, + 1.333, + 10, + 1.4, + 0, + 1.467, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGrassWhite", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.433, + 0, + 0.7, + 0, + 0.967, + 0, + 1, + 1.067, + 0, + 1.167, + 0.4, + 1.267, + 0.4, + 1, + 1.367, + 0.4, + 1.467, + 0, + 1.567, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGrassHighlight", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.422, + 0, + 0.678, + 0, + 0.933, + 0, + 1, + 1.011, + 0, + 1.089, + 1, + 1.167, + 1, + 1, + 1.2, + 1, + 1.233, + 1, + 1.267, + 1, + 1, + 1.4, + 1, + 1.533, + 0, + 1.667, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGrassHighlightMove", + "Segments": [ + 0, + -30, + 1, + 0.056, + -30, + 0.111, + -30, + 0.167, + -30, + 1, + 0.444, + -30, + 0.722, + -30, + 1, + -30, + 1, + 1.189, + -30, + 1.378, + 30, + 1.567, + 30, + 0, + 3.333, + 30 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.189, + 0, + 0.211, + 0, + 0.233, + 0, + 1, + 0.289, + 0, + 0.344, + 0, + 0.4, + 0, + 1, + 0.611, + 0, + 0.822, + 2, + 1.033, + 2, + 1, + 1.078, + 2, + 1.122, + 2, + 1.167, + 2, + 1, + 1.422, + 2, + 1.678, + 0, + 1.933, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.189, + 0, + 0.211, + 0, + 0.233, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWaistAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyPosition", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.256, + 0, + 0.344, + 0, + 0.433, + 0, + 1, + 0.633, + 0, + 0.833, + 2, + 1.033, + 2, + 1, + 1.244, + 2, + 1.456, + 0, + 1.667, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBreath", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.233, + 0, + 0.3, + 0, + 0.367, + 0, + 1, + 0.722, + 0, + 1.078, + 1, + 1.433, + 1, + 1, + 1.667, + 1, + 1.9, + 1, + 2.133, + 1, + 0, + 3.333, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamLeftShoulderUp", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamRightShoulderUp", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.189, + 0, + 0.211, + 0, + 0.233, + 0, + 1, + 0.478, + 0, + 0.722, + 2.225, + 0.967, + 9, + 1, + 1.056, + 11.464, + 1.144, + 15, + 1.233, + 15, + 1, + 1.589, + 15, + 1.944, + -6, + 2.3, + -6, + 1, + 2.489, + -6, + 2.678, + -3, + 2.867, + -3, + 0, + 3.333, + -3 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAllX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAllY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAllRotate", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairFront", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairSide", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairBack", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairFrontFuwa", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairSideFuwa", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairBackFuwa", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamJacket", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamChainWaist", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchSwingA1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchSwingA2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchAX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBSwitch", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBOpen", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBOpen2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBRoll", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBLR", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBUD", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL04", + "FadeInTime": 0.2, + "Segments": [ + 0, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR04", + "FadeInTime": 0.2, + "Segments": [ + 0, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBR01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBR02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBR03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand01Roll", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand05Roll1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand05Roll2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand05Roll3", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCR01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCR02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCR03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCLHandRoll1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDL01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDL02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDL03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDLHand03Roll", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER01", + "Segments": [ + 0, + 16, + 1, + 0.056, + 16, + 0.111, + 16, + 0.167, + 16, + 1, + 0.311, + 16, + 0.456, + 16, + 0.6, + 16, + 1, + 1.033, + 16, + 1.467, + 16, + 1.9, + 16, + 1, + 2.044, + 16, + 2.189, + 18, + 2.333, + 18, + 0, + 3.333, + 18 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER02", + "Segments": [ + 0, + 11, + 1, + 0.056, + 11, + 0.111, + 11, + 0.167, + 11, + 1, + 0.311, + 11, + 0.456, + 14.565, + 0.6, + 18, + 1, + 0.711, + 20.643, + 0.822, + 21, + 0.933, + 21, + 1, + 1.267, + 21, + 1.6, + 13.953, + 1.933, + 0, + 1, + 2.078, + -6.046, + 2.222, + -9, + 2.367, + -9, + 1, + 2.544, + -9, + 2.722, + -8, + 2.9, + -8, + 0, + 3.333, + -8 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER03", + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 1, + 0.189, + 1, + 0.211, + 1, + 0.233, + 1, + 1, + 0.356, + 1, + 0.478, + 1, + 0.6, + 1, + 1, + 0.711, + 1, + 0.822, + -5.698, + 0.933, + -7, + 1, + 1.033, + -8.171, + 1.133, + -8.083, + 1.233, + -9, + 1, + 1.389, + -10.427, + 1.544, + -11.838, + 1.7, + -11.838, + 1, + 1.933, + -11.838, + 2.167, + 19, + 2.4, + 19, + 1, + 2.578, + 19, + 2.756, + 15.092, + 2.933, + 15.092, + 0, + 3.333, + 15.092 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER04", + "Segments": [ + 0, + 30, + 1, + 0.056, + 30, + 0.111, + 30, + 0.167, + 30, + 1, + 0.422, + 30, + 0.678, + 30, + 0.933, + 30, + 1, + 1.089, + 30, + 1.244, + 30, + 1.4, + 30, + 1, + 1.744, + 30, + 2.089, + 9, + 2.433, + 9, + 0, + 3.333, + 9 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand04", + "FadeInTime": 0.2, + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand04Roll1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand04Roll2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand06", + "FadeInTime": 0.2, + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 1, + 0.311, + 1, + 0.456, + 1, + 0.6, + 1, + 0, + 3.333, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand06Roll1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.311, + 0, + 0.456, + 0, + 0.6, + 0, + 1, + 0.711, + 0, + 0.822, + 12.92, + 0.933, + 14, + 1, + 1.278, + 17.347, + 1.622, + 18, + 1.967, + 18, + 1, + 2.144, + 18, + 2.322, + 3, + 2.5, + 3, + 0, + 3.333, + 3 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand06Roll2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.411, + 0, + 0.656, + -30, + 0.9, + -30, + 1, + 1.167, + -30, + 1.433, + -30, + 1.7, + -30, + 1, + 1.956, + -30, + 2.211, + -24, + 2.467, + -24, + 0, + 3.333, + -24 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartWatchA", + "Segments": [ + 0, + 1, + 0, + 3.33, + 1 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartWatchB", + "Segments": [ + 0, + 0, + 0, + 3.33, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmAL", + "Segments": [ + 0, + 1, + 0, + 3.33, + 1 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmAR", + "Segments": [ + 0, + 0, + 0, + 3.33, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmBR", + "Segments": [ + 0, + 0, + 0, + 3.33, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmCL", + "Segments": [ + 0, + 0, + 0, + 3.33, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmDL", + "Segments": [ + 0, + 0, + 0, + 3.33, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmER", + "Segments": [ + 0, + 1, + 0, + 3.33, + 1 + ] + } + ] +} diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/motions/mtn_05.motion3.json b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/motions/mtn_05.motion3.json new file mode 100644 index 00000000..f2b4621e --- /dev/null +++ b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/motions/mtn_05.motion3.json @@ -0,0 +1,2345 @@ +{ + "Version": 3, + "Meta": { + "Duration": 5, + "Fps": 30.0, + "Loop": true, + "AreBeziersRestricted": true, + "CurveCount": 96, + "TotalSegmentCount": 283, + "TotalPointCount": 752, + "UserDataCount": 0, + "TotalUserDataSize": 0 + }, + "Curves": [ + { + "Target": "Parameter", + "Id": "ParamAngleX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.4, + 0, + 0.633, + 0, + 0.867, + 0, + 1, + 1.167, + 0, + 1.467, + 13.505, + 1.767, + 16, + 1, + 2.011, + 18.033, + 2.256, + 17.623, + 2.5, + 17.623, + 1, + 2.856, + 17.623, + 3.211, + -4.813, + 3.567, + -6, + 1, + 3.8, + -6.779, + 4.033, + -6.496, + 4.267, + -6.496, + 0, + 5, + -6.496 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleY", + "Segments": [ + 0, + 0.017, + 1, + 0.056, + 0.017, + 0.111, + 0.017, + 0.167, + 0.017, + 1, + 0.456, + 0.017, + 0.744, + 0.229, + 1.033, + 1, + 1, + 1.211, + 1.475, + 1.389, + 2, + 1.567, + 2, + 1, + 1.744, + 2, + 1.922, + 0, + 2.1, + 0, + 1, + 2.4, + 0, + 2.7, + 3, + 3, + 3, + 1, + 3.211, + 3, + 3.422, + -5.586, + 3.633, + -5.586, + 1, + 3.644, + -5.586, + 3.656, + -5.586, + 3.667, + -5.586, + 1, + 3.822, + -5.586, + 3.978, + 1, + 4.133, + 1, + 1, + 4.389, + 1, + 4.644, + 0, + 4.9, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.433, + 0, + 0.7, + -3, + 0.967, + -3, + 1, + 1.256, + -3, + 1.544, + 4.968, + 1.833, + 6, + 1, + 2.156, + 7.151, + 2.478, + 7, + 2.8, + 7, + 1, + 3, + 7, + 3.2, + -2, + 3.4, + -2, + 1, + 3.578, + -2, + 3.756, + 0, + 3.933, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLOpen", + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 1, + 0.589, + 1, + 1.011, + 1, + 1.433, + 1, + 1, + 1.467, + 1, + 1.5, + 0, + 1.533, + 0, + 1, + 1.556, + 0, + 1.578, + 0, + 1.6, + 0, + 1, + 1.678, + 0, + 1.756, + 1, + 1.833, + 1, + 1, + 2.344, + 1, + 2.856, + 1, + 3.367, + 1, + 1, + 3.4, + 1, + 3.433, + 0, + 3.467, + 0, + 1, + 3.489, + 0, + 3.511, + 0, + 3.533, + 0, + 1, + 3.611, + 0, + 3.689, + 1, + 3.767, + 1, + 0, + 5, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLSmile", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeROpen", + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 1, + 0.589, + 1, + 1.011, + 1, + 1.433, + 1, + 1, + 1.467, + 1, + 1.5, + 0, + 1.533, + 0, + 1, + 1.556, + 0, + 1.578, + 0, + 1.6, + 0, + 1, + 1.678, + 0, + 1.756, + 1, + 1.833, + 1, + 1, + 2.344, + 1, + 2.856, + 1, + 3.367, + 1, + 1, + 3.4, + 1, + 3.433, + 0, + 3.467, + 0, + 1, + 3.489, + 0, + 3.511, + 0, + 3.533, + 0, + 1, + 3.611, + 0, + 3.689, + 1, + 3.767, + 1, + 0, + 5, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeRSmile", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeRForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.578, + 0, + 0.989, + 0, + 1.4, + 0, + 1, + 1.544, + 0, + 1.689, + 0.542, + 1.833, + 0.542, + 1, + 2.056, + 0.542, + 2.278, + 0.542, + 2.5, + 0.542, + 1, + 2.789, + 0.542, + 3.078, + 0, + 3.367, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.578, + 0, + 0.989, + 0, + 1.4, + 0, + 1, + 1.544, + 0, + 1.689, + -0.386, + 1.833, + -0.386, + 1, + 2.056, + -0.386, + 2.278, + -0.386, + 2.5, + -0.386, + 1, + 2.789, + -0.386, + 3.078, + 0, + 3.367, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLAngle", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRAngle", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLForm2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRForm2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamTeethOn", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamCheek", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGlassUD", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGrassWhite", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGrassHighlight", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGrassHighlightMove", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.356, + 0, + 0.544, + -1, + 0.733, + -1, + 1, + 1.044, + -1, + 1.356, + 4.155, + 1.667, + 5, + 1, + 1.911, + 5.664, + 2.156, + 5.5, + 2.4, + 5.5, + 1, + 2.656, + 5.5, + 2.911, + -1.168, + 3.167, + -2, + 1, + 3.5, + -3.085, + 3.833, + -3, + 4.167, + -3, + 0, + 5, + -3 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.356, + 0, + 0.544, + 1.915, + 0.733, + 2, + 1, + 0.878, + 2.065, + 1.022, + 2.028, + 1.167, + 2.088, + 1, + 1.344, + 2.162, + 1.522, + 2.904, + 1.7, + 2.904, + 1, + 1.867, + 2.904, + 2.033, + 2, + 2.2, + 2, + 1, + 2.356, + 2, + 2.511, + 2.5, + 2.667, + 2.5, + 1, + 2.978, + 2.5, + 3.289, + -1.006, + 3.6, + -1.006, + 1, + 3.8, + -1.006, + 4, + 0.139, + 4.2, + 0.139, + 1, + 4.378, + 0.139, + 4.556, + 0, + 4.733, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.433, + 0, + 0.7, + 0, + 0.967, + 0, + 1, + 1.222, + 0, + 1.478, + 1, + 1.733, + 1, + 1, + 2.456, + 1, + 3.178, + 1, + 3.9, + 1, + 0, + 5, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWaistAngleZ", + "Segments": [ + 0, + 0.124, + 1, + 0.056, + 0.124, + 0.111, + 0.124, + 0.167, + 0.124, + 1, + 0.478, + 0.124, + 0.789, + 2, + 1.1, + 2, + 1, + 1.3, + 2, + 1.5, + -1, + 1.7, + -1, + 1, + 2.2, + -1, + 2.7, + -1, + 3.2, + -1, + 1, + 3.456, + -1, + 3.711, + 0, + 3.967, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyPosition", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 1.656, + 0, + 3.144, + 0, + 4.633, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBreath", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.411, + 0, + 0.656, + 0, + 0.9, + 0, + 1, + 1.411, + 0, + 1.922, + 0.501, + 2.433, + 0.501, + 1, + 2.511, + 0.501, + 2.589, + 0.501, + 2.667, + 0.501, + 1, + 3.178, + 0.501, + 3.689, + 0, + 4.2, + 0, + 1, + 4.322, + 0, + 4.444, + 0, + 4.567, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamLeftShoulderUp", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.356, + 0, + 0.544, + -6, + 0.733, + -6, + 1, + 0.933, + -6, + 1.133, + 6, + 1.333, + 6, + 1, + 1.522, + 6, + 1.711, + 2, + 1.9, + 2, + 0, + 5, + 2 + ] + }, + { + "Target": "Parameter", + "Id": "ParamRightShoulderUp", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.289, + 0, + 0.411, + 0, + 0.533, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAllX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAllY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAllRotate", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairFront", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairSide", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairBack", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairFrontFuwa", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairSideFuwa", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairBackFuwa", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamJacket", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamChainWaist", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchSwingA1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchSwingA2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchAX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBSwitch", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBOpen", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBOpen2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBRoll", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBLR", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBUD", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL01", + "Segments": [ + 0, + 0.232, + 1, + 0.056, + 0.232, + 0.111, + 0.232, + 0.167, + 0.232, + 0, + 5, + 0.232 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL02", + "Segments": [ + 0, + -0.373, + 1, + 0.056, + -0.373, + 0.111, + -0.373, + 0.167, + -0.373, + 0, + 5, + -0.373 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL03", + "Segments": [ + 0, + -0.305, + 1, + 0.056, + -0.305, + 0.111, + -0.305, + 0.167, + -0.305, + 0, + 5, + -0.305 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL04", + "FadeInTime": 0.2, + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.333, + 0, + 0.5, + 0, + 0.667, + 0, + 1, + 1, + 0, + 1.333, + 1, + 1.667, + 1, + 1, + 1.889, + 1, + 2.111, + 1, + 2.333, + 1, + 1, + 2.689, + 1, + 3.044, + 0, + 3.4, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.333, + 0, + 0.5, + 0, + 0.667, + 0, + 1, + 1.011, + 0, + 1.356, + -3, + 1.7, + -3, + 1, + 1.922, + -3, + 2.144, + -3, + 2.367, + -3, + 1, + 2.722, + -3, + 3.078, + 0, + 3.433, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.333, + 0, + 0.5, + 0, + 0.667, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR04", + "FadeInTime": 0.2, + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBR01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBR02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBR03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand01Roll", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand05Roll1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand05Roll2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand05Roll3", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCR01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCR02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCR03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCLHandRoll1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDL01", + "Segments": [ + 0, + -0.938, + 1, + 0.056, + -0.938, + 0.111, + -0.938, + 0.167, + -0.938, + 1, + 0.322, + -0.938, + 0.478, + -0.938, + 0.633, + -0.938, + 1, + 0.956, + -0.938, + 1.278, + -4, + 1.6, + -4, + 1, + 1.944, + -4, + 2.289, + 4, + 2.633, + 4, + 1, + 3.033, + 4, + 3.433, + 0, + 3.833, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDL02", + "Segments": [ + 0, + -1.719, + 1, + 0.056, + -1.719, + 0.111, + -1.719, + 0.167, + -1.719, + 1, + 0.322, + -1.719, + 0.478, + -1.719, + 0.633, + -1.719, + 1, + 0.967, + -1.719, + 1.3, + 4.142, + 1.633, + 7, + 1, + 1.978, + 9.953, + 2.322, + 10, + 2.667, + 10, + 1, + 3.111, + 10, + 3.556, + 6, + 4, + 6, + 0, + 5, + 6 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDL03", + "Segments": [ + 0, + -4.688, + 1, + 0.056, + -4.688, + 0.111, + -4.688, + 0.167, + -4.688, + 1, + 0.322, + -4.688, + 0.478, + -4.688, + 0.633, + -4.688, + 1, + 0.978, + -4.688, + 1.322, + 14.713, + 1.667, + 18, + 1, + 2.022, + 21.393, + 2.378, + 21, + 2.733, + 21, + 1, + 2.967, + 21, + 3.2, + 13, + 3.433, + 13, + 0, + 5, + 13 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDLHand03Roll", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 1.044, + 0, + 1.922, + -30, + 2.8, + -30, + 1, + 3.2, + -30, + 3.6, + -5.084, + 4, + -2, + 1, + 4.333, + 0.57, + 4.667, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER04", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand04Roll1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand04Roll2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand06Roll1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand06Roll2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartWatchA", + "Segments": [ + 0, + 1, + 0, + 5, + 1 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartWatchB", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmAL", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmAR", + "Segments": [ + 0, + 1, + 0, + 5, + 1 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmBR", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmCL", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmDL", + "Segments": [ + 0, + 1, + 0, + 5, + 1 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmER", + "Segments": [ + 0, + 0, + 0, + 5, + 0 + ] + } + ] +} diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/motions/mtn_06.motion3.json b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/motions/mtn_06.motion3.json new file mode 100644 index 00000000..20fd6d0f --- /dev/null +++ b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/motions/mtn_06.motion3.json @@ -0,0 +1,2082 @@ +{ + "Version": 3, + "Meta": { + "Duration": 3.33, + "Fps": 30.0, + "Loop": true, + "AreBeziersRestricted": true, + "CurveCount": 96, + "TotalSegmentCount": 246, + "TotalPointCount": 639, + "UserDataCount": 0, + "TotalUserDataSize": 0 + }, + "Curves": [ + { + "Target": "Parameter", + "Id": "ParamAngleX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.256, + 0, + 0.344, + 0, + 0.433, + 0, + 1, + 0.622, + 0, + 0.811, + 10, + 1, + 10, + 0, + 3.333, + 10 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.178, + 0, + 0.189, + 0, + 0.2, + 0, + 1, + 0.267, + 0, + 0.333, + 1.753, + 0.4, + 3.095, + 1, + 0.444, + 3.989, + 0.489, + 3.997, + 0.533, + 3.997, + 1, + 0.744, + 3.997, + 0.956, + -27.096, + 1.167, + -27.096, + 1, + 1.256, + -27.096, + 1.344, + -25.324, + 1.433, + -25.065, + 1, + 1.811, + -23.961, + 2.189, + -23.671, + 2.567, + -23.671, + 0, + 3.333, + -23.671 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.211, + 0, + 0.256, + 0, + 0.3, + 0, + 1, + 0.378, + 0, + 0.456, + 0.319, + 0.533, + -1.334, + 1, + 0.7, + -4.877, + 0.867, + -11, + 1.033, + -11, + 1, + 1.289, + -11, + 1.544, + -10, + 1.8, + -10, + 0, + 3.333, + -10 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLOpen", + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 1, + 0.344, + 1, + 0.522, + 1, + 0.7, + 1, + 1, + 0.744, + 1, + 0.789, + 0, + 0.833, + 0, + 1, + 0.989, + 0, + 1.144, + 0, + 1.3, + 0, + 1, + 1.378, + 0, + 1.456, + 1, + 1.533, + 1, + 0, + 3.333, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLSmile", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeROpen", + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 1, + 0.344, + 1, + 0.522, + 1, + 0.7, + 1, + 1, + 0.744, + 1, + 0.789, + 0, + 0.833, + 0, + 1, + 0.989, + 0, + 1.144, + 0, + 1.3, + 0, + 1, + 1.378, + 0, + 1.456, + 1, + 1.533, + 1, + 0, + 3.333, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeRSmile", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeRForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.389, + 0, + 0.611, + 0.1, + 0.833, + 0.1, + 1, + 1.067, + 0.1, + 1.3, + -0.4, + 1.533, + -0.4, + 0, + 3.333, + -0.4 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.389, + 0, + 0.611, + -0.2, + 0.833, + -0.2, + 1, + 1.067, + -0.2, + 1.3, + 0.7, + 1.533, + 0.7, + 0, + 3.333, + 0.7 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLAngle", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRAngle", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLForm2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRForm2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamTeethOn", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamCheek", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGlassUD", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGrassWhite", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGrassHighlight", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGrassHighlightMove", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.244, + 0, + 0.322, + -0.5, + 0.4, + -0.5, + 1, + 0.622, + -0.5, + 0.844, + 6, + 1.067, + 6, + 1, + 1.3, + 6, + 1.533, + 5, + 1.767, + 5, + 0, + 3.333, + 5 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.244, + 0, + 0.322, + 0.625, + 0.4, + 0.625, + 1, + 0.633, + 0.625, + 0.867, + -4.741, + 1.1, + -4.741, + 1, + 1.333, + -4.741, + 1.567, + -4, + 1.8, + -4, + 0, + 3.333, + -4 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.256, + 0, + 0.344, + 0, + 0.433, + 0, + 1, + 0.611, + 0, + 0.789, + -3, + 0.967, + -3, + 0, + 3.333, + -3 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWaistAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.256, + 0, + 0.344, + 0, + 0.433, + 0, + 1, + 0.611, + 0, + 0.789, + -5, + 0.967, + -5, + 0, + 3.333, + -5 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyPosition", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.244, + 0, + 0.322, + -3, + 0.4, + -3, + 1, + 0.544, + -3, + 0.689, + 0.972, + 0.833, + 3.4, + 1, + 1.144, + 8.63, + 1.456, + 10, + 1.767, + 10, + 0, + 3.333, + 10 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBreath", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.178, + 0, + 0.189, + 0, + 0.2, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamLeftShoulderUp", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.244, + 0, + 0.322, + 1.58, + 0.4, + 4, + 1, + 0.589, + 9.878, + 0.778, + 16.122, + 0.967, + 21, + 1, + 1.222, + 27.599, + 1.478, + 30, + 1.733, + 30, + 0, + 3.333, + 30 + ] + }, + { + "Target": "Parameter", + "Id": "ParamRightShoulderUp", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.244, + 0, + 0.322, + 2, + 0.4, + 2, + 1, + 0.589, + 2, + 0.778, + -19, + 0.967, + -19, + 1, + 1.222, + -19, + 1.478, + -13, + 1.733, + -13, + 0, + 3.333, + -13 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAllX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAllY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAllRotate", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairFront", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairSide", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairBack", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairFrontFuwa", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairSideFuwa", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairBackFuwa", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamJacket", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamChainWaist", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchSwingA1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchSwingA2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchAX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBSwitch", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBOpen", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBOpen2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBRoll", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBLR", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBUD", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL01", + "Segments": [ + 0, + 0.7, + 1, + 0.056, + 0.7, + 0.111, + 0.7, + 0.167, + 0.7, + 1, + 0.422, + 0.7, + 0.678, + 0.191, + 0.933, + -0.5, + 1, + 1.211, + -1.251, + 1.489, + -1.5, + 1.767, + -1.5, + 0, + 3.333, + -1.5 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL02", + "Segments": [ + 0, + -8, + 1, + 0.056, + -8, + 0.111, + -8, + 0.167, + -8, + 1, + 0.433, + -8, + 0.7, + -8, + 0.967, + -8, + 1, + 1.233, + -8, + 1.5, + -8, + 1.767, + -8, + 0, + 3.333, + -8 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL03", + "Segments": [ + 0, + -3, + 1, + 0.056, + -3, + 0.111, + -3, + 0.167, + -3, + 1, + 0.433, + -3, + 0.7, + -3, + 0.967, + -3, + 1, + 1.233, + -3, + 1.5, + 0, + 1.767, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL04", + "FadeInTime": 0.2, + "Segments": [ + 0, + -1, + 1, + 0.056, + -1, + 0.111, + -1, + 0.167, + -1, + 0, + 3.333, + -1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR01", + "Segments": [ + 0, + 0.7, + 1, + 0.056, + 0.7, + 0.111, + 0.7, + 0.167, + 0.7, + 1, + 0.422, + 0.7, + 0.678, + 0.191, + 0.933, + -0.5, + 1, + 1.211, + -1.251, + 1.489, + -1.5, + 1.767, + -1.5, + 0, + 3.333, + -1.5 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR02", + "Segments": [ + 0, + -8, + 1, + 0.056, + -8, + 0.111, + -8, + 0.167, + -8, + 1, + 0.433, + -8, + 0.7, + -8, + 0.967, + -8, + 1, + 1.233, + -8, + 1.5, + -7, + 1.767, + -7, + 0, + 3.333, + -7 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR03", + "Segments": [ + 0, + -3, + 1, + 0.056, + -3, + 0.111, + -3, + 0.167, + -3, + 1, + 0.433, + -3, + 0.7, + -3, + 0.967, + -3, + 1, + 1.233, + -3, + 1.5, + -10, + 1.767, + -10, + 0, + 3.333, + -10 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR04", + "FadeInTime": 0.2, + "Segments": [ + 0, + -1, + 1, + 0.056, + -1, + 0.111, + -1, + 0.167, + -1, + 0, + 3.333, + -1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBR01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBR02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBR03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand01Roll", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand05Roll1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand05Roll2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand05Roll3", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCR01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCR02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCR03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCLHandRoll1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDL01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDL02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDL03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDLHand03Roll", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER04", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand04Roll1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand04Roll2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand06Roll1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand06Roll2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 3.333, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartWatchA", + "Segments": [ + 0, + 1, + 0, + 3.33, + 1 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartWatchB", + "Segments": [ + 0, + 0, + 0, + 3.33, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmAL", + "Segments": [ + 0, + 1, + 0, + 3.33, + 1 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmAR", + "Segments": [ + 0, + 1, + 0, + 3.33, + 1 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmBR", + "Segments": [ + 0, + 0, + 0, + 3.33, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmCL", + "Segments": [ + 0, + 0, + 0, + 3.33, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmDL", + "Segments": [ + 0, + 0, + 0, + 3.33, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmER", + "Segments": [ + 0, + 0, + 0, + 3.33, + 0 + ] + } + ] +} diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/motions/mtn_07.motion3.json b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/motions/mtn_07.motion3.json new file mode 100644 index 00000000..0809923c --- /dev/null +++ b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/motions/mtn_07.motion3.json @@ -0,0 +1,1907 @@ +{ + "Version": 3, + "Meta": { + "Duration": 4, + "Fps": 30.0, + "Loop": true, + "AreBeziersRestricted": true, + "CurveCount": 96, + "TotalSegmentCount": 221, + "TotalPointCount": 564, + "UserDataCount": 0, + "TotalUserDataSize": 0 + }, + "Curves": [ + { + "Target": "Parameter", + "Id": "ParamAngleX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.333, + 0, + 0.5, + 0, + 0.667, + 0, + 1, + 0.767, + 0, + 0.867, + -13, + 0.967, + -13, + 1, + 1.067, + -13, + 1.167, + 11, + 1.267, + 11, + 1, + 1.4, + 11, + 1.533, + -8, + 1.667, + -8, + 1, + 1.833, + -8, + 2, + 0, + 2.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.2, + 0, + 0.233, + 0, + 0.267, + 0, + 1, + 0.333, + 0, + 0.4, + 9, + 0.467, + 9, + 1, + 0.7, + 9, + 0.933, + -6, + 1.167, + -6, + 1, + 1.6, + -6, + 2.033, + -1, + 2.467, + -1, + 1, + 2.622, + -1, + 2.778, + -4, + 2.933, + -4, + 1, + 3.078, + -4, + 3.222, + 0, + 3.367, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.3, + 0, + 0.433, + 4, + 0.567, + 4, + 1, + 0.978, + 4, + 1.389, + 0, + 1.8, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLOpen", + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 1, + 0.289, + 1, + 0.411, + 1, + 0.533, + 1, + 1, + 0.622, + 1, + 0.711, + 0, + 0.8, + 0, + 1, + 1.522, + 0, + 2.244, + 0, + 2.967, + 0, + 1, + 3.078, + 0, + 3.189, + 1, + 3.3, + 1, + 0, + 4, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLSmile", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeLForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeROpen", + "Segments": [ + 0, + 1, + 1, + 0.056, + 1, + 0.111, + 1, + 0.167, + 1, + 1, + 0.289, + 1, + 0.411, + 1, + 0.533, + 1, + 1, + 0.622, + 1, + 0.711, + 0, + 0.8, + 0, + 1, + 1.522, + 0, + 2.244, + 0, + 2.967, + 0, + 1, + 3.078, + 0, + 3.189, + 1, + 3.3, + 1, + 0, + 4, + 1 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeRSmile", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeRForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.289, + 0, + 0.411, + -0.4, + 0.533, + -0.4, + 1, + 1.344, + -0.4, + 2.156, + -0.4, + 2.967, + -0.4, + 1, + 3.078, + -0.4, + 3.189, + 0, + 3.3, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamEyeBallForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLAngle", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRAngle", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowLForm2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRForm", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBrowRForm2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamTeethOn", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamCheek", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGlassUD", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGrassWhite", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGrassHighlight", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamGrassHighlightMove", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.256, + 0, + 0.344, + 2.02, + 0.433, + 2.02, + 1, + 0.856, + 2.02, + 1.278, + 0, + 1.7, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWaistAngleZ", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBodyPosition", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamBreath", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.256, + 0, + 0.344, + 0.5, + 0.433, + 0.5, + 1, + 0.633, + 0.5, + 0.833, + 0.279, + 1.033, + 0.2, + 1, + 1.467, + 0.029, + 1.9, + 0, + 2.333, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamLeftShoulderUp", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.278, + 0, + 0.389, + 10, + 0.5, + 10, + 1, + 0.633, + 10, + 0.767, + -5, + 0.9, + -5, + 0, + 4, + -5 + ] + }, + { + "Target": "Parameter", + "Id": "ParamRightShoulderUp", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 1, + 0.278, + 0, + 0.389, + 10, + 0.5, + 10, + 1, + 0.633, + 10, + 0.767, + -5, + 0.9, + -5, + 0, + 4, + -5 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAllX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAllY", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamAllRotate", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairFront", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairSide", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairBack", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairFrontFuwa", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairSideFuwa", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamHairBackFuwa", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamJacket", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamChainWaist", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchSwingA1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchSwingA2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchAX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBSwitch", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBOpen", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBOpen2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBX", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBRoll", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBLR", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamWatchBUD", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAL04", + "FadeInTime": 0.2, + "Segments": [ + 0, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmAR04", + "FadeInTime": 0.2, + "Segments": [ + 0, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBR01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBR02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBR03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand01Roll", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand05Roll1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand05Roll2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmBRHand05Roll3", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCR01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCR02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCR03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmCLHandRoll1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDL01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDL02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDL03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmDLHand03Roll", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER01", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER02", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER03", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmER04", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand04Roll1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand04Roll2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand06Roll1", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "ParamArmERHand06Roll2", + "Segments": [ + 0, + 0, + 1, + 0.056, + 0, + 0.111, + 0, + 0.167, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartWatchA", + "Segments": [ + 0, + 1, + 0, + 4, + 1 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartWatchB", + "Segments": [ + 0, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmAL", + "Segments": [ + 0, + 1, + 0, + 4, + 1 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmAR", + "Segments": [ + 0, + 1, + 0, + 4, + 1 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmBR", + "Segments": [ + 0, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmCL", + "Segments": [ + 0, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmDL", + "Segments": [ + 0, + 0, + 0, + 4, + 0 + ] + }, + { + "Target": "PartOpacity", + "Id": "PartArmER", + "Segments": [ + 0, + 0, + 0, + 4, + 0 + ] + } + ] +} diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/natori.pose3.json b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/natori.pose3.json new file mode 100644 index 00000000..c3da66e5 --- /dev/null +++ b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/natori.pose3.json @@ -0,0 +1,44 @@ +{ + "Type": "Live2D Pose", + "FadeInTime": 0.2, + "Groups": [ + [ + { + "Id": "PartArmAL", + "Link": [] + }, + { + "Id": "PartArmCL", + "Link": [] + }, + { + "Id": "PartArmDL", + "Link": [] + } + ], + [ + { + "Id": "PartArmAR", + "Link": [] + }, + { + "Id": "PartArmBR", + "Link": [] + }, + { + "Id": "PartArmER", + "Link": [] + } + ], + [ + { + "Id": "PartWatchA", + "Link": [] + }, + { + "Id": "PartWatchB", + "Link": [] + } + ] + ] +} \ No newline at end of file diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/natori_pro_t06.4096/texture_00.png b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/natori_pro_t06.4096/texture_00.png new file mode 100644 index 00000000..c677c881 Binary files /dev/null and b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/natori_pro_t06.4096/texture_00.png differ diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/natori_pro_t06.cdi3.json b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/natori_pro_t06.cdi3.json new file mode 100644 index 00000000..ada83b4c --- /dev/null +++ b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/natori_pro_t06.cdi3.json @@ -0,0 +1,711 @@ +{ + "Version": 3, + "Parameters": [ + { + "Id": "ParamAngleX", + "GroupId": "", + "Name": "角度 X" + }, + { + "Id": "ParamAngleY", + "GroupId": "", + "Name": "角度 Y" + }, + { + "Id": "ParamAngleZ", + "GroupId": "", + "Name": "角度 Z" + }, + { + "Id": "ParamEyeLOpen", + "GroupId": "ParamGroupExpression", + "Name": "左眼 开闭" + }, + { + "Id": "ParamEyeLSmile", + "GroupId": "ParamGroupExpression", + "Name": "左眼 微笑" + }, + { + "Id": "ParamEyeLForm", + "GroupId": "ParamGroupExpression", + "Name": "左眼 变形" + }, + { + "Id": "ParamEyeROpen", + "GroupId": "ParamGroupExpression", + "Name": "右眼 开闭" + }, + { + "Id": "ParamEyeRSmile", + "GroupId": "ParamGroupExpression", + "Name": "右眼 微笑" + }, + { + "Id": "ParamEyeRForm", + "GroupId": "ParamGroupExpression", + "Name": "右眼 变形" + }, + { + "Id": "ParamEyeBallX", + "GroupId": "ParamGroupExpression", + "Name": "眼珠 X" + }, + { + "Id": "ParamEyeBallY", + "GroupId": "ParamGroupExpression", + "Name": "眼珠 Y" + }, + { + "Id": "ParamEyeBallForm", + "GroupId": "ParamGroupExpression", + "Name": "眼珠 缩放" + }, + { + "Id": "ParamBrowLY", + "GroupId": "ParamGroupExpression", + "Name": "左眉 上下" + }, + { + "Id": "ParamBrowRY", + "GroupId": "ParamGroupExpression", + "Name": "右眉 上下" + }, + { + "Id": "ParamBrowLX", + "GroupId": "ParamGroupExpression", + "Name": "左眉 左右" + }, + { + "Id": "ParamBrowRX", + "GroupId": "ParamGroupExpression", + "Name": "右眉 左右" + }, + { + "Id": "ParamBrowLAngle", + "GroupId": "ParamGroupExpression", + "Name": "左眉 角度" + }, + { + "Id": "ParamBrowRAngle", + "GroupId": "ParamGroupExpression", + "Name": "右眉 角度" + }, + { + "Id": "ParamBrowLForm", + "GroupId": "ParamGroupExpression", + "Name": "左眉 变形" + }, + { + "Id": "ParamBrowLForm2", + "GroupId": "ParamGroupExpression", + "Name": "左眉 变形2" + }, + { + "Id": "ParamBrowRForm", + "GroupId": "ParamGroupExpression", + "Name": "右眉 变形" + }, + { + "Id": "ParamBrowRForm2", + "GroupId": "ParamGroupExpression", + "Name": "右眉 变形2" + }, + { + "Id": "ParamMouthForm", + "GroupId": "ParamGroupExpression", + "Name": "嘴 变形" + }, + { + "Id": "ParamMouthOpenY", + "GroupId": "ParamGroupExpression", + "Name": "嘴 开闭" + }, + { + "Id": "ParamMouthForm2", + "GroupId": "ParamGroupExpression", + "Name": "嘴 变形2" + }, + { + "Id": "ParamTeethOn", + "GroupId": "ParamGroupExpression", + "Name": "牙齿的显示" + }, + { + "Id": "ParamCheek", + "GroupId": "ParamGroupExpression", + "Name": "害羞" + }, + { + "Id": "ParamGlassUD", + "GroupId": "ParamGroupExpression", + "Name": "眼镜 上下" + }, + { + "Id": "ParamGrassWhite", + "GroupId": "ParamGroupExpression", + "Name": "镜片 白" + }, + { + "Id": "ParamGrassHighlight", + "GroupId": "ParamGroupExpression", + "Name": "镜片 反光显示" + }, + { + "Id": "ParamGrassHighlightMove", + "GroupId": "ParamGroupExpression", + "Name": "镜片 反光移动" + }, + { + "Id": "ParamBodyAngleX", + "GroupId": "ParamGroupBody", + "Name": "身体的旋转 X" + }, + { + "Id": "ParamBodyAngleY", + "GroupId": "ParamGroupBody", + "Name": "身体的旋转 Y" + }, + { + "Id": "ParamBodyAngleZ", + "GroupId": "ParamGroupBody", + "Name": "身体的旋转 Z" + }, + { + "Id": "ParamWaistAngleZ", + "GroupId": "ParamGroupBody", + "Name": "腰的旋转 Z" + }, + { + "Id": "ParamBodyPosition", + "GroupId": "ParamGroupBody", + "Name": "身体的前后" + }, + { + "Id": "ParamBreath", + "GroupId": "ParamGroupBody", + "Name": "呼吸" + }, + { + "Id": "ParamLeftShoulderUp", + "GroupId": "ParamGroupBody", + "Name": "左肩的上下" + }, + { + "Id": "ParamRightShoulderUp", + "GroupId": "ParamGroupBody", + "Name": "右肩的上下" + }, + { + "Id": "ParamAllX", + "GroupId": "ParamGroup", + "Name": "整体的移动 X" + }, + { + "Id": "ParamAllY", + "GroupId": "ParamGroup", + "Name": "整体的移动 Y" + }, + { + "Id": "ParamAllRotate", + "GroupId": "ParamGroup", + "Name": "整体的旋转" + }, + { + "Id": "ParamHairFront", + "GroupId": "ParamGroupSway", + "Name": "头发摇动 前" + }, + { + "Id": "ParamHairSide", + "GroupId": "ParamGroupSway", + "Name": "头发摇动 侧" + }, + { + "Id": "ParamHairBack", + "GroupId": "ParamGroupSway", + "Name": "头发摇动 后" + }, + { + "Id": "ParamHairFrontFuwa", + "GroupId": "ParamGroupSway", + "Name": "前发 蓬松" + }, + { + "Id": "ParamHairSideFuwa", + "GroupId": "ParamGroupSway", + "Name": "侧发 蓬松" + }, + { + "Id": "ParamHairBackFuwa", + "GroupId": "ParamGroupSway", + "Name": "后发 蓬松" + }, + { + "Id": "ParamJacket", + "GroupId": "ParamGroupSway", + "Name": "燕尾的摇动" + }, + { + "Id": "ParamChainWaist", + "GroupId": "ParamGroupSway", + "Name": "表链A的摇动" + }, + { + "Id": "ParamWatchSwingA1", + "GroupId": "ParamGroupSway", + "Name": "怀表A 摇动1" + }, + { + "Id": "ParamWatchSwingA2", + "GroupId": "ParamGroupSway", + "Name": "怀表A 摇动2" + }, + { + "Id": "ParamWatchBChain", + "GroupId": "ParamGroupSway", + "Name": "怀表B 表链的摇动" + }, + { + "Id": "ParamWatchAX", + "GroupId": "ParamGroup8", + "Name": "怀表A 横向旋转" + }, + { + "Id": "ParamWatchBSwitch", + "GroupId": "ParamGroup9", + "Name": "怀表B 开关" + }, + { + "Id": "ParamWatchBOpen", + "GroupId": "ParamGroup9", + "Name": "怀表B 表盖的开闭" + }, + { + "Id": "ParamWatchBOpen2", + "GroupId": "ParamGroup9", + "Name": "怀表B 表盘的开闭" + }, + { + "Id": "ParamWatchBX", + "GroupId": "ParamGroup9", + "Name": "怀表B 横向旋转" + }, + { + "Id": "ParamWatchBRoll", + "GroupId": "ParamGroup9", + "Name": "怀表B 旋转" + }, + { + "Id": "ParamWatchBLR", + "GroupId": "ParamGroup9", + "Name": "怀表B 左右" + }, + { + "Id": "ParamWatchBUD", + "GroupId": "ParamGroup9", + "Name": "怀表B 上下" + }, + { + "Id": "ParamArmAL01", + "GroupId": "ParamGroup3", + "Name": "左手臂A 肩" + }, + { + "Id": "ParamArmAL02", + "GroupId": "ParamGroup3", + "Name": "左肩A 手肘旋转" + }, + { + "Id": "ParamArmAL03", + "GroupId": "ParamGroup3", + "Name": "左手臂A 手腕" + }, + { + "Id": "ParamArmAL04", + "GroupId": "ParamGroup3", + "Name": "左手臂A 前臂的前后" + }, + { + "Id": "ParamArmAR01", + "GroupId": "ParamGroup2", + "Name": "右手臂A 肩的旋转" + }, + { + "Id": "ParamArmAR02", + "GroupId": "ParamGroup2", + "Name": "右手臂A 手肘的旋转" + }, + { + "Id": "ParamArmAR03", + "GroupId": "ParamGroup2", + "Name": "右手臂A 手腕的旋转" + }, + { + "Id": "ParamArmAR04", + "GroupId": "ParamGroup2", + "Name": "右手臂A 前臂的前后" + }, + { + "Id": "ParamArmBR01", + "GroupId": "ParamGroup4", + "Name": "右手臂B 肩的旋转" + }, + { + "Id": "ParamArmBR02", + "GroupId": "ParamGroup4", + "Name": "右手臂B 手肘的旋转" + }, + { + "Id": "ParamArmBR03", + "GroupId": "ParamGroup4", + "Name": "右手臂B 手腕的旋转" + }, + { + "Id": "ParamArmBRHand01", + "GroupId": "ParamGroup4", + "Name": "右手01 显示" + }, + { + "Id": "ParamArmBRHand01Roll", + "GroupId": "ParamGroup4", + "Name": "右手01 手指弯曲" + }, + { + "Id": "ParamArmBRHand05", + "GroupId": "ParamGroup4", + "Name": "右手05 显示" + }, + { + "Id": "ParamArmBRHand05Roll1", + "GroupId": "ParamGroup4", + "Name": "右手05 手指弯曲1" + }, + { + "Id": "ParamArmBRHand05Roll2", + "GroupId": "ParamGroup4", + "Name": "右手05 手指弯曲2" + }, + { + "Id": "ParamArmBRHand05Roll3", + "GroupId": "ParamGroup4", + "Name": "右手05 手指弯曲3" + }, + { + "Id": "ParamArmCR01", + "GroupId": "ParamGroup5", + "Name": "左手臂C 肩的旋转" + }, + { + "Id": "ParamArmCR02", + "GroupId": "ParamGroup5", + "Name": "左手臂C 手肘的旋转" + }, + { + "Id": "ParamArmCR03", + "GroupId": "ParamGroup5", + "Name": "左手臂C 手腕的旋转" + }, + { + "Id": "ParamArmCLHandRoll1", + "GroupId": "ParamGroup5", + "Name": "左手C 手指弯曲1" + }, + { + "Id": "ParamArmDL01", + "GroupId": "ParamGroup6", + "Name": "左手臂D 肩的旋转" + }, + { + "Id": "ParamArmDL02", + "GroupId": "ParamGroup6", + "Name": "左手臂D 手肘的旋转" + }, + { + "Id": "ParamArmDL03", + "GroupId": "ParamGroup6", + "Name": "左手臂D 手腕的旋转" + }, + { + "Id": "ParamArmDLHand03Roll", + "GroupId": "ParamGroup6", + "Name": "左手03 手指弯曲" + }, + { + "Id": "ParamArmER01", + "GroupId": "ParamGroup7", + "Name": "右手臂E 肩的旋转" + }, + { + "Id": "ParamArmER02", + "GroupId": "ParamGroup7", + "Name": "右手臂E 手肘的旋转" + }, + { + "Id": "ParamArmER03", + "GroupId": "ParamGroup7", + "Name": "右手臂E 手腕的旋转" + }, + { + "Id": "ParamArmER04", + "GroupId": "ParamGroup7", + "Name": "右手臂E 上臂的长度" + }, + { + "Id": "ParamArmERHand04", + "GroupId": "ParamGroup7", + "Name": "右手04 显示" + }, + { + "Id": "ParamArmERHand04Roll1", + "GroupId": "ParamGroup7", + "Name": "右手04 手指弯曲1" + }, + { + "Id": "ParamArmERHand04Roll2", + "GroupId": "ParamGroup7", + "Name": "右手04 手指弯曲2" + }, + { + "Id": "ParamArmERHand06", + "GroupId": "ParamGroup7", + "Name": "右手06 显示" + }, + { + "Id": "ParamArmERHand06Roll1", + "GroupId": "ParamGroup7", + "Name": "右手06 手指弯曲1" + }, + { + "Id": "ParamArmERHand06Roll2", + "GroupId": "ParamGroup7", + "Name": "右手06 手指弯曲2" + } + ], + "ParameterGroups": [ + { + "Id": "ParamGroupExpression", + "GroupId": "", + "Name": "表情" + }, + { + "Id": "ParamGroupBody", + "GroupId": "", + "Name": "身体" + }, + { + "Id": "ParamGroup", + "GroupId": "", + "Name": "整体移动" + }, + { + "Id": "ParamGroupSway", + "GroupId": "", + "Name": "摇动" + }, + { + "Id": "ParamGroup8", + "GroupId": "", + "Name": "怀表A" + }, + { + "Id": "ParamGroup9", + "GroupId": "", + "Name": "怀表B" + }, + { + "Id": "ParamGroup3", + "GroupId": "", + "Name": "左手臂A" + }, + { + "Id": "ParamGroup2", + "GroupId": "", + "Name": "右手臂A" + }, + { + "Id": "ParamGroup4", + "GroupId": "", + "Name": "右手臂B" + }, + { + "Id": "ParamGroup5", + "GroupId": "", + "Name": "左手臂C" + }, + { + "Id": "ParamGroup6", + "GroupId": "", + "Name": "左手臂D" + }, + { + "Id": "ParamGroup7", + "GroupId": "", + "Name": "右手臂E" + } + ], + "Parts": [ + { + "Id": "PartCredit", + "Name": "名牌" + }, + { + "Id": "PartCore", + "Name": "CORE" + }, + { + "Id": "PartGlass", + "Name": "眼镜" + }, + { + "Id": "PartWatchA", + "Name": "怀表A" + }, + { + "Id": "PartWatchB", + "Name": "怀表B" + }, + { + "Id": "PartHairFront", + "Name": "前发" + }, + { + "Id": "PartHead", + "Name": "头" + }, + { + "Id": "PartUpperBody", + "Name": "上半身" + }, + { + "Id": "PartHairBack", + "Name": "后发" + }, + { + "Id": "PartLowerBody", + "Name": "下半身" + }, + { + "Id": "PartArmAL", + "Name": "左手臂A" + }, + { + "Id": "PartArmAR", + "Name": "右手臂A" + }, + { + "Id": "PartArmBR", + "Name": "右手臂B" + }, + { + "Id": "PartArmCL", + "Name": "左手臂C" + }, + { + "Id": "PartArmDL", + "Name": "左手臂D" + }, + { + "Id": "PartArmER", + "Name": "右手臂E" + }, + { + "Id": "PartEyeBlow", + "Name": "眉毛" + }, + { + "Id": "PartEyeR", + "Name": "右眼" + }, + { + "Id": "PartEyeL", + "Name": "左眼" + }, + { + "Id": "PartHairLine", + "Name": "发际线" + }, + { + "Id": "PartHairShadow", + "Name": "头发阴影" + }, + { + "Id": "PartNose", + "Name": "鼻子" + }, + { + "Id": "PartMouth", + "Name": "嘴" + }, + { + "Id": "PartJacket", + "Name": "燕尾服" + }, + { + "Id": "PartArmALFore", + "Name": "左手臂A 前臂" + }, + { + "Id": "PartArmARFore", + "Name": "右手臂A 前臂" + }, + { + "Id": "PartHand11", + "Name": "手套_1" + }, + { + "Id": "PartHand51", + "Name": "手套_5" + }, + { + "Id": "PartHand21", + "Name": "手套_2" + }, + { + "Id": "PartHand31", + "Name": "手套_3" + }, + { + "Id": "PartHand41", + "Name": "手套_4" + }, + { + "Id": "PartHand61", + "Name": "手套_6" + } + ], + "CombinedParameters": [ + [ + "ParamAngleX", + "ParamAngleY" + ], + [ + "ParamEyeBallX", + "ParamEyeBallY" + ], + [ + "ParamMouthForm", + "ParamMouthOpenY" + ], + [ + "ParamBodyAngleX", + "ParamBodyAngleY" + ], + [ + "ParamLeftShoulderUp", + "ParamRightShoulderUp" + ], + [ + "ParamAllX", + "ParamAllY" + ], + [ + "ParamWatchSwingA1", + "ParamWatchSwingA2" + ], + [ + "ParamWatchBLR", + "ParamWatchBUD" + ] + ] +} \ No newline at end of file diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/natori_pro_t06.moc3 b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/natori_pro_t06.moc3 new file mode 100644 index 00000000..9f7303b4 Binary files /dev/null and b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/natori_pro_t06.moc3 differ diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/natori_pro_t06.model3.json b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/natori_pro_t06.model3.json new file mode 100644 index 00000000..9da5c25a --- /dev/null +++ b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/natori_pro_t06.model3.json @@ -0,0 +1,123 @@ +{ + "Version": 3, + "FileReferences": { + "Moc": "natori_pro_t06.moc3", + "Textures": [ + "natori_pro_t06.4096/texture_00.png" + ], + "Physics": "natori_pro_t06.physics3.json", + "Pose": "natori.pose3.json", + "DisplayInfo": "natori_pro_t06.cdi3.json", + "Expressions": [ + { + "Name": "Angry", + "File": "exp/Angry.exp3.json" + }, + { + "Name": "Blushing", + "File": "exp/Blushing.exp3.json" + }, + { + "Name": "Normal", + "File": "exp/Normal.exp3.json" + }, + { + "Name": "Sad", + "File": "exp/Sad.exp3.json" + }, + { + "Name": "Smile", + "File": "exp/Smile.exp3.json" + }, + { + "Name": "Surprised", + "File": "exp/Surprised.exp3.json" + }, + { + "Name": "exp_01", + "File": "exp/exp_01.exp3.json" + }, + { + "Name": "exp_02", + "File": "exp/exp_02.exp3.json" + }, + { + "Name": "exp_03", + "File": "exp/exp_03.exp3.json" + }, + { + "Name": "exp_04", + "File": "exp/exp_04.exp3.json" + }, + { + "Name": "exp_05", + "File": "exp/exp_05.exp3.json" + } + ], + "Motions": { + "Idle": [ + { + "File": "motions/mtn_00.motion3.json" + }, + { + "File": "motions/mtn_01.motion3.json" + }, + { + "File": "motions/mtn_02.motion3.json" + } + ], + "Tap": [ + { + "File": "motions/mtn_03.motion3.json" + } + ], + "FlickUp@Head": [ + { + "File": "motions/mtn_04.motion3.json" + } + ], + "Flick@Body": [ + { + "File": "motions/mtn_05.motion3.json" + } + ], + "FlickDown@Body": [ + { + "File": "motions/mtn_06.motion3.json" + } + ], + "Tap@Head": [ + { + "File": "motions/mtn_07.motion3.json" + } + ] + } + }, + "Groups": [ + { + "Target": "Parameter", + "Name": "LipSync", + "Ids": [ + "ParamMouthOpenY" + ] + }, + { + "Target": "Parameter", + "Name": "EyeBlink", + "Ids": [ + "ParamEyeLOpen", + "ParamEyeROpen" + ] + } + ], + "HitAreas": [ + { + "Id": "HitAreaHead", + "Name": "" + }, + { + "Id": "HitAreaBody", + "Name": "" + } + ] +} diff --git a/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/natori_pro_t06.physics3.json b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/natori_pro_t06.physics3.json new file mode 100644 index 00000000..857c6659 --- /dev/null +++ b/main/xiaozhi-server/test/resources/natori_pro_zh/runtime/natori_pro_t06.physics3.json @@ -0,0 +1,966 @@ +{ + "Version": 3, + "Meta": { + "PhysicsSettingCount": 11, + "TotalInputCount": 34, + "TotalOutputCount": 12, + "VertexCount": 23, + "EffectiveForces": { + "Gravity": { + "X": 0, + "Y": -1 + }, + "Wind": { + "X": 0, + "Y": 0 + } + }, + "PhysicsDictionary": [ + { + "Id": "PhysicsSetting1", + "Name": "前髪 揺れ" + }, + { + "Id": "PhysicsSetting2", + "Name": "横髪 揺れ" + }, + { + "Id": "PhysicsSetting3", + "Name": "後ろ髪 揺れ" + }, + { + "Id": "PhysicsSetting4", + "Name": "前髪ふわ" + }, + { + "Id": "PhysicsSetting5", + "Name": "横髪ふわ" + }, + { + "Id": "PhysicsSetting6", + "Name": "後ろ髪ふわ" + }, + { + "Id": "PhysicsSetting7", + "Name": "燕尾揺れ" + }, + { + "Id": "PhysicsSetting8", + "Name": "懐中時計腰 揺れ" + }, + { + "Id": "PhysicsSetting9", + "Name": "腰のチェーン揺れ" + }, + { + "Id": "PhysicsSetting10", + "Name": "懐中時計腰 横回転" + }, + { + "Id": "PhysicsSetting11", + "Name": "懐中時計B チェーン揺れ" + } + ] + }, + "PhysicsSettings": [ + { + "Id": "PhysicsSetting1", + "Input": [ + { + "Source": { + "Target": "Parameter", + "Id": "ParamAngleX" + }, + "Weight": 60, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamAngleZ" + }, + "Weight": 60, + "Type": "Angle", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleX" + }, + "Weight": 40, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleZ" + }, + "Weight": 40, + "Type": "Angle", + "Reflect": false + } + ], + "Output": [ + { + "Destination": { + "Target": "Parameter", + "Id": "ParamHairFront" + }, + "VertexIndex": 1, + "Scale": 1.824, + "Weight": 100, + "Type": "Angle", + "Reflect": false + } + ], + "Vertices": [ + { + "Position": { + "X": 0, + "Y": 0 + }, + "Mobility": 1, + "Delay": 1, + "Acceleration": 1, + "Radius": 0 + }, + { + "Position": { + "X": 0, + "Y": 12.7 + }, + "Mobility": 0.95, + "Delay": 0.9, + "Acceleration": 1, + "Radius": 12.7 + } + ], + "Normalization": { + "Position": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + }, + "Angle": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + } + } + }, + { + "Id": "PhysicsSetting2", + "Input": [ + { + "Source": { + "Target": "Parameter", + "Id": "ParamAngleX" + }, + "Weight": 60, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamAngleZ" + }, + "Weight": 60, + "Type": "Angle", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleX" + }, + "Weight": 40, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleZ" + }, + "Weight": 40, + "Type": "Angle", + "Reflect": false + } + ], + "Output": [ + { + "Destination": { + "Target": "Parameter", + "Id": "ParamHairSide" + }, + "VertexIndex": 1, + "Scale": 2, + "Weight": 100, + "Type": "Angle", + "Reflect": false + } + ], + "Vertices": [ + { + "Position": { + "X": 0, + "Y": 0 + }, + "Mobility": 1, + "Delay": 1, + "Acceleration": 1, + "Radius": 0 + }, + { + "Position": { + "X": 0, + "Y": 18.2 + }, + "Mobility": 0.95, + "Delay": 0.9, + "Acceleration": 1, + "Radius": 18.2 + } + ], + "Normalization": { + "Position": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + }, + "Angle": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + } + } + }, + { + "Id": "PhysicsSetting3", + "Input": [ + { + "Source": { + "Target": "Parameter", + "Id": "ParamAngleX" + }, + "Weight": 60, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamAngleZ" + }, + "Weight": 60, + "Type": "Angle", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleX" + }, + "Weight": 40, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleZ" + }, + "Weight": 40, + "Type": "Angle", + "Reflect": false + } + ], + "Output": [ + { + "Destination": { + "Target": "Parameter", + "Id": "ParamHairBack" + }, + "VertexIndex": 1, + "Scale": 2, + "Weight": 100, + "Type": "Angle", + "Reflect": false + } + ], + "Vertices": [ + { + "Position": { + "X": 0, + "Y": 0 + }, + "Mobility": 1, + "Delay": 1, + "Acceleration": 1, + "Radius": 0 + }, + { + "Position": { + "X": 0, + "Y": 14.3 + }, + "Mobility": 1, + "Delay": 0.9, + "Acceleration": 1.42, + "Radius": 14.3 + } + ], + "Normalization": { + "Position": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + }, + "Angle": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + } + } + }, + { + "Id": "PhysicsSetting4", + "Input": [ + { + "Source": { + "Target": "Parameter", + "Id": "ParamAngleY" + }, + "Weight": 35, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleY" + }, + "Weight": 30, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyPosition" + }, + "Weight": 35, + "Type": "X", + "Reflect": true + } + ], + "Output": [ + { + "Destination": { + "Target": "Parameter", + "Id": "ParamHairFrontFuwa" + }, + "VertexIndex": 1, + "Scale": 3, + "Weight": 100, + "Type": "Angle", + "Reflect": true + } + ], + "Vertices": [ + { + "Position": { + "X": 0, + "Y": 0 + }, + "Mobility": 1, + "Delay": 1, + "Acceleration": 1, + "Radius": 0 + }, + { + "Position": { + "X": 0, + "Y": 11.9 + }, + "Mobility": 0.79, + "Delay": 0.9, + "Acceleration": 1, + "Radius": 11.9 + } + ], + "Normalization": { + "Position": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + }, + "Angle": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + } + } + }, + { + "Id": "PhysicsSetting5", + "Input": [ + { + "Source": { + "Target": "Parameter", + "Id": "ParamAngleY" + }, + "Weight": 35, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleY" + }, + "Weight": 30, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyPosition" + }, + "Weight": 35, + "Type": "X", + "Reflect": true + } + ], + "Output": [ + { + "Destination": { + "Target": "Parameter", + "Id": "ParamHairSideFuwa" + }, + "VertexIndex": 1, + "Scale": 3.5, + "Weight": 100, + "Type": "Angle", + "Reflect": true + } + ], + "Vertices": [ + { + "Position": { + "X": 0, + "Y": 0 + }, + "Mobility": 1, + "Delay": 1, + "Acceleration": 1, + "Radius": 0 + }, + { + "Position": { + "X": 0, + "Y": 14.3 + }, + "Mobility": 0.79, + "Delay": 0.9, + "Acceleration": 1.1, + "Radius": 14.3 + } + ], + "Normalization": { + "Position": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + }, + "Angle": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + } + } + }, + { + "Id": "PhysicsSetting6", + "Input": [ + { + "Source": { + "Target": "Parameter", + "Id": "ParamAngleY" + }, + "Weight": 35, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleY" + }, + "Weight": 30, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyPosition" + }, + "Weight": 35, + "Type": "X", + "Reflect": true + } + ], + "Output": [ + { + "Destination": { + "Target": "Parameter", + "Id": "ParamHairBackFuwa" + }, + "VertexIndex": 1, + "Scale": 5, + "Weight": 100, + "Type": "Angle", + "Reflect": true + } + ], + "Vertices": [ + { + "Position": { + "X": 0, + "Y": 0 + }, + "Mobility": 1, + "Delay": 1, + "Acceleration": 1, + "Radius": 0 + }, + { + "Position": { + "X": 0, + "Y": 11.3 + }, + "Mobility": 0.79, + "Delay": 0.9, + "Acceleration": 1.16, + "Radius": 11.3 + } + ], + "Normalization": { + "Position": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + }, + "Angle": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + } + } + }, + { + "Id": "PhysicsSetting7", + "Input": [ + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleX" + }, + "Weight": 100, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleZ" + }, + "Weight": 70, + "Type": "Angle", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamWaistAngleZ" + }, + "Weight": 30, + "Type": "Angle", + "Reflect": false + } + ], + "Output": [ + { + "Destination": { + "Target": "Parameter", + "Id": "ParamJacket" + }, + "VertexIndex": 1, + "Scale": 1, + "Weight": 100, + "Type": "Angle", + "Reflect": false + } + ], + "Vertices": [ + { + "Position": { + "X": 0, + "Y": 0 + }, + "Mobility": 1, + "Delay": 1, + "Acceleration": 1, + "Radius": 0 + }, + { + "Position": { + "X": 0, + "Y": 31.9 + }, + "Mobility": 0.95, + "Delay": 0.8, + "Acceleration": 0.8, + "Radius": 31.9 + } + ], + "Normalization": { + "Position": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + }, + "Angle": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + } + } + }, + { + "Id": "PhysicsSetting8", + "Input": [ + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleX" + }, + "Weight": 100, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleZ" + }, + "Weight": 70, + "Type": "Angle", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamWaistAngleZ" + }, + "Weight": 30, + "Type": "Angle", + "Reflect": false + } + ], + "Output": [ + { + "Destination": { + "Target": "Parameter", + "Id": "ParamWatchSwingA1" + }, + "VertexIndex": 1, + "Scale": 1, + "Weight": 100, + "Type": "Angle", + "Reflect": false + }, + { + "Destination": { + "Target": "Parameter", + "Id": "ParamWatchSwingA2" + }, + "VertexIndex": 2, + "Scale": 1, + "Weight": 100, + "Type": "Angle", + "Reflect": false + } + ], + "Vertices": [ + { + "Position": { + "X": 0, + "Y": 0 + }, + "Mobility": 1, + "Delay": 1, + "Acceleration": 1, + "Radius": 0 + }, + { + "Position": { + "X": 0, + "Y": 15.4 + }, + "Mobility": 0.95, + "Delay": 1, + "Acceleration": 0.8, + "Radius": 15.4 + }, + { + "Position": { + "X": 0, + "Y": 31.9 + }, + "Mobility": 0.9, + "Delay": 1, + "Acceleration": 0.6, + "Radius": 16.5 + } + ], + "Normalization": { + "Position": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + }, + "Angle": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + } + } + }, + { + "Id": "PhysicsSetting9", + "Input": [ + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleX" + }, + "Weight": 100, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleZ" + }, + "Weight": 70, + "Type": "Angle", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamWaistAngleZ" + }, + "Weight": 30, + "Type": "Angle", + "Reflect": false + } + ], + "Output": [ + { + "Destination": { + "Target": "Parameter", + "Id": "ParamChainWaist" + }, + "VertexIndex": 1, + "Scale": 1, + "Weight": 100, + "Type": "Angle", + "Reflect": false + } + ], + "Vertices": [ + { + "Position": { + "X": 0, + "Y": 0 + }, + "Mobility": 1, + "Delay": 1, + "Acceleration": 1, + "Radius": 0 + }, + { + "Position": { + "X": 0, + "Y": 11.6 + }, + "Mobility": 0.95, + "Delay": 1, + "Acceleration": 1, + "Radius": 11.6 + } + ], + "Normalization": { + "Position": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + }, + "Angle": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + } + } + }, + { + "Id": "PhysicsSetting10", + "Input": [ + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleX" + }, + "Weight": 100, + "Type": "X", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamBodyAngleZ" + }, + "Weight": 70, + "Type": "Angle", + "Reflect": false + }, + { + "Source": { + "Target": "Parameter", + "Id": "ParamWaistAngleZ" + }, + "Weight": 30, + "Type": "Angle", + "Reflect": false + } + ], + "Output": [ + { + "Destination": { + "Target": "Parameter", + "Id": "ParamWatchAX" + }, + "VertexIndex": 1, + "Scale": 2, + "Weight": 100, + "Type": "Angle", + "Reflect": false + } + ], + "Vertices": [ + { + "Position": { + "X": 0, + "Y": 0 + }, + "Mobility": 1, + "Delay": 1, + "Acceleration": 1, + "Radius": 0 + }, + { + "Position": { + "X": 0, + "Y": 72.1 + }, + "Mobility": 0.95, + "Delay": 1, + "Acceleration": 0.2, + "Radius": 72.1 + } + ], + "Normalization": { + "Position": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + }, + "Angle": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + } + } + }, + { + "Id": "PhysicsSetting11", + "Input": [ + { + "Source": { + "Target": "Parameter", + "Id": "ParamArmBR03" + }, + "Weight": 100, + "Type": "X", + "Reflect": false + } + ], + "Output": [ + { + "Destination": { + "Target": "Parameter", + "Id": "ParamWatchBChain" + }, + "VertexIndex": 1, + "Scale": 2, + "Weight": 100, + "Type": "Angle", + "Reflect": false + } + ], + "Vertices": [ + { + "Position": { + "X": 0, + "Y": 0 + }, + "Mobility": 1, + "Delay": 1, + "Acceleration": 1, + "Radius": 0 + }, + { + "Position": { + "X": 0, + "Y": 13.1 + }, + "Mobility": 0.95, + "Delay": 1, + "Acceleration": 0.66, + "Radius": 13.1 + } + ], + "Normalization": { + "Position": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + }, + "Angle": { + "Minimum": -10, + "Default": 0, + "Maximum": 10 + } + } + } + ] +} \ No newline at end of file diff --git a/main/xiaozhi-server/test/test_page.html b/main/xiaozhi-server/test/test_page.html index 54d911ec..d29887f7 100644 --- a/main/xiaozhi-server/test/test_page.html +++ b/main/xiaozhi-server/test/test_page.html @@ -87,14 +87,6 @@ 设置 - - + +
+ + +
+ + + +