From 46b8c23975537c8cf3a9445fe7877bc5a3d086bd Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 8 May 2026 16:15:28 +0800 Subject: [PATCH] fix: refine angle preview panel styling --- components/canvas/nodes/ImageNode.tsx | 263 ++++++++++++++++---------- 1 file changed, 164 insertions(+), 99 deletions(-) diff --git a/components/canvas/nodes/ImageNode.tsx b/components/canvas/nodes/ImageNode.tsx index c2b3ec5a2..e5ec44900 100644 --- a/components/canvas/nodes/ImageNode.tsx +++ b/components/canvas/nodes/ImageNode.tsx @@ -468,12 +468,12 @@ function AngleEditPanelSlider({ valueLabel: string; }) { return ( -
+
- + {label} - + {valueLabel}
@@ -482,16 +482,28 @@ function AngleEditPanelSlider({ max={max} min={min} onValueChange={([nextValue]) => onChange(nextValue ?? value)} - rangeClassName="bg-[#2f3133]" + rangeClassName="bg-[#2d3035]" step={step} - thumbClassName="h-5 w-5 border-[5px] border-[#2f3133] bg-white shadow-[0_1px_3px_rgba(0,0,0,0.18)]" - trackClassName="h-[4px] bg-[#e6e6e6]" + thumbClassName="h-[22px] w-[22px] border-[5px] border-[#2d3035] bg-white shadow-[0_2px_10px_rgba(24,24,27,0.14)]" + trackClassName="h-[4px] bg-[#e7e8ec]" value={[value]} />
); } +function AngleCameraModelGlyph() { + return ( +
+
+
+
+
+
+
+ ); +} + const clampNumber = (value: number, min: number, max: number) => Math.min(max, Math.max(min, value)); @@ -2056,6 +2068,25 @@ export function ImageNode({ z: Number(z.toFixed(2)), }; }, [angleHorizontalAngle, angleVerticalAngle]); + const angleCameraConnection = useMemo(() => { + const length = Math.sqrt( + angleCameraOrbitPosition.x * angleCameraOrbitPosition.x + + angleCameraOrbitPosition.y * angleCameraOrbitPosition.y + ); + const angle = + (Math.atan2(angleCameraOrbitPosition.y, angleCameraOrbitPosition.x) * + 180) / + Math.PI; + + return { + angle: Number(angle.toFixed(2)), + length: Number(length.toFixed(2)), + }; + }, [angleCameraOrbitPosition]); + const angleCameraSceneScale = useMemo( + () => Number((0.9 + (angleZoom / 100) * 0.24).toFixed(3)), + [angleZoom] + ); const cropImageMetrics = useMemo(() => { if (boxCutoutMetrics) { return { @@ -8087,7 +8118,7 @@ export function ImageNode({ typeof document !== "undefined" && createPortal(
event.stopPropagation()} onMouseDown={(event) => event.stopPropagation()} onPointerDown={(event) => event.stopPropagation()} @@ -8099,11 +8130,11 @@ export function ImageNode({ }} >
-

- 多视角 +

+ 多角度

-
+
{( [ @@ -8126,8 +8157,8 @@ export function ImageNode({ className={cn( "h-14 rounded-[16px] text-[16px] font-semibold tracking-[0] transition-all", active - ? "bg-white text-[#1f1f21] shadow-[0_1px_2px_rgba(0,0,0,0.05)]" - : "text-[#757575] hover:text-[#2d2d31]" + ? "bg-white text-[#1f2023] shadow-[0_1px_2px_rgba(16,24,40,0.06)]" + : "text-[#767982] hover:text-[#2d3036]" )} disabled={isApplyingAngleEdit} key={item.id} @@ -8141,7 +8172,7 @@ export function ImageNode({
-
+
- - - + + + + +