diff --git a/packages/i18n/src/locales/en/settings.yaml b/packages/i18n/src/locales/en/settings.yaml index 8af7636fd..c792f3240 100644 --- a/packages/i18n/src/locales/en/settings.yaml +++ b/packages/i18n/src/locales/en/settings.yaml @@ -562,8 +562,10 @@ vrm: title: Scale And Position scale: Scale x: X Offset - y: Y Offset + 'y': Y Offset z: Z Offset + fov: FOV (degree) + rotation-y: Rotation (Y-axis) switch-to-vrm: title: Switch to Live2D Avatar? change-to-vrm: Click here to switch to the Live2D avatar setting diff --git a/packages/i18n/src/locales/zh-Hans/settings.yaml b/packages/i18n/src/locales/zh-Hans/settings.yaml index 787406b68..c08b53358 100644 --- a/packages/i18n/src/locales/zh-Hans/settings.yaml +++ b/packages/i18n/src/locales/zh-Hans/settings.yaml @@ -538,8 +538,10 @@ vrm: title: 缩放与位置 scale: 缩放 x: X轴偏移 - y: Y 轴偏移 + 'y': Y 轴偏移 z: Z轴偏移 + fov: 视角调整(度) + rotation-y: 模型朝向(Y轴旋转) switch-to-vrm: title: 想切换至Live2D虚拟形象? change-to-vrm: 切换至Live2D虚拟形象设定页面 diff --git a/packages/stage-ui/src/components/Scenarios/Settings/ModelSettings/VRM.vue b/packages/stage-ui/src/components/Scenarios/Settings/ModelSettings/VRM.vue index bd0174e28..2b63670bb 100644 --- a/packages/stage-ui/src/components/Scenarios/Settings/ModelSettings/VRM.vue +++ b/packages/stage-ui/src/components/Scenarios/Settings/ModelSettings/VRM.vue @@ -31,9 +31,11 @@ const { loadSource, loadingModel, modelUrl, - scale, modelSize, modelOffset, + cameraFOV, + selectedModel, + modelRotationY, } = storeToRefs(vrm) const localModelUrl = ref(modelUrl.value) @@ -42,8 +44,28 @@ modelFileDialog.onChange((files) => { modelFile.value = files[0] loadSource.value = 'file' loadingModel.value = true + localModelUrl.value = '' } }) + +function urlUploadClick() { + modelUrl.value = localModelUrl.value + // same URL will let the loader be lazy and forgot to reset loading state + // If the loading state is still true, then the URL input will be locked + if (modelUrl.value === selectedModel.value) { + console.warn('Model URL is the same as the selected model, no need to reload.') + return + } + // Can't let the default model URL be reentered into the loader, otherwise it will still be too lazy to reset the loading state + if (!modelUrl.value && selectedModel.value === vrm.defaultModelUrl) { + localModelUrl.value = vrm.defaultModelUrl + return + } + // Only when real different URL is entered, then the loader will be triggered + loadSource.value = 'url' + loadingModel.value = true + localModelUrl.value = selectedModel.value +} { - -
- -
- - -
-
-
- - + + + + + +
diff --git a/packages/stage-ui/src/components/Scenes/VRM.vue b/packages/stage-ui/src/components/Scenes/VRM.vue index 9dffa057e..e21b192fc 100644 --- a/packages/stage-ui/src/components/Scenes/VRM.vue +++ b/packages/stage-ui/src/components/Scenes/VRM.vue @@ -1,34 +1,68 @@ diff --git a/packages/stage-ui/src/components/Scenes/VRM/Model.vue b/packages/stage-ui/src/components/Scenes/VRM/Model.vue index 25536e6e1..1a8631f95 100644 --- a/packages/stage-ui/src/components/Scenes/VRM/Model.vue +++ b/packages/stage-ui/src/components/Scenes/VRM/Model.vue @@ -1,12 +1,12 @@