{ "generatedAt": "2026-06-22T22:09:41.825Z", "targetUrl": "http://127.0.0.1:45757/web-rtcp-5axis-sim-plan/app/index.html", "caseName": "08-meter-scene-desktop-mobile", "summary": "浏览器米尺度 Three.js 证据:desktop/mobile canvas 非空、路径 bounds 为米、预览稳定居中", "status": "PASS", "samples": [ { "viewport": { "name": "desktop", "width": 1600, "height": 1200, "deviceScaleFactor": 1 }, "screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/screenshots/meter-scene-evidence/08-meter-scene-desktop.png", "pixelStats": { "width": 803, "height": 874, "averageLuminance": 65.18, "nonBlackRatio": 0.8173 }, "dataset": { "fiveAxisCanvas": "true", "engine": "three.js r183", "threeReady": "true", "threeRevision": "183", "threePathPoints": "1498", "threeExecutedPathPoints": "1", "threeSceneObjects": "20", "threeToolhead": "{\"x\":0,\"y\":0,\"z\":0}", "threeSceneUnits": "m", "threeLinearUnits": "mm", "threeLinearUnitScaleToMeters": "0.001", "threeToolAxis": "{\"x\":0.558,\"y\":0.769,\"z\":0.312}", "threeTcpPose": "{\"x\":36.474,\"y\":-22.486,\"z\":-13.749,\"a\":-71.841,\"c\":-35.93}", "threeRtcpState": "on", "threeSelectedView": "iso", "threeFrameApi": "web-rtcp-5axis-motion-frame", "threeRenderer": "webgl", "threeSceneMode": "program-preview-and-tool-execution", "threePreviewScope": "machine-reference-and-toolpath", "threeMachineReferenceModel": "webgl-five-axis-reference", "threeCameraControls": "orbit-pan-zoom", "threeProgramPreviewSource": "linuxcnc-interpreter-wasm", "threeToolExecutionMarker": "true", "threeTcpMarker": "sphere", "threeToolAxisMarker": "line", "threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion", "threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback", "threePathFitBounds": "ok", "threePathBoundsMeters": "{\"center\":{\"x\":-0.001,\"y\":0,\"z\":0.019},\"size\":{\"x\":0.088,\"y\":0.089,\"z\":0.043},\"maxSpan\":0.089211}", "threeCurrentSegmentHighlight": "ok", "threeRapidFeedVisualDistinction": "ok", "threeNoGcodeSemanticsGeneration": "ok", "threeRapidPathPoints": "186", "threeFeedPathPoints": "1436", "threeArcPathPoints": "0", "threeCurrentSegmentPoints": "1", "threeCurrentSegmentType": "STRAIGHT_TRAVERSE" }, "status": "PASS", "checks": [ { "name": "canvas ready", "pass": true, "detail": "threeReady=true" }, { "name": "WebGL renderer", "pass": true, "detail": "renderer=webgl" }, { "name": "机床参考模型", "pass": true, "detail": "scope=machine-reference-and-toolpath, model=webgl-five-axis-reference" }, { "name": "TCP 球标记", "pass": true, "detail": "tcp=sphere, marker=true" }, { "name": "刀轴线", "pass": true, "detail": "toolAxisMarker=line" }, { "name": "场景对象数量", "pass": true, "detail": "sceneObjects=20" }, { "name": "无 G-code 语义生成", "pass": true, "detail": "semanticGuard=ok" }, { "name": "刀路预览点", "pass": true, "detail": "pathPoints=1498" }, { "name": "执行轨迹点", "pass": true, "detail": "executed=1" }, { "name": "scene units are meters", "pass": true, "detail": "sceneUnits=m" }, { "name": "linear scale visible", "pass": true, "detail": "scale=0.001" }, { "name": "path fit bounds", "pass": true, "detail": "fit=ok" }, { "name": "path bounds in meters", "pass": true, "detail": "bounds={\"center\":{\"x\":-0.001,\"y\":0,\"z\":0.019},\"size\":{\"x\":0.088,\"y\":0.089,\"z\":0.043},\"maxSpan\":0.089211}" }, { "name": "canvas nonblank", "pass": true, "detail": "nonBlack=0.8173" } ] }, { "viewport": { "name": "mobile", "width": 390, "height": 844, "deviceScaleFactor": 2 }, "screenshotPath": "/home/meswork/cnc_wams/qa/web-rtcp-5axis-site-test/screenshots/meter-scene-evidence/08-meter-scene-mobile.png", "pixelStats": { "width": 1146, "height": 1036, "averageLuminance": 67.87, "nonBlackRatio": 0.838 }, "dataset": { "fiveAxisCanvas": "true", "engine": "three.js r183", "threeReady": "true", "threeRevision": "183", "threePathPoints": "1498", "threeExecutedPathPoints": "1", "threeSceneObjects": "20", "threeToolhead": "{\"x\":0,\"y\":0,\"z\":0}", "threeSceneUnits": "m", "threeLinearUnits": "mm", "threeLinearUnitScaleToMeters": "0.001", "threeToolAxis": "{\"x\":0.558,\"y\":0.769,\"z\":0.312}", "threeTcpPose": "{\"x\":36.474,\"y\":-22.486,\"z\":-13.749,\"a\":-71.841,\"c\":-35.93}", "threeRtcpState": "on", "threeSelectedView": "iso", "threeFrameApi": "web-rtcp-5axis-motion-frame", "threeRenderer": "webgl", "threeSceneMode": "program-preview-and-tool-execution", "threePreviewScope": "machine-reference-and-toolpath", "threeMachineReferenceModel": "webgl-five-axis-reference", "threeCameraControls": "orbit-pan-zoom", "threeProgramPreviewSource": "linuxcnc-interpreter-wasm", "threeToolExecutionMarker": "true", "threeTcpMarker": "sphere", "threeToolAxisMarker": "line", "threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion", "threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback", "threePathFitBounds": "ok", "threePathBoundsMeters": "{\"center\":{\"x\":-0.001,\"y\":0,\"z\":0.019},\"size\":{\"x\":0.088,\"y\":0.089,\"z\":0.043},\"maxSpan\":0.089211}", "threeCurrentSegmentHighlight": "ok", "threeRapidFeedVisualDistinction": "ok", "threeNoGcodeSemanticsGeneration": "ok", "threeRapidPathPoints": "186", "threeFeedPathPoints": "1436", "threeArcPathPoints": "0", "threeCurrentSegmentPoints": "1", "threeCurrentSegmentType": "STRAIGHT_TRAVERSE" }, "status": "PASS", "checks": [ { "name": "canvas ready", "pass": true, "detail": "threeReady=true" }, { "name": "WebGL renderer", "pass": true, "detail": "renderer=webgl" }, { "name": "机床参考模型", "pass": true, "detail": "scope=machine-reference-and-toolpath, model=webgl-five-axis-reference" }, { "name": "TCP 球标记", "pass": true, "detail": "tcp=sphere, marker=true" }, { "name": "刀轴线", "pass": true, "detail": "toolAxisMarker=line" }, { "name": "场景对象数量", "pass": true, "detail": "sceneObjects=20" }, { "name": "无 G-code 语义生成", "pass": true, "detail": "semanticGuard=ok" }, { "name": "刀路预览点", "pass": true, "detail": "pathPoints=1498" }, { "name": "执行轨迹点", "pass": true, "detail": "executed=1" }, { "name": "scene units are meters", "pass": true, "detail": "sceneUnits=m" }, { "name": "linear scale visible", "pass": true, "detail": "scale=0.001" }, { "name": "path fit bounds", "pass": true, "detail": "fit=ok" }, { "name": "path bounds in meters", "pass": true, "detail": "bounds={\"center\":{\"x\":-0.001,\"y\":0,\"z\":0.019},\"size\":{\"x\":0.088,\"y\":0.089,\"z\":0.043},\"maxSpan\":0.089211}" }, { "name": "canvas nonblank", "pass": true, "detail": "nonBlack=0.838" } ] } ], "consoleErrors": [ "Failed to load resource: the server responded with a status of 404 (Not Found)", "Failed to load resource: the server responded with a status of 404 (Not Found)" ] }