查看器取景距离改用前校验有限正数

- packages/model3d-viewer/src/framing.ts:computeModel3dViewerFitDistance 不再无条件采信调用方传入的 distance,改为 Number.isFinite 且大于 0 才采用,否则回落包围盒角点求解,避免 0 / 负数 / NaN 让 maxDistance 小于 minDistance

验证:npx vitest run packages/model3d-viewer、npx tsc -p tsconfig.typecheck-guardrails.json --noEmit
This commit is contained in:
2026-09-22 13:16:24 +08:00
parent 93002f1bd2
commit f9750bde0b
+5 -2
View File
@@ -200,8 +200,11 @@ export function createModel3dViewerFitSolver(
export function computeModel3dViewerFitDistance(
input: Model3dViewerFramingInput,
): number {
if (input.distance !== undefined) {
return input.distance;
// 调用方给的距离会直接决定 near / far / 轨道缩放范围,非法值(0、负数、NaN)
// 会让 maxDistance 小于 minDistance,取景与轨道钳制一起失效,故按无效处理。
const distance = input.distance;
if (distance !== undefined && Number.isFinite(distance) && distance > 0) {
return distance;
}
const solver = createModel3dViewerFitSolver({
center: computeModel3dViewerBoxCenter(input.box),