diff --git a/apps/stage-web/src/components/Layouts/InteractiveArea/Actions/ViewControls.vue b/apps/stage-web/src/components/Layouts/InteractiveArea/Actions/ViewControls.vue index 9d84d6547..526cf71ea 100644 --- a/apps/stage-web/src/components/Layouts/InteractiveArea/Actions/ViewControls.vue +++ b/apps/stage-web/src/components/Layouts/InteractiveArea/Actions/ViewControls.vue @@ -7,7 +7,7 @@ const emits = defineEmits<{ (e: 'reset'): void }>() -const { stageView, stageViewControlsEnabled } = storeToRefs(useSettings()) +const { stageModelRenderer, stageViewControlsEnabled } = storeToRefs(useSettings()) const mode = defineModel<'x' | 'y' | 'z' | 'scale'>({ required: true }) @@ -31,7 +31,7 @@ function handleViewControlsToggle(targetMode: 'x' | 'y' | 'z' | 'scale') { Y - + Z diff --git a/apps/stage-web/src/components/Layouts/MobileInteractiveArea.vue b/apps/stage-web/src/components/Layouts/MobileInteractiveArea.vue index 46002513e..f62c752c1 100644 --- a/apps/stage-web/src/components/Layouts/MobileInteractiveArea.vue +++ b/apps/stage-web/src/components/Layouts/MobileInteractiveArea.vue @@ -34,7 +34,7 @@ const { activeProvider, activeModel } = storeToRefs(useConsciousnessStore()) useResizeObserver(document.documentElement, () => screenSafeArea.update()) // const { askPermission } = useSettingsAudioDevice() -const { themeColorsHueDynamic, stageView, stageViewControlsEnabled } = storeToRefs(useSettings()) +const { themeColorsHueDynamic, stageViewControlsEnabled } = storeToRefs(useSettings()) const { enabled, selectedAudioInput } = storeToRefs(useSettingsAudioDevice()) const { send, onAfterMessageComposed, discoverToolsCompatibility } = useChatStore() const { messages } = storeToRefs(useChatStore()) @@ -145,14 +145,6 @@ onMounted(() => { - - - 2D - - - 3D - - viewControlsInputsRef?.resetOnMode()" /> diff --git a/apps/stage-web/src/components/Layouts/ViewControls/Inputs.vue b/apps/stage-web/src/components/Layouts/ViewControls/Inputs.vue index fdca8b63c..4107e575d 100644 --- a/apps/stage-web/src/components/Layouts/ViewControls/Inputs.vue +++ b/apps/stage-web/src/components/Layouts/ViewControls/Inputs.vue @@ -10,27 +10,27 @@ const props = defineProps<{ mode: 'x' | 'y' | 'z' | 'scale' }>() -const { stageView, stageViewControlsEnabled } = storeToRefs(useSettings()) +const { stageModelRenderer, stageViewControlsEnabled } = storeToRefs(useSettings()) const { scale: vrmScale, modelOffset: vrmPosition, modelSize: vrmModelSize } = storeToRefs(useVRM()) const { scale: live2dScale, position: live2dPosition } = storeToRefs(useLive2d()) const viewControlsValueX = computed({ get: () => { - switch (stageView.value) { - case '2d': + switch (stageModelRenderer.value) { + case 'live2d': return live2dPosition.value.x - case '3d': + case 'vrm': return vrmPosition.value.x default: return 0 } }, set: (value) => { - switch (stageView.value) { - case '2d': + switch (stageModelRenderer.value) { + case 'live2d': live2dPosition.value.x = value break - case '3d': + case 'vrm': vrmPosition.value.x = value break default: @@ -40,30 +40,30 @@ const viewControlsValueX = computed({ }) const viewControlsValueXMin = computed(() => { - return stageView.value === '2d' ? -500 : -vrmModelSize.value.x - 10 + return stageModelRenderer.value === 'live2d' ? -500 : -vrmModelSize.value.x - 10 }) const viewControlsValueXMax = computed(() => { - return stageView.value === '2d' ? 500 : vrmModelSize.value.x + 10 + return stageModelRenderer.value === 'vrm' ? 500 : vrmModelSize.value.x + 10 }) const viewControlsValueY = computed({ get: () => { - switch (stageView.value) { - case '2d': + switch (stageModelRenderer.value) { + case 'live2d': return live2dPosition.value.y - case '3d': + case 'vrm': return vrmPosition.value.y default: return 0 } }, set: (value) => { - switch (stageView.value) { - case '2d': + switch (stageModelRenderer.value) { + case 'live2d': live2dPosition.value.y = value break - case '3d': + case 'vrm': vrmPosition.value.y = value break default: @@ -73,29 +73,29 @@ const viewControlsValueY = computed({ }) const viewControlsValueYMin = computed(() => { - return stageView.value === '2d' ? -500 : -vrmModelSize.value.y - 10 + return stageModelRenderer.value === 'live2d' ? -500 : -vrmModelSize.value.y - 10 }) const viewControlsValueYMax = computed(() => { - return stageView.value === '2d' ? 500 : vrmModelSize.value.y + 10 + return stageModelRenderer.value === 'vrm' ? 500 : vrmModelSize.value.y + 10 }) const viewControlsValueZ = computed({ get: () => { - switch (stageView.value) { - case '2d': + switch (stageModelRenderer.value) { + case 'live2d': return 0 - case '3d': + case 'vrm': return vrmPosition.value.z default: return 0 } }, set: (value) => { - switch (stageView.value) { - case '2d': + switch (stageModelRenderer.value) { + case 'live2d': break - case '3d': + case 'vrm': vrmPosition.value.z = value break default: @@ -105,23 +105,23 @@ const viewControlsValueZ = computed({ }) const viewControlsValueZMin = computed(() => { - return stageView.value === '2d' ? -500 : -vrmModelSize.value.z - 10 + return stageModelRenderer.value === 'live2d' ? -500 : -vrmModelSize.value.z - 10 }) const viewControlsValueZMax = computed(() => { - return stageView.value === '2d' ? 500 : vrmModelSize.value.z + 10 + return stageModelRenderer.value === 'live2d' ? 500 : vrmModelSize.value.z + 10 }) const viewControlsValueScale = computed({ get: () => { - if (stageView.value === '2d') { + if (stageModelRenderer.value === 'live2d') { return live2dScale.value } return vrmScale.value }, set: (value) => { - if (stageView.value === '2d') { + if (stageModelRenderer.value === 'live2d') { live2dScale.value = value } else { @@ -168,7 +168,7 @@ defineExpose({ {{ viewControlsValueY.toFixed(2) }} - + {{ viewControlsValueZ.toFixed(2) }} diff --git a/packages/stage-ui/src/components/Scenarios/Dialogs/model-selector/model-selector.vue b/packages/stage-ui/src/components/Scenarios/Dialogs/model-selector/model-selector.vue index 672340bbe..156ccb2ad 100644 --- a/packages/stage-ui/src/components/Scenarios/Dialogs/model-selector/model-selector.vue +++ b/packages/stage-ui/src/components/Scenarios/Dialogs/model-selector/model-selector.vue @@ -61,6 +61,7 @@ const mapFormatRenderer: Record = { [DisplayModelFormat.Live2dDirectory]: 'Live2D', [DisplayModelFormat.VRM]: 'VRM', [DisplayModelFormat.PMXDirectory]: 'MMD', + [DisplayModelFormat.PMXZip]: 'MMD', [DisplayModelFormat.PMD]: 'MMD', } diff --git a/packages/stage-ui/src/components/Scenes/Stage.vue b/packages/stage-ui/src/components/Scenes/Stage.vue index 9d055ba4a..a4c859fe1 100644 --- a/packages/stage-ui/src/components/Scenes/Stage.vue +++ b/packages/stage-ui/src/components/Scenes/Stage.vue @@ -41,7 +41,7 @@ const db = ref() const vrmViewerRef = ref<{ setExpression: (expression: string) => void }>() -const { stageView, stageViewControlsEnabled, live2dDisableFocus, stageModelSelectedUrl } = storeToRefs(useSettings()) +const { stageModelRenderer, stageViewControlsEnabled, live2dDisableFocus, stageModelSelectedUrl } = storeToRefs(useSettings()) const { mouthOpenSize } = storeToRefs(useSpeakingStore()) const { audioContext, calculateVolume } = useAudioContext() const { onBeforeMessageComposed, onBeforeSend, onTokenLiteral, onTokenSpecial, onStreamEnd, onAssistantResponseEnd } = useChatStore() @@ -137,14 +137,14 @@ const { currentMotion } = storeToRefs(useLive2d()) const emotionsQueue = useQueue({ handlers: [ async (ctx) => { - if (stageView.value === 'vrm') { + if (stageModelRenderer.value === 'vrm') { const value = EMOTION_VRMExpressionName_value[ctx.data] if (!value) return await vrmViewerRef.value!.setExpression(value) } - else if (stageView.value === 'live2d') { + else if (stageModelRenderer.value === 'live2d') { currentMotion.value = { group: EMOTION_EmotionMotionName_value[ctx.data] } } }, @@ -229,7 +229,7 @@ onMounted(async () => { { :disable-focus-at="live2dDisableFocus" />